日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

2.實際工程中的解決辦法;

Ⅰ你了解過ARM Compiler 6.9嗎?

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

那位朋友前天問我時,我回復(fù)他:我也沒仔細研究過這個問題。

那位朋友對這個V6.9編譯的功能研究了一天之后,沒有完全解決這個問題,昨天晚上又給我說了他研究的情況。于是,我就開始了這個問題的研究。

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

ⅡARM Compiler 5 to 6

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

官方說明文檔下載地址:

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

先看下這個說明文檔的目錄:

看目錄,其實很簡單,我大概說一下里面重要的幾點:

1.Switch the Compiler in μVision IDE

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

2.Diagnostic Settings: Warnings and Errors

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

這里想說一點:V6編譯器檢查的規(guī)則更加嚴格,簡單來說,就是編譯的警告會更多。如以前的一些代碼編譯都是沒有警告,但用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的指令不兼容,我們需要修改不兼容的代碼。其實,就那么幾條不兼容的語句,編譯之后見到的錯誤基本就是由于這些語句的不兼容導(dǎo)致的。

4.Select a Compiler Optimization Level

這里編譯等級,其實不是重點,默認即可。

5.Object and Library Compatibility

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

6.Data Packing

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

7.Assembler Migration

匯編遷移:這一節(jié)可以說是重點。

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

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

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

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

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

1.修改工程配置;

2.修改源代碼;

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

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

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

1.解決CMSIS不兼容問題

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

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

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

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

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

2.解決帶FreeRTOS編譯錯誤問題

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

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

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

    關(guān)注

    135

    文章

    9589

    瀏覽量

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

    關(guān)注

    1

    文章

    1673

    瀏覽量

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

    關(guān)注

    4

    文章

    211

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    MDK-ARM平臺下的fft介紹

    MDK-ARM平臺 #include "arm_math.h" #include &quot
    發(fā)表于 01-22 07:35

    有新版keil MDK-ARM V5 注冊機安裝包不,孩子下載keil卡在許可碼過期了,救救孩子吧

    有新版keil MDK-ARM V5 注冊機安裝包不,孩子下載keil卡在許可碼過期了,救救孩子吧
    發(fā)表于 01-14 19:37

    v6編譯v5的代碼會報錯,怎么解決?

    v6編譯v5的代碼會報錯。要想正常編譯通過,得用v6重零構(gòu)建一個項目才行嗎
    發(fā)表于 12-08 06:21

    rt-thread 在mdk5中使用v6編譯器編譯出錯怎么解決?

    由于添加了u8g2這個組件,編譯特別慢,8分鐘才完成。 聽說v6編譯器編譯速度快很多,于是想用v6,結(jié)果,直接
    發(fā)表于 09-24 07:22

    如何在Keil中將NuMicro BSPArm編譯器5遷移到編譯器6

    在Keil中將NuMicro BSPArm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    8999元起!榮耀Magic V5首發(fā),樹立折疊屏手機新標桿

    217g, 是目前全球最輕的折疊屏手機。榮耀Magic V5對比OPPO在6月份發(fā)布的Find N5,重量減少了16g,榮耀官宣Magic V5價格8999元起,16GB+512GB版
    的頭像 發(fā)表于 07-04 09:10 ?9571次閱讀
    8999元起!榮耀Magic <b class='flag-5'>V5</b>首發(fā),樹立折疊屏手機新標桿

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

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

    兆松科技發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本

    近日,兆松科技(武漢)有限公司(以下簡稱“兆松科技”)宣布正式發(fā)布高性能 RISC-V 編譯器 ZCC 4.0.0 版本。新版本在性能優(yōu)化、廠商自定義指令支持和軟件庫等方面實現(xiàn)全面升級,并同步推出
    的頭像 發(fā)表于 06-27 14:48 ?3885次閱讀
    兆松科技發(fā)布高性能RISC-<b class='flag-5'>V</b><b class='flag-5'>編譯器</b>ZCC 4.0.0版本

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

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

    modbus RTU轉(zhuǎn)profibus網(wǎng)關(guān)把信捷V5 - F5變頻接入profibus總線

    在工業(yè)自動化領(lǐng)域,不同設(shè)備之間的通信連接至關(guān)重要。當我們需要將信捷V5 - F5變頻接入采用modbus RTU協(xié)議的設(shè)備與profib
    的頭像 發(fā)表于 06-18 12:22 ?845次閱讀
    modbus RTU轉(zhuǎn)profibus網(wǎng)關(guān)把信捷<b class='flag-5'>V5</b> - F<b class='flag-5'>5</b>變頻<b class='flag-5'>器</b>接入<b class='flag-5'>到</b>profibus總線

    STM32MP157d linux5.4.31升級到6.1.82無法啟動怎么解決?

    我以前一直使用linux5.4.31,只使用了TFA沒有optee uboot是2020版本。一直用得好好的 上個禮拜我想升級到6.1.82(主要想打RT linux patch, 看到STM有出
    發(fā)表于 06-10 07:31

    RISC-V架構(gòu)下的編譯器自動向量化

    進迭時空專注于研發(fā)基于RISC-V的高性能新AICPU,對于充分發(fā)揮CPU核的性能而言,編譯器是不可或缺的一環(huán),而在AI時代,毫無疑問向量算力將發(fā)揮越來越重要的作用。進迭時空非常重視RISC-V
    的頭像 發(fā)表于 06-06 16:59 ?1458次閱讀
    RISC-<b class='flag-5'>V</b>架構(gòu)下的<b class='flag-5'>編譯器</b>自動向量化

    JDK8升級到21的問題集

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

    STM32MP157d linux5.4.31升級到6.1.82無法啟動怎么解決?

    我以前一直使用linux5.4.31,只使用了TFA沒有optee uboot是2020版本。一直用得好好的 上個禮拜我想升級到6.1.82(主要想打RT linux patch, 看到STM有出
    發(fā)表于 06-06 06:42

    STM32MP157d linux5.4.31升級到6.1.82無法啟動怎么解決?

    我以前一直使用linux5.4.31,只使用了TFA沒有optee uboot是2020版本。一直用得好好的 上個禮拜我想升級到6.1.82(主要想打RT linux patch, 看到STM有出
    發(fā)表于 05-21 06:20
    肥西县| 邢台市| 张家界市| 镇巴县| 义乌市| 筠连县| 南华县| 丹寨县| 三明市| 南溪县| 城口县| 桑植县| 临湘市| 古田县| 富川| 自贡市| 西贡区| 广饶县| 墨玉县| 庆城县| 宜兰县| 鹿泉市| 嘉荫县| 容城县| 普定县| 合水县| 彝良县| 和政县| 将乐县| 乐业县| 隆回县| 永州市| 永昌县| 普陀区| 灵璧县| 孟村| 桑植县| 皮山县| 七台河市| 达孜县| 永济市|