嵌入式Linux之我行——u-boot-2009.08在2440上的移植詳解(一)
- 主
機(jī):VMWare--Fedora 9 - 開發(fā)板:Mini2440--64MB Nand,Kernel:2.6.30.4
- 編譯器:arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz" target="_blank">arm-linux-gcc-4.3.2.tgz
- u-boot:u-boot-2009.08.tar.bz2
二、移植步驟
本文引用地址:http://m.butianyuan.cn/article/201611/319000.htm本次移植的功能特點(diǎn)包括:
- 支持Nand Flash讀寫
- 支持從Nor/Nand Flash啟動(dòng)
- 支持CS8900或者DM9000網(wǎng)卡
- 支持Yaffs文件系統(tǒng)
- 支持USB下載(還未實(shí)現(xiàn))
1.
#tar -jxvf u-boot-2009.08.tar.bz2 |
#cp -rf smdk2410 |
由此可以看到,start_code處才是u-boot啟動(dòng)代碼的真正開始處。以上就是u-boot的stage1入口的過程。
2)my2440開發(fā)板u-boot的stage1階段的硬件設(shè)備初始化。
由于在u-boot啟動(dòng)代碼處有兩行是AT91RM9200DK的LED初始代碼,但我們my2440上的LED資源與該開發(fā)板的不一致,所以我們要?jiǎng)h除或屏蔽該處代碼,再加上my2440的LED驅(qū)動(dòng)代碼(注:添加my2440 LED功能只是用于表示u-boot運(yùn)行的狀態(tài),給調(diào)試帶來方便,可將該段代碼放到任何你想調(diào)試的地方),代碼如下:
#if //根據(jù)mini2440原理圖可知LED分別由S3C2440的PB5、6、7、8口來控制,以下是PB端口寄存器基地址(查2440的DataSheet得知)
//此段代碼使u-boot啟動(dòng)后,點(diǎn)亮開發(fā)板上的LED1,LED2、LED3、LED4不亮 |
在include/configs/my2440.h頭文件中添加CONFIG_S3C2440宏
#gedit |
#define |
現(xiàn)在編譯u-boot,在根目錄下會(huì)生成一個(gè)u-boot.bin文件。然后我們利用mini2440原有的supervivi把u-boot.bin下載到RAM中運(yùn)行測(cè)試(注意:我們使用supervivi進(jìn)行下載時(shí)已經(jīng)對(duì)CPU、RAM進(jìn)行了初始化,所以我們?cè)趗-boot中要屏蔽掉對(duì)CPU、RAM的初始化),如下:
/*#ifndef CONFIG_SKIP_LOWLEVEL_INIT #make my2440_config #make |
下載運(yùn)行后可以看到開發(fā)板上的LED燈第一了亮了,其他三個(gè)熄滅,測(cè)試結(jié)果符合上面的要求。終端運(yùn)行結(jié)果如下:
3)在u-boot中添加對(duì)S3C2440一些寄存器的支持、添加中斷禁止部分和時(shí)鐘設(shè)置部分。
由于2410和2440的寄存器及地址大部分是一致的,所以這里就直接在2410的基礎(chǔ)上再加上對(duì)2440的支持即可,代碼如下:
#gedit |
#if
# #define #define UPLLCON # # endif |
S3C2440的時(shí)鐘部分除了在start.S中添加外,還要分別在board/samsung/my2440/my2440.c和cpu/arm920t/s3c24x0/speed.c中修改或添加部分代碼,如下:
#gedit |
#define |
#gedit |
static |
好了!修改完畢后我們?cè)僦匦戮幾gu-boot,然后再下載到RAM中運(yùn)行測(cè)試。結(jié)果終端有輸出信息并且出現(xiàn)類似Shell的命令行,這說明這一部分移植完成。示意圖如下:
評(píng)論