调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
苏勇 Andrew, 2025-05
最近在Keil中调试一款新的Cortex-M85内核MCU的SDK代码时,从原有其它芯片的工程中引入了汇编语言编写的启动代码和配套的sct文件,结果总是报错,清理到最后,遇到找不到链接器创建的关于栈的变量。最终得以解决,在本文记录调试要点。
1. 报错和跟踪分析
C源码编译都通过了,但是链接过不去,build log 显示问题出在 startup_ra7a8d1bh.s 文件(从.o文件报错,说明是经过了编译过程,在汇编过程中发现的错误,通过文件名可以定位可编辑的源码文件)中。

但是,这两个符号明明有定义,见下图。

这里通过“#define”命令,定义了这两个符号,分别引用了 “Image$$ARM_LIB_STACK$$ZI$$Limit” 和 “Image$$ARM_LIB_STACK$$ZI$$Base”。顺藤摸瓜,又在连接命令文件(.sct)文件中找到关于 ARM_LIB_STACK 的定义,见下图。

。。。
从网上一顿查,确认在Keil的工具链中,在编译源码是如此引用链接器中定义的实体是正确的用法,并且确实Keil的MicroLib也会用到这个 ARM_LIB_STACK 等,在启动程序

最低0.47元/天 解锁文章
845

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



