




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)字交流伺服系統(tǒng)實驗報告學院:機械工程學院學號:YJX1101028姓名:馬玉華數(shù)字交流伺服系統(tǒng)實驗報告(標題宋體,3號,加黑,段前段后0.5行)一、實驗目的(宋體,小4,加黑,段后0.5行)通過實驗深入理解伺服系統(tǒng)的系統(tǒng)結構及工作原理,掌握伺服系統(tǒng)的控制器設計與系統(tǒng)調試方法。(正文:宋體,5號,單倍行距)二、實驗內容及結果1. 對系統(tǒng)進行理論分析1)數(shù)字伺服伺服系統(tǒng)又稱“隨動系統(tǒng)”,是屬于自動化體系中控制的一種,它是由若干元件和部件組成的、具有功率放大作用的一種自動控制系統(tǒng),它的輸出量總是相當精確地跟隨輸入量的變化而變化,或者說,它的輸出量總是復現(xiàn)輸入量。它通常是具有負反饋的閉環(huán)控制系統(tǒng),有
2、的場合也可以采用開環(huán)控制系統(tǒng)來實現(xiàn)其功能。隨著技術的進步和整個工業(yè)的不斷發(fā)展,伺服驅動技術也取得了極大的進步,伺服系統(tǒng)已經(jīng)進入了全數(shù)字化和交流化的時代。隨動系統(tǒng)的基本職能是對信號進行功率放大,保證有足夠的能量推動負載(被控對象)按輸入信號的規(guī)律運動(即輸出),并使得輸入與輸出之間的偏差不超過允許的誤差范圍。也有一部分伺服系統(tǒng)還必須完成一定距離的自動追蹤任務。數(shù)字伺服控制系統(tǒng)是一種以數(shù)字處理器或計算機為控制器去控制具有連續(xù)工作狀態(tài)的被控對象的閉環(huán)控制系統(tǒng)。因此,數(shù)字伺服控制系統(tǒng)包括工作于離散狀態(tài)下的數(shù)字計算機和和工作于連續(xù)狀態(tài)下的被控對象兩大部分。由于數(shù)字控制系統(tǒng)的具有一系列的優(yōu)越性,但主要體現(xiàn)
3、在數(shù)字化的實現(xiàn),將原來有的硬件伺服控制變成了軟件伺服控制,從而使在伺服系統(tǒng)中應用現(xiàn)代控制理論的先進算法如最優(yōu)控制、人工智能、模糊控制、神經(jīng)元網(wǎng)絡等,成為可能。此外也使得整個伺服系統(tǒng)更加集成化、網(wǎng)絡化、智能化和模塊化。數(shù)字伺服控制系統(tǒng)的輸出可以使各種不同的物理量,如速度(包括角速度)控制、位置(包括轉角)控制、和運動軌跡控制。其組成部分主要有測量元件、給定元件、比較元件、放大元件、執(zhí)行元件和校正元件等。由系統(tǒng)所給的仿真控制圖可以知道系統(tǒng)屬于位置控制系統(tǒng)。其整體分析可知系統(tǒng)有電流環(huán)、速度環(huán)和位置環(huán)構成的三環(huán)位置控制系統(tǒng),其整體控制框圖可以如下圖所示:圖1 位置控制系統(tǒng)的結構框圖并且由系統(tǒng)所給定的系
4、統(tǒng)的仿真圖可知,系統(tǒng)的速度控制和電流控制部分都已經(jīng)完成,在本次設計中只需要對位置控制部分的設計控制算法就可。其主要包括控制結構的選擇和參數(shù)的選取。2)控制結構的選擇數(shù)字伺服控制系統(tǒng)的分類方式有很多種,按不同的分類方法會得到不同名稱的數(shù)字伺服控制系統(tǒng)。但由于本實驗是為了做出位置外環(huán)的控制部分算法,所以這里介紹按照系統(tǒng)控制方式的分法。然后根據(jù)其優(yōu)缺點和試驗系統(tǒng)的需要來選取適合的控制方式。按照系統(tǒng)控制方式來分類,可以分為誤差控制的數(shù)字伺服控制系統(tǒng)和復合控制系統(tǒng)。分別介紹如下。誤差控制的數(shù)字伺服控制系統(tǒng),其主要特點是系統(tǒng)的快慢取決于誤差信號的大小。當系統(tǒng)的誤差信號為零時(即系統(tǒng)輸出量與輸入給定量完全相
5、等時),系統(tǒng)便處于靜止狀態(tài)。其基本結構形式可以用下圖來表示: 圖2 誤差控制的數(shù)字伺服控制系統(tǒng)的基本結構形式誤差測量裝置又稱比較元件或敏感元件,其作用是將系統(tǒng)的輸入和輸出之間的差值隨時的測量出來,并將誤差信號轉換成電信號送入放大裝置。放大裝置將誤差電壓進行必要的變換和功率放大之后,驅動執(zhí)行元件,使執(zhí)行元件通過減速器拖動被控對象,按照輸入信號的規(guī)律運動。校正裝置的作用是補償系統(tǒng)中存在的電磁與機電慣性所引起的滯后作用,是系統(tǒng)的輸出信號能瞬時跟隨輸入信號的變化,以滿足系統(tǒng)的動態(tài)品質的要求。按誤差控制的隨動系統(tǒng)具有良好的抗干擾性能。當系統(tǒng)受到外部干擾,是輸出量偏離輸入量時,通過負反饋作用,使誤差測量裝
6、置的輸出的誤差電壓,執(zhí)行元件推動被控對象回到與輸入相對應的位置,即將系統(tǒng)輸出量自動的調整到允許的誤差范圍內,這是按誤差控制(又稱反饋控制)的極大優(yōu)點。但其缺點也很明顯,是負反饋削弱了系統(tǒng)的放大倍數(shù),降低了系統(tǒng)的快速性,且系統(tǒng)精度的進一步提高也受到這種結構形式的制約,因為提高精度需要增大系統(tǒng)開環(huán)放大系數(shù)和增加積分環(huán)節(jié),這樣又會影響系統(tǒng)的穩(wěn)定性。復合控制系統(tǒng),即按照輸入信號微分和系統(tǒng)誤差綜合控制的系統(tǒng)。它的特點是系統(tǒng)的運動取決于輸入信號的變化率(包括輸入速度和加速度)和系統(tǒng)誤差信號的綜合作用。復合控制系統(tǒng)的基本結構形式可以用小下圖來表示:圖3 復合控制系統(tǒng)的基本控制結構 如果按系統(tǒng)誤差及輸入信號的
7、一階或一階與二階微分來控制系統(tǒng),則可以大大的提高系統(tǒng)的精度與快速性,而又不影響系統(tǒng)的穩(wěn)定性,保留了單純按照誤差控制的全部優(yōu)點。這就是復合控制系統(tǒng),為了詳細的表示出復合系統(tǒng)這種優(yōu)勢,可以做如下推導: 在按誤差控制的閉環(huán)系統(tǒng)基礎上并聯(lián)一個輸入信號n階微分的正順饋通道,則組成了復合控制系統(tǒng)。即系統(tǒng)的執(zhí)行元件受系統(tǒng)誤差信號和輸入信號的n階微分綜合控制,如下圖所示,圖中是系統(tǒng)輸入信號,是系統(tǒng)的輸出信號,Wr(S)是n階微分裝置,W1(S)W2(S)W3(S)及其反饋是原有按誤差控制的閉環(huán)系統(tǒng)。 圖4 帶有正順饋通道的復合控制系統(tǒng)結構采用復合控制后,系統(tǒng)的輸出為:將系統(tǒng)誤差代入上式,則得:也即是:所以可得
8、系統(tǒng)的閉環(huán)傳函為: (1)系統(tǒng)的誤差傳函為: (2)當微分裝置的結構參數(shù)滿足: (3)當微分裝置的結構參數(shù)滿足3式時,則及,即及。這說明系統(tǒng)的輸出完全復現(xiàn)輸入,沒有過渡過程,系統(tǒng)具有無窮大的通頻帶,不管輸入信號如何變化,系統(tǒng)的誤差式中為0.此外,原有按照誤差控制的閉環(huán)系統(tǒng)傳函為: (4) 由1式和4式可知,采用復合控制后,系統(tǒng)的特征方程沒有變化,即并聯(lián)輸入信號的n階微分裝置后不影響原有系統(tǒng)的穩(wěn)定性。所以,從原理結構上講,復合控制系統(tǒng)要比單純采用按誤差控制系統(tǒng)的閉環(huán)系統(tǒng)要優(yōu)越的多,是一種比較理想的隨動系統(tǒng)。 綜上所論述本系統(tǒng)中的,位置控制結構選擇為復合控制系統(tǒng)。微分環(huán)節(jié)采用一階微分結構,即Wr(
9、S)為一階結構;W1(S)采用PID控制結構。PID控制的調節(jié)思路大致可描述如下。參數(shù)KP、Ti、Td的大小會對系統(tǒng)的動態(tài)特性有很大的影響,比例調節(jié)參數(shù)KP加大,提高系統(tǒng)的開環(huán)增益,減小系統(tǒng)的穩(wěn)態(tài)誤差,KP偏大,震蕩次數(shù)加多,調節(jié)時間變長,當KP太大時,系統(tǒng)不穩(wěn)定。積分調節(jié)能消除系統(tǒng)的穩(wěn)態(tài)誤差,提高控制系統(tǒng)的控制精度,但積分調節(jié)通常使系統(tǒng)穩(wěn)定性下降,Ti越小積分作用越強,系統(tǒng)將不穩(wěn)定。Ti越大積分作用越弱,對系統(tǒng)穩(wěn)定性能的不利影響減少,但消除凈差的時間增加。微分調節(jié)可以改善系統(tǒng)動態(tài)特性,參數(shù)Td偏大、偏小時,超調量都較大,而且調節(jié)時間較長。所以當參數(shù)KP 、Ti、Td合適時,系統(tǒng)才可以得到滿意
10、的動態(tài)特性和穩(wěn)定特性。2. 伺服系統(tǒng)仿真實驗圖5為系統(tǒng)的整體仿真結構圖,而系統(tǒng)所要求設計的位置控制器部分如圖6所示。圖5數(shù)字伺服系統(tǒng)的整體仿真結構圖圖6 位置環(huán)控制器結構設計位置環(huán)控制器結構圖6所示,其結構整體上采用復合控制系統(tǒng),即結合對系統(tǒng)誤差信號和輸入信號的微分來共同控制系統(tǒng)。系統(tǒng)仿真時的參數(shù)設置如下所示PID controller1:kp=2.5,ki=0.3,kd=0.25;PID controller2:kp=0,ki=0,kd=0.1;1)階躍信號輸入: 3000mil 調節(jié)時間0.5s,靜差0.5mil,%3mil,振蕩11.5次; 圖6 階躍信號時系統(tǒng)輸出曲線 圖7 階躍信號時
11、系統(tǒng)誤差曲線 系統(tǒng)的調節(jié)時間為0.45秒左右,超調為7mil,系統(tǒng)在最終穩(wěn)定后凈差0.5mil,無明顯振蕩。2)斜坡信號輸入: (1)低速:20mil/s 誤差2mil,無爬行現(xiàn)象; 圖8 低速斜坡信號時系統(tǒng)輸出曲線 圖9 低速斜坡信號時系統(tǒng)誤差曲線 斜坡信號低速輸入時,由圖18可知,系統(tǒng)無爬行現(xiàn)象,系統(tǒng)在開始時誤差較大,但也要比-0.5mil要小,系統(tǒng)在最終穩(wěn)定后誤差小于0.2滿足設計要求。 (2)高速:1500mil/s 誤差2mil; 圖10 高速斜坡信號時系統(tǒng)輸出曲線 圖11 高速斜坡信號時系統(tǒng)誤差曲線 高速斜坡信號輸入時,系統(tǒng)仍然無爬行現(xiàn)象。但系統(tǒng)的最終誤差較大近10.3)正弦信號輸
12、入: 周期6.28s,幅值1000mil 最大誤差2mil,由齒隙引起的跳變1mil。 圖12 正弦信號時系統(tǒng)輸出曲線 圖13 正弦信號時系統(tǒng)誤差曲線 有圖12可知,此時系統(tǒng)整體上能夠使輸出能夠很好的跟隨正弦給定信號,雖然在幅值上的給隨效果很好,但是在相位上還是有很細小的誤差,這個可以在系統(tǒng)的誤差曲線上看出來其幅值近20.有待提高。 圖14 正弦信號、有齒輪間隙時的系統(tǒng)誤差曲線 圖15 正弦信號、無齒輪間隙時系統(tǒng)誤差曲線 通過對圖14和圖15的比較可以知道,系統(tǒng)在有無齒輪間隙的作用在系統(tǒng)誤差信號上的表現(xiàn)主要為:當系統(tǒng)有齒輪間隙時的誤差曲線在等于零之后會出現(xiàn)類似與毛刺的曲線形狀曲線,而在沒有齒輪
13、間隙時就不會出現(xiàn)這種毛刺。并且若系統(tǒng)所加的正弦信號幅值相對于齒輪間隙較小時,會導致對系統(tǒng)誤差曲線的毛刺現(xiàn)象更加明顯,也會使這時系統(tǒng)的輸出曲線出現(xiàn)折線形式的波形。圖16就是正弦信號幅值為1,而系統(tǒng)的齒輪間隙仍然為4時的系統(tǒng)輸出曲線,但系統(tǒng)已經(jīng)不能夠很好的跟隨給定信號了。圖16 低幅值、大齒輪間隙時的系統(tǒng)輸出信號跟隨輸入信號的曲線三、結果分析1、調試結果分析說明;在仿真實驗系統(tǒng)中,對PID參數(shù)調節(jié)時,知道控制部分的各個功能后,在仿真實驗系統(tǒng)中,在參數(shù)接近實驗要求時,固定某一參數(shù),對另一參數(shù)微調,進而找出另一參數(shù)最優(yōu)時的參數(shù)值,然后固定這兩個參數(shù),調節(jié)第三個參數(shù);但是由于系統(tǒng)是對三種不同輸入都有一定
14、的性能要求,這就使得在調解時,在各個不同輸入時的各個狀態(tài)之間切換調節(jié),已選擇系統(tǒng)整體最優(yōu)時的參數(shù)作為最終參數(shù)值。當系統(tǒng)仍然不能夠滿足要求時,考慮調節(jié)前饋中的微分系統(tǒng),繼而使得系統(tǒng)能夠滿足要求。在上面的調節(jié)過后,能夠得出不同信號在系統(tǒng)下的相應曲線和系統(tǒng)的誤差曲線,繼而能夠充分的分析系統(tǒng)的整體性能。并且可以從有輸出誤差曲線上的有無毛刺,來判斷系統(tǒng)中的齒輪間隙的影響也能夠充分的分析出來。在實際的系統(tǒng)實驗中,由于各種干擾因素的影響,系統(tǒng)的性能指標不太穩(wěn)定,對PID參數(shù)進行調節(jié)的同時,考慮對前饋微分環(huán)節(jié)進行調節(jié)。并且系統(tǒng)的齒輪間隙的影響在實際系統(tǒng)中可以更加明顯的顯現(xiàn)出來。2、結合調試結果,簡述控制器的作
15、用及調試方法。系統(tǒng)整體上采用復合控制系統(tǒng),即按照輸入信號微分和系統(tǒng)誤差綜合控制的系統(tǒng)。它的特點是系統(tǒng)的運動取決于輸入信號的變化率(包括輸入速度和加速度)和系統(tǒng)誤差信號的綜合作用。其可以大大的提高系統(tǒng)的精度與快速性,而又不影響系統(tǒng)的穩(wěn)定性,保留了單純按照誤差控制的全部優(yōu)點。其中誤差信號采用PID控制的方式,其作用和調節(jié)方式主要體現(xiàn)在以下幾個方面:(1)比例(P)調節(jié)成比例地反映控制偏差,偏差一旦產(chǎn)生,比例調節(jié)立即發(fā)揮作用,以減少偏差,但不能消除偏差,使得系統(tǒng)存在凈差。增大Kp可以提高系統(tǒng)開環(huán)增益,減小凈差,提高系統(tǒng)的控制精度;但Kp過大,會降低系統(tǒng)動態(tài)質量,是系統(tǒng)不穩(wěn)定。(2)積分(I)調節(jié)主要
16、用于消除凈差,屬于無差調節(jié);但是的穩(wěn)定性作用比P調節(jié)要差??傮w上來說:適量增大積分會減小振蕩周期,減小調節(jié)時間。(3)微分(D)調節(jié)反映偏差的變化趨勢,并能在偏差信號變得太大之前,在系統(tǒng)中引入一個有效的早期修正,從而加快系統(tǒng)的動作速度,減小調節(jié)時間。但增大比例會使系統(tǒng)振蕩不穩(wěn)定。然后是前饋部分,由于其是采用的微分環(huán)節(jié),所以其具有微分調節(jié)的一般特性,其可以表示出調節(jié)量的變化速度(包括其大小和方向),這樣就使得調節(jié)器能夠根據(jù)調節(jié)量的變化速度來確定控制量的一個特性,而不是等到調節(jié)量出現(xiàn)很大的偏差后才開始動作,進而賦予調節(jié)器某種程度的預見性。在知道控制部分的以上功能后,在仿真實驗系統(tǒng)中,對PID參數(shù)調
17、節(jié)時,在參數(shù)接近實驗要求時,固定某一參數(shù),對另一參數(shù)微調,進而找出另一參數(shù)最優(yōu)時的參數(shù)值,然后固定這兩個參數(shù),調節(jié)第三個參數(shù);但是由于系統(tǒng)是對三種不同輸入都有一定的性能要求,這就使得在調解時,在各個不同輸入時的各個狀態(tài)之間切換調節(jié),已選擇系統(tǒng)整體最優(yōu)時的參數(shù)作為最終參數(shù)值。3、結合系統(tǒng)調試,分析實際系統(tǒng)與仿真之間的差別。其實要分析仿真和實際系統(tǒng)之間的差別,我們可以從仿真系統(tǒng)的著手處加以分析說明。我們知道仿真是在將實際系統(tǒng)的各個部分進行簡化,進而抓住主要特征,忽略次要特征的情況下的,對真實系統(tǒng)的一種模擬。由于真實系統(tǒng)往往是非常復雜的,這樣決定了仿真系統(tǒng)雖然可以通過一些手段逼近真實的實際系統(tǒng),但永
18、遠都會和實際系統(tǒng)之間存在著差異。這可能體現(xiàn)在系統(tǒng)部件的非線性轉變,電磁干擾等多方面的影響。但仿真系統(tǒng)總能夠給真實的系統(tǒng)設計指導一定的方向,有著不可代替的作用。下面從兩個方面說明下實際系統(tǒng)。伺服系統(tǒng)的剛度描述了系統(tǒng)抗扭矩干擾的能力,實際系統(tǒng)的剛度比較難于衡量,這是由于實際系統(tǒng)的干擾往往難于量化,對于一個伺服系統(tǒng)來說,高的剛度能夠達到較好的伺服性能; 在仿真時,則不需要考慮這方面的問題。伺服系統(tǒng)的抗噪音能力描述了系統(tǒng)對噪音源的放大程度,噪音干擾會導致系統(tǒng)發(fā)熱、振蕩,扭矩波動和雜音等不良的現(xiàn)象。在實際系統(tǒng)中,對參數(shù)的調整也會受到電機噪聲的影響。同樣這些特征在仿真中仍然不給予考慮。但總體上來說,就如同
19、前面所總結的一樣,雖然仿真系統(tǒng)與實際系統(tǒng)有差別,但其對真實系統(tǒng)的建立有著很重要的知道作用。四、學習心得請結合課程內容和實驗進行總結。通過此次伺服系統(tǒng)的仿真和實際系統(tǒng)的實驗,讓我對伺服系統(tǒng)、特別是位置控制的伺服系統(tǒng)在其結構、控制方式等方面有了更加深刻的理解。也讓我更加的認識到了伺服系統(tǒng)的重要作用,高效率的伺服系統(tǒng)總能夠很好的讓系統(tǒng)的輸出很好的跟隨著輸入信號,進而復現(xiàn)給定信號,控制系統(tǒng)使得系統(tǒng)按照需要的特點進行運轉。本次實驗中,主要面對的是控制器的設計,更加讓我熟悉了PID調節(jié)中其參數(shù)的設計選擇,也對伺服系統(tǒng)的控制結構有了較為深刻的認識。但是我也認識到了伺服系統(tǒng)雖然較為常用的一類控制但是其仍然是屬
20、于自動控制系統(tǒng)中的一種,在現(xiàn)實的伺服系統(tǒng)設計中總是結合到了自動控制和現(xiàn)代控制理論中的知識。隨著社會的發(fā)展和科技的不斷進步現(xiàn)在的伺服系統(tǒng)控制逐漸由模擬化和直流化的階段向著數(shù)字化和交流化的方向發(fā)展。比如伺服電機控制器由于可以對電機實現(xiàn)精確的力矩控制,其速度控制和位置控制可以直接通過數(shù)字控制來實現(xiàn)。其性能好,反應速度快和穩(wěn)定性高,有助于提高生產(chǎn)率。此外由于以前所學專業(yè)與現(xiàn)在專業(yè)的不同,這讓我在學習伺服系統(tǒng)時有很大的困難,特別是在做實驗的過程中更讓自己感到了學習知識的匱乏,但也激發(fā)了自己繼續(xù)學習的動力。提醒自己在以后的學習中更加努力的去學習知識,充實自己。擴充自己的知識面,爭取讓自己的知識能夠較為全面
21、的發(fā)展。最后,也對老師在課程的學習和課程實驗中的指導表示感謝。我們能夠完成這份不是很優(yōu)秀的報告,和您的關心指導有著莫大的關聯(lián),再次感謝老師。也祝老師工作順利,身體健康。參考文獻1.隨動系統(tǒng),曾樂生、施妙和編著,北京工業(yè)出版社,19882.伺服系統(tǒng)實用技術,肖英奎等編,化學工業(yè)出版社,20043.數(shù)字伺服控制系統(tǒng)與設計,盧志剛等編著,機械工業(yè)出版社,20074伺服技術,厲虹等主編,國防工業(yè)出版社,20085.MATLAB自動控制系統(tǒng)設計,張德豐等編著,機械工業(yè)出版社,2010附錄資料:不需要的可以自行刪除 busybox詳解制作根文件系統(tǒng)詳解制作根文件系統(tǒng) 一、FHS(Filesystem Hi
22、erarchy Standard)標準介紹當我們在linux下輸入ls / 的時候,見到的目錄結構以及這些目錄下的內容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統(tǒng)布局上都遵循FHS標準的建議規(guī)定。該標準規(guī)定了根目錄下各個子目錄的名稱及其存放的內容:目錄名存放的內容/bin必備的用戶命令,例如ls、cp等/sbin必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev設備文件,例如mtdblock0、tty1等/etc系統(tǒng)配置文件,包括啟動文件,例如inittab等/lib必要的鏈接庫,例如C鏈接庫、內核模塊/home普通用戶主目錄/rootroot用戶主目錄/usr/b
23、in非必備的用戶程序,例如find、du等/usr/sbin非必備的管理員程序,例如chroot、inetd等/usr/lib庫文件/var守護程序和工具程序所存放的可變,例如日志文件/proc用來提供內核與進程信息的虛擬文件系統(tǒng),由內核自動生成目錄下的內容/sys用來提供內核與設備信息的虛擬文件系統(tǒng),由內核自動生成目錄下的內容/mnt文件系統(tǒng)掛接點,用于臨時安裝文件系統(tǒng)/tmp臨時性的文件,重啟后將自動清除制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內容。其過程大體包括:編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄 利用交叉編譯工具鏈
24、,構建/lib目錄 手工構建/etc目錄 手工構建最簡化的/dev目錄 創(chuàng)建其它空目錄 配置系統(tǒng)自動生成/proc目錄 利用udev構建完整的/dev目錄 制作根文件系統(tǒng)的jffs2映像文件 下面就來詳細介紹這個過程。二、編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄這些目錄下存儲的主要是常用命令的二進制文件。如果要自己編寫這幾百個常用命令的源程序,my god, 這簡直是一個噩夢!好在我們有嵌入式Linux系統(tǒng)的瑞士軍刀busybox,事情就簡單很多。1、從 HYPERLINK / / 下載busybox-1.7.0.tar.bz22、tar xj
25、vf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busyboxbusybox配置主要分兩部分。第一部分是Busybox Settings,主要編譯和安裝busybox的一些選項。這里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no shared libs),表示編譯busybox時,是否靜態(tài)鏈接C庫。我們選擇動態(tài)鏈接C庫。2)、Installation Op
26、tions - Applets links (as soft-links) - (X) as soft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟鏈接還是硬鏈接。我們選擇軟鏈接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行編輯;保留History size以支
27、持記憶歷史命令;選中Tab completion和Username completion以支持命令自動補全 第二部分是Applets,他將busybox的支持的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這里我們基本保持默認設置。1)選中Networking Utilities - httpd下的Enable -u option,以啟用http服務器的功能allows the server to run as a specific user5、編譯busyboxmake6、安裝busyboxmake install安裝完成后,可以看到在/work/nfs_root/fs_min
28、i3目錄下生成了binsbinusr/binusr/sbin目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 d
29、ennis dennis 7 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通PC機上的ls命令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l
30、 /bin/ls-rwxr-xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它嬌小的身軀容納了數(shù)以百計的命令代碼,實在是讓人佩服不已,其不愧嵌入式系統(tǒng)瑞士軍刀之美譽。據(jù)說,busybox的作者身患絕癥,這更讓人欽佩GNU開源軟件的作者們。 三、利用交叉編譯工具鏈,構建/lib目錄 光有應用程序(命令)是不夠的,因為應用程序本身需要使用C庫的庫函數(shù),因此還必需制作for ARM的C庫,并將其放置于/lib目錄。my god,要自己寫C庫的源代碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、for ARM的C庫和二進制工
31、具。哈哈,for ARM的C庫是現(xiàn)成的,我們只需要拷貝過來就可以了。遺憾的是:整個C庫目錄下的文件總大小有26M。而我們根文件系統(tǒng)所在分區(qū)不過區(qū)區(qū)16M而已,根本放不下。怎么辦呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib 需要C庫目錄下所有的文件嗎?no,absolutely no! 讓我們來分析一下glibc庫目錄下內容的組成
32、。該目錄下的子目錄和文件共分8類: 目標文件,如crtn.o,用于gcc鏈接可執(zhí)行文件 libtool庫文件(.la),在鏈接庫文件時這些文件會被用到,比如他們列出了當前庫文件所依賴的其它庫文件,程序運行時無需這些文件 gconv目錄,里面是各種鏈接腳本,在編譯應用程序時,他們用于指定程序的運行地址,各段的位置等 靜態(tài)庫文件(.a),例如libm.a,libc.a 動態(tài)庫文件 (.so、.so.0-9*) 動態(tài)鏈接庫加載器ld-2.3.6.so、ld-linux.so.2 其它目錄及文件很顯然,第1、2、3、4、7類文件和目錄是不需要拷貝的。由于動態(tài)鏈接的應用程序本身并不含有它所調用的C庫函數(shù)
33、的代碼,因此執(zhí)行時需要動態(tài)鏈接庫加載器來為它加載相應的C庫文件,所以第6類文件是需要拷貝的。除此之外,第5類文件當然要拷貝。但第5類文件的大小也相當大。dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷貝嗎?非也,非也!其實,需要哪些庫完全取決于要運行的應用程序使用了哪些庫函數(shù)。如果我們只制作最簡單的系統(tǒng),那么我們只需要運行busybox這一個應用程序即可。通過執(zhí)行 dennisdennis-desktop:/work/nfs_root/fs
34、_mini3$ arm-linux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3個庫:通用C庫(libc)、數(shù)學庫(libm)、加密庫(libcrypt),因此我們只需要拷貝這3個庫的庫文件即可。但是每個庫都有4個文件,4個文件都要拷貝嗎?當然不是。 de
35、nnisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 den
36、nis dennis 17 2008-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis dennis 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008
37、-12-22 15:38 libm.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-01-22 05:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:3
38、1 libc.a-rw-r-r- 1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4個文件中的.a文件是靜態(tài)庫文件,是不需要拷貝的。另外3個文件是: 實際的共享鏈接庫:libLIBRARY_NAME-GLIBC_VERSION.so。當然需要拷貝。 主修訂版本的符號鏈接,指向實際的共享鏈接庫:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦鏈接了特定的鏈接庫,將會參用
39、該符號鏈接。程序啟動時,加載器在加載程序前,會檢索該文件。所以需要拷貝。 與版本無關的符號鏈接,指向主修訂版本的符號連接(libc.so是唯一的例外,他是一個鏈接命令行:libLIBRARY_NAME.so,是為編譯程序時提供一個通用條目)。這些文件在程序被編譯時會被用到,但在程序運行時不會被用到,所以不必拷貝它。關于共享庫的2個符號鏈接的作用的特別說明:當我們使用gcc hello.c -o hello -lm編譯程序時,gcc會根據(jù)-lm的指示,加頭(lib)添尾(.so)得到libm.so,從而沿著與版本無關的符號鏈接(libm.so - libm.so.6)找到libm.so.6并記錄
40、在案(hello的ELF頭中),表示hello需要使用libm.so.6這個庫文件所代表的數(shù)學庫中的庫函數(shù)。而當hello被執(zhí)行的時候,動態(tài)鏈接庫加載器會從hello的ELF頭中找到libm.so.6這個記錄,然后沿著主修訂版本的符號鏈接(libm.so.6 - libm-2.3.6.so)找到實際的共享鏈接庫libm-2.3.6.so,從而將其與hello作動態(tài)鏈接??梢姡c版本無關的符號鏈接是供編譯器使用的,主修訂版本的符號鏈接是供動態(tài)鏈接庫加載器使用的,而實際的共享鏈接庫則是供應用程序使用的。通過以上分析,我們只需要拷貝3個庫(每個庫各1個主修訂版本的符號鏈接和1個實際的共享鏈接庫)以及
41、動態(tài)鏈接庫加載器(1個符號鏈接和1個實體文件)。步驟如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libcrypt-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/a
42、rm-linux/lib$ cp -l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libm-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libm.so.* /work/nfs_root/fs_mini3/libdennisdennis-deskto
43、p:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libc.so.* /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l ld-* /work/nfs_root/fs
44、_mini3/lib 四、手工構建/etc目錄 /etc目錄存放的是系統(tǒng)程序的主配置文件,因此需要哪些配置文件取決于要運行哪些系統(tǒng)程序。即使最小的系統(tǒng)也一定會運行1號用戶進程init,所以我們至少要手工編寫init的主配置文件inittab。busybox的inittab文件的語法、語義與傳統(tǒng)的SYSV的inittab有所不同。 inittab文件中每個條目用來定義一個需要init啟動的子進程,并確定它的啟動方式,格式為:。例如:ttySAC0:askfirst:-/bin/sh 表示子進程要使用的控制臺,若省略則使用與init進程一樣的控制臺 表示運行級別,busybox init程序這個字
45、段沒有意義 表示init進程如何控制這個子進程 sysinit:系統(tǒng)啟動后最先執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動作 wait:系統(tǒng)執(zhí)行完sysinit條目后執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動作 once:系統(tǒng)執(zhí)行完wait條目后執(zhí)行,只執(zhí)行一次,init進程不等待它結束 respawn:啟動完once進程后,init進程監(jiān)測發(fā)現(xiàn)子進程退出時,重新啟動它 askfirst:啟動完respawn進程后,與respawn類似,不過init進程先輸出” Please press Enter to activate this console“,等用戶輸入回
46、車后才啟動子進程 shutdown:當系統(tǒng)關機時 restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init進程接收到SIGUP信號時執(zhí)行,先重新讀取、解析/etc/inittab文件,再執(zhí)行restart程序 ctrlaltdel:按下ctrl+alt+del鍵時執(zhí)行,不過在串口控制臺中無法輸入它 表示進程對應的二進制文件。如果前面有-號,表示該程序是“可以與用戶進行交互的”我們制作最簡單的/etc/inittab文件,其內容如下::sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin
47、/reboot:shutdown:/bin/umount -a r 制作最簡單的腳本程序文件/etc/init.d/rcS,其內容如下: #!/bin/shifconfig eth0 7修改shell腳本文件/etc/init.d/rcS的權限,以使其可被執(zhí)行:# chmod a+x /etc/init.d/rcS五、手工構建最簡化的/dev目錄 在linux機器上,執(zhí)行l(wèi)s /dev可看到幾百個設備文件,我需要手工創(chuàng)建它們嗎?maybe,我只需要手工創(chuàng)建幾個設備文件!我怎么知道我應該創(chuàng)建哪幾個設備文件呢?管它呢,先看看開發(fā)板上可愛的linux的反應再說。 啟動Linux操作系統(tǒng),顯示: VF
48、S: Mounted root (nfs filesystem).Freeing init memory: 112KWarning: unable to open an initial console. 這說明,內核已經(jīng)成功掛載根文件系統(tǒng),但卻未能成功啟動第1個用戶進程init。通過錯誤消息“unable to open an initial console”搜索內核源代碼,找到init/main.c文件。748 static int noinline init_post(void)749 750 free_initmem();751 unlock_kernel();752 mark_roda
49、ta_ro();753 system_state = SYSTEM_RUNNING;754 numa_default_policy();755 756 if (sys_open(const char _user *) /dev/console, O_RDWR, 0) 0)757 printk(KERN_WARNING Warning: unable to open an initial console.n);758 759 (void) sys_dup(0);760 (void) sys_dup(0);761 762 if (ramdisk_execute_command) 763 run_i
50、nit_process(ramdisk_execute_command);764 printk(KERN_WARNING Failed to execute %sn,765 ramdisk_execute_command);766 767 768 /*769 * We try each of these until one succeeds.770 *771 * The Bourne shell can be used instead of init if we are772 * trying to recover a really broken machine.773 */774 if (e
51、xecute_command) 775 run_init_process(execute_command);776 printk(KERN_WARNING Failed to execute %s. Attempting 777 defaults.n, execute_command);778 779 run_init_process(/sbin/init);780 run_init_process(/etc/init);781 run_init_process(/bin/init);782 run_init_process(/bin/sh);783 784 panic(No init fou
52、nd. Try passing init= option to kernel.);785 顯然,內核錯誤是由175行不能打開/dev/console所致。通過查看已經(jīng)安裝好的linux機器的/dev/console設備文件,可知其是字符設備文件,主設備號為5,次設備號為1: dennisdennis-desktop:/work/nfs_root/fs_mini3/etc$ ls -l /dev/consolecrw- 1 root root 5, 1 2010-04-08 08:40 /dev/console 因此,我們使用下面的命令創(chuàng)建它: HYPERLINK mailto:dennisde
53、nnis-desktop:/work/nfs_root/fs_mini3/dev$ dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod console c 5 1 還需要創(chuàng)建其它設備文件嗎?只有天知道!再看看linux的反應。 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit: cant open /dev/null: No such file or directory 這次我們有經(jīng)驗了,如法炮制,創(chuàng)建/dev/null設備文件:dennisde
54、nnis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod null c 1 3 再次重啟開發(fā)板上的linux,顯示 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS Please press Enter to activate this console.starting pid 231, tt
55、y : /bin/sh# 哈哈,我們成功了,終于可以K歌去了。六、創(chuàng)建其它空目錄K完歌回來,繼續(xù)戰(zhàn)斗。dennisdennis-desktop:/work/nfs_root/fs_mini3$ mkdir home root proc sys tmp mnt var再次重啟動開發(fā)板上的linux。咦,似乎有些問題。VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS Please press Enter to activate this console.starting pid 231, tty : /bin/s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流與信息技術整合的策略試題及答案
- 加強信息素養(yǎng)的圖書管理員試題及答案
- 2024年計算機二級考試全科試題及答案
- 注冊會計師在企業(yè)中的角色試題及答案
- 寵物殯葬師社會責任感試題及答案
- 投資咨詢工程師戰(zhàn)略選擇試題及答案
- 生態(tài)位與生物多樣性試題及答案
- 學習投資理論的有效方法試題及答案
- 黑龍江民族職業(yè)學院《教師工作實務》2023-2024學年第二學期期末試卷
- 黑龍江省伊春市伊春區(qū)2025年數(shù)學三下期末質量跟蹤監(jiān)視模擬試題含解析
- DB32T 5003-2025小微型和勞動密集型工業(yè)企業(yè)現(xiàn)場安全管理規(guī)范
- 與孩子一起成長(家庭教育課件)
- 鐵缺乏癥和缺鐵性貧血診治和預防的多學科專家共識(2022年版)
- 斯蒂芬·P·羅賓斯-組織行為學筆記14版(自己整理)
- 植保無人機基礎知識試題含答案
- 砂(碎石)墊層施工作業(yè)指導書
- 黑紅色簡約風《白夜行》名著導讀好書推薦PPT模板
- 吉春亞神奇的漢字-完整版PPT
- 上海市初三數(shù)學競賽(大同杯)試題
- 付款審批表(標準樣本)
- 《船舶安全檢查表》word版
評論
0/150
提交評論