基于U-BOOT-2010.09移植OK6410开发版记录(二)

来源:互联网 发布:一维数组的概念 编辑:程序博客网 时间:2024/06/05 18:39

点亮LED灯

修改完UBOOT对于6410的配置文件后,就可以正式开始移植工作了。S3C6410这块SOC出了这么久,我想BL1阶段应该区别不大,就先在BL1中点亮LED灯练练手吧。不过实际移植过程中却走了很多弯路… OK6410的1.1.6版UBOOT编译出来只有uboot.bin这一个文件,但我在2010的版本修改完后烧录uboot.bin这个文件却始终不正常…

仔细研究了下发现2010的uboot版本采用了一种新的启动方式,会直接生成一个4KB大小启动文件专门用于BL1启动,BL1完成后再把剩下的BL2数据从NAND复制到RAM,从而BL2就不用再执行一道初始化了。所以应当烧录u-boot-spl.bin这个由4KB的BL1启动文件和剩下的BL2的uboot.bin合并生成的文件。


修改nand_spl对应Makefile

在nand_spl/board/samsung/smdk6410/Makefile中
@ln -s $(TOPDIR)/board/samsung/smdk6400/lowlevel_init.S $@
修改为
@ln -s $(TOPDIR)/board/samsung/smdk6410/lowlevel_init.S $@
创建对应的6410初始化链接文件。


$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $< $@
修改为
$(OBJCOPY) ${OBJCFLAGS} --pad-to=4096 -O binary $< $@
可能是编译器的问题,我的Makefile脚本中的本应赋值为4096的PAD_TO变量未能自动赋值,这样会导致BL1结束后的搬移出现问题,只能手动设置为4096了。


nand_spl/board/samsung/smdk6410/Makefile中有一句
CONFIG_NAND_SPL = y
用于控制BL1级阶段的启动代码,在start.S中有许多#ifdef CONFIG_NAND_SPL包含起的代码用于生成u-boot-spl-16k.bin文件

修改nand_spl对应lowlevel_init.c

nand_spl/board/samsung/smdk6410/lowlevel_init.S中
修改LED亮灯代码为

ldr r0, =ELFIN_GPIO_BASE  str r1, [r0, #GPMCON_OFFSET]ldr r1, =0x00000555str r1, [r0, #GPMPUD_OFFSET]ldr r1, =0xastr r1, [r0, #GPMDAT_OFFSET]

完成后重新编译,将u-boot-spl.bin文件烧录到开发版中,重启后即可看到LED已亮了起来。

0 0
原创粉丝点击