嵌入式技术论坛
直播中

王飞云

7年用户 1380经验值
私信 关注
[问答]

cmbacktrace移植编译出现_sstack未定义的原因?如何解决?

1.png

移植以后出现 sstack estack stext etext,未定义,去网络上搜索相关文章后,发现keil 的链接脚本文件如下。
2.png

不知道CMB_CSTART_BLOCK_START 的值如何配置。

回帖(1)

洒下墨色

2023-10-10 10:11:02
首先,_sstack、estack、stext、etext 所在的地址是由链接脚本中的定义决定的。在 keil 的链接脚本文件中,这些变量的定义一般在各自所在区域的起始地址和结束地址中定义。如果出现了未定义的问题,可能是链接脚本文件中定义不正确,或者编译器优化选项导致变量被优化掉了。

对于 CMB_CSTART_BLOCK_START 的值,可以根据实际情况设置。这个值一般是代码起始地址和 RAM 起始地址的交界处,可以根据具体的芯片手册或者参考其他的链接脚本文件进行设置。一些链接脚本文件会定义类似于 CMB_CSTART_BLOCK_LENGTH 的宏,用来计算 CMB_CSTART_BLOCK_START 的值。

解决方法一般有以下几种:

1.确认链接脚本文件中的定义是否正确,并且确保编译器优化选项不会导致变量被优化掉。

2.根据芯片手册或者其他链接脚本文件进行参考,确定 CMB_CSTART_BLOCK_START 的值。

3.检查代码是否正常编译,是否使用了不支持的编译器选项。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分