文章目錄
- 一、前言
- 二、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
的文件