問題:使用Keil5編譯器6編譯代碼會報錯(core_cm3.c)
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括青陽網(wǎng)站建設(shè)、青陽網(wǎng)站制作、青陽網(wǎng)頁制作以及青陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到青陽省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!最近由于突發(fā)原因,安裝了最新的keil MDK-ARM 5.38a,發(fā)現(xiàn)新的MDK版本推出了編譯器6(compiler version 6)且默認(rèn)不帶編譯器5(compiler version 5),使用編譯器6編譯之前老的代碼發(fā)現(xiàn)會報以下錯誤:
../core/src/core_cm3.c(445): error: non-ASM statement in naked function is not supported
uint32_t result=0;
^
../core/src/core_cm3.c(442): note: attribute is here
uint32_t __get_PSP(void) __attribute__( ( naked ) );
^
../core/src/core_cm3.c(465): error: parameter references not allowed in naked functions
"BX lr \n\t" : : "r" (topOfProcStack) );
^
../core/src/core_cm3.c(461): note: attribute is here
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
^
../core/src/core_cm3.c(479): error: non-ASM statement in naked function is not supported
uint32_t result=0;
^
../core/src/core_cm3.c(476): note: attribute is here
uint32_t __get_MSP(void) __attribute__( ( naked ) );
^
../core/src/core_cm3.c(499): error: parameter references not allowed in naked functions
"BX lr \n\t" : : "r" (topOfMainStack) );
^
../core/src/core_cm3.c(495): note: attribute is here
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
造成以上錯誤的原因主要是早前版本的core_cm3.c太老了(一般都是2009年出的)不支持版本6編譯器,解決辦法有兩種:
解決方法一:安裝版本5的編譯器,繼續(xù)用老的編譯器編譯。
方法主要看這兩個大神的帖子:
https://blog.csdn.net/weixin_42587267/article/details/128115324
https://blog.csdn.net/qq_54995462/article/details/126533029
繼續(xù)使用版本5編譯器的好處是不用做任何更改即可繼續(xù)使用,但弊端主要有兩點(diǎn):
版本5編譯器官方已停止開發(fā)只提供維護(hù),從趨勢上來退出歷史舞臺只是時間問題了。
對比發(fā)現(xiàn),版本6編譯器的編譯速度和效率對比5版本有了極大提升,編譯速度肉眼可見的提高了。
綜合以上,本文推薦使用版本6編譯器,處理以上錯誤具體操作如下:
解決方法二:更新相關(guān)文件以支持版本6編譯器
打開keil目錄\keilUv5\ARM\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include
找到core_cm3.h并覆蓋替換老的core_cm3.h,(如有必要)同時復(fù)制cmsis_armclang.h、cmsis_compiler.h、cmsis_version.h到core_cm3.h所在文件夾。
b.在工程中刪除core_cm3.c
通過以上操作就可以順利使用版本6編譯器進(jìn)行編譯了。
另外:
如果之前有使用了c和匯編混合代碼,在編譯器5可以正常通過,但是更改編譯器為V6.12后不識別__ASM關(guān)鍵字,并對匯編語法報錯,如下:
__ASM void testwait()
{
bx lr
}
編譯會報錯:
主要是由于編譯器6對于匯編和C的混合代碼格式做了要求,按照以下方式修改匯編代碼,即可編譯通過:
void testwait()
{
__ASM("bx lr");
}
更多編譯器版本6和版本5的差異可以看以下大神的帖子:
從Arm Compiler 5 遷移到 Arm Compiler 6
https://freertos.blog.csdn.net/article/details/109803651
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:Keil5compilerversion6對Core-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article30/ceegpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)建站、品牌網(wǎng)站制作、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容