文章目录
- 一、前言
- 二、AC 6配置
- 2.1 ARM ComPiler 选择AC6
- 2.2 AC6 UTF-8的编译命令会报错
- 三、STM32Cubemx 配置
- 3.1 找到stm32cubemx的模板位置
- 3.2 替换文件内核文件
- 3.3 修改 cmsis_os.c文件
- 3.4 修改本地
- 四、编译对比
一、前言
使用keil
ARM compiler V5
的时候,编译一个大项目,所花的时间太长了,如果是小项目那就没有什么差别。ARM compiler V6
的编译速度会比AC5
快5倍以上。现在记录一下所配置的过程
二、AC 6配置
2.1 ARM ComPiler 选择AC6
2.2 AC6 UTF-8的编译命令会报错
如果使用的是UTF-8
我们通常会在 Options For TarGet → C/C++ → Misc Controls 里面会填入
--no-multibyte-chars
需要改成
-finput-charset=UTF-8
三、STM32Cubemx 配置
STM32Cubemx
生成FreeRTos
的代码时会报错,需要修改一下,让STM32Cubemx
生成支持AC6
版本的代码
3.1 找到stm32cubemx的模板位置
打开 stm32cubemx → Project Manager → Firmware Relative Path
3.2 替换文件内核文件
把\STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F
里面的文件内容 全部替换
为
STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F
里面的内容
3.3 修改 cmsis_os.c文件
如果你是 F4
的芯片还需要做一步,F1
的板子就不需要这一步,直接重新生成就可以了
文件目录 STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS
#elif defined ( __GNUC__ )
#define __ASM __asm /*!< asm keyword for GNU Compiler */
#define __INLINE inline /*!< inline keyword for GNU Compiler */
#define __STATIC_INLINE static inline
#include "cmsis_gcc.h"
修改成
#elif defined ( __GNUC__ )
#define __ASM __asm /*!< asm keyword for GNU Compiler */
// #define __INLINE inline /*!< inline keyword for GNU Compiler */
// #define __STATIC_INLINE static inline
#include "cmsis_armclang.h"
已经修改完成直接重新生成就行了。
3.4 修改本地
如果不想动STM32cubemx
的文件代码,那么可以修改工程的代码
工程文件夹\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS
替换为
STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F
修改 工程文件夹\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS
的文件