0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于MDK編譯器AC5與AC6切換的問題

冬至子 ? 來源:梅江松子 ? 作者:梅江松子 ? 2023-10-16 14:16 ? 次閱讀

1.jpg

如上圖所示,作者將一個工程從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

1.jpg

2.jpg

生成的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,才行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    7265
  • MDK5
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    5719
收藏 人收藏

    評論

    相關(guān)推薦

    示波器ac和dc怎么切換使用

    示波器是一種用于觀察和測量電信號波形的電子測量儀器,廣泛應(yīng)用于電子、通信、電力等領(lǐng)域。示波器的輸入方式有AC(交流)和DC(直流)兩種,根據(jù)測量信號的類型和需求,需要在AC和DC之間進行切換。 一
    的頭像 發(fā)表于 08-09 15:01 ?1045次閱讀

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級語言編寫的源代碼轉(zhuǎn)換為機器可執(zhí)行的代碼,還融入了人工智能技術(shù)
    的頭像 發(fā)表于 07-17 18:28 ?1333次閱讀

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計目標(biāo)、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對兩者區(qū)別的詳細(xì)探討,旨在全面解析其內(nèi)在差異。
    的頭像 發(fā)表于 07-17 18:19 ?1458次閱讀

    Meta發(fā)布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構(gòu)建,并融合了先進的代碼優(yōu)化和編譯器功能。LLM編譯器的推出,標(biāo)志著Meta在人工智能領(lǐng)域的又一重大突破,將
    的頭像 發(fā)表于 06-29 17:54 ?1374次閱讀

    使用mdk編譯時,提示警告的原因?

    在使用mdk編譯時,提示警告..MiddlewarescJSONcJSON.c(2001): warning:#2803-D: unrecognized GCC pragma 我使用的是v5
    發(fā)表于 05-27 07:02

    stm32wb55cgu6用BLE_HeartRate例程,連接一會就自動斷開的原因?

    沁恒的藍牙調(diào)試助手和st的st ble toolbox都是這樣 斷開時間不固定,但都沒幾分鐘肯定會斷開。。 并且斷開后功耗也會增加兩個ma,過30秒會恢復(fù)待機狀態(tài),這邊做的最小系統(tǒng)板, 還有另外一個問題,藍牙棧兼容ac6嗎,我使用keil,默認(rèn)是ac5,使用
    發(fā)表于 05-24 08:29

    AC-AC轉(zhuǎn)換的工作原理與主要類型

    AC-AC轉(zhuǎn)換,即交流-交流轉(zhuǎn)換,是一種將一種交流電轉(zhuǎn)換為另一種交流電的電子設(shè)備。在現(xiàn)代電子系統(tǒng)中,AC-AC轉(zhuǎn)換扮演著至關(guān)重要的角色
    的頭像 發(fā)表于 05-23 17:09 ?4721次閱讀

    請問TouchGFX如何用AC6編譯器呢?

    最近幾天 研究了下AC6編譯器 ,想使用AC6 編譯TouchGFX, 用ArmV5 編譯 工程
    發(fā)表于 04-11 07:36

    使用mdkac6編譯器一直報錯是怎么回事?

    使用mdkac6編譯器一直報錯
    發(fā)表于 04-10 06:01

    printf在keil5AC6編譯器下運行進入死循環(huán)的原因?

    Initialization ...n\");把信息顯示在屏幕上,用AC5編譯時運行正常,但是編譯速度太慢;而用AC6編譯時,速度快,但運
    發(fā)表于 04-07 06:46

    STM32CubeMX生成FreeRTOS的MDK工程不支持AC6編譯器嗎?

    使用STM32CubeMX生成FreeRTOS的MDK工程,選擇AC5編譯器可以編譯成功,選擇AC6編譯
    發(fā)表于 03-06 08:24

    QT開發(fā)學(xué)習(xí)筆記1(安裝交叉編譯器

    QT安裝交叉編譯器
    的頭像 發(fā)表于 02-18 10:02 ?785次閱讀
    QT開發(fā)學(xué)習(xí)筆記1(安裝交叉<b class='flag-5'>編譯器</b>)

    編譯器的優(yōu)化選項

    一個程序首先要保證正確性,在保證正確性的基礎(chǔ)上,性能也是一個重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數(shù)據(jù)結(jié)構(gòu);第二,應(yīng)該編寫編譯器能夠有效優(yōu)化以轉(zhuǎn)換成高效可執(zhí)行代碼的源代碼,要做到
    的頭像 發(fā)表于 11-24 15:37 ?804次閱讀
    <b class='flag-5'>編譯器</b>的優(yōu)化選項

    基于ARM編譯器版本5的工程遷移與適配到ARM編譯器版本6.12

    AC5AC6的主要差異是AC6使用armclang代替了armcc,因此在AC6中就沒有armcc這個編譯工具了。并且armclang的
    的頭像 發(fā)表于 11-12 11:17 ?8302次閱讀
    基于ARM<b class='flag-5'>編譯器</b>版本<b class='flag-5'>5</b>的工程遷移與適配到ARM<b class='flag-5'>編譯器</b>版本6.12

    FAQ0115使用AC6編譯器注意事項

    使用AC6編譯器注意事項在使用ARM Compiler version 6AC6)時,可能會出現(xiàn)如下情形之一
    發(fā)表于 10-23 08:06