基於U-BOOT-2010.09移植OK6410開發版記錄(二)

點亮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, =0x00000555
str r1, [r0, #GPMPUD_OFFSET]
ldr r1, =0xa
str r1, [r0, #GPMDAT_OFFSET]

完成後重新編譯,將u-boot-spl.bin文件燒錄到開發版中,重啓後即可看到LED已亮了起來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章