uboot在2440上的移植
為什么我們要用U-BOOT?顯然可以將操作系統(tǒng)直接燒入flash中執(zhí)行,但從軟件的升級(jí)和程序修補(bǔ)來說則是不可少的。
本文引用地址:http://m.butianyuan.cn/article/201611/316103.htmU-BOOT 目錄結(jié)構(gòu)分析:
1. board:開發(fā)板相關(guān)目錄
2. common:通用的命令函數(shù)
3. cpu:特定CPU架構(gòu)相關(guān)目錄,如arm920t
4. doc:uboot的開發(fā)、使用文檔
5. drivers:uboot支持的設(shè)備驅(qū)動(dòng)程序,比如串口,nandflash,網(wǎng)卡
6. fs: 支持的文件系統(tǒng),Uboot現(xiàn)在支持cramfs、fat、fdos、jffs2和registerfs。
7. include:頭文件和開發(fā)板配置文件,configs目錄下是開發(fā)板的配置文件
8. lib_xxxx: 與體系結(jié)構(gòu)相關(guān)的庫(kù)文件。如與ARM相關(guān)的庫(kù)放在lib_arm中。
9. lib_generic:通用的庫(kù)函數(shù)
10. net:各種網(wǎng)絡(luò)協(xié)議,TFTP協(xié)議、NFS協(xié)議等。
11. tools:uboot自帶的工具
U-BOOT的啟動(dòng)分為兩個(gè)階段
第一階段:1)設(shè)置CPU工作模式
2)關(guān)看門狗
3)設(shè)置系統(tǒng)時(shí)鐘
4)關(guān)MMU,CACHE
5)為第二階段準(zhǔn)備RAM空間(borad/smdk2410/lowlevel_init.s)
6)設(shè)置堆棧
7)跳到第二階段C入口點(diǎn)(lib_arm/board.c)
第二階段:1)start_armboot函數(shù)
init_sequence:
初始化CPU,設(shè)置系統(tǒng)時(shí)鐘,初始化定時(shí)器,初始化環(huán)境參數(shù),初始化串口控制臺(tái),檢測(cè)內(nèi)存映射
2)flash_init: 初始化NORFLASH
3)env_relocate: 初始化環(huán)境變量
4)初始化系統(tǒng)外圍設(shè)備
5)最后調(diào)用main_loop (command/main.c)(下載模式和啟動(dòng)模式在這里)
U-BOOT沒有圖形配置界面,我們只有通過手動(dòng)修改文件來配置
1)移植過程要用交叉編譯器(我用的arm_linux_gcc_3.3.2)
2)指定環(huán)境變量 vi /etc/profile 指定路徑,把不用的注釋掉,然后保存退出
3)source /etc/profile 使其生效 ,然后可以查看版本arm-linux-gcc -v 看是不是現(xiàn)在使用的版本
4)vi cpu/arm920t/config.mk 注釋掉軟浮點(diǎn) 因?yàn)槲覀兪褂玫挠哺↑c(diǎn)編譯PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8
# -msoft-float /*注釋掉*/
5)修改
在smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
加上
TX2440_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t TX2440 NULL s3c24x0
各項(xiàng)的意思如下:
arm: CPU的架構(gòu)(ARCH)
arm920t: CPU的類型(CPU),其對(duì)應(yīng)于cpu/arm920t子目錄。
TX2440: 開發(fā)板的型號(hào)(BOARD),對(duì)應(yīng)于board/TX2440目錄。
NULL: 開發(fā)者/或經(jīng)銷商(vender)。
s3c24x0: 片上系統(tǒng)(SOC)。
在第128行:
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux- 指定交叉編譯器,(http://xgc94418297.blog.163.com/blog/static/112966040200952971543686/)
6)把smdk2410 改為TX2440(任意改,只要統(tǒng)一就行)mv smdk2410 TX2440
7)刪除board下的其他目錄,只留TX2440 方法:mv TX2440 ../ 移動(dòng)到上層
rm -rf * //刪除所在層所有目錄
mv ../TX2440 ./ //把上層的TX2440移動(dòng)到該層
8)到這里就可以測(cè)試是否編譯成功了
make TX2440_config
出現(xiàn) Configuring for TX2440 board..... 表示編譯成功
9)配置SDRAM(在lowlevel_Init.s中修改BANK和刷新頻率)
10)在TX2440.C中修改時(shí)鐘代碼。
可在include/configs/TX2440.h中
#define CFG_PROMPT 后面修改你自己喜歡的命令提示符。
評(píng)論