![(精)嵌入式Linux的Uboot系統(tǒng)啟動過程_第1頁](http://file4.renrendoc.com/view/c9ec9b585e9da6cadae77a00c2a6563f/c9ec9b585e9da6cadae77a00c2a6563f1.gif)
![(精)嵌入式Linux的Uboot系統(tǒng)啟動過程_第2頁](http://file4.renrendoc.com/view/c9ec9b585e9da6cadae77a00c2a6563f/c9ec9b585e9da6cadae77a00c2a6563f2.gif)
![(精)嵌入式Linux的Uboot系統(tǒng)啟動過程_第3頁](http://file4.renrendoc.com/view/c9ec9b585e9da6cadae77a00c2a6563f/c9ec9b585e9da6cadae77a00c2a6563f3.gif)
![(精)嵌入式Linux的Uboot系統(tǒng)啟動過程_第4頁](http://file4.renrendoc.com/view/c9ec9b585e9da6cadae77a00c2a6563f/c9ec9b585e9da6cadae77a00c2a6563f4.gif)
![(精)嵌入式Linux的Uboot系統(tǒng)啟動過程_第5頁](http://file4.renrendoc.com/view/c9ec9b585e9da6cadae77a00c2a6563f/c9ec9b585e9da6cadae77a00c2a6563f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式Linux的U-boot系統(tǒng)啟動過程本章鑒于Intel企業(yè)的pxa270芯片剖析U-Boot的工作體制,介紹了嵌入式Linux交錯開發(fā)工具ELDKEmbeddedLinuxDevelopmentKit),說明配置安裝U-Boot到特定主板、交錯編譯調(diào)試Linux的方法,剖析了U-Boot的構(gòu)架。目錄隱蔽1BootLoad啟動方式1.1網(wǎng)絡(luò)啟動方式1.22磁盤啟動方式1.33Flash啟動方式2U-Boot介紹2.1U-Boot功能介紹2.2U-Boot安裝2.3U-Boot命令介紹2.4U-Boot環(huán)境變量2.5U-Boot腳本2.6U-Boot獨自應(yīng)用程序2.7位圖支持32ELDK工具
2、介紹3.1下載與編譯3.2成立開發(fā)系統(tǒng)3.3編譯安裝Linux內(nèi)核3.4啟動嵌入式Linux3.5Flash文件系統(tǒng)3.6根文件系統(tǒng)的設(shè)計與編譯3.7覆蓋層文件系統(tǒng)o3.8調(diào)試1)U-Boot的調(diào)試2)Linux內(nèi)核調(diào)試3)遠程調(diào)試應(yīng)用程序BootLoad啟動方式Bootloader的主要功能是指引操作系統(tǒng)啟動,開放源代碼的BootLoader種類好多,常用的BootLoader的功能說明如表1所示。表1常用BootLoader的功能說明1/59Bootloader名能否終端監(jiān)督描述x86ARMPowerPCLILO否Linux磁盤指引程序是否否GRUB否GNU的LILO代替程序是否否Load
3、lin否從DOS指引Linux是否否ROLO否從ROM指引Linux而不需要BIOS是否否Etherboot否經(jīng)過以太網(wǎng)卡啟動Linux系統(tǒng)的固件是否否LinuxBIOS否完整代替BUIS的Linux指引程序是否否BLOB否LART等硬件平臺的指引程序否是否U-boot是通用指引程序是是是RedBoot是鑒于eCos的指引程序是是是網(wǎng)絡(luò)啟動方式這類方式開發(fā)板不需要配置較大的儲存介質(zhì),跟無盤工作站有點近似??墒鞘褂眠@類啟動方式以前,需要把Bootloader安裝到板上的EPROM或許Flash中。Bootloader經(jīng)過以太網(wǎng)接口遠程下載Linux內(nèi)核映像或許文件系統(tǒng)。第4章介紹的交錯開發(fā)環(huán)境就
4、是以網(wǎng)絡(luò)啟動方式成立的。這類方式關(guān)于嵌入式系統(tǒng)開發(fā)來說特別重要。使用這類方式也有前提條件,就是目標(biāo)板有串口、以太網(wǎng)接口或許其余連結(jié)方式。串口一般能夠作為控制臺,同時能夠用來下載內(nèi)核影像和RAMDISK文件系統(tǒng)。串口通信傳輸速率過低,不適適用來掛接NFS文件系統(tǒng)。所以以太網(wǎng)接口成為通用的互連設(shè)施,一般的開發(fā)板都能夠配置10M以太網(wǎng)接口。關(guān)于PDA等手持設(shè)施來說,以太網(wǎng)的RJ-45接口顯得大了些,而USB接口,特別是USB的迷你接口,尺寸特別小。關(guān)于開發(fā)的嵌入式系統(tǒng),能夠把USB接口虛構(gòu)成以太網(wǎng)接口來通信。這類方式在開發(fā)主機和開發(fā)板兩頭都需要驅(qū)動程序。此外,還要在服務(wù)器上配置啟動有關(guān)網(wǎng)絡(luò)服務(wù)。Bo
5、otloader下載文件一般都使用TFTP網(wǎng)絡(luò)協(xié)議,還能夠經(jīng)過DHCP的方式動向配置IP地點。DHCP/BOOTP服務(wù)為Bootloader分派IP地點,配置網(wǎng)絡(luò)參數(shù),而后才能夠支持網(wǎng)絡(luò)傳輸功能。假如Bootloader能夠直接設(shè)置網(wǎng)絡(luò)參數(shù),就能夠不使用DHCP。TFTP服務(wù)為Bootloader客戶端供給文件下載功能,把內(nèi)核映像和其余文件放在/tftpboot目錄下。這樣Bootloader能夠經(jīng)過簡單的TFTP協(xié)議遠程下載內(nèi)核映像到內(nèi)存。如圖6.1所示。圖6.1網(wǎng)絡(luò)啟動表示圖大多半指引程序都能夠支持網(wǎng)絡(luò)啟動方式。比如:BIOS的PXEPrebootExecutionEnvironment)
6、功能就是網(wǎng)絡(luò)啟動方式;U-Boot也支持網(wǎng)絡(luò)啟動功能。2磁盤啟動方式傳統(tǒng)的Linux系統(tǒng)運轉(zhuǎn)在臺式機或許服務(wù)器上,這些計算機一般都使用BIOS指引,而且使用磁盤作為儲存介質(zhì)。假如進入BIOS設(shè)置菜單,能夠探測辦理器、內(nèi)存、硬盤等設(shè)施,能夠設(shè)置BIOS從軟盤、光盤或許某塊硬盤啟動。也就是說,BIOS并不直接指引操作系統(tǒng)。那么在硬盤的主指引區(qū),還需要一個Bootloader。這個Bootloader能夠從磁盤文件系統(tǒng)中把操作系統(tǒng)指引起來。Linux傳統(tǒng)上是經(jīng)過LILOLInuxLOader)指引的,以后又出現(xiàn)了GNU的軟件GRUBGRandUnifiedBootloader)。這2種Bootloa
7、der寬泛應(yīng)用在X86的Linux系統(tǒng)上。你的開發(fā)主機可能就使用了此中一種,熟習(xí)它們有助于配置多種系統(tǒng)指引功能。2/59LILO軟件工程是由WernerAlmesberger創(chuàng)立,特意為指引Linux開發(fā)的。此刻LILO的保護者是JohnCoffman,最新版本下載站點:。LILO有詳盡的文檔,比如LILO套件中附帶使用手冊和參照手冊。別的,還能夠在LDP的LILOmini-HOWTO中找到LILO的使用指南。GRUB是GNU計劃的主要bootloader。GRUB最先是由ErichBoleyn為GNUMach操作系統(tǒng)撰寫的指引程序。以后有GordonMatzigkeit和OkujiYoshi
8、nori接替Erich的工作,持續(xù)保護和開發(fā)GRUB。GRUB的網(wǎng)站上有對套件使用的說明文件,叫作GRUBmanual。GRUB能夠使用TFTP和BOOTP或許DHCP經(jīng)過網(wǎng)絡(luò)啟動,這類功能關(guān)于系統(tǒng)開發(fā)過程很實用。除了傳統(tǒng)的Linux系統(tǒng)上的指引程序之外,還有其余一些指引程序,也能夠支持磁盤指引啟動。比如:LoadLin能夠從DOS下啟動Linux;還有ROLO、LinuxBIOS,U-Boot也支持這類功能。3Flash啟動方式大多半嵌入式系統(tǒng)上都使用Flash儲存介質(zhì)。Flash有好多種類,包含NORFlash、NANDFlash和其余半導(dǎo)體盤。此中,NORFlash也就是線性Flash)
9、使用最為廣泛。NORFlash能夠支持隨機接見,所以代碼是能夠直接在Flash上履行的。Bootloader一般是儲存在Flash芯片上的。此外,Linux內(nèi)核映像和RAMDISK也能夠儲存在Flash上。往常需要把Flash分區(qū)使用,每個區(qū)的大小應(yīng)當(dāng)是Flash擦除塊大小的整數(shù)倍。圖6.2是Bootloader和內(nèi)核映像以及文件系統(tǒng)的分區(qū)表。圖6.2Flash儲存表示圖Bootloader一般放在Flash的底端或許頂端,這要依據(jù)辦理器的復(fù)位向量設(shè)置。要使Bootloader的進口位于辦理器上電履行第一條指令的地點。接下來分派參數(shù)區(qū),這里能夠作為Bootloader的參數(shù)保存地區(qū)。再下來內(nèi)核
10、映像區(qū)。Bootloader指引Linux內(nèi)核,就是要從這個地方把內(nèi)核映像解壓到RAM中去,而后跳轉(zhuǎn)到內(nèi)核映像進口執(zhí)行。而后是文件系統(tǒng)區(qū)。假如使用Ramdisk文件系統(tǒng),則需要Bootloader把它解壓到RAM中。假如使用JFFS2文件系統(tǒng),將直接掛接為根文件系統(tǒng)。這兩種文件系統(tǒng)將在第12章詳盡解說。最后還能夠分出一些數(shù)據(jù)區(qū),這要依據(jù)實質(zhì)需要和Flash大小來考慮了。這些分區(qū)是開發(fā)者定義的,Bootloader一般直接讀寫對應(yīng)的偏移地點。到了Linux內(nèi)核空間,能夠配置成MTD設(shè)施來接見Flash分區(qū)??墒?,有的Bootloader也支持分區(qū)的功能,比如:Redboot能夠創(chuàng)立Flash分區(qū)
11、表,而且內(nèi)核MTD驅(qū)動能夠解讀出redboot的分區(qū)表。除了NORFlash,還有NANDFlash、CompactFlash、DiskOnChip等。這些Flash擁有芯片價錢低,儲存容量大的特色??墒沁@些芯片一般經(jīng)過專用控制器的I/O方式來接見,不可以隨機訪問,所以指引方式跟NORFlash也不一樣。在這些芯片上,需要配置專用的指引程序。往常,這類指引程序開端的一段代碼就把整個指引程序復(fù)制到RAM中運轉(zhuǎn),進而實現(xiàn)自舉啟動,這跟從磁盤上啟動有些相像。U-Boot介紹3/59U-Boot功能介紹PC機指引加載程序由BIOS和OSBootLoader往常為GRUB)構(gòu)成,嵌入式系一致般沒有BIO
12、S這樣的固件程序,系統(tǒng)的指引加載完整由BootLoader達成。不一樣的系統(tǒng),bootLoader是不一樣的。BootLoader有很多開放源代碼,但在標(biāo)準(zhǔn)Linux中沒有,需要用戶從網(wǎng)上下載。BootLoader包含LILO、GRUB、Loadlin、BOLB、U-boot、RedBoot等多種,此中,GRUB是LILO的繼任者,用于PC機,Loadlin用于從DOS裝載Linux;BLOB來自LARTLuserAttitudeReadjustmentTool)工程,用于指引加載鑒于StorngARMCPU的單個主板計算機;U-bootUniversalloader)是通用的開源指引程序,常
13、用于鑒于ARM、PowerPC、MIPS構(gòu)架的嵌入式Linux系統(tǒng)的指引,也用于NetBSD和VxWorks等多種操作系統(tǒng)的指引。U-Boot支持的主要功能列出以下:系統(tǒng)指引功能。支持NFS掛載、RAMDISK系統(tǒng)指引壓縮或非壓縮形式的根文件系統(tǒng)。支持NFS掛載、從Flash中指引壓縮或非壓縮的Linux內(nèi)核。擁有強盛的操作系統(tǒng)接口功能,可靈巧設(shè)置、傳達多個參數(shù)給操作系統(tǒng),支持目標(biāo)板環(huán)境參數(shù)的多種儲存方式,如Flash、NVRAM、EEPROM。支持CRC32校驗,可校驗Flash中內(nèi)核、RAMDISK鏡像文件能否完滿。支持串口、SDRAM、Flash、以太網(wǎng)、LCD、NVRAM、EEPROM
14、、鍵盤、USB、PCMCIA、PCI、RTC等設(shè)施驅(qū)動。支持上電自檢功能,如:SDRAM、Flash大小自動檢測;SDRAM故障檢測;CPU型號檢測等。U-Boot有啟動加載和下載兩種操作模式,啟動加載模式將操作系統(tǒng)加載到RAM中運轉(zhuǎn)。下載模式是以某種通信方式從主機Host)下載文件保存到目標(biāo)機的RAM中,而后被U-Boot寫到目標(biāo)機上的FLASH中。這類模式下還供給一個簡單的命令行接口。U-Boot初始化目標(biāo)板硬件,為嵌入式操作系統(tǒng)供給目標(biāo)板硬件配置信息,達成嵌入式操作系統(tǒng)裝載、指引和運轉(zhuǎn)的固件程序。它能夠?qū)⑾到y(tǒng)的軟硬件密切連接在一同。Intel鑒于XScale架構(gòu)的pxa27XARM系列辦
15、理器,最高主頻可達624MHz,加入了WirelessMMX技術(shù),寬泛應(yīng)用于PDA、智能手機、PMP等產(chǎn)品的開發(fā)中,硬件的詳盡說明請參照產(chǎn)品手冊。ARM嵌入式系統(tǒng)復(fù)位后往常都從地點0 x00000000開始履行,BootLoader就從這里開始。BootLoader分為由匯編語言實現(xiàn)的部分。stage1的功能是硬件設(shè)施初始化、準(zhǔn)備RAM、將C語言實現(xiàn)部分拷貝RAM、設(shè)置好貨倉,并跳轉(zhuǎn)到C語言實現(xiàn)部分進口點。stage1中的初始化過程列出如下:1)設(shè)置GPIO控制器,以便能控制外頭設(shè)施。4/592)障蔽全部的中止。BootLoader的履行過程中不用響應(yīng)任何中止。3)設(shè)置CPU時鐘頻次。4)RA
16、M初始化。設(shè)置系統(tǒng)的內(nèi)存控制器等。5)封閉CPU內(nèi)部指令數(shù)據(jù)cache。6)準(zhǔn)備stage2的ram空間,拷貝stage2到ram,設(shè)置貨倉。貨倉設(shè)置在stage2_end-4的地方,向下增加。、將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM中、設(shè)置啟動參數(shù)、進入內(nèi)核。進入stage2后,程序都是c語言實現(xiàn)的,stage2的第一個函數(shù)為main函數(shù)。U-Boot安裝下載和編譯U-Boot源代碼,方法以下:#下載$cd/opt/eldk/usr/src$wget$rm-fu-boot$bunzip2|tarxf-$ln-su-boot6/59$cdu-boot#編譯$makecany
17、onlands_config#生成配置文件$makeall#編譯當(dāng)目標(biāo)板沒有燒錄U-Boot或其余固件時,用戶可用帶有BDM/JTAG接口的調(diào)試或燒錄編程器help-aliasforhelpaskenv-getenvironmentvariablesfromstdinautoscr-runscriptfrommemorybase-printorsetaddressoffsetbdinfo-printBoardInfostructureboot-bootdefault,i.e.,runbootcmdbootd-bootdefault,i.e.,runbootcmdbootelf-Bootfrom
18、anELFimageinmemorybootm-bootapplicationimagefrommemorybootp-bootimagevianetworkusingBootP/TFTPprotocolbootstrap-programtheI2CbootstrapEEPROMbootvx-BootvxWorksfromanELFimagecmp-memorycompare7/59coninfo-printconsoledevicesandinformationcp-memorycopycrc32-checksumcalculationdate-get/set/resetdate&timed
19、hcp-invokeDHCPclienttoobtainIP/bootparamsU-Boot環(huán)境變量U-Boot環(huán)境是保存在永遠儲存中的一塊內(nèi)存,當(dāng)U-Boot啟動時拷貝到RAM中,儲存配置系統(tǒng)的環(huán)境變量,并被CRC32校驗和保護。一些環(huán)境變量對U-Boot來說有特別含義,可用這些環(huán)境變量配置U-Boot的行為。表1說了然環(huán)境變量的功能。表1U-Boot環(huán)境變量的說明環(huán)境變量功能說明bootdelay定義復(fù)位等候履行bootcmd變量對應(yīng)命令的時間setenvserverip=setenvipaddr=setenvrootpath/opt/ruiva/xscale/rootfs=setenv
20、bootargsroot=/dev/nfsrwnfsroot=$(serverip:$(rootpathip=$(ipaddrconsole=ttyS0,115200mem=64M#經(jīng)過bootm命令傳達給內(nèi)核的啟動參數(shù)=setenvkernel_addr30000000=setenvnfscmdtftp$(kernel_addruImage。bootm$(kernel_addr#將uImage下載到指定的地點=runnfscmd#運轉(zhuǎn)nfscmd腳本8/59U-Boot腳本U-Boot同意儲存命令序列在純文本文件中,用命令mkimage將該文件變換成腳本映像,該映像可用U-Boot命令aut
21、oscr執(zhí)行。比如:用戶需要在很多目標(biāo)板上運轉(zhuǎn)下邊命令序列,可將該命令序列儲存在一個文本文件setenv-commands中,其內(nèi)容以下:bash$catsetenv-commandssetenvloadaddr00200000echo=U-Bootsettings=setenvu-boot/tftpboot/TQM860L/u-boot.binsetenvu-boot_addr40000000setenvload_u-boottftp$loadaddr$u-bootsetenvinstall_u-bootprotectoff$u-boot_addr+$filesize。era$u-boot_
22、addr+$filesize。cp.setenvupdate_u-bootrunload_u-bootinstall_u-bootecho=LinuxKernelsettings=setenvbootfile/tftpboot/TQM860L/uImagesetenvkernel_addr40040000setenvload_kerneltftp$loadaddr$bootfile。setenvinstall_kernelera$kernel_addr+$filesize。cp.b$loadaddr$kernel_addr$filesizesetenvupdate_kernelrunload_
23、kernelinstall_kernelecho=Ramdisksettings=setenvramdisk/tftpboot/TQM860L/uRamdisksetenvramdisk_addr40100000setenvload_ramdisktftp$loadaddr$ramdisk。setenvinstall_ramdiskera$ramdisk_addr+$filesize。cp.b$loadaddr$ramdisk_addr$filesizesetenvupdate_ramdiskrunload_ramdiskinstall_ramdiskecho=Savenewdefinitio
24、ns=9/59saveenv變換成映像文件的方法列出以下:bash$mkimage-Tscript-Cnone-nDemoScriptFile-dsetenv-commandssetenv.imgImageName:DemoScriptFileCreated:MonJun613:33:142005ImageType:PowerPCLinuxScript(uncompressedDataSize:1147Bytes=1.12kB=0.00MBLoadAddress:0 x00000000EntryPoint:0 x00000000Contents:Image0:1139Bytes=1kB=0MB
25、在目標(biāo)板上,用戶能夠像其余映像文件相同使用tftp這樣的命令進行裝載,而后,使用命令autoscr履行該映像,方法如下:=tftp100000/tftpboot/TQM860L/setenv.imgU-Boot獨自應(yīng)用程序U-Boot同意動向裝載或運轉(zhuǎn)單個應(yīng)用程序,該應(yīng)用程序能夠使用U-Boot資源,如:控制臺I/O函數(shù)、內(nèi)存分派或中止服務(wù)。編譯U-Boot時,單個應(yīng)用程序與U-Boot一同編譯。位圖支持經(jīng)過增添CFG_CMD_BMP選項到CONFIG_COMMAND命令選項,能夠在U-Boot中翻開位圖支持,這將增添命令bmp到U-Boot配置的命令列表中。命令bmp能夠在屏幕上顯示圖像。圖
26、像傳遞與顯示的命令列出以下:=tftp100000/tftpboot/LWMON/denk_startup.bmpTFTPfromserver。ourIPaddressisFilename/tftpboot/LWMON/denk_startup.bmp.Loadaddress:0 x10000010/59Loading:#doneBytestransferred=308278(4b436hex=bmpinfo100000Imagesize:640 x480Bitsperpixel:8Compression:0=bmpdisplay100000很多用戶希望在系統(tǒng)啟動過程tftp100000/tf
27、tpboot/denx_startup.bmpTFTPfromserver。ourIPaddressisFilename/tftpboot/denx_startup.bmp.Loadaddress:0 x100000Loading:#doneBytestransferred=308278(4b436hex=cp.b10000041F80000$filesizeCopytoFlash.done=setenvsplashimage41F80000=saveenvSavingEnvironmenttoFlash.11/59Un-Protected1sectorsErasingFlash.doneEr
28、ased1sectorsWritingtoFlash.doneProtected1sectors=bmpinfo$splashimageImagesize:640 x480Bitsperpixel:8Compression:0為了實現(xiàn)U-BootSplashScreen特色的支持,Linux內(nèi)核加入了配置選項CONFIG_FB_PRE_INIT_FB,它同意跳過幀緩沖區(qū)framebuffer)的某一部分,并再使用由U-Boot固件成立的幀緩沖區(qū)內(nèi)容。這樣,系統(tǒng)啟動過程中能夠顯示一個啟動圖像,該圖像就掩飾了系統(tǒng)啟動過程中屏幕輸出。2ELDK工具介紹ELDKEmbeddedLinuxDeveelo
29、pmentKit)包含GNU交錯開發(fā)工具如:編譯器、binutils、gdb等)、大批的預(yù)編譯目標(biāo)工具、目標(biāo)系統(tǒng)需要的庫、常用工具如:ls、rm)、常用服務(wù)器/opt/eldk/build.sh-appc#CPU構(gòu)架-n2007-01-19#編譯結(jié)果寄存目錄名-p/opt/eldk/build/ppc-2007-01-19#編譯前綴,編譯目錄寄存路徑-r/opt/eldk/build/ppc-2007-01-19/results#輸出存入目錄-w/opt/eldk/build/ppc-2007-01-19/work#工作目錄trg4747#編譯軟件包的開端、結(jié)束編號,在文件tpckgs.lst
30、與cpckgs.lst中在ELDK工具編譯成功或下載有ELDK工具可履行代碼后,可獨自編譯不一樣平臺的源文件或軟件包,方法以下:bash$exportCROSS_COMPILE=ppc_8xx-#編譯器前綴,構(gòu)成不一樣構(gòu)架編譯器bash$CROSS_COMPILEgcc-ohello_worldhello_world.c#編譯源文件bash$CROSS_COMPILErpm-iv.src.rpm#解壓縮并安裝源代碼bash$CROSS_COMPILErpmbuild-ba.spec#編譯源代碼包成立開發(fā)系統(tǒng)開發(fā)時,主機需要與目標(biāo)板交互,如:調(diào)試程序,控制目標(biāo)板,下載程序映像到目標(biāo)板,目標(biāo)板的調(diào)
31、試信息需要反回到主機等。為了與目標(biāo)板交互,主機一定成立開發(fā)環(huán)境,如:成立串行終端,配置TFTP服務(wù)器、DHCP服務(wù)器和NFS服務(wù)器。1)配置串行終端開發(fā)者在開發(fā)時需要接見目標(biāo)板的串行終端端口,經(jīng)過在主機上的終端對目標(biāo)板進行控制臺操作。往常,開發(fā)者將目標(biāo)板的串行終端端口綁定在主機的一個串行端口,實現(xiàn)控制臺的功能,開發(fā)者還需要在主機上使用一個終端仿真程序,如:cu或kermit。命令cu是軟件包UUCP的一部分,UUCP可用作串行終端,還擁有簡單的文件傳輸功能,可用于映像文件的下載。依靠于目標(biāo)板的波特率,需要改寫UUCP的配置文件,典型的配置列出以下:13/59?配置文件/etc/uucp/sys
32、的內(nèi)容列出以下:#/dev/ttyS0at115200bps:systemS0115200portserial0_115200timeany配置文件/etc/uucp/port的內(nèi)容列出以下:#/dev/ttyS0at115200bps:portserial0_115200typedirectdevice/dev/ttyS0speed115200hardflowfalse接著,用戶可用下邊命令連結(jié)到串行線:$cuS0115200$.#斷開連結(jié)命令kermit代表了整個串行線和網(wǎng)絡(luò)連結(jié)通信軟件簇,文件/.kermrc履行kermit的初始化,經(jīng)過適合的初始化命令可用來定制kermit的行為,U-
33、Boot介紹使用下邊的設(shè)置:$cat/.kermrc:setline/dev/ttyS0#串行端口setspeed115200#波特率14/59setcarrier-watchoffsethandshakenonesetflow-controlnonerobustsetfiletypebinsetfilenamelitsetrecpack1000setsendpack1000setwindow5命令kermit連結(jié)串行線的方法以下:$kermitc2)配置TFTP服務(wù)器使用U-Boot裝載Linux內(nèi)核或應(yīng)用程序的最快捷方式是經(jīng)過Ethernet傳達,U-Boot實現(xiàn)了TFTP協(xié)議,經(jīng)過U-B
34、oot的tftpboot命令下載文件到目標(biāo)板中,主機應(yīng)確信安裝了TFTP后臺程序/usr/sbin/in.tftpd。3)配置BOOTTP/DHCP服務(wù)器BOOTP/DHCP服務(wù)器用于自動傳達配置信息到目標(biāo)機,目標(biāo)機僅需要知道它自己的Ethernet硬件MAC地點,主機應(yīng)安裝DHCP包,配置DHCP服務(wù)器,一個配置樣例列出以下:subnetnetmaskoptionrouters。optionsubnet-mask。optiondomain-name。optiondomain-name-servers。hosttrgthardwareethernet00:30:BF:01:02:D0。#目標(biāo)板
35、MAC地點fixed-address。#目標(biāo)板固定IP地點optionroot-path/opt/eldk-4.2/ppc_4xx。15/59optionhost-namecanyonlands。#目標(biāo)板的主機名next-server。filename/tftpboot/canyonlands/uImage。用上邊的配置,DHCP服務(wù)器將回答來自目標(biāo)板的懇求,給出下邊的信息:目標(biāo)板位于子網(wǎng),子網(wǎng)掩碼為。目標(biāo)板的主機名為Canyonlands,IP地點為。IP地點為的主機給目標(biāo)板供給啟動映像bootimage),當(dāng)目標(biāo)板根文件系統(tǒng)經(jīng)過NFS掛接在主機上,它還供給NFS服務(wù)器功能。主機供給文件/t
36、ftpboot/canyonlands/uImage作為目標(biāo)板的啟動映像。目標(biāo)板能夠掛接目錄/opt/eldk-4.2/ppc_4xx在NFS服務(wù)作為根文件系統(tǒng)。上述語句含義為裸露目錄/opt/eldk-4.2/ppc_4xx,在子網(wǎng)上的全部主機都能夠讀寫操作該目錄。編譯安裝Linux內(nèi)核ELDK源代碼包含了Linux內(nèi)核,用戶能夠編譯安裝內(nèi)核,方法以下:bash$cd/opt/eldk/usr/src/linux-2.6-denxbash$makemrproperbash$makeARCH=powerpcCROSS_COMPILE=ppc_4xx-canyonlands_defconfig#
37、用戶設(shè)施目標(biāo)板的配置bash$makeARCH=powerpcCROSS_COMPILE=ppc_4xx-INSTALL_MOD_PATH=/opt/eldk-4.2/ppc_4xxmodules_install16/59bash$cparch/powerpc/boot/uImage/tftpboot/uImage啟動嵌入式Linux1)啟動內(nèi)核當(dāng)Linux內(nèi)核和扁平設(shè)施樹塊FlattenedDeviceTreeBlob,F(xiàn)DTblob)下載到目標(biāo)板的系統(tǒng)內(nèi)存bootmFC000000FC1E00002)編譯blobLinux內(nèi)核運轉(zhuǎn)時,希望知道它運轉(zhuǎn)的硬件信息,這些硬件信息按開放固件規(guī)范以設(shè)
38、施樹的形式描繪,因為象U-Boot這樣的BootLoader沒有實現(xiàn)開放固件APIOpenFirmwareAPI),硬件信息將以扁平設(shè)施樹的二進制形式傳達給內(nèi)核,這類二進制形式稱為FDTblob或簡稱blob。在設(shè)施樹信息文件/tftpboot/canyon編譯完后,可使用命令tftp將blob傳輸?shù)侥繕?biāo)機的內(nèi)存中,接著,系統(tǒng)啟動bootm將blob中的硬件信息傳達給內(nèi)核。U-Boot還供給命令fdt改正blob。3)傳達內(nèi)核參數(shù)用戶能夠傳達附帶信息如:根設(shè)施或網(wǎng)絡(luò)配置)給內(nèi)核。U-Boot經(jīng)過環(huán)境變量bootargs實現(xiàn)該功能。該變量的內(nèi)容作為啟動參數(shù)或命令行參數(shù))自動傳達給內(nèi)核,這樣,能夠
39、讓同一個內(nèi)核映像有更多的配置,比如:僅改變變量bootargs的內(nèi)容,就能夠讓同一個內(nèi)核映像與initrd內(nèi)存盤setenvbootargsroot=/dev/ramrw=bootm200000400000600000假定NFS服務(wù)器地點為,輸出目錄/opt/eldk-4.2/ppc_4xx作為目標(biāo)板的根文件系統(tǒng),目標(biāo)板的地址為,目標(biāo)板主機名為canyonlands,子網(wǎng)掩碼為?,F(xiàn)由在NFS上的根文件系統(tǒng)啟動相同內(nèi)核,則啟動命令列出以下:=setenvbootargsroot=/dev/nfsrwnfsroot=:/opt/eldk-4.2/ppc_4xx=bootm200000-600000
40、17/59內(nèi)核啟動后,可用下邊命令查察啟動的命令行:$cat/proc/cmdline用戶還可用U-Boot環(huán)境變量寄存全部需要的配置參數(shù),方法以下:=setenvipaddr=setenvserverip=setenvnetmask=setenvhostnamecanyonlands=setenvrootpath/opt/eldk-4.2/ppc_4xx=saveenv用戶可用這些變量建立傳達到內(nèi)核的啟動參數(shù),方法以下:=setenvnfsargsroot=/dev/nfsrwnfsroot=$serverip:$rootpath下邊能夠定義bootargs環(huán)境變量,并一步步建立啟動參數(shù):=
41、setenvramargssetenvbootargsroot=/dev/ramrw=setenvnfsargssetenvbootargsroot=/dev/nfsrwnfsroot=$serverip:$rootpath=setenvaddipsetenvbootargs$bootargsip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:=setenvram_rootrunramargsaddip。bootm$kernel_addr$ramdisk_addr$fdt_addr=setenvnfs_rootrunnfsargsaddip。b
42、ootm$kernel_addr-$fdt_addr上邊定義了ram_root和nfs_root兩個變量,分別用于從ramdisk映像的根文件系統(tǒng)和NFS上的根文件系統(tǒng)啟動。變量經(jīng)過run命令履行。setenvramdisk_addrFC200000=18/59=setenvram_ws100000=protoffFC200000FC3FFFFFUn-Protected16sectors=eraFC200000FC3FFFFF.doneErased16sectors=tftp100000/tftpboot/canyonlands/uRamdisk=imi100000CheckingImagea
43、t00100000.=cp.b$ram_ws$ramdisk_addr$filesizeCopytoFlash.done=imi$ramdisk_addr=saveenvSavingEnvironmenttoFlash.為了告訴Linux內(nèi)核使用ramdisk映像作為根文件系統(tǒng),用戶一定改正傳達給內(nèi)核的命令行參數(shù),ramdisk映像地點作為命令bootm的第二個參數(shù),第一個參數(shù)為內(nèi)核映像的內(nèi)存地點,第三個參數(shù)是FDTblob的內(nèi)存地點。Flash文件系統(tǒng)1)MTD19/59全部可用的Flash文件系統(tǒng)都鑒于內(nèi)存技術(shù)設(shè)施MemoryTechnologyDevices,MTD)層,所以,用戶配置內(nèi)
44、核時一定翻開flash文件系統(tǒng)支持,配置結(jié)果以下:CONFIG_MTD=yCONFIG_MTD_PARTITIONS=yCONFIG_MTD_CHAR=yCONFIG_MTD_BLOCK=yCONFIG_MTD_CFI=yCONFIG_MTD_GEN_PROBE=yCONFIG_MTD_CFI_AMDSTD=yCONFIG_MTD_ROM=yCONFIG_MTD_canyonlands=y目標(biāo)板flash設(shè)施的分區(qū)設(shè)計由MTD映照例程/dev/mtd3-bash-3.2#-bash-3.2#head-1/dev/mtd3ThuJan101:04:51CET1970-bash-3.2#-bash
45、-3.2#date/dev/mtd3上述命令中,第一次寫是正確的,第二次寫將獲得一個錯誤,因為flash內(nèi)存一定先擦除,再進行寫操作。用戶可使用Linux命令eraseall擦除整個MTD分區(qū),再進行寫操作,方法以下:-bash-3.2#flash_eraseall/dev/mtd3-bash-3.2#-bash-3.2#date/dev/mtd3-bash-3.2#-bash-3.2#head-1/dev/mtd3ThuJan101:04:51CET19702)JFFS221/59JFFSJournallingFlashFileSystem)是嵌入式設(shè)施flash上最適合的文件系統(tǒng),JFFS
46、2為嵌入式系統(tǒng)閃存的使用而設(shè)計,它是一個日記構(gòu)造的文件系統(tǒng),這意味著它對掉電、系統(tǒng)崩潰或其余不測封閉等系統(tǒng)異樣擁有有效保護舉措,如:僅丟掉正在寫的數(shù)據(jù),重啟動后,不需要任何的文件系統(tǒng)檢查。配置內(nèi)核時,需要翻開JFFS配置選項,配置結(jié)果列出以下:CONFIG_JFFS_FS=yCONFIG_JFFS_FS_VERBOSE=0對flash的直接讀寫或擦除操作一般使用MTD層的字符設(shè)施接口/dev/mtd*,文件系統(tǒng)操作procon/proctypeproc(rwdevptson/dev/ptstypedevpts(rw/dev/mtdblock2on/mnttypejffs(rwdf/查察磁盤使用
47、狀況Filesystem1k-blocksUsedAvailableUse%Mountedon/dev/mtdblock23584035840%/mnt能夠用工具mkfs.jffs2創(chuàng)立JFFS2文件系統(tǒng)映像,下邊的樣例給flash分區(qū)創(chuàng)立了3MB的JFFS2映像文件image.jffs2,并移入目錄/tmp/flashtools/中的數(shù)據(jù),而后,擦除分區(qū)/dev/mtd4,并將映像image.jffs2拷貝到分區(qū)mtd4中。最后,掛接分區(qū)mtd4。這些操作的命令列出以下:mkfs.jffs2-pad=3145728-eraseblock=262144-root=/tmp/flashtools
48、/-outputimage.jffs2eraseall/dev/mtd422/59Erased3072Kibyte0-100%complete.ddif=image.jffs2of=/dev/mtd4bs=256k12+0recordsin12+0recordsoutmount-tjffs2/dev/mtdblock4/mntdf/mntFilesystem1k-blocksUsedAvailableUse%Mountedon/dev/mtdblock43072248858481%/mnt3)CramFS用戶有時希望文件系統(tǒng)是僅讀的,可壓縮僅讀文件系統(tǒng)erase23/59-55.46%(-50
49、10byteseraseall-51.94%(-8863bytesmkfs.jffs-58.76%(-4383byteslock-59.68%(-4215bytesunlockEverything:24kilobytes$ls-l-rw-r-r-1wdusers24576Nov1023:44因為CramFs映像是壓縮的,所以,輸入的目錄數(shù)據(jù)為64kB,而映像文件為24kB大小。寫CramFs映像到flash分區(qū)的方法列出以下:cp/dev/mtd3mount-tcramfs/dev/mtdblock3/mntmount/dev/rooton/typenfs(rw,v2,rsize=4096,w
50、size=4096,hard,udp,nolock,addr=procon/proctypeproc(rwdevptson/dev/ptstypedevpts(rw/dev/mtdblock3on/mnttypecramfs(rwls-l/mnttotal54-rwxr-xr-x1wdusers8704Jan916:32erase-rwxr-xr-x1wdusers9034Jan101:00eraseall-rwxr-xr-x1wdusers7459Jan101:00lock-rwxr-xr-x1wdusers17063Jan101:00mkfs.jffs根文件系統(tǒng)的設(shè)計與編譯嵌入式系統(tǒng)的根文
51、件系統(tǒng)RootFileSystem)設(shè)計包含寄存的內(nèi)容、文件系統(tǒng)種類、在哪里寄存文件系統(tǒng)和怎樣啟動它。24/59根文件系統(tǒng)往常寄存在目標(biāo)板的閃存flashmemory)中或CF、SD、MMC卡等中,能夠使用像ELDK這樣的Linux公布版本創(chuàng)立根文件系統(tǒng)的內(nèi)容。下邊使用來自ELDK的SELFSimpleEmbeddedLinuxFramework)映像創(chuàng)立根文件系統(tǒng)。在ELDK軟件包中,各樣平臺構(gòu)架的SELF映像文件在目錄/opt/eldk/images/下,文件名為ramdisk_image.gz,是個壓縮的ramdisk映像。由SELF創(chuàng)立根文件系統(tǒng)tar包的方法列出以下:/解壓縮ramd
52、isk映像bash$gzip-d-c-v/opt/eldk/ppc_8xx/images/ramdisk_image.gz/tmp/ramdisk_image/opt/eldk/ppc_8xx/images/ramdisk_image.gz:61.4%/下邊的操作需要root權(quán)限/掛接ramdisk映像bash#mount-oloop/tmp/ramdisk_image/mnt/tmp/創(chuàng)立tar包,為了防止需要root權(quán)限,這里不包含在tar包中的設(shè)施device)文件bash#cd/mnt/tmpbash#tar-zc-exclude=dev/*-f*需要時,為CramFs創(chuàng)立一個獨自的t
53、ar包,用來包含設(shè)施條目bash#tar-zcfdev/bash#cd/tmp/卸載ramdisk映像bash#umount/mnt/tmp數(shù)$ROOTFS_DEVICES=rootfs_devices.tab#設(shè)施描繪表文件$ROOTFS_IMAGE=ramdisk.img#產(chǎn)生的文件系統(tǒng)映像$genext2fs-U-d$ROOTFS_DIR-D$ROOTFS_DEVICES-b$ROOTFS_SIZE-r$ROOTFS_FREE-i$ROOTFS_INODES$ROOTFS_IMAGE壓縮文件系統(tǒng)映像,方法以下:26/59$gzip-v9ramdisk.imgrootfs.img:55.6
54、%-replacedwith創(chuàng)立U-Boot使用的根文件系統(tǒng)映像uRamdisk,方法以下:$mkimage-Tramdisk-Cgzip-nTestRamdiskImage-duRamdiskImageName:TestRamdiskImageCreated:SunJun1216:58:062005ImageType:PowerPCLinuxRAMDiskImage(gzipcompressedDataSize:1618547Bytes=1580.61kB=1.54MBLoadAddress:0 x00000000EntryPoint:0 x00000000Wenowhavearootfil
55、esystemimageuRamdiskthatcanbeusedwithU-Boot.era40400000407FFFFF.done28/59Erased35sectors下載JFFS2映像=tftp100000/tftpboot/TQM860L/jffs2.imgUsingFECETHERNETdeviceTFTPfromserver。ourIPaddressisFilename/tftpboot/TQM860L/jffs2.img.Loadaddress:0 x100000Loading:#doneBytestransferred=2033888(1f08e0hex拷貝映像到flash
56、CopytoFlash.done成立使用flash分區(qū)6作為根設(shè)施的啟動參數(shù)=setenvmtd_argssetenvbootargsroot=/dev/mtdblock6rwrootfstype=jffs2=printenvaddipaddip=setenvbootargs$bootargsip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$=setenvflash_mtdrunmtd_argsaddip。bootm$kernel_addr=runflash_mtdUsingFECETHERNETdeviceTFTPfromserver。o
57、urIPaddressisFilename/tftpboot/TQM860L/uImage.Loadaddress:0 x200000Loading:#29/59doneBytestransferred=719233(af981hex#Bootingimageat40040000.3)根文件系統(tǒng)在cramfs文件系統(tǒng)上cramfs是壓縮的僅讀文件系統(tǒng),作為根文件系統(tǒng)的長處是:文件系統(tǒng)是壓縮的,可有效利用閃存空間;同意迅速啟動,因為僅裝載使用的文件,且僅解壓縮。弊端是:僅能代替整個映像文件而非單個文件;需要附帶的儲存空間給可寫的永遠數(shù)據(jù);工具mkcramfs不支持設(shè)施表。創(chuàng)立鑒于cramfs的根
58、文件系統(tǒng)的方法列出以下:經(jīng)過解開tar包創(chuàng)立目標(biāo)板根文件系統(tǒng)的內(nèi)容,方法以下:$mkdirrootfs$cdrootfs$tarzxf創(chuàng)立需要的設(shè)施文件,這里經(jīng)過解開僅含有設(shè)施文件條目的tar包來實現(xiàn),方法列出以下:cdrootfstar-zxf很多工具需要一些儲存地方,這里供給了一個小的可寫文件系統(tǒng)。暫時文件系統(tǒng)tmpfs是一個選擇,為了創(chuàng)立tmpfs文件系統(tǒng),需要將下邊的行加入到腳本/etc/rc.sh中:掛接tmpfs,是因為根文件系統(tǒng)僅讀/bin/mount-ttmpfs-osize=2Mtmpfs/tmpfs一些工具需要對某些設(shè)施節(jié)點有寫權(quán)限,如:改變屬主和權(quán)限,可動向創(chuàng)立設(shè)施節(jié)點,
59、如:/dev/log。這些設(shè)施文件需要放在一個可寫的文件系統(tǒng)中,僅讀的根文件系統(tǒng)用符號鏈接指向可讀設(shè)施到新的地點即在可讀寫文件系統(tǒng)中的地點),對應(yīng)符號鏈接地點部排列出以下:dev/ptyp0/tmpfs/dev/ptyp0dev/ttyp0/tmpfs/dev/ttyp0dev/ptyp1/tmpfs/dev/ptyp1dev/ttyp1/tmpfs/dev/ttyp1dev/ptyp2/tmpfs/dev/ptyp2dev/ttyp2/tmpfs/dev/ttyp2為了擱置相應(yīng)的目錄與設(shè)施文件在tmpfs文件系統(tǒng),擱置下邊的代碼在/etc/rc.sh腳本中:30/59mkdir-p/tmpf
60、s/tmp/tmpfs/dev/tmpfs/var/lib/dhcp/tmpfs/var/lock/tmpfs/var/runwhilereadnameminordomknod/tmpfs/dev/ptyp$namec2$minormknod/tmpfs/dev/ttyp$namec3$minordonein.ftpd-46.02%(-16280bytesin.telnetd-45.31%(-74444bytesxinetdEverything:1864kilobytesSuperblock:76bytesCRC:c166be6dwarning:gidstruncatedto8bits.(Th
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融服務(wù)居間合同委托書
- 物業(yè)服務(wù)外包合同
- 鍋爐購銷合同書
- 車輛租賃保險服務(wù)合同
- 語言編程及算法操作手冊
- 水產(chǎn)養(yǎng)殖與漁業(yè)技術(shù)作業(yè)指導(dǎo)書
- 軟件外包業(yè)軟件開發(fā)與項目管理流程優(yōu)化研究
- 綠色農(nóng)業(yè)生產(chǎn)技術(shù)方案
- 保姆雇傭勞動合同書
- 新夫妻離婚協(xié)議書參考樣板
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評價導(dǎo)則
- 每個孩子都能像花兒一樣開放
- 單店爆破促銷活動模式精編文檔
- YS/T 34.1-2011高純砷化學(xué)分析方法電感耦合等離子體質(zhì)譜法(ICP-MS)測定高純砷中雜質(zhì)含量
- LY/T 2016-2012陸生野生動物廊道設(shè)計技術(shù)規(guī)程
- 松下panasonic-視覺說明書pv200培訓(xùn)
- 單縣煙草專賣局QC課題多維度降低行政處罰文書出錯率
- 毫針刺法(全)教學(xué)課件
- 金風(fēng)科技-風(fēng)電產(chǎn)業(yè)集團-供應(yīng)商現(xiàn)場作業(yè)基礎(chǔ)安全考試附答案
- 人工智能機器人科學(xué)小報手抄報簡報
- 三年級下冊美術(shù)課件-第1課 燈彩輝映|浙美版 (共19張PPT)
評論
0/150
提交評論