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