- 环境,在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)

在Windows环境下调试U-Boot时,遇到栈溢出问题。通过调整CONFIG_SYS_MALLOC_F_LEN的大小导致栈溢出,这个宏用于在初始化RAM时预留malloc空间。同时,CONFIG_SYS_INIT_RAM_ADDR和CONFIG_SYS_INIT_SP_ADDR影响栈指针设置。调整这些配置可能导致调试时的问题,需要合理设定以确保栈空间充足。
6096

被折叠的 条评论
为什么被折叠?



