如何确认编译过程中的 config定义
config.mk 介绍:http://home.eeworld.com.cn/my/space-uid-238351-blogid-473554.html
.config 文件是编译产生的config定义的宏,所有编译用到的宏,在这里确认。
.config 从defconfig来,这两个文件如何修改参考:https://blog.youkuaiyun.com/u012247418/article/details/105347429/
spl的defconfig 文件: ./configs/j5_fpga_defconfig
LDS文件怎么产生的?
编译使用的lds文件: ./spl/u-boot-spl.lds
./scripts/Makefile.spl 文件定义了lds文件到底使用哪一个。这里在defconfig中定义了 CONFIG_SPL_LDSCRIPT,所以使用这里定义的lds文件:arch/arm/cpu/armv8/hobot/u-boot-spl.lds
lds 文件的优先级是 CONFIG_SPL_LDSCRIPT定义的文件 > board/hobot/j5_fpga/u-boot-spl.lds > arch/arm/cpu/armv8/u-boot-spl.lds > archarm/cpu/u-boot-spl.lds. 优先级在./scripts/Makefile.spl 文件中定义 ,哪个在前,哪个优先级高。
lds文件中用到很多地址宏定义,在./include/configs/j5_fpga.h
代码执行顺序
代码运行起始地址 _start
./arch/arm/cpu/armv8/start.S
然后跳转到_main
arch/arm/lib/crt0_64.S
再跳转到board_init_f
arch/arm/lib/spl.c