从零移植uboot 2017 到nuc970(第十三天)
2017-03-13 19:13
309 查看
首先为了确定外国的spl到底是怎么实现的,做两个尝试 1.在一些默认配置中增加config_spl_build,编译
尝试 2.google相关问题。 第一个尝试:
这里也编译正确,也就是虽然只定义了config_spi_framework,但是确隐含着定义了config_spl_build
换句话说,我以前的判断是错误的,官方实现了,现在已经不用进行第二步确定问题了,我的认识有问题
但是从官方的里面也得到了,不应该编译链接 除了spl里面的文件。
重新回到刚开始,现在重新整理下思路,首先只有正确的编译链接,才谈下一步问题。所以现在修改头
文件定义,实现正确的编译链接。同一个uboot会有这种差别,那么问题完全在头文件的定义上了。
为了完全和官网默认的编译流程匹配,我对比了下编译过程,以及自己以前的记录日志,最后发现
问题处在dts/dt.dtb,现在取消CONFIG_OF_SEPARATE及CONFIG_SPL_OF_PLATDATA的定义
获得了和官方说明一样的配置过程,如果有兴趣可以追踪dts/dt.dtb的makefile规则,它依赖与u-boot,
而u-boot就依赖主体的目标了。现在解决了一个编译流程问题,下面就解决编译成功问题,兜兜转转,又
回到前几天的时候,而且姑且有一点疑问是这样的。config_spl_build,如果在头文件定义会提示重复定义,
换句话说,有默认包含了config_spl_build的地方,我没找到,以后再解决这个问题。
首先还是按照流程走一遍,看齐编译过程:
该函数里面实现一些板级初始化,定时器时钟初始化,串口时钟初始化,nand初始化,并打印些信息现在要
头脑清晰,如何实现nand初始化,并且怎样修改。以适应自己的板子 现在有些问题,又出现了,我已经很精简
我的spl端的程序,但是就是无法达到我的预期。必须找一些调试方法,故uboot调试方法使用qemu-system-arm,
但是我的平台又没有,不太清楚,这个DEBUG方式是作为什么开发手段。刚开始一直想用串口,问题串口也没办
法达到,只能通过点灯。 点灯开发板 这个板子没有灯得外接,且要找到普通的io口,总之现在在经历调试uboot
阶段,串口不能用前只能用其他方法,比較麻煩
尝试 2.google相关问题。 第一个尝试:
grep -i 'config_spl_framework' -r ./configs ./configs/sama5d3xek.h:#define CONFIG_SPL_FRAMEWORK取sama5d3xek,执行sed -i '$i #define CONFIG_SPL_BUILD' ./include/configs/sama5d3xek.h 此时执行
[root@localhost u-boot]# make sama5d3xek_nandflash_defconfig # # configuration written to .config # [root@localhost u-boot]# make spl/u-boot-spl.bin include/configs/sama5d3xek.h:183:0: warning: "CONFIG_SPL_BUILD" redefined [enabled by default] #define CONFIG_SPL_BUILD ^会有这个错误,之后取消这个定义发现,正常运行,生成目标,现在突然间有点晕
CC spl/common/spl/spl.o CC spl/common/spl/spl_nand.o LD spl/common/spl/built-in.o
这里也编译正确,也就是虽然只定义了config_spi_framework,但是确隐含着定义了config_spl_build
换句话说,我以前的判断是错误的,官方实现了,现在已经不用进行第二步确定问题了,我的认识有问题
但是从官方的里面也得到了,不应该编译链接 除了spl里面的文件。
重新回到刚开始,现在重新整理下思路,首先只有正确的编译链接,才谈下一步问题。所以现在修改头
文件定义,实现正确的编译链接。同一个uboot会有这种差别,那么问题完全在头文件的定义上了。
为了完全和官网默认的编译流程匹配,我对比了下编译过程,以及自己以前的记录日志,最后发现
spl/u-boot-spl: tools prepare \ $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
问题处在dts/dt.dtb,现在取消CONFIG_OF_SEPARATE及CONFIG_SPL_OF_PLATDATA的定义
HOSTLD tools/dumpimage HOSTCC tools/mkimage.o HOSTLD tools/mkimage HOSTCC tools/proftool HOSTCC tools/fdtgrep.o HOSTLD tools/fdtgrep CC spl/arch/arm/cpu/arm926ejs/cpu.o CC spl/arch/arm/cpu/arm926ejs/cache.o CC spl/arch/arm/cpu/arm926ejs/nuc970/cpu.o CC spl/arch/arm/cpu/arm926ejs/nuc970/reset.o AS spl/arch/arm/cpu/arm926ejs/nuc970/lowlevel_init.o LD spl/arch/arm/cpu/arm926
获得了和官方说明一样的配置过程,如果有兴趣可以追踪dts/dt.dtb的makefile规则,它依赖与u-boot,
而u-boot就依赖主体的目标了。现在解决了一个编译流程问题,下面就解决编译成功问题,兜兜转转,又
回到前几天的时候,而且姑且有一点疑问是这样的。config_spl_build,如果在头文件定义会提示重复定义,
换句话说,有默认包含了config_spl_build的地方,我没找到,以后再解决这个问题。
首先还是按照流程走一遍,看齐编译过程:
AS spl/arch/arm/lib/crt0.o ......... CC spl/arch/arm/lib/spl.o ......... CC spl/common/spl/spl.o说明编译过程按照spl的流程走了,那么再具体修改,和调整。 首先在:
#ifdef CONFIG_SPL_BOARD_INIT spl_board_init(); #endif
该函数里面实现一些板级初始化,定时器时钟初始化,串口时钟初始化,nand初始化,并打印些信息现在要
头脑清晰,如何实现nand初始化,并且怎样修改。以适应自己的板子 现在有些问题,又出现了,我已经很精简
我的spl端的程序,但是就是无法达到我的预期。必须找一些调试方法,故uboot调试方法使用qemu-system-arm,
但是我的平台又没有,不太清楚,这个DEBUG方式是作为什么开发手段。刚开始一直想用串口,问题串口也没办
法达到,只能通过点灯。 点灯开发板 这个板子没有灯得外接,且要找到普通的io口,总之现在在经历调试uboot
阶段,串口不能用前只能用其他方法,比較麻煩
相关文章推荐
- 从零移植uboot 2017 到nuc970(第十四天)
- 从零移植uboot 2017 到nuc970(第十六天)
- 从零移植uboot 2017 到nuc970(第二十天)
- 从零移植uboot 2017 到nuc970(第二十三天)(第一阶段结束)
- 从零移植uboot 2017 到nuc970(第一天)
- 从零移植uboot 2017 到nuc970(第二天)
- 从零移植uboot 2017 到nuc970(第十七天)
- 从零移植uboot 2017 到nuc970(第三天)
- 从零移植uboot 2017 到nuc970(第十一天)
- 从零移植uboot 2017 到nuc970(第十二天)
- 从零移植uboot 2017 到nuc970(第十五天)
- 从零移植uboot 2017 到nuc970(第四天)
- 从零移植uboot 2017 到nuc970(第九天)
- 从零移植uboot 2017 到nuc970(第十天)
- 从零移植uboot 2017 到nuc970(第五天)
- 从零移植uboot 2017 到nuc970(第七天)
- 从零移植uboot 2017 到nuc970(第六天)
- 从零移植uboot 2017 到nuc970(第八天)
- 从零移植uboot 2017 到nuc970(第二十一天)
- 从零移植uboot 2017 到nuc970(第二十二天)