官方标准uboot2013移植6之重定位

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangdapao12138/article/details/81610437

1.在重定位代码前加调试信息定位

1)逻辑上来说,重定位部分代码应该在DDR初始化之后和uboot第二阶段来临前之间。

2)uboot的第一阶段和第二阶段的划分并不是绝对的,唯一必须遵循的原则就是第一阶段不能大于8KB。所以uboot的第一阶段最少要完成DDR初始化和重定位,最多不能超过8KB。在满足这些条件时,第一阶段和第二阶段的接点可以随便挑。

3)找到合适的地方来写重定位代码,重定位之后远跳转到第二阶段的入口。

2.movi_bl2_:copy函数移植

1)从三星版本的uboot中赋值movi.c和movi.h到uboot2013.10中。

2)改makefile和u-boot.lds。

3.代码同步及编译

主要是crt0.S和movi.h。

4.编译中出现问题解决

1)movi.h中宏定义出错,最后在s5p_goni.h中添加了 CONFIG_EVT1这个宏解决了

2)连接错误:u-boot contains relocations other than    R_ARM_RELATIVE

在uboot下用grep "R_ARM_RELATIVE" -nR *搜索,发现Makefile中有一个检查重定位的规则,屏蔽掉这个规则后编译连接成功。

5.结果验证及下阶段展望

1)看到了uboot启动打印出来的一系列信息,但是uboot没有进入命令行。

2)这说明uboot中的DDR初始化和重定位功能都已经完美实现,后面就是第二阶段的继续移植了。

猜你喜欢

转载自blog.csdn.net/wangdapao12138/article/details/81610437