UBOOT-2012-10在OK6410平臺的移植基本就這樣結束了,接下來的階段裏有時間會嘗試LINUX的移植。
這當然要這個uboot能夠啓動內核,呵呵,初步試一下編譯好linux 3.6.7後用uboot目錄下的那個mkimage工具生成uImage,結果可以啓動,不過linux運行過程中好像出現了NAND的oOBsize的錯誤,應該是linux3.6.7裏面的那個NAND啓動還沒有改造成。不管怎麼說,Uboot已經能夠引導內核了。。。。。。
這個uboot 2012-10移植的最後是修改成自動識別NAND或SD卡啓動。其實也比較簡單,採用了tekkamanninja這位網友的方法,如下:
Start.s文件在movi_boot和nand_boot這個地方改成對啓動引腳的判斷:
#ifdef CONFIG_NAND_SPL
#define MEM_CFG_STAT 0x7e00f12c
ldr r1, =MEM_CFG_STAT /* address of reg MEM_CFG_STAT*/
ldr r0, [r1]
mov r1, #0x60
and r1, r0, r1 /*r1 = MEM_CFG_STAT & CFG_BOOT_LOC */
cmp r1, #0x60 /*Internal ROM*/
beq boot_from_irom
cmp r1, #0x00 /*Stepping Stone area in NFCON*/
beq boot_from_nand
b reset
boot_from_irom:
ldr sp, _TEXT_PHY_BASE
bl movi_bl2_copy
b after_copy
after_copy:
ldr pc,_TEXT_PHY_BASE
boot_from_nand:
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,_nand_boot
mov pc, r0
_nand_boot: .word nand_boot
#else
..........
#endif
這樣現在編譯好後目錄下有3個u-boot:其中u-boot.bin是在SDRAM運行的;u-boot-nand是燒到NAND後從NAND啓動的,u-boot-mmc.bin是燒到SD卡後從SD卡啓動的。
原來打算把整個代碼傳上來,可惜附件最大隻能傳2M,傳不了,把它放在CSDN上了。不過每篇移植裏都有提供關鍵幾個文件的下載,照上面移植應該可以了。
u-boot-2012.10 for ok6410.tar.gz