蜗窝科技

exynos4412 u-boot 移植链接板级文件lowlevel_init.o的位置超过了14K的地址范围

蜗窝讨论区存档 · X Project · 楼主 ap0904225 · 2016-11-21 · 8 帖

本文是原「蜗窝讨论区」的历史存档(2016-11-21),来自版块「X Project」,共 8 帖。讨论区已停止服务,此处仅供查阅。

ap0904225 · 2016-11-21 18:56

大家好! 我在X-project项目中移植exynos4412 u-boot(u-boot版本为v2016-11)的时候遇到的问题是:三星提供好了BL1的文件,且这个BL1是不开源的也不知道是如何生成的。因此我在移植exynos4412的时候没有使用SPL,参考了u-boot/board/samsung/odroid这个开发板来移植。想在整个u-boot.bin中截取前面的14K作为BL2。但是我发现板级文件的lowlevel_init.o的链接位置超过了14K的地址,因此在截取的BL2中并不包lowlevel_init.o。 请问大家知道如何通过修改u-boot.lds文件来改变文件的链接位置。

wowo · 2016-11-21 21:29

ap0904225 写道: 大家好! 我在X-project项目中移植exynos4412 u-boot(u-boot版本为v2016-11)的时候遇到的问题是:三星提供好了BL1的文件,且这个BL1是不开源的也不知道是如何生成的。因此我在移植exynos4412的时候没有使用SPL,参考了u-boot/board/samsung/odroid这个开发板来移植。想在整个u-boot.bin中截取前面的14K作为BL2。但是我发现板级文件的lowlevel_init.o的链接位置超过了14K的地址,因此在截取的BL2中并不包lowlevel_init.o。 请问大家知道如何通过修改u-boot.lds文件来改变文件的链接位置。

其实我们移植u-boot的时候,可以不使用lowlevel_init,参考下面的代码:


[== Undefined ==]
/* arch/arm/cpu/armv7/Makefile */
ifneq ($(CONFIG_SUNNY)$(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA),)
ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
obj-y   += lowlevel_init.o
endif
endif

至于怎么改变链接位置,其实也很简单,例如:


[== Undefined ==]
        .0x2000xxxx;     ----- 想放的位置
    . = ALIGN(4);
    .xxx_text :
    {
            xxx/lowlevel_init.o (.text*)
    }

ap0904225 · 2016-11-21 22:13

谢谢wowo,我试试看

ap0904225 · 2016-12-08 22:07

我一开始移植exynos4412的时候参考了u-boot/board/samsung/odroid这个开发板来移植,直接在整个u-boot.bin中截取前面的14K作为BL2。通过反汇编u-boot.bin文件,我发现板级初始化的代码(内存和时钟初始化)被放在了u-boot.bin文件的14K地址之后,因此在截取的BL2中并不包含相关板级初始化的代码。后来参考u-boot/board/samsung/origen这个开发板,解决了这个问题。 目前已经可以实现把u-boot拷贝到片外DDR上运行,命令行也可以使用了。 相关的记录文档地址:http://www.cnblogs.com/AP0904225/p/6078966.html u-boot代码仓库:git@github.com:X-Project-FriendlyARMTiny4412/u-boot.git 有兴趣的同学可以一起参与进来,一起学习提高。

wowo · 2016-12-09 08:57

ap0904225 写道: 我一开始移植exynos4412的时候参考了u-boot/board/samsung/odroid这个开发板来移植,直接在整个u-boot.bin中截取前面的14K作为BL2。通过反汇编u-boot.bin文件,我发现板级初始化的代码(内存和时钟初始化)被放在了u-boot.bin文件的14K地址之后,因此在截取的BL2中并不包含相关板级初始化的代码。后来参考u-boot/board/samsung/origen这个开发板,解决了这个问题。 目前已经可以实现把u-boot拷贝到片外DDR上运行,命令行也可以使用了。 相关的记录文档地址:http://www.cnblogs.com/AP0904225/p/6078966.html u-boot代码仓库:git@github.com:X-Project-FriendlyARMTiny4412/u-boot.git 有兴趣的同学可以一起参与进来,一起学习提高。

Cool!!

wowo · 2016-12-10 09:22

ap0904225 写道: 我一开始移植exynos4412的时候参考了u-boot/board/samsung/odroid这个开发板来移植,直接在整个u-boot.bin中截取前面的14K作为BL2。通过反汇编u-boot.bin文件,我发现板级初始化的代码(内存和时钟初始化)被放在了u-boot.bin文件的14K地址之后,因此在截取的BL2中并不包含相关板级初始化的代码。后来参考u-boot/board/samsung/origen这个开发板,解决了这个问题。 目前已经可以实现把u-boot拷贝到片外DDR上运行,命令行也可以使用了。 相关的记录文档地址:http://www.cnblogs.com/AP0904225/p/6078966.html u-boot代码仓库:git@github.com:X-Project-FriendlyARMTiny4412/u-boot.git 有兴趣的同学可以一起参与进来,一起学习提高。

另外,可以的话,你可以把你的成果,上传到wowotechX的github上,这样大家可以参考你的改动继续进行下去。(我可以把你的github账号加到wowotechX中)。

ap0904225 · 2017-02-08 23:19

好的,麻烦wowo把我的github账号加到wowotechX中。 我的github账号是:ap09042250@qq.com

wowo · 2017-02-09 08:41

ap0904225 写道: 好的,麻烦wowo把我的github账号加到wowotechX中。 我的github账号是:ap09042250@qq.com

已邀请