U-boot在S3C44B0上的移植與分析
2.2 lib_arm/board.c文件()
U―b00t/Lib arm/board.c中的start armboot是C語(yǔ)言開始的函數(shù),也是整個(gè)啟動(dòng)代碼中C語(yǔ)言的主函數(shù),該函數(shù)主要是調(diào)用一一系列的初始化函數(shù)。進(jìn)行各種初始化設(shè)置。該函數(shù)完成的操作是:
(1)調(diào)用一系列的初始化函數(shù),包括:cpu init(CPU相關(guān)的設(shè)置),board init(板子相關(guān)的設(shè)置),in-terrupt_init(中斷設(shè)置),env_init(環(huán)境變量設(shè)置),init_ baudrate(baud參數(shù)設(shè)置),serial init(串口初始化),console_inh_f(控制臺(tái)設(shè)置),display_banner(顯示標(biāo)題),dram init(可用內(nèi)存配置);
(2)初始化FLAsH設(shè)備;
(3)初始化系統(tǒng)內(nèi)存分配函數(shù);
(4)如果目標(biāo)系統(tǒng)擁有NAND設(shè)備,則初始化NAND設(shè)備;
(5)如果目標(biāo)系統(tǒng)有顯示設(shè)備,則初始化該類設(shè)備;
(6)初始化相關(guān)網(wǎng)絡(luò)設(shè)備,填寫IP、MAC地址等。
2.3 U―boot/common/main.c文件
完成上述初始化后,進(jìn)入命令循環(huán)(即整個(gè)boot的工作循環(huán)),代碼為:
for(;;)
{
main_loop();本文引用地址:http://www.ex-cimer.com/article/152486.htm
}
3 移植過(guò)程
在此使用的是創(chuàng)維特公司的EB44BO開發(fā)板,系統(tǒng)相關(guān)配置如下:
處理器:SamslJng S3C4BOX,工作頻率60 MHz;
2個(gè)串口。4個(gè)可編程的LED以及14針JTAG接口。
為了降低移植的難度,在移植過(guò)程中,一般都是選擇與目標(biāo)處理器以及目標(biāo)板最接近的一個(gè)版本進(jìn)行移植。因此選擇B2進(jìn)行移植。從U―bo()t的官方網(wǎng)站上下載最新版的源代碼,目前最高版本為1.3.3。移植主要修改的文件有:cptl/s3c44b0/start.s,board/dave/b2/lowlevel init.s,board/dave/b2/b2.c,board/dave/corn。mon/FLASH.c,include/configs/b2.h,board/dave/b2/config.mk。
3.1 cpu/s3c44b0/start.s文件
start.s是匯編語(yǔ)言編寫的U-boot:程序入口代碼,主要包括處理器內(nèi)部各個(gè)寄存器的初始化以及代碼的搬移。主要完成設(shè)置處理器狀態(tài)、初始化中斷、堆棧、內(nèi)存控制器等,并確定是否需要對(duì)整個(gè)U-boot代碼重定位,最終從FLASH中跳轉(zhuǎn)到定位好的內(nèi)存位置執(zhí)行。下面對(duì)其中一些代碼進(jìn)行針對(duì)性的分析。
(1)設(shè)置WTCON=0x0,禁止看門狗定時(shí)器,避免處理器強(qiáng)行復(fù)位;
(2)設(shè)置INTMSK=Ox7ffffff,禁止所有中斷,Bootloader的執(zhí)行過(guò)程中不必要響應(yīng)任何中斷;
(3)根據(jù)嵌入式微處理器工作主頻,修改宏CON-FIG 83C4480 CLCICK SPEED=60 MHz,使處理器能夠正常工作;
(4)設(shè)置PLLCON=0x34031,PLLCON鎖相環(huán)控制寄存器中儲(chǔ)存有計(jì)算系統(tǒng)時(shí)鐘的相關(guān)參數(shù),為了產(chǎn)生正確的系統(tǒng)時(shí)鐘,必須根據(jù)外接晶振頻率和處理器工作主頻確定各個(gè)倍頻系數(shù)。
3.2 board/dave/b2/lowlevel init.S文件
該文件由匯編代碼完成,主要包括SDRAM工作參數(shù)的設(shè)置,以及處理器內(nèi)存控制器的初始化,參數(shù)需要根據(jù)SDRAM芯片資料進(jìn)行設(shè)置。
3.3 board/dave/b2/b2.c文件
該文件中的代碼主要是SDRAM的驅(qū)動(dòng)程序,并完成了處理器各個(gè)I/O 口的初始化,根據(jù)具體的目標(biāo)板進(jìn)行適當(dāng)?shù)男薷募纯伞?br />3.4 board/dave/common/FLASH.C
這個(gè)文件是FLASH的驅(qū)動(dòng)程序。FLASH存儲(chǔ)器的燒寫與擦除一般不具有通用性,根據(jù)不同型號(hào)的存儲(chǔ)器做出相應(yīng)的修改。EB4480開發(fā)板采用的是Intel28F320C3B,總共71個(gè)塊,1~8每塊大小是8 KB,9~71每塊大小是64 KB,它的特殊性決定了需要對(duì)
評(píng)論