根据http://blog.csdn.net/xiaojiaohuazi/article/details/8269890来修改
2014.3.2. 做到第九步,这步还未做
疑问:uboot应该在BL2时才初始化内存吧? 这里为什么这么早就初始化内存呢?uart初始化这么早干什么? 奇怪!哈哈,自己乐意初始化uart就初始化,方便调试呀
BL1时初始化内存后,才能将u-boot(BL2)拷贝进入内存
2014.4.1
按照blog所写,发现出现问题:u-boot-2012.10/arch/arm/cpu/armv7/start.S:174: undefined reference to `board_init_f'
经测试发现,将arch/arm/lib/Makefile中COBJS-$(CONFIG_SPL_FRAMEWORK) += spl.o 修改为COBJS-y +=spl.o
CONFIG_SPL_FRAMEWORK这个好像有bug
注意:按照我的 移植1- 裸写BL1,启动uboot这篇文章,配置内存和SD卡读写正确
2014.4.7
还是有问题,uboot不能正常启动
使用uart进行调试! 发现uboot(即BL2)进入到start.S中,可以打印出字符串!继续调试
2014.7.13 调试发现,arch/arm/cpu/armv7/start.S这个文件被SPL和uboot都使用,在SPL进行lowlevel_init后,uboot中就不要做lowlevel_init了,所以要在#ifndef CONFIG_SKIP_LOWLEVEL_INIT的前面添加#ifdef CONFIG_SPL_BUILD,这样spl执行lowlevel_init,uboot中不再执行lowlevel_init
这样,uboot就起来了
应该用git跟踪代码的改动,有时间建立一个tree,然后使用git来跟踪代码!
2014.7.20 发现http://blog.csdn.net/xiaojiaohuazi/article/details/8269890中的第3步没有做,所以导致了2014.4.7的问题,撤销2014.7.13的修改
2014.7.20 不要将CONFIG_SYS_TEXT_BASE写入board/samsung/smdkv210/config.mk中,请写入到include/configs/smdkv210.h中,这样更规范一些
2014.7.20感觉blog作者移植的实在不符合uboot的常规做法,准备重新搞一搞
首先去掉start中的clear bss段,发现uboot启动有问题了!
2014.7.27 终于搞定了,操作步骤如下:
第1步 boards.cfg中添加smdkv210
第2步 copy board/samsung/smdkc100 to board/samsung/smdkv210,并做一些修改
第3步 ,copy include/configs/smkdc100.h to include/configs/smdkv210,并做一些修改
第4步,将mkv210工具添加到tools目录,修改spl/Makefile,使之能利用我们自己的mkv210工具
具体修改请参看源代码: http://download.csdn.net/detail/yazhouren/7683955, 这个用git 管理的,可以看具体的 改动log
中心思想是:SPL时,编译mmc_boot.c生成spl, spl copy uboot to ram并执行
2014.8.18 分清楚SPL与uboot, 以后SPL就只是SPL部分, UBOOT就只是UBOOT(不包括SPL部分,就是start.s调用arch/arm/lib/board.c中的board_init_f和board_init_r)