版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Thesuccess'sroad嵌入式Linux開發(fā)
今天內(nèi)容嵌入式Linux系統(tǒng)簡介構(gòu)造嵌入式Linux系統(tǒng)搭建開發(fā)平臺編譯Linux內(nèi)核下載根文件系統(tǒng)Gdb和gdbserver第1部分嵌入式Linux系統(tǒng)簡介嵌入式Linux系統(tǒng)簡介嵌入式系統(tǒng)開發(fā)曾經(jīng)進入32位時代,在當(dāng)前的數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速開展的后PCPost-PC時代,嵌入式系統(tǒng)曾經(jīng)廣泛的浸透到科學(xué)研討、工程設(shè)計、軍事技術(shù)、各類產(chǎn)業(yè)和商業(yè)文化藝術(shù)、文娛業(yè)以及人們的日常生活等方方面面中。隨著國內(nèi)外嵌入式產(chǎn)品的進一步開發(fā)和推行,嵌入式技術(shù)越來越和人們的生活嚴密結(jié)合。什么是嵌入式系統(tǒng)?無處不在,融入生活嵌入式系統(tǒng)定義嵌入式系統(tǒng)是以運用為中心,以計算機技術(shù)為根底,并且軟硬件可裁剪,適用于運用系統(tǒng)對功能、可靠性、本錢、體積、功耗有嚴厲要求的公用計算機系統(tǒng)。MP3、PDA、手機;DVD機、機頂盒;車載GPS系統(tǒng)、探測火星的機器人。嵌入式系統(tǒng)與PC機處置器存儲器輸入輸出軟件〔操作系統(tǒng)/驅(qū)動程序/運用程序〕嵌入式產(chǎn)品內(nèi)部機構(gòu)嵌入式系統(tǒng)與PC設(shè)備名稱嵌入式系統(tǒng)PC機CPU嵌入式處理器(ARM,MIPS等)CPU(Intel的Pentium、AMD的Athlon等)內(nèi)存SDRAM芯片SDRAM,DDR內(nèi)存條存儲設(shè)備Flash芯片硬盤輸入設(shè)備按鍵、觸摸屏鼠標、鍵盤輸出設(shè)備LCD顯示器聲音設(shè)備音頻芯片聲卡接口MAX232等芯片主板集成其他設(shè)備USB芯片、網(wǎng)卡芯片主板集成或外接卡嵌入式系統(tǒng)與PC〔CONT〕嵌入式系統(tǒng)PC機引導(dǎo)代碼Bootloader引導(dǎo),針對不同電路板進行移植主板的BIOS引導(dǎo),無須改動操作系統(tǒng)WinCE、VxWorks、Linux等,需要移植Windows、Linux等,不需要移植驅(qū)動程序每個設(shè)備驅(qū)動都必須針對電路板進行重新開發(fā)或移植,一般不能直接下載使用操作系統(tǒng)含有大多數(shù)驅(qū)動程序,或從網(wǎng)上下載直接使用協(xié)議棧需要移植操作系統(tǒng)包括,或第三方提供開發(fā)環(huán)境借助服務(wù)器進行交叉編譯在本機就可開發(fā)調(diào)試仿真器需要不需要嵌入式系統(tǒng)的特點1〕嵌入式系統(tǒng)低功耗、體積小,公用性強。嵌入式系統(tǒng)與PC機的最大不同就是嵌入式CPU大多任務(wù)在為特定用戶群設(shè)計的系統(tǒng)中,可以把PC機中許多由板卡完成的義務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計趨于小型化。2〕為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件普通都固化在存儲器芯片或單片機本身中,而不是存貯于磁盤等載體中。3〕嵌入式系統(tǒng)的硬件和軟件都必需高效率地設(shè)計,系統(tǒng)要精簡。操作系統(tǒng)普通和運用軟件集成在一同。4〕對軟件代碼質(zhì)量要求很高。應(yīng)該盡最大能夠防止死機的情況發(fā)生。5〕嵌入式系統(tǒng)開發(fā)需求專門的開發(fā)工具和開發(fā)環(huán)境。典型的嵌入式操作系統(tǒng)LinuxuC/OSWindowsCEVxWorksPalmOSQNXSymbianHowToChoice第2部分構(gòu)造嵌入式Linux系統(tǒng)開發(fā)環(huán)境Host與TargetLinux效力器〔Host〕客戶機1客戶機2客戶機3客戶機4交換機開發(fā)板〔Target〕串口是一個基于x86架構(gòu)的計算機〔Pentium4處置器、Athlon處置器等〕,即i386平臺。Target是目的平臺,比如ARM、MIPS、SuperH、PowerPC等。交叉編譯環(huán)境隨著硬件平臺和操作系統(tǒng)的多樣化,軟件向不同平臺移植的任務(wù)變得越來越繁復(fù)。交叉編譯技術(shù)的引入為軟件的不同平臺移植發(fā)明了便利條件。在交叉編譯技術(shù)中有兩種比較典型的實現(xiàn):Java方式,即Java的字節(jié)碼編譯技術(shù);GNUGCC方式,即通常所講的CrossGCC技術(shù)。Java方式GNUGCC方式計算機源程序〔c,java…〕文本編輯器計算機系統(tǒng)目的平臺,目的代碼計算機系統(tǒng)GCC交叉編譯器Linux下的GCC交叉編譯器
GNUBinutilsGNUBinutils的主要工具有兩個,一個是銜接程序ld,另外一個是匯編程序as。其主要目的是為GNU系統(tǒng),提供匯編和銜接工具。GNUGCCGNUGCC就是上面提到的GCC,GCC主要是為GNU系統(tǒng)提供C編譯器。如今支持多種言語,這其中包括C/C++、Fortran、Java、Objective-C、甚至還有Ada。GNUGLibc用于定義系統(tǒng)調(diào)用和其它一些根本的函數(shù)調(diào)用。交叉編譯的過程GCC交叉編譯器生成
第一步,獲得Binutils、GCC、Glibc的源碼。第二步,配置并編譯Binutils獲得我們所需求的匯編和銜接程序。第三步,配置并編譯GCC源碼生成GCC編譯器。普通是C編譯器首先生成,然后以這個為根底在結(jié)合下一步要生成的Glibc的C函數(shù)庫,再編譯生成其它編譯器。第四步,配置Glibc并編譯生成Glibc的C函數(shù)庫。第五步,再次配置和編譯GCC源碼,生成其它言語的編譯器,如C++編譯器等。代碼構(gòu)造設(shè)置環(huán)境變量ExportPROJECT=S3C2410TKExportPRJROOT=~/$PROJECTExportTARGET=arm-linuxExportPREFIX=$PROJECT/toolsExportTARGET_PREFIX=$PREFIX/$TARGETExportPATH=$PREFIX/bin:$PATHTARGET常用的值實際平臺TARGET的值PowerPCpowerpc-linuxARMarm-linuxMIPS(bigendian)mips-linuxMIPS(littleendian)mipsel-linuxSuperH4sh4-linux交叉編譯流程第1步安裝內(nèi)核頭文件〔1〕$cdinclude/asm-arm/ $rmarchproc $ln-sarch-s3c2410arch $ln-sproc-armvprocproc-armoisfor26-bitsARMproc-armvisfor32-bitsARM安裝內(nèi)核頭文件〔2〕配置內(nèi)核makeARCH=armCROSS_COMPILE=arm-linux-menuconfigARCH 目的平臺CROSS_COMPILE 交叉編譯工具保管后退出上述操作勝利后,會生成: linux-2.4.18/include/linux/version.h安裝內(nèi)核頭文件〔3〕$mkdir-p$TARGET_PREFIX/include$cp-rinclude/linux/$TARGET_PREFIX/include/$cp-rinclude/asm-arm/$TARGET_PREFIX/include/asm與平臺相關(guān)的匯編$cp-rinclude/asm-generic/$TARGET_PREFIX/include剛剛都做了些什么?第2步安裝Binutils$cd$PRJROOT/build-tools/$tar-xvzfbinutils-2.14.tar.gz$cdbuild-binutils$../binutils-2.14/configure--target=$TARGET--prefix=$PREFIXMakefile和Config文件將被生成,存放在build-tools/build-binutils/目錄下$make$makeinstall剛剛又做了些什么?第3步安裝Bootstrap編譯器創(chuàng)建交叉編譯版本的gcc,需求交叉編譯版本的glibc及其頭文件;而交叉編譯版本的glibc是經(jīng)過交叉編譯版本的gcc創(chuàng)建的。安裝Bootstrap編譯器修正gcc源代碼中的gcc/config/arm/t-linux文件,在該文件的TARGET_LIBGCC2_CFLAGS后面加上__gthr_posix_h和inhibit_libc:TARGET_LIBGCC2_CFLAGS=-fomit-frame-pointer–fPIC(修正前)TARGET_LIBGCC2_CFLAGS=-fomit-frame-pointer–fPIC-Dinhibit_libc-D__gthr_posix_h.安裝Bootstrap編譯器$cdbuild-boot-gcc/ $../gcc-2.95.3/configure--target=$TARGET--prefix=$PREFIX--without-headers--with-newlib--enable-languages=c--disable-threadsMakefile和config文件生成在build-tools/build-boot-gcc/--target目的平臺--prefix 安裝途徑--without-headers我們?nèi)缃駴]有g(shù)libcheaders--with-newlib 不運用glibc--enable-languages=c只支持C言語--disable-threads-Dinhibit_libc補丁 $makeall-gcc$makeinstall-gcc剛剛又做了些什么?第4步安裝C庫$cd$PRJROOT/build-tools/$tar-xvzfglibc-2.1.3.tar.gz$tar-xvzfglibc-crypt-2.1.tar.gz--directory=glibc-2.1.3$tar-xvzfglibc-linuxthreads-2.1.3.tar.gz--directory=glibc-2.1.3$cdbuild-glibc/$CC=arm-linux-gcc../glibc-2.1.3/configure--host=$TARGET\>--prefix="/usr"--enable-add-ons\>--with-headers=$TARGET_PREFIX/includeMakefile和config文件生成在build-tools/build-glibc/CC=arm-linux-gcc--host=$TARGET--prefix="/usr“--enable-add-ons 運用linux線程--with-headers運用linux內(nèi)核頭文件安裝C庫$cd$PRJROOT/build-tools/build-glibc/$make$makeinstall_root=$TARGET_PREFIXprefix=""install安裝glibc到$TARGET_PREFIX留意不要覆蓋系統(tǒng)原來的庫Glibc的安裝途徑在$install_root/$prefix/usr/lib/,如今我們安裝在$install_root/$prefix/lib/$cd$TARGET_PREFIX/lib/安裝C庫$cplibc.solibc.so.orig$vilibc.so修正libc.so文件GROUP(/lib/libc.so.6/lib/libc_nonshared.a)GROUP(libc.so.6libc_nonshared.a)剛剛又做了些什么?第5步最后的安裝$cd$PRJROOT/build-tools/build-gcc/ $../gcc-<version>/configure--target=$TARGET\ –prefix=$PREFIX\ --enable-languages=c,c++ $makeall $makeinstall$PRJROOT/tools目錄構(gòu)造生成的ToolchainBinutils工具包引見addr2line:把程序地址轉(zhuǎn)換為文件名和行號。在命令行中給它一個地址和一個可執(zhí)行文件名,它就會運用這個可執(zhí)行文件的調(diào)試信息指出在給出的地址上是哪個文件以及行號。ar:建立、修正、提取歸檔文件。歸檔文件是包含多個文件內(nèi)容的一個大文件,其構(gòu)造保證了可以恢復(fù)原始文件內(nèi)容。Binutils工具包引見as:主要用來編譯GNUC編譯器gcc輸出的匯編文件,產(chǎn)生的目的文件由銜接器ld銜接。c++filt:銜接器運用它來過濾C++和Java符號,防止重載函數(shù)沖突。gprof:顯示程序調(diào)用段的各種數(shù)據(jù)。nm:列出目的文件中的符號。Binutils工具包引見objcopy:把一種目的文件中的內(nèi)容復(fù)制到另一種類型的目的文件中。objdump:顯示一個或者更多目的文件的信息。顯示一個或者更多目的文件的信息。運用選項來控制其顯示的信息。它所顯示的信息通常只需編寫編譯工具的人才感興趣。Binutils工具包引見ld:銜接器。它把一些目的和歸檔文件結(jié)合在一同,重定位數(shù)據(jù),并鏈接符號援用。通常,建立一個新編譯程序的最后一步就是調(diào)用ld。ranlib:產(chǎn)生歸檔文件索引,并將其保管到這個歸檔文件中。在索引中列出了歸檔文件各成員所定義的可重分配目的文件。Binutils工具包引見readelf:顯示ebf格式可執(zhí)行文件的信息。size:列出目的文件每一段的大小以及總體的大小。默許情況下,對于每個目的文件或者一個歸檔文件中的每個模塊只產(chǎn)生一行輸出。strip:丟棄目的文件中的全部或者特定符號。Binutils工具包引見strings:打印某個文件的可打印字符串,這些字符串最少4個字符長,也可以運用選項-n設(shè)置字符串的最小長度。默許情況下,它只打印目的文件初始化和可加載段中的可打印字符;對于其它類型的文件它打印整個文件的可打印字符,這個程序?qū)τ诹私夥俏谋疚募膬?nèi)容很有協(xié)助。gcc編譯器引見cpp:C預(yù)處置器。g++:C++編譯器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅綠化養(yǎng)護合同
- 《榜樣9》觀后感:新時代共產(chǎn)黨人的精神力量
- 電影評論中背景設(shè)定的藝術(shù)分析
- 2024高中地理第2章區(qū)域可持續(xù)發(fā)展第6節(jié)區(qū)域工業(yè)化與城市化進程-以珠江三角洲為例精練含解析湘教版必修3
- 2024高中物理第三章相互作用2彈力課后作業(yè)含解析新人教版必修1
- 2024高中語文第6單元墨子蚜第3課尚賢練習(xí)含解析新人教版選修先秦諸子蚜
- 2024高中語文第六課語言的藝術(shù)第4節(jié)入鄉(xiāng)問俗-語言和文化練習(xí)含解析新人教版選修語言文字應(yīng)用
- 2024高考化學(xué)一輪復(fù)習(xí)課練22化學(xué)反應(yīng)的方向與限度含解析
- 校長在新學(xué)期第一次年級組長會議上講話
- 小學(xué)一年級綜合與實踐教學(xué)計劃
- 榮譽證書打印模板word格式
- 營養(yǎng)學(xué)與健康
- 單位工會組織活動方案(9篇)
- 人教版五年級數(shù)學(xué)下冊(全冊)同步練習(xí)隨堂練習(xí)一課一練
- GB/T 29165.4-2015石油天然氣工業(yè)玻璃纖維增強塑料管第4部分:裝配、安裝與運行
- 血液凈化十大安全目標課件
- 鼻竇負壓置換療課件
- 國際森林日森林防火教育宣傳主題班會PPT模板
- 藥廠質(zhì)量管理部QA人員崗位設(shè)置表
- 劍橋國際少兒英語“第三級”單詞默寫表
- (精心整理)高中生物必修二非選擇題專題訓(xùn)練
評論
0/150
提交評論