乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       西北望msm66g9f 2019-12-11

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

      本文主要內(nèi)容

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

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

      你了解過ARM Compiler 6.9嗎?

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

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

      那位朋友對這個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./appnotes/docs/apnt_298.asp

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

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

      1.Switch the Compiler in μVision IDE

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

      2.Diagnostic Settings: Warnings and Errors

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

      這里想說一點(diǎn):V6編譯器檢查的規(guī)則更加嚴(yán)格,簡單來說,就是編譯的警告會更多。如以前的一些代碼編譯都是沒有警告,但用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

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

      5.Object and Library Compatibility

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

      6.Data Packing

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

      7.Assembler Migration

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

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

      文件中大概說明了:兼容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é),實際應(yīng)用中,我們的快捷的解決方法。

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

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

      1.修改工程配置;

      2.修改源代碼;

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

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

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

      1.解決CMSIS不兼容問題

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

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

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

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

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

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

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

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

      3.其他

      其他RTOS解決的辦法可參考上面講述的內(nèi)容。目前許多RTOS廠家逐步在完善兼容的問題。

      沒有替換的,就只有按照官方提供的辦法修改源代碼。實在不能解決,就只能使用之前V5編譯器了。

      目前我測試過STM32F0、F1、F4等裸機(jī)程序,UCOS、FreeRTOS操作系統(tǒng),都使用V6.9成功編譯,并在板卡上成功運(yùn)行,后續(xù)還會驗證其它程序

      最后

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多