版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、沈陽理工大學課程設計專用紙No 沈陽理工大學 TOC o 1-3 h z u HYPERLINK l _Toc375855188 緒 論 PAGEREF _Toc375855188 h 1 HYPERLINK l _Toc375855189 2主傳動的運動設計 PAGEREF _Toc375855189 h 2 HYPERLINK l _Toc375855190 2.1 轉速圖的擬定 PAGEREF _Toc375855190 h 2 HYPERLINK l _Toc375855191 2.2 齒輪齒數(shù)的確定 PAGEREF _Toc375855191 h 4 HYPERLINK l _Toc
2、375855192 2.3 繪制傳動系統(tǒng)圖 PAGEREF _Toc375855192 h 5 HYPERLINK l _Toc375855193 2.4主軸及各傳動軸計算轉速的確定 PAGEREF _Toc375855193 h 6 HYPERLINK l _Toc375855194 2.5估算各傳動軸軸徑 PAGEREF _Toc375855194 h 6 HYPERLINK l _Toc375855195 2.6 齒輪模數(shù)的估算 PAGEREF _Toc375855195 h 8 HYPERLINK l _Toc375855196 3 皮帶輪的設計 PAGEREF _Toc3758551
3、96 h 10 HYPERLINK l _Toc375855197 3.1 設計計算 PAGEREF _Toc375855197 h 10 HYPERLINK l _Toc375855198 4.核算主軸轉速誤差 PAGEREF _Toc375855198 h 13 HYPERLINK l _Toc375855199 5.機床零件的驗算 PAGEREF _Toc375855199 h 14 HYPERLINK l _Toc375855200 5.1 傳動軸的驗算 PAGEREF _Toc375855200 h 14 HYPERLINK l _Toc375855201 5.2齒輪的驗算 PAGE
4、REF _Toc375855201 h 17 HYPERLINK l _Toc375855202 6.結束語 PAGEREF _Toc375855202 h 20 HYPERLINK l _Toc375855203 參考書目 PAGEREF _Toc375855203 h 21緒 論 金屬切削機床是用刀具或磨具對金屬工件進行切削加工的機器。在一般機械制造工廠中,機床約占機器設備總臺數(shù)的5070%,它所擔負的工作量約占總勞動量的一半。 現(xiàn)代化工業(yè)生產(chǎn)主要表現(xiàn)在生產(chǎn)總量的提高與先進的技術指標兩方面,而這些則取決于機械制造工業(yè)提供的裝備的技術水平、機床工業(yè)是及其制造業(yè)的重要部門,擔負著為農(nóng)業(yè)、工業(yè)、
5、科學技術和國防等現(xiàn)代化提供技術裝備的任務,在整個國民經(jīng)濟中占有重要地位。一個國家機床工業(yè)的技術水平。機床的擁有量和現(xiàn)代化程度是這個國家工業(yè)生產(chǎn)能力核技術水平的重要標志之一。 我國機床工業(yè)從無到有,從小到大,從修配到制造,從紡織到自行設計,從沿海到內(nèi)地,從通用機床到專用機床,從單機到配套,不斷發(fā)展壯大。目前,我國的機床工業(yè)體系已經(jīng)基本形成,并設計和制造了一些具有先進水平的機床,逐步掌握了精密、高效、簡短、重型等機床品種。許多工廠已試制和生產(chǎn)了數(shù)控車床、數(shù)控銑床、數(shù)控鏜床以及加工中心。機關技術、靜壓技術、數(shù)顯裝置、電子計算機等也成功地用到機床上。 雖然我國的機床工業(yè)取得了巨大的成就,但還不能滿足國
6、防建設和工業(yè)告訴發(fā)展的需要,特別是在質量和品種方面,在重型機床和高效機床方面,在基本理論和試驗研究方面,與世界先進水平相比還存在一定的差距。2主傳動的運動設計2.1 轉速圖的擬定 分析和設計主傳動系統(tǒng)須應用一種特殊線圖,稱為轉速圖。轉速圖能夠清楚的表達出:傳動軸的數(shù)目,主軸及各傳動軸的轉速級數(shù)、轉速值及其傳動路線,變速組的個數(shù)、傳動順序及擴大順序,各變速組的傳動副數(shù)及其傳動比數(shù)值,變速規(guī)律等。首先根據(jù)最高轉速和最低轉速確定變速范圍,選擇合適的公比后再確定轉速級數(shù),繪制轉速圖:已知機床的轉速范圍在15r/min5069r/min,電動機的最高轉速為4700r/min,額定轉速為1500 r/mi
7、n,電動機的額定功率P=15kW,確定主軸箱結構(1)確定主軸的變速范圍 (2)確定主軸的計算轉速 由于數(shù)控機床主軸的變速范圍大,計算轉速應比計算值高些,所以取計算轉速nj=。(3)確定主軸的恒功率變速范圍 (4)確定電動機所能夠提供的恒功率變速范圍 由于RnNRdN,電動機直接驅動主軸不能滿足恒功率變速要求,因此需要串聯(lián)一個無級變速箱,以滿足主軸的恒功率調速范圍。 變速箱恒功率調速范圍:(5)確定轉速級數(shù)令,則 對于數(shù)控車床,為了加工端面時滿足恒線速度切削的要求,應使轉速有一些重復,故取。 回求驗算變速組的變速范圍是否超過極限值: 滿足要求(7)擬定轉速圖和功率特性圖如圖2.1所示 圖2.1
8、 轉速圖和主軸功率特性圖在設計主傳動系統(tǒng)結構時,需要全面考慮,特別要注意結構尺寸和傳動性能的影響,以便擬定出更加完善合理的轉速圖方案。 2.2 齒輪齒數(shù)的確定 確定齒輪齒數(shù)應注意的問題: 齒輪的齒數(shù)和不應過大,以免加大兩軸之間的中心距,使機床的機構龐大;同時,增加齒數(shù)和,還會提高齒輪的線速度而加大噪音。一般推薦齒數(shù)和。 齒輪的齒數(shù)和不應過小,應考慮:a.最小齒輪不產(chǎn)生根切現(xiàn)象,對于標準直齒圓柱齒輪,一般取最小齒數(shù)。b.受結構限制的各齒輪(尤其是最小齒輪),應能可靠地裝到軸上或進行套裝;齒輪的齒槽到孔壁或鍵槽的厚度 (為模數(shù)),以保證有足夠的強度,避免出現(xiàn)變形或斷裂現(xiàn)象。c.兩軸間最小中心距應取
9、得適宜。若齒數(shù)和太小,則中心距過小,將導致兩軸上的軸承及其他結構之間的距離過近或相碰。確定齒輪齒數(shù)時,應符合轉速圖上傳動比的要求。實際傳動比(齒輪齒數(shù)之比)與理論傳動比(轉速圖上給定的傳動比)之間允許有誤差,但不應過大。由于確定齒輪齒數(shù)所造成的主軸轉速相對誤差,一般于不允許超過。即。 式中 主軸的實際轉速; 主軸的標準轉速; 公比。 確定齒輪齒數(shù)(變速組內(nèi)齒輪模數(shù)相同時齒輪齒數(shù)的定): 確定齒輪齒數(shù)時,首先必須確定出各變速組內(nèi)齒輪副的模數(shù),以便根據(jù)結構尺寸判斷其最小齒輪齒數(shù)或齒數(shù)和是否適宜。在同一變速組內(nèi)的齒輪可取相同的模數(shù),也可取不同的模數(shù)。 根據(jù)轉速圖確定的傳動比可初步確定各軸的齒輪如下:
10、(1)軸與軸的中間齒輪的齒數(shù)取 根據(jù)上式求得 且,所以滿足要求。(2)軸與軸之間齒輪的齒數(shù)取 根據(jù)上式求得 且,所以滿足要求。(3)軸與軸之間齒輪的齒數(shù)取 25 根據(jù)上式求得 80且,所以滿足要求。(4)軸與軸之間齒輪的齒數(shù) 取 根據(jù)式求得 66且,所以滿足要求。 聯(lián)立上面兩式求得:, 。2.3 繪制傳動系統(tǒng)圖根據(jù)上述求出的齒輪齒數(shù)繪制傳動系統(tǒng)圖如下:2.4主軸及各傳動軸計算轉速的確定(1) 主軸計算轉速的確定:根據(jù)轉速圖得中型車床主軸的計算轉速。(2) 各軸的計算轉速的確定主軸計算轉速確定后,就可以從轉速圖上得出各傳動軸的計算轉速,對于上述轉速圖可得各傳動軸的計算轉速如下:軸的計算轉速:軸的
11、計算轉速:軸的計算轉速:軸的計算轉速:2.5估算各傳動軸軸徑根據(jù)傳動軸傳動的功率大小,用扭轉剛度公式進行初步的計算。 式中 d受扭部分的最小直徑(mm),計算值應圓整為標準直徑系列; K鍵槽系數(shù),按表選?。?A根據(jù)許用扭轉角確定的系數(shù),按表2.1選取; d傳動軸受扭部分的直徑(mm); P電動機額定功率 (kW); 從電動機到所計算的軸的機械效率,見表2 被估算的傳動軸的計算轉速()。表2.1 估算軸徑時A和K值0.250.511.52A130110928377K無鍵單鍵雙鍵花鍵軸內(nèi)徑11.041.051.071.10.93表2.2各傳動機械效率的概略值類別傳動件平均機械效率齒輪傳動直齒圓柱齒
12、輪,磨齒0.99帶傳動V帶0.96滾動軸承滾子軸承0.99由于各傳動軸屬于一般傳動軸,所以取,所對應的,電動機的額定功率。(1)軸軸徑的估算由于軸為花鍵軸,所以取且 圓整后?。?)軸軸徑的估算由于軸為花鍵軸,所以取 且 圓整后?。?)軸軸徑的估算由于軸為花鍵軸,所以取 且 圓整后取(4) 軸軸徑的估算由于軸為花鍵軸,所以取 圓整后取(5)軸軸徑的估算軸為主軸,其前軸徑的尺寸,根據(jù)電動機的額定功率,應在100160之間,取。則后軸徑為:圓整后取2.6 齒輪模數(shù)的估算 初步計算齒輪模數(shù)時,按簡化的接觸疲勞強度公式進行。一般同一變速組中的齒輪取同一模數(shù),選擇負荷最重的小齒輪進行計算。從等強度的觀點出
13、發(fā),可減小其它齒輪的寬度,使齒輪基本上處于在相近的接觸應力或彎曲應力狀態(tài)下工作。這樣一來,還可以縮短該傳動組的軸向尺寸。模數(shù)的估算公式如下: 式中 mj按接觸疲勞強度估算的齒輪模數(shù)(mm),應圓整為標準值; P電動機額定功率(kW); nj被估算齒輪的計算轉速(r/min); u大齒輪與小齒輪齒數(shù)之比,u1,外嚙合為“+”號,內(nèi)嚙合為“-”號; Z小齒輪齒數(shù); m齒寬系數(shù), m=B/m=610,B為齒寬,m為模數(shù); j許用接觸應力(MPa),根據(jù)材料查表得。根據(jù)表選擇鋼(整體淬火)或20CrMnTi(S-C59),其接觸應力分別為、,取,由公式來確定各對齒輪的模數(shù):(1)第一對齒輪: ; 取標
14、準值 中心距(2)第二對齒輪: ; ; 取標準值 中心距(3) 第三對齒輪:20CrMnTi ;取標準值 中心距(4)第四對齒輪:20CrMnTi ; ; 取標準值 中心距(5)第五對齒輪:20CrMnTi ; ; 取標準值 中心距3 皮帶輪的設計 帶傳動是由帶和帶輪組成傳遞運動和動力的傳動。根據(jù)工作原理可分為兩類:摩擦帶傳動和嚙合帶傳動。摩擦帶傳動是機床主要傳動方式之一,常見的有平帶傳動和V帶傳動;嚙合傳動只有同步帶一種。 普通V帶傳動是常見的帶傳動形式,其結構為:承載層為繩芯或膠簾布,楔角為40、相對高度進似為0.7、梯形截面環(huán)行帶。其特點為:當量摩擦系數(shù)大,工作面與輪槽粘附著好,允許包角
15、小、傳動比大、預緊力小。繩芯結構帶體較柔軟,曲撓疲勞性好。其應用于:帶速V2530m/s;傳動功率P700kW;傳動比i10軸間距小的傳動。3.1 設計計算 普通V帶傳動的設計計算見表。設計普通V帶傳動的原始數(shù)據(jù)為:傳遞的功率P(KW);小、大帶輪的轉速n1、n2(r/min);傳動對外廓尺寸的要求;傳動的工作條件。已知、。普通V帶的計算: (1)設計功率的確定:查得工況系數(shù)(2) 選定帶型:根據(jù)和確定為B型。(3)傳動比:根據(jù)轉速圖知,傳動比為(4)確定小帶輪基準直徑:參考表取(5)確定大帶輪直徑:取標準值 (6) 驗算帶速:因為在之間,所以經(jīng)濟耐用。 (7)初定帶輪軸中心距:得: 即: 初
16、取 (8)確定帶基準長度: 選取基準長度 (9)計算實際軸間距:圓整取。安裝時所需最小軸間距:張緊或補償伸長所需最大軸間距: (10)驗算小帶輪包角:所以小帶輪包角合適。 (11)單根V帶的基本額定功率:根據(jù)和查得B型V帶的基本額定功率。 (12)單根V帶的額定功率增量:考慮到傳動比的影響,額定功率的增量由表查得: (13)計算帶的根數(shù): 考慮到帶數(shù)過多,更換帶型為C型。重新求得,C型V帶的基本額定功率,額定功率增量; 取 根。 (14)單根V帶的預緊力: 新帶取計算值的1.5倍。 (15)作用在軸上的力: (16)帶輪的結構和尺寸:由表可查得, , 4.核算主軸轉速誤差 所以合適。5.機床零
17、件的驗算 5.1 傳動軸的驗算對IV軸進行驗算傳動件的受力分析 由知當軸傳遞的功率一定時,隨著分度圓d減小Ft增大,所以驗算當小齒輪嚙合時軸的撓度和偏轉角。根據(jù)理論力學,IV軸受力分析如圖5-1所示:圖51 受力分析2.計算軸的當量直徑 式中l(wèi)支點間的距離,mm; li,di 軸上第段的長度和直徑,mm; c 外伸端長度,mm。計算撓度 由公式得由公式得簡化IV軸為簡支梁如圖5-2所示: 圖52 等效簡支梁簡支梁圖如圖5-2所示:由圖可知,a=163mm,b=50.5mm,l=213.5mm 軸的許用撓度 而 ,所以軸的撓度合格。4計算偏轉角因為裝向心球軸承處的偏轉角許用值 而所以A處偏轉角合
18、格。 因為裝向心球軸承處的偏轉角許用值 而所以C處偏轉角合格。5.2齒輪的驗算驗算變速箱中的齒輪強度,應選擇相同模數(shù)承受載荷最大的齒數(shù)最小的齒輪,進行接觸應力和彎曲應力驗算。一般對高速傳動的齒輪驗算齒面接觸應力,對低速傳動的齒輪驗算齒根彎曲應力。對硬齒面、軟齒芯滲碳淬火的齒輪,一定要驗算齒根彎曲應力。接觸應力的驗算公式為彎曲應力的驗算公式為: (MPa)式中 P齒輪傳遞的功率(kW);Pd, Pd電動機的額定功率(kW); 從電動機到所計算齒輪的機械效率; nj齒輪的計算轉速; m初算的齒輪模數(shù); b齒寬(mm); Z小齒輪齒數(shù); U大齒輪與小齒輪齒數(shù)之比,u1,“+”號用于外嚙合,“-”號用
19、于內(nèi)嚙合; KS 壽命系數(shù);KS=KTKnKPKa KT 工作期限系數(shù): T 齒輪在機床工作期限(TS)內(nèi)的總工作時間( h ),對于中型機床的齒輪取TS =1500020000h,同一變速組內(nèi)的齒輪總工作時間可近似地認為 T=TS/p ,p為變速組的傳動副數(shù); n1 齒輪的最低轉速(r/min); C0基準循環(huán)次數(shù),查表4-5; m疲勞曲線指數(shù),查表4-5; Kn速度轉化系數(shù),查表4-6; Kp功率利用系數(shù),查表4-7; Ka材料強化系數(shù),查表4-8; KS 的極限值KSmax,KSmin見表4-9,當KS KSmax時,則取KS= KSmax;當 KS KSmin 時,取KS = KSmi
20、n ; KA 工作情況系數(shù),中等沖擊的主運動,取KA=1.21.6; KV動載荷系數(shù),查表4-10; 齒向載荷分布系數(shù),查表4-11; Y標準齒輪齒形系數(shù),查表HYPERLINK 圖片/biao%205.12.ppt4-12; H 許用接觸應力(MPa),查表4-13; F 許用彎曲應力(MPa),查表 4-13。 如果驗算結果和不合格時,可以改變初算時選定的材料或熱處理方法,如仍不滿足時,就得采取調整齒寬或重新選擇齒數(shù)及模數(shù)等措施。例: 驗算IV軸上Z=69,m=4mm的齒輪(1)齒輪接觸應力的計算由公式 校核齒輪的接觸應力。其中:,由公式 來確定由表查得 ,而 由轉速圖知 由表得 ,由表得
21、,由表得 由表確定,由表得 ,由表得 ,由表得 ,最后取 則: 所以,齒輪的接觸應力滿足要求。(2)齒輪彎曲應力的驗算由公式 進和計算其中:,由表可求得由表可知,由表可知,由表可知取 則: 所以,彎曲應力滿足要求。6.結束語首先,感謝張曉老師在這為期兩個星期的課程設計中對我的辛勤指導,沒有張曉老師的指導,我不會這么容易快速很好的完成本次設計任務。其次,在這次設計中我學到了以下幾點:(1)掌握機床主傳動部件設計過程和方法,包括參數(shù)擬定,傳動設計,零件計算,結構設計等,培養(yǎng)結構分析和設計的能力。(2)綜合應用過去所學的理論知識,提高聯(lián)系實際和綜合分析的能力。(3)訓練和提高設計的基本技能。如計算,
22、制圖,應用設計資料,標準和規(guī)范,編寫技術文件等。(4)鞏固了在機械制造裝備設計課程中學到的知識,使我很好的把所學的知識應用到了實際設計中,為以后的設計打下了堅實的基礎。參考書目機械制造裝備設計,第3版,關慧貞、馮辛安主編,機械工業(yè)出版社出版,2011.01機械設計,第八版, 濮良貴主編,高等教育出版社出版,2006.05機械原理,第七版,孫恒主編,高等教育出版社出版,2006.05機械制造裝備設計 課程設計指導書,許立福 張志軍 宇宏 張曉主編 2009.11附錄資料:不需要的可以自行刪除 busybox詳解制作根文件系統(tǒng)詳解制作根文件系統(tǒng) 一、FHS(Filesystem Hierarchy
23、 Standard)標準介紹當我們在linux下輸入ls / 的時候,見到的目錄結構以及這些目錄下的內(nèi)容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統(tǒng)布局上都遵循FHS標準的建議規(guī)定。該標準規(guī)定了根目錄下各個子目錄的名稱及其存放的內(nèi)容:目錄名存放的內(nèi)容/bin必備的用戶命令,例如ls、cp等/sbin必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev設備文件,例如mtdblock0、tty1等/etc系統(tǒng)配置文件,包括啟動文件,例如inittab等/lib必要的鏈接庫,例如C鏈接庫、內(nèi)核模塊/home普通用戶主目錄/rootroot用戶主目錄/usr/bin非必備的用
24、戶程序,例如find、du等/usr/sbin非必備的管理員程序,例如chroot、inetd等/usr/lib庫文件/var守護程序和工具程序所存放的可變,例如日志文件/proc用來提供內(nèi)核與進程信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/sys用來提供內(nèi)核與設備信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/mnt文件系統(tǒng)掛接點,用于臨時安裝文件系統(tǒng)/tmp臨時性的文件,重啟后將自動清除制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內(nèi)容。其過程大體包括:編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄 利用交叉編譯工具鏈,構建/lib
25、目錄 手工構建/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 xjvf busy
26、box-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox HYPERLINK /y1meas5zrVyWRApB-3amnI3XoX1uejYB25KKj1kpqxTRhOGgR_PuwGIQD9zdV3d5uvhNok3Z_YMczeZUopvoGEQES1yAumIZZZ14T5WFiL1BGGc7xrEbBCPe_ET2gFHV8nhyRPim0l3Fnss0hvRQ7UWWA/image4%2066DF829F.png busybo
27、x配置主要分兩部分。第一部分是Busybox Settings,主要編譯和安裝busybox的一些選項。這里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no shared libs),表示編譯busybox時,是否靜態(tài)鏈接C庫。我們選擇動態(tài)鏈接C庫。2)、Installation Options - Applets links (as soft-links) - (X) as soft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟鏈接還是硬鏈接。我們選擇軟鏈接。3)、Installati
28、on Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行編輯;保留History size以支持記憶歷史命令;選中Tab completion和Username completion以支持命令自動補全 第二部分是Applets,他將busybox的支持的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這里我們基本保持默
29、認設置。1)選中Networking Utilities - httpd下的Enable -u option,以啟用http服務器的功能allows the server to run as a specific user5、編譯busyboxmake6、安裝busyboxmake install安裝完成后,可以看到在/work/nfs_root/fs_mini3目錄下生成了binsbinusr/binusr/sbin目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nf
30、s_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 dennis dennis 7 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x
31、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 /bin/ls-rwxr-xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它嬌小的身軀容納了數(shù)以百計的命令代碼,實在是讓人佩服不已,其不愧嵌入式系統(tǒng)瑞士軍刀之美譽。據(jù)說,b
32、usybox的作者身患絕癥,這更讓人欽佩GNU開源軟件的作者們。 三、利用交叉編譯工具鏈,構建/lib目錄 光有應用程序(命令)是不夠的,因為應用程序本身需要使用C庫的庫函數(shù),因此還必需制作for ARM的C庫,并將其放置于/lib目錄。my god,要自己寫C庫的源代碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、for ARM的C庫和二進制工具。哈哈,for ARM的C庫是現(xiàn)成的,我們只需要拷貝過來就可以了。遺憾的是:整個C庫目錄下的文件總大小有26M。而我們根文件系統(tǒng)所在分區(qū)不過區(qū)區(qū)16M而已,根本放不下。怎么辦呢? dennisdennis-desktop:/work/n
33、fs_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庫目錄下內(nèi)容的組成。該目錄下的子目錄和文件共分8類: 目標文件,如crtn.o,用于gcc鏈接可執(zhí)行文件 libtool庫文件(.la),在鏈接庫文件時這些文件會被用到,比如他們列出了當前庫文件所依賴的其它庫文件,程序運行時無需這些文件 gconv目錄,里
34、面是各種鏈接腳本,在編譯應用程序時,他們用于指定程序的運行地址,各段的位置等 靜態(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ù)的代碼,因此執(zhí)行時需要動態(tài)鏈接庫加載器來為它加載相應的C庫文件,所以第6類文件是需要拷貝的。除此之外,第5類文件當然要拷貝。但第5類文件的大小也相當大。dennisdennis-desktop:/work/tools/gcc-3.4.5-
35、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_mini3$ arm-linux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NE
36、EDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3個庫:通用C庫(libc)、數(shù)學庫(libm)、加密庫(libcrypt),因此我們只需要拷貝這3個庫的庫文件即可。但是每個庫都有4個文件,4個文件都要拷貝嗎?當然不是。 dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2
37、008-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 dennis 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/
38、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-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-de
39、sktop:/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:31 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 -
40、 libc-2.3.6.so 4個文件中的.a文件是靜態(tài)庫文件,是不需要拷貝的。另外3個文件是: 實際的共享鏈接庫:libLIBRARY_NAME-GLIBC_VERSION.so。當然需要拷貝。 主修訂版本的符號鏈接,指向實際的共享鏈接庫:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦鏈接了特定的鏈接庫,將會參用該符號鏈接。程序啟動時,加載器在加載程序前,會檢索該文件。所以需要拷貝。 與版本無關的符號鏈接,指向主修訂版本的符號連接(libc.so是唯一的例外,他是一個鏈接命令行:libLIBRARY_NAME.so,是為編譯程序時提供一個通用條目
41、)。這些文件在程序被編譯時會被用到,但在程序運行時不會被用到,所以不必拷貝它。關于共享庫的2個符號鏈接的作用的特別說明:當我們使用gcc hello.c -o hello -lm編譯程序時,gcc會根據(jù)-lm的指示,加頭(lib)添尾(.so)得到libm.so,從而沿著與版本無關的符號鏈接(libm.so - libm.so.6)找到libm.so.6并記錄在案(hello的ELF頭中),表示hello需要使用libm.so.6這個庫文件所代表的數(shù)學庫中的庫函數(shù)。而當hello被執(zhí)行的時候,動態(tài)鏈接庫加載器會從hello的ELF頭中找到libm.so.6這個記錄,然后沿著主修訂版本的符號鏈接
42、(libm.so.6 - libm-2.3.6.so)找到實際的共享鏈接庫libm-2.3.6.so,從而將其與hello作動態(tài)鏈接??梢?,與版本無關的符號鏈接是供編譯器使用的,主修訂版本的符號鏈接是供動態(tài)鏈接庫加載器使用的,而實際的共享鏈接庫則是供應用程序使用的。通過以上分析,我們只需要拷貝3個庫(每個庫各1個主修訂版本的符號鏈接和1個實際的共享鏈接庫)以及動態(tài)鏈接庫加載器(1個符號鏈接和1個實體文件)。步驟如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root
43、/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/arm-linux/lib$ cp -l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm
44、-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-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tool
45、s/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_mini3/lib 四、手工構建/etc目錄 /etc目錄存放的是系統(tǒng)程序的主配置文件,因此需要哪些配置文件取決于要運行哪些系統(tǒng)程序。即使最小的系統(tǒng)也一定會運行1號用戶進程init,所以我們至少要手工編寫init的主配置文件initta
46、b。busybox的inittab文件的語法、語義與傳統(tǒng)的SYSV的inittab有所不同。 inittab文件中每個條目用來定義一個需要init啟動的子進程,并確定它的啟動方式,格式為:。例如:ttySAC0:askfirst:-/bin/sh 表示子進程要使用的控制臺,若省略則使用與init進程一樣的控制臺 表示運行級別,busybox init程序這個字段沒有意義 表示init進程如何控制這個子進程 sysinit:系統(tǒng)啟動后最先執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動作 wait:系統(tǒng)執(zhí)行完sysinit條目后執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動
47、作 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“,等用戶輸入回車后才啟動子進程 shutdown:當系統(tǒng)關機時 restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init進程接收到SIGUP信號時執(zhí)行,先重新讀取、解析/etc/inittab文件,再執(zhí)行r
48、estart程序 ctrlaltdel:按下ctrl+alt+del鍵時執(zhí)行,不過在串口控制臺中無法輸入它 表示進程對應的二進制文件。如果前面有-號,表示該程序是“可以與用戶進行交互的”我們制作最簡單的/etc/inittab文件,其內(nèi)容如下::sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a r 制作最簡單的腳本程序文件/etc/init.d/rcS,其內(nèi)容如下: #!/bin/shifconfig eth0 7修改shell腳本文件/etc/init.d/rcS
49、的權限,以使其可被執(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),顯示: VFS: Mounted root (nfs filesystem).Freeing init memory: 112KWarning: unable to open an initial console. 這說明,內(nèi)核已經(jīng)成功掛載根文件系統(tǒng)
50、,但卻未能成功啟動第1個用戶進程init。通過錯誤消息“unable to open an initial console”搜索內(nèi)核源代碼,找到init/main.c文件。748 static int noinline init_post(void)749 750 free_initmem();751 unlock_kernel();752 mark_rodata_ro();753 system_state = SYSTEM_RUNNING;754 numa_default_policy();755 756 if (sys_open(const char _user *) /dev/conso
51、le, 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_init_process(ramdisk_execute_command);764 printk(KERN_WARNING Failed to execute %sn,765 ramdisk_execute_command);766 767
52、 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 (execute_command) 775 run_init_process(execute_command);776 printk(KERN_WARNING Failed to execute %s. Attempting 777 defa
53、ults.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 found. Try passing init= option to kernel.);785 顯然,內(nèi)核錯誤是由175行不能打開/dev/console所致。通過查看已經(jīng)安裝好的linux機器的/dev/console設備文件,可知其是字符設
54、備文件,主設備號為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:dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod console c 5 1 還需要
55、創(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設備文件:dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod null c 1 3 再次重啟開發(fā)板上的linux,顯示 VFS: Mounted root (nfs filesystem).Fre
56、eing 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/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 acti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職國際航運業(yè)務管理(航運業(yè)務操作)試題及答案
- 2025年高職航空機電設備維修(航空設備維護)試題及答案
- 2025年高職(食品生物技術)食品酶制劑應用專項測試試題及答案
- 2025年高職生態(tài)保護運營(運營技術)試題及答案
- 2025年大學戲劇影視表演(表演基礎)試題及答案
- 2025年高職(智能制造裝備技術)裝備維護階段測試題及答案
- 2025年高職(給排水工程技術專業(yè))管道維修試題及答案
- 2025年大學休閑體育(康樂體育)試題及答案
- 2025年高職地理教育(地理教學設計)試題及答案
- 2025年高職(園林技術)綠化工程施工實訓試題及答案
- 后切式背栓連接干掛石材幕墻施工方案
- 人教版數(shù)學四年級上冊期末測試卷及答案 (共八套)-2
- 淮安市2022-2023學年七年級上學期期末道德與法治試題【帶答案】
- 大轉爐氧槍橡膠軟管和金屬軟管性能比較
- 四川省內(nèi)江市2023-2024學年高二上學期期末檢測生物試題
- 02-廢氣收集系統(tǒng)-風管設計課件
- 2022ABBUMC100.3智能電機控制器
- 天津東疆我工作圖0718
- GB/T 19367-2022人造板的尺寸測定
- 北京春季化學會考試卷及答案
- 數(shù)學建模插值與擬合
評論
0/150
提交評論