Keil5使用compiler6编译FreeRTOS

使用STM32CubeMX生成的FressRTOS工程无法使用keil5中的compiler6进行编译,但使用compiler5编译十分慢。

原因是FreeRTOS中的port.c和portmacro.h包含了与编译器相关的汇编指令。

为了使得STM32CubeMX生成的工程可以正常编译,需要修改库文件。

目录为

D:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX_Repo\STM32Cube_FW_H7_V1.8.0\Middlewares\Third_Party\FreeRTOS\Source\portable\

将其中的RVDS文件夹备份,然后复制一个GCC文件夹同时重命名为RVDS。

关于Arm Compiler 6

Arm Keil MDK已属于ARM公司,Arm Compiler 6是Arm DS-5的编译器。

该编译器是基于Clang和LLVM的,Clang作为前端,LLVM作为后端。

Clang的目标是提供一个GCC的替代品,支持了GNU编译器的大多数编译设置及非官方语言的扩展。可以生成代码对应的抽象语法树,并将代码编译成LLVM中间代码。

Arm Compiler 6中的armasm汇编器使用GNU汇编语法。因此代码使用Arm Compiler 6编译时,需特别注意汇编语言的迁移。