IAR版本不兼容打開(kāi)工程文件的方法
說(shuō)起來(lái)本人用IAR也有好幾年,從最開(kāi)始的IAR for AVR到IAR FOR MSP430,到現(xiàn)在的IAR for arm。雖說(shuō)談不上很精通,但是確實(shí)用得很順手,也算是比較有感情吧。常??吹匠鯇W(xué)ARM的人會(huì)問(wèn),到底是MDK for ARM好用還是IAR for ARM好用,這就可見(jiàn)MDK和IAR作為ARM編譯器的統(tǒng)治地位,當(dāng)然其它還有ARM公司自己配套的ADS,免費(fèi)的GCC等很多編譯器,據(jù)說(shuō)ADS不怎么更新了,其它我也很少用到,這里就不作評(píng)論了。這里我僅僅憑我個(gè)人的使用感受簡(jiǎn)單的對(duì)比一下MDK和IAR:1,設(shè)計(jì)資源:基本上各大ARM芯片廠商提供的開(kāi)發(fā)板配套的工程文件都會(huì)同時(shí)包含IAR和MDK,這兩個(gè)編譯器支持的芯片也非常全,因此設(shè)計(jì)資源這一塊來(lái)說(shuō)兩者非常接近。2,內(nèi)嵌RTOS系統(tǒng):兩個(gè)編譯器都內(nèi)嵌了一些免費(fèi)的系統(tǒng),尤其是MDK獨(dú)有的RTX系統(tǒng)使用很方便,不過(guò)對(duì)于系統(tǒng)移植者來(lái)說(shuō)沒(méi)什么影響。3,使用體檢:MDK的軟件仿真可以說(shuō)是相對(duì)于IAR最大的優(yōu)勢(shì),讓我們可以最小成本的驗(yàn)證程序。IAR的快速定位函數(shù)功能是我覺(jué)得比較實(shí)用的一個(gè)亮點(diǎn)。操作上MDK可以批量的關(guān)掉打開(kāi)的所有文件,IAR卻要一個(gè)個(gè)的點(diǎn)右鍵關(guān)閉,不太方便;MDK重新編譯的速度確實(shí)慢,而IAR則非???,這也是我認(rèn)為IAR最大的優(yōu)點(diǎn)。4,價(jià)格:MDK和IAR都需要相應(yīng)的LISENCE.最為公司商用而言,不得不考慮價(jià)格,兩個(gè)在價(jià)格上也比較接近,大概都是幾千人民幣一個(gè)lisence,MDK的價(jià)格相對(duì)便宜一點(diǎn),國(guó)內(nèi)的代理商和技術(shù)支持也比較多,服務(wù)可能會(huì)好點(diǎn)。總之,MDK和IAR都是非常優(yōu)秀,非常穩(wěn)定的編譯平臺(tái),用戶可以根據(jù)自己使用芯片的情況,個(gè)人喜好去選擇。
閑說(shuō)完畢,下面進(jìn)入正題。在我的之前的一篇博客如果通過(guò)IAR工程查看IAR版本中講到IAR打開(kāi)版本不一致的工程時(shí)候會(huì)出現(xiàn)丟失配置信息的情況,當(dāng)然我們可以安裝多個(gè)版本的IAR來(lái)解決這個(gè)問(wèn)題,但是IAR的版本眾多,每個(gè)都安裝確實(shí)比較麻煩。如果不安裝,自己根據(jù)編譯信息去修改工程配置文件也有難度,你也許都不知道該工程用的什么型號(hào)的主芯片。下面介紹下我解決這個(gè)問(wèn)題的簡(jiǎn)單方法:還是打開(kāi)原來(lái)工程文件中的*.ewp文件,上次也提到過(guò)搜索“OGLastSavedByProductVersion”可以查看這個(gè)工程文件最后被編譯的IAR版本。在這里仍然搜素“CCIncludePath2”可以查看這個(gè)工程文件包含的C頭文件的路徑(還是以st官方的stsw-stm32008例程為例):
可以看到下面幾行"*****"的內(nèi)容就是C頭文件的路徑,我們把它們一一復(fù)制到配置文件的相關(guān)的地方去:
熟悉STM32的人都知道下面“Defined symbols”里面一般還有一些宏定義,我們繼續(xù)在ewp里面搜索“CCDefines”,類似C頭文件,可以看到原來(lái)工程的宏定義:
將這些宏定義輸入到配置文件中:
接下來(lái)我們不要忘記選擇芯片的型號(hào)。繼續(xù)在ewp里面搜索“OGChipSelectEditMenu”,可以看到工程文件選用的芯片:
根據(jù)上面的信息,在 option-general options-target里面設(shè)置芯片型號(hào):
到這里基本上就修改完成了,我們可以試著編譯一下,看看有沒(méi)有什么問(wèn)題。
我這里很好,編譯成功。如果還有什么問(wèn)題,應(yīng)該都是小問(wèn)題,大家再根據(jù)提示稍微修改一下即可。對(duì)于IAR 6.5以后的版本,由于IAR開(kāi)始集成了CORTEX-M3的C文件,因此可以會(huì)跟st官方的core_m3.c沖突,解決的辦法就是移除官方的該文件,然后在iar的庫(kù)定義里面添加cm3庫(kù)。
最后,還有最后~。我們關(guān)掉剛剛修改好的工程,重新打開(kāi)看看。是不是發(fā)現(xiàn)還有原來(lái)熟悉的錯(cuò)誤提示,不過(guò)我們進(jìn)入后編譯工程仍然沒(méi)有問(wèn)題。所以說(shuō)這些錯(cuò)誤提示我們不用管它,但是這些提示很煩人,我們先關(guān)掉工程,刪除掉工程目錄下的*.dep和*.ewd文件,是的,就是下面這兩個(gè)文件,放心的刪掉:
刪掉之后重新打開(kāi)工程,你會(huì)發(fā)現(xiàn)所有煩人的提示都沒(méi)有了。工程可以正常使用。后面IAR會(huì)自動(dòng)生成*.dep文件,我們不用去管他了。到這里所有的修改就完成了。其實(shí)整個(gè)過(guò)程操作起來(lái)還不到5分鐘,非常方便。