資源描述:
《嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第5章 嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立本章要點(diǎn)主機(jī)開(kāi)發(fā)環(huán)境的建立嵌入式Linux系統(tǒng)內(nèi)核的裁剪、編譯嵌入式Linux系統(tǒng)開(kāi)發(fā)板的燒寫(xiě)建立主機(jī)開(kāi)發(fā)環(huán)境1、交叉編譯什么是交叉工具鏈?為什么要使用交叉工具鏈?所謂交叉編譯就是在一個(gè)平臺(tái)上生成可以在另一個(gè)平臺(tái)上執(zhí)行的代碼。安裝進(jìn)行嵌入式開(kāi)發(fā)前,首先需安裝交叉工具鏈,步驟如下:1.解壓工具鏈到某一目錄下例:tarxvzfarm-linux-gcc-4.3.2.tar.gz–C/2.修改/etc/profile,添加pathmunge/usr/local/arm/4.3.2/bin3.執(zhí)行source/e
2、tc/profile使用編譯器:arm-linux-gccarm-linux-gcchello.c–ohello反匯編工具:arm-linux-objdumparm-linux-objdump–D–ShelloELF文件查看工具:arm-linux-readelfarm-linux-readelf–ahelloarm-linux-readelf–dhello查看hello使用的動(dòng)態(tài)庫(kù)編譯嵌入式Linux內(nèi)核嵌入式Linux系統(tǒng)由Linux內(nèi)核與根文件系統(tǒng)兩部分構(gòu)成,兩者缺一不可。內(nèi)核制作制作嵌入式平臺(tái)使用的Linux內(nèi)核,方法和制作PC
3、平臺(tái)的Linux內(nèi)核基本一致,下面使用對(duì)比的方式介紹如何制作用于嵌入式開(kāi)發(fā)板的內(nèi)核。1、清除原有配置與中間文件x86:makedistcleanarm:makedistclean2、配置內(nèi)核x86:makemenuconfigarm:makemenuconfigARCH=arm3、編譯內(nèi)核x86:makebzImagearm:makeuImageARCH=armCROSS_COMPILE=arm-linux根文件系統(tǒng)根文件系統(tǒng)是Linux啟動(dòng)時(shí)使用的第一個(gè)文件系統(tǒng)。沒(méi)有根文件系統(tǒng),Linux將無(wú)法正常啟動(dòng)。根文件系統(tǒng)由一系列目錄組成,目
4、錄中包含了應(yīng)用程序、C庫(kù)、以及相關(guān)的配置文件。根文件系統(tǒng)1、創(chuàng)建根文件系統(tǒng)的目錄mkdirrootfscdrootfsmkdirbindevetclibprocsbinsysusrmnttmpvarmkdirusr/binusr/libusr/sbinlib/modules2、創(chuàng)建設(shè)備文件cddev/mknod-m666consolec51mknod-m666nullc13cd..3、安裝/etctaretc.tar.gz–C/xxx/rootfs根文件系統(tǒng)4、編譯內(nèi)核模塊進(jìn)入Linux內(nèi)核目錄(linux2.6.29)makemodu
5、lesARCH=armCROSS_COMPILE=arm-linux-5、安裝內(nèi)核模塊makemodules_installARCH=armINSTALL_MOD_PATH=/xxx/rootfs根文件系統(tǒng)——Busybox:嵌入式開(kāi)發(fā)中的瑞士軍刀6、配置busybox進(jìn)入busybox目錄執(zhí)行makemenuconfiga.進(jìn)入BusyboxSettingsbuildOptions->選中“Buildbusyboxasastaticbinary”,靜態(tài)鏈接CrossCompilerprefix(arm-linux-)Installat
6、ionOptions->選中“Don‘tuse/usr”,選中該項(xiàng)可以避免busybox被安裝到宿主系統(tǒng)的/usr目錄下,破壞宿主系統(tǒng)BusyboxInstallationPrefix(/xxx/rootfs)該選項(xiàng)表明編譯后的busybox的安裝位置根文件系統(tǒng)7、編譯、安裝busyboxmakeARCH=armCROSS_COMPILE=arm-linux-makeinstallRamdisk基于前面步驟制作好的根文件系統(tǒng),可進(jìn)一步制作ramdisk,步驟如下:1、genext2fs-b8192-d/xxx/rootfsramdisk
7、**genext2fs為產(chǎn)生ramdisk的工具**2、gzip-9-framdiskBootLoader什么是BootLoader?軟件層次一個(gè)嵌入式系統(tǒng)從軟件角度來(lái)看分為三個(gè)層次:1.引導(dǎo)加載程序包括固化在固件(firmware)中的boot程序(可選),和BootLoader兩大部分。2.Linux內(nèi)核特定于嵌入式平臺(tái)的定制內(nèi)核。3.文件系統(tǒng)包括了系統(tǒng)命令和應(yīng)用程序。一個(gè)同時(shí)裝有BootLoader、內(nèi)核的啟動(dòng)參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲(chǔ)設(shè)備的典型空間分配結(jié)構(gòu)圖:軟件層次回憶PCPC機(jī)中的引導(dǎo)加載程序由BIOS(其本質(zhì)
8、是一段固件程序)和GRUB或LILO一起組成。BIOS在完成硬件檢測(cè)和資源分配后,將硬盤(pán)中的引導(dǎo)程序讀到系統(tǒng)內(nèi)存中然后將控制權(quán)交給引導(dǎo)程序。引導(dǎo)程序的主要任務(wù)是將內(nèi)核從硬盤(pán)上讀到內(nèi)存中,然后跳轉(zhuǎn)到內(nèi)核的入口