一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

MDK-ARM編譯器從V5升級(jí)到V6需要做哪些工作 ?

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-12 11:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前面我分享過(guò)一篇文章【MDK v5.25比較實(shí)用的功能】,其中大概提了一下:編譯器升級(jí)到ARM Compiler 6.9。

就在前天,一關(guān)注我的朋友問(wèn)了我這樣一個(gè)問(wèn)題:

黃老師您好,前些日子您更新的公眾號(hào)中介紹最新版本的keil5.25中提到了伴隨更新的新編譯器6.9。在簡(jiǎn)單的把原來(lái)的5版本編譯器修改為6后,重新編譯工程,出現(xiàn)了大量錯(cuò)誤,并且大都包含在庫(kù)文件中,請(qǐng)問(wèn)您是否曾注意過(guò)這一點(diǎn),并怎么解決的呢?

本文主要內(nèi)容:

1.先給大家講述一下官方的解決辦法;

2.實(shí)際工程中的解決辦法;

Ⅰ你了解過(guò)ARM Compiler 6.9嗎?

MDK-ARM在16年就將編譯器升級(jí)到了V6版本,但很少有人關(guān)心這個(gè)功能。包括我在內(nèi),其實(shí)一直都只知道MDK-ARM支持V6版本的編譯器,但沒(méi)有真正使用過(guò)。

那位朋友前天問(wèn)我時(shí),我回復(fù)他:我也沒(méi)仔細(xì)研究過(guò)這個(gè)問(wèn)題。

那位朋友對(duì)這個(gè)V6.9編譯的功能研究了一天之后,沒(méi)有完全解決這個(gè)問(wèn)題,昨天晚上又給我說(shuō)了他研究的情況。于是,我就開(kāi)始了這個(gè)問(wèn)題的研究。

最后,經(jīng)過(guò)我昨晚的研究,得出了解決辦法。而且,效果真的很好(編譯效率),編譯的速度,可以和IAR相比拼了。我想,我后面使用MDK-ARM就基于V6.9了。

ⅡARM Compiler 5 to 6

MDK-ARM編譯器從V5轉(zhuǎn)到V6的解決辦法,只要用心去研究的朋友都能在Keil官網(wǎng)找到官方的說(shuō)明文檔。

官方說(shuō)明文檔下載地址:

http://www.keil.com/appnotes/docs/apnt_298.asp

先看下這個(gè)說(shuō)明文檔的目錄:

看目錄,其實(shí)很簡(jiǎn)單,我大概說(shuō)一下里面重要的幾點(diǎn):

1.Switch the Compiler in μVision IDE

即配置工程,將編譯器切換到V6.9:Project -> Option for Target ->Target.

2.Diagnostic Settings: Warnings and Errors

即診斷設(shè)置,也就是配置工程,編譯時(shí)警告輸出的方式:先切換到V6.9,再配置(默認(rèn)AC5-like即可,如果錯(cuò)誤較多,可No Warning,不顯示警告):

這里想說(shuō)一點(diǎn):V6編譯器檢查的規(guī)則更加嚴(yán)格,簡(jiǎn)單來(lái)說(shuō),就是編譯的警告會(huì)更多。如以前的一些代碼編譯都是沒(méi)有警告,但用V6.9就可能有警告,如:

void HardFault_Handler(void)

{

while (1)

{

}

}

while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);

{

}

3.Incompatible Language Extensions

即V5和V6的指令不兼容,我們需要修改不兼容的代碼。其實(shí),就那么幾條不兼容的語(yǔ)句,編譯之后見(jiàn)到的錯(cuò)誤基本就是由于這些語(yǔ)句的不兼容導(dǎo)致的。

4.Select a Compiler Optimization Level

這里編譯等級(jí),其實(shí)不是重點(diǎn),默認(rèn)即可。

5.Object and Library Compatibility

關(guān)于使用庫(kù)存在的一些問(wèn)題,在編譯的時(shí)候,添加關(guān)鍵字:-fshort-enums -fshort-wchar(一般默認(rèn)都是添加了的):

6.Data Packing

這里主要是說(shuō)數(shù)據(jù)結(jié)構(gòu),也是上面的指令不兼容的問(wèn)題。如果之前使用typedef __packed struct定義,則替換成:__PACKED_STRUCT。

7.Assembler Migration

匯編遷移:這一節(jié)可以說(shuō)是重點(diǎn)。

很多RTOS都有一個(gè)或多個(gè)與匯編有關(guān)的源代碼文件,所以,很多有RTOS的工程,編譯后都會(huì)存在許多錯(cuò)誤。常見(jiàn)的就是“asm”這個(gè)關(guān)鍵字。

文件中大概說(shuō)明了:兼容GNU標(biāo)準(zhǔn),不兼容ARM標(biāo)準(zhǔn)。其中還特別強(qiáng)調(diào)了關(guān)于Inline Assembler的一點(diǎn),僅支持GNU標(biāo)準(zhǔn):

本節(jié)重點(diǎn)帶領(lǐng)大家分析官方的資料,下一章節(jié),實(shí)際應(yīng)用中,我們的快捷的解決方法。

Ⅲ實(shí)際應(yīng)用解決方法

上面官方的解決辦法,可以總結(jié)為兩點(diǎn):

1.修改工程配置;

2.修改源代碼;

實(shí)際應(yīng)用中,我們也是這樣按照官方一步一步修改源代碼嗎?

答案:如果兼容的源代碼,替換即可; 如果沒(méi)有,就只有按照官方說(shuō)明一步一步修改。

下面,我就來(lái)教大家如何使用官方提供的、兼容V6.9的代碼替換,這種快捷解決問(wèn)題的辦法。

1.解決CMSIS不兼容問(wèn)題

下載最新的CMSIS文件替換你工程中CMSIS文件。

下面是關(guān)于CMSIS的一份官方說(shuō)明,大概意思就是向下兼容。

下載地址:http://www.keil.com/dd2/Pack

如果我們安裝了最新的MDK-ARM V5.25,在安裝目錄下都有這些文件:

這種方法可解決Cortet-M等處理器程序編譯的錯(cuò)誤問(wèn)題,如STM32F0、F1、F4等Cortet-M等程序。

2.解決帶FreeRTOS編譯錯(cuò)誤問(wèn)題

FreeRTOS解決辦法,除了解決上面CMSIS的問(wèn)題,還需要解決操作系統(tǒng)部分匯編帶來(lái)的問(wèn)題,簡(jiǎn)單說(shuō)就是【FreeRTOSSourceportableRVDS】這個(gè)目錄下源代碼不兼容的問(wèn)題。

解決辦法,替換相應(yīng)文件:

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

    關(guān)注

    134

    文章

    9353

    瀏覽量

    377790
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50247
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

    32708
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    8999元起!榮耀Magic V5發(fā)布,樹(shù)立折疊屏手機(jī)新標(biāo)桿

    。榮耀Magic V5對(duì)比OPPO在6月份發(fā)布的Find N5,重量減少了16g,榮耀官宣Magic V5價(jià)格8999元起,16GB+512GB版本9999元,16GB+512GB版本
    的頭像 發(fā)表于 07-03 14:23 ?5692次閱讀
    8999元起!榮耀Magic <b class='flag-5'>V5</b>發(fā)布,樹(shù)立折疊屏手機(jī)新標(biāo)桿

    信捷V5 - F5變頻接入Profibus網(wǎng)絡(luò)的關(guān)鍵

    在工業(yè)自動(dòng)化領(lǐng)域,不同設(shè)備之間的通訊連接至關(guān)重要。當(dāng)面臨信捷V5 - F5變頻與Profibus網(wǎng)絡(luò)的接入需求時(shí),modbusRTU轉(zhuǎn)profibus網(wǎng)關(guān)就成為了關(guān)鍵的解決方案。
    的頭像 發(fā)表于 06-20 12:53 ?188次閱讀
    信捷<b class='flag-5'>V5</b> - F<b class='flag-5'>5</b>變頻<b class='flag-5'>器</b>接入<b class='flag-5'>到</b>Profibus網(wǎng)絡(luò)的關(guān)鍵

    JDK8升級(jí)到21的問(wèn)題集

    " ?sun.misc.BASE64Encoder等內(nèi)部API廢棄 → 引發(fā)編譯錯(cuò)誤 ?JAXB/JAX-WSJDK核心剝離 → XML處理鏈斷裂 ?Lombok與新版
    的頭像 發(fā)表于 06-06 16:49 ?256次閱讀

    TASKING編譯器全面支持紫光同芯THA6 Gen2系列產(chǎn)品

    近日,TASKING 針對(duì)Arm架構(gòu)的編譯器平臺(tái)VX-toolset for Arm迎來(lái)了全新升級(jí),最新版本VX-toolset for Arm
    的頭像 發(fā)表于 04-03 17:12 ?704次閱讀

    6.12.1升級(jí)到6.13老是閃退是什么原因?qū)е碌模?/a>

    6.12.1升級(jí)到6.13老是閃退,回到6.12.1又正常,問(wèn)一下大家是什么原因?qū)е?,有什么解決辦法?
    發(fā)表于 03-11 08:13

    使用STM32CubeMX生成FreeRTOS的MDK工程,選擇AC6編譯器有很多錯(cuò)誤,為什么?

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

    TMS320C6000優(yōu)化編譯器v7.4測(cè)試版用戶(hù)指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化編譯器v7.4測(cè)試版用戶(hù)指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-24 17:42 ?0次下載
    TMS320C6000優(yōu)化<b class='flag-5'>編譯器</b><b class='flag-5'>v</b>7.4測(cè)試版用戶(hù)指南

    HighTec C/C++編譯器套件全面支持芯來(lái)RISC-V IP

    德國(guó)薩爾布呂肯,2024年12月5日——世界領(lǐng)先的汽車(chē)C/C++編譯器解決方案提供商HighTec EDV Systeme GmbH宣布全面支持芯來(lái)科技的RISC-V IP。HighTec編譯
    的頭像 發(fā)表于 12-23 09:04 ?1264次閱讀
    HighTec C/C++<b class='flag-5'>編譯器</b>套件全面支持芯來(lái)RISC-<b class='flag-5'>V</b> IP

    HighTec C/C++編譯器支持Andes晶心科技RISC-V IP

    汽車(chē)編譯器解決方案領(lǐng)先供貨商HighTec EDV-Systeme GmbH宣布其針對(duì)汽車(chē)市場(chǎng)的高度優(yōu)化C/C++編譯器支持Andes晶心科技的RISC-V IP。這項(xiàng)支持對(duì)汽車(chē)軟件開(kāi)發(fā)人員來(lái)說(shuō)是一
    的頭像 發(fā)表于 12-12 16:26 ?1102次閱讀

    MSP430優(yōu)化C/C++編譯器v21.6.0.LTS

    電子發(fā)燒友網(wǎng)站提供《MSP430優(yōu)化C/C++編譯器v21.6.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 11-08 14:57 ?0次下載
    MSP430優(yōu)化C/C++<b class='flag-5'>編譯器</b><b class='flag-5'>v</b>21.6.0.LTS

    ARM優(yōu)化C/C++編譯器 v20.2.0.LTS

    電子發(fā)燒友網(wǎng)站提供《ARM優(yōu)化C/C++編譯器 v20.2.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:46 ?0次下載
    <b class='flag-5'>ARM</b>優(yōu)化C/C++<b class='flag-5'>編譯器</b> <b class='flag-5'>v</b>20.2.0.LTS

    TMS320C6000優(yōu)化C/C++編譯器v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化C/C++編譯器v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:35 ?1次下載
    TMS320C6000優(yōu)化C/C++<b class='flag-5'>編譯器</b><b class='flag-5'>v</b>8.3.x

    ADS7813升級(jí)到ADS8513

    電子發(fā)燒友網(wǎng)站提供《ADS7813升級(jí)到ADS8513.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:59 ?0次下載
    <b class='flag-5'>從</b>ADS7813<b class='flag-5'>升級(jí)到</b>ADS8513

    怎樣將keil中的程序?qū)С?/a>

    1. 準(zhǔn)備工作 在開(kāi)始導(dǎo)出程序之前,需要確保已經(jīng)完成了以下準(zhǔn)備工作: 安裝Keil MDK-ARM軟件。 創(chuàng)建一個(gè)新的項(xiàng)目,并添加所需的源文件和庫(kù)文件。 配置項(xiàng)目設(shè)置,包括芯片型號(hào)、
    的頭像 發(fā)表于 09-02 10:23 ?4865次閱讀

    keil5怎么利用sys進(jìn)行配置ti環(huán)境

    設(shè)計(jì)。 安裝TI ARM工具鏈: 要為T(mén)I微控制開(kāi)發(fā)應(yīng)用程序,您需要安裝TI ARM工具鏈。這包括編譯器、鏈接
    的頭像 發(fā)表于 09-02 10:19 ?1259次閱讀