STM32F103RBT上embOS在Keil中运行崩溃的问题咨询
STM32F103RBT embOS测试项目链接错误及调试崩溃问题
项目基础信息
- 基于STM32F103RBT搭建embOS测试项目,初始采用默认配置
- 调整编译器为MISRA兼容、C标准设为C99、C标准设为C11后,多数编译错误已解决,但遗留两个链接错误:
.\Objects\marlin.axf: Error: L6218E: Undefined symbol Stack_Mem (referred from os_initsysstackinfo.o). .\Objects\marlin.axf: Error: L6218E: Undefined symbol __initial_sp (referred from os_initsysstackinfo.o).
已尝试的解决方法
方法1:修改启动汇编文件导出符号
在启动汇编文件中添加以下代码导出Stack_Mem和__initial_sp:
Stack_Size EQU 0x00000400 ; EXPORT the Stack_Mem and __initial_sp symbols for use in C files EXPORT Stack_Mem EXPORT __initial_sp
执行后出现新的链接错误:
.\Objects\marlin.axf: error: L6002U: Could not open file .\objects\startup_stm32f10x_md.o: No such file or directory
方法2:注释embOS栈初始化代码
注释OS_InitSysStackInfo函数中的栈信息初始化代码:
OS_SysStackBaseAddr = (unsigned long) &Stack_Mem; OS_SysStackSize = (unsigned int) ((unsigned long)&__initial_sp - (unsigned long)&Stack_Mem); OS_SysStackLimit = (unsigned long) &__initial_sp;
执行后项目可编译通过,但调试过程中直接崩溃。
疑问
如何正确完成该embOS测试项目的调试与验证?
内容的提问来源于stack exchange,提问作者ASiDesigner
相关产品推荐
相关产品推荐

