- 环境,在windows环境下调试该问题。
- 首先建立正确的FSBL工程及helloword工程,并且能够正常跑通。
- 编译u-boot生成u-boot(该文件是elf格式,并增加后缀elf,否则bootgen打包会有问题)
- hello world 工程的调试选项设置为下面的配置,然后调试hello-world工程就可以调试该u-boot.elf文件了。都是反汇编的形式调试。配合寄存器,内存基本问题都能搞定。
我的问题:
因为我调试增加了下面配置的长度
CONFIG_SYS_MALLOC_F_LEN=0x2000//由0x400调整为0x2000,栈就溢出了
下面的宏,在b-boot建立c环境的时候会用该宏作为栈指针。并且会在栈顶预留CONFIG_SYS_MALLOC_F_LEN的空间,作为malloc使用。
#define CONFIG_SYS_INIT_RAM_ADDR 0xFFFF0000
#define CONFIG_SYS_INIT_RAM_SIZE 0x10000 //由0x1000改为0x10000
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
CONFIG_SYS_INIT_RAM_SIZE - \
GENERATED_GBL_DATA_SIZE)