資源描述:
《u-boot啟動(dòng)代碼start.S詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、U-BOOT一、U-BOOT的目錄結(jié)構(gòu)u-boot目錄下有18個(gè)子目錄,分別存放管理不通的源程序。這些目錄中所要存放的文件有其規(guī)則,可以分成三類。?第一類目錄與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān);?第二類目錄是一些通用的函數(shù)或者驅(qū)動(dòng)程序;?第三類目錄是u-boot的應(yīng)用程序、工具或者文檔。Board:和一些已有開發(fā)板相關(guān)的文件,比如Makefile和u-boot.lds等都和具體開發(fā)板的硬件和地址分配有關(guān)。Common:與體系結(jié)構(gòu)無關(guān)的文件,實(shí)現(xiàn)各種命令的C文件。CPU:CPU相關(guān)文件,其中的子目錄都是以u(píng)-boot所支持的CPU為名,
2、比如有子目錄arm926ejs、mips、mpc8260和nios等,每個(gè)特定的子目錄中都包括cpu.c和interrupt.c和start.S。其中cpu.c初始化cpu、設(shè)置指令cache和數(shù)據(jù)cache等;interrupt.c設(shè)置系統(tǒng)的各種終端和異常,比如快速中斷,開關(guān)中斷、時(shí)鐘中斷、軟件中斷、預(yù)取中止和未定義指令等;start.S是u-boot啟動(dòng)時(shí)執(zhí)行的第一個(gè)文件,他主要是設(shè)置系統(tǒng)堆棧和工作發(fā)式,為進(jìn)入C程序奠定基礎(chǔ)。Disk:disk驅(qū)動(dòng)的分區(qū)處理代碼、Doc:文檔。Drivers:通用設(shè)備驅(qū)動(dòng)程序,比如各種網(wǎng)卡、支持CFI
3、的flash、串口和USB總線等。Dtt:數(shù)字溫度測(cè)量器或者傳感器的驅(qū)動(dòng)Examples:一些獨(dú)立運(yùn)行的應(yīng)用程序的例子。Fs:支持文件系統(tǒng)的文件,u-boot現(xiàn)在支持cramfs、fat、fdos、jffs2、yaffs和registerfs。Include:頭文件,還有對(duì)各種硬件平臺(tái)支持的會(huì)變文件,系統(tǒng)的配置文件和對(duì)文件系統(tǒng)支持的文件。Net:與網(wǎng)絡(luò)有關(guān)的代碼,BOOTP協(xié)議、TFTP協(xié)議RARP協(xié)議和NFS文件系統(tǒng)的實(shí)現(xiàn)。Lib_ppc:存放對(duì)PowerPC體系結(jié)構(gòu)通用的文件,主要用于實(shí)現(xiàn)PowerPC平臺(tái)通用的函數(shù),與PowerPC
4、體系結(jié)構(gòu)相關(guān)的代碼。Lib_i386:存放對(duì)X86體系結(jié)構(gòu)通用的文件,主要用于實(shí)現(xiàn)X86平臺(tái)通用的函數(shù),與PowerPc體系結(jié)構(gòu)相關(guān)的代碼。Lib_arm:存放對(duì)ARM體系結(jié)構(gòu)通用的文件,主要用于實(shí)現(xiàn)ARM平臺(tái)通用的函數(shù),與ARM體系結(jié)構(gòu)相關(guān)的代碼。Lib_generic:通用的多功能函數(shù)實(shí)現(xiàn)。Post:上電自檢。Rtc:實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)。Tools:創(chuàng)建S-Record格式文件和U-BOOTimages的工具。二、u-boot的編譯u-boot的源碼是通過GCC和Makefile組織編譯的,頂層目錄下的Makefile首先可以設(shè)置板子的定義
5、,然后遞歸地調(diào)用各級(jí)目錄下的Makefile,最后把編譯過的程序鏈接成u-boot的映像。頂層目錄下的Makefile,它是負(fù)責(zé)U-Boot整體配置編譯。每一種開發(fā)板在Makefile都需要有板子配置的定義,如smdk2442定義如下:smdk2442_config:?unconfig?@./mkconfig$(@:_config=)armarm920tsmdk2442執(zhí)行配置U-Boot的命令makesmdk2442_config,通過./mkconfig腳本生成include/config.mk的配置文件。文件內(nèi)容是根據(jù)Makefil
6、e對(duì)板子的配置生成的。配置環(huán)境和編譯過程如下所述,U-boot的編譯環(huán)境配置需要:cross-2.95.3.tar.bz2和s3c24x0_uboot_rel_0_0_1_061002.tar.bz2,將文件拷貝到/home/amoi/working/下,(chenpx@chenpx:/mnt/hgfs/share$cpcross-2.95.3.tar.bz2/home/amoi/working和chenpx@chenpx:/mnt/hgfs/share$cps3c-u-boot-1.1.6.tar.bz2/home/amoi/worki
7、ng),?然后對(duì)對(duì)文件進(jìn)行解壓(chenpx@chenpx:/home/chenpx/working$tarjxvfcross-2.95.3.tar.bz2和chenpx@chenpx:/home/chenpx/working$tarjxvfs3c24x0_uboot_rel_0_0_1_061002.tar.bz2),在/usr/local/目錄下建立一個(gè)arm文件夾(mkdir–p/usr/local/arm(-p?是需要時(shí)創(chuàng)建上層目錄,如目錄早已存在則不當(dāng)作錯(cuò)誤))將cross-2.95.3.tar.bz2解壓出來的移動(dòng)到/usr/
8、local/arm/下(mv2.95.3/usr/local/arm/)移動(dòng)后添加環(huán)境變量exportPATH=$PATH:/usr/local/2.95.3/bin/修改s3c24x0_ub