
如上圖所示,作者將一個工程從AC5切換到AC6后,出現(xiàn)編譯報錯。
原因是在AC5環(huán)境下,部分源文件 #include "cmsis_armcc.h"頭文件,此頭文件是AC5編譯器下使用的。
在AC6編譯器環(huán)境下,需替換成 #include "cmsis_armclang.h"文件
同時宏 __CC_ARM __ARMCC_VERSION 分別是使用AC5和AC6編譯器時,MDK定義的兩個全局宏
#if defined(__ARMCC_VERSION)
#include "cmsis_armclang.h"
#elif defined(__ARMCC_VERSION)
#include "cmsis_armcc.h"
#endif
即可通過這兩個宏控制頭文件包含
在官方的BSP board.h 文件中也有對這兩個宏的引用
#if defined(__CC_ARM) || defined(__ARMCC_VERSION)
extern int Image
RW_IRAM1
Limit;
#define HEAP_BEGIN ((void *)&Image
RW_IRAM1
Limit)
#elif ICCARM
#pragma section = "CSTACK"
#define HEAP_BEGIN (__segment_end("CSTACK"))
#else
extern int __bss_end;
#define HEAP_BEGIN ((void *)&__bss_end)
#endif
#define HEAP_END STM32_SRAM_END
補充:
使用scons —target=mdk5 創(chuàng)建MDK5工程 是基于 BSP目錄下template工程建立的,在template工程中設(shè)置編譯器版本為AC6


生成的MDK工程也會是AC6,但是有一個問題就是編譯后進行debug,程序無法進入
#ifdef __ARMCC_VERSION
extern int Super$main(void);
/* re-define main function */
int Sub$main(void)
{
rtthread_startup();
return 0;
}
必須先手動改成AC5,然后再改回AC6,才行。
-
ARM技術(shù)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7682 -
MDK5
+關(guān)注
關(guān)注
0文章
10瀏覽量
6080
發(fā)布評論請先 登錄
SN74AC14NSR 具有施密特觸發(fā)輸入的 6 通道、2V 至 6V 反相器
5 GHz,802.11ac,支持 LAA 的前端模塊 skyworksinc
nano版本使用AC6編譯器下,不顯示msh怎么解決?
rt_list_for_each_entry編譯失敗怎么解決?
CW32L011_PD Power 口袋電源活動
Texas Instruments SN74AC07/SN74AC07-Q1六路緩沖器數(shù)據(jù)手冊
Texas Instruments SN74AC17/SN74AC17-Q1六路緩沖器數(shù)據(jù)手冊
邊緣設(shè)備AI部署:編譯器如何實現(xiàn)輕量化與高性能?
5 GHz 802.11ac WLAN 前端模塊 skyworksinc
5 GHz,802.11ac 前端模塊 skyworksinc
5 GHz,802.11n/ac 前端模塊 skyworksinc
關(guān)于MDK編譯器AC5與AC6切換的問題
評論