工程建立
本文章利用 Github 项目 LinRTOS 为例。
在 GitHub 上克隆项目后,直接运行会出现错误:
E:\\Users\\hepta\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\6.2.0\\CMSIS\\Core\\Include\\cmsis_compiler.h(279): error: #35: #error directive: Unknown compiler. #error Unknown compiler.
原因为 CMSIS 版本过高。调整为 CMSIS 5.x 后错误解决。需要在 Manage Run-Time Environment 中选择正确的版本。
随后报错:
.\\Objects\\vTaskSchedule.axf: Error: L6218E: Undefined symbol Image$$ARM_LIB_STACK$$ZI$$Limit (referred from startup_armcm4.o).
在 Options for Target 中 Target 勾选 Use MicroLIB,错误解决。
随后报错:
Error: L6218E: Undefined symbol __initial_sp (referred from entry2.o).
这是由于 ARMCMx_acx.sct 没有链接到工程中。
在 Options for Target → Linker 中先取消勾选 Use Memory Laysout from Target Dialog,然后再下方 Scatter File 中选择 ARMCMx_acx.sct 文件,错误解决。
随后编译完成。
下面是更改后的、可以被 MDK5.24 + Arm Compiler 5.06 运行的工程: