2012年(18)
分类:
2012-11-27 21:48:16
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上了。不过每篇移植里都有提供关键几个文件的下载,照上面移植应该可以了。