免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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

本文主要內(nèi)容

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

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

你了解過ARM Compiler 6.9嗎?

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

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

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

    最后,經(jīng)過我昨晚的研究,得出了解決辦法。而且,效果真的很好(編譯效率),編譯的速度,可以和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ì)更多。如以前的一些代碼編譯都是沒有警告,但用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ǔ)句,編譯之后見到的錯(cuò)誤基本就是由于這些語(yǔ)句的不兼容導(dǎo)致的。

4.Select a Compiler Optimization Level

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

5.Object and Library Compatibility

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

6.Data Packing

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

7.Assembler Migration

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

很多RTOS都有一個(gè)或多個(gè)與匯編有關(guān)的源代碼文件,所以,很多有RTOS的工程,編譯后都會(huì)存在許多錯(cuò)誤。常見的就是“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)用中,我們也是這樣按照官方一步一步修改源代碼嗎?

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

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

1.解決CMSIS不兼容問題

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

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

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

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

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

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

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

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

3.其他

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

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

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

最后
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【教程】如何用GCC“零匯編”白嫖MDK
Keil uVision編譯支持C++
ARM DS-5 RVDS MDK-ARM 三款A(yù)RM官方工具軟件比較區(qū)別選擇
real view mdk的使用
KEIL RVMDK VS IAR EWARM
MDK中用C++開發(fā)STM32
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服