浅析Codewarrior、IAR和Keil MDK三大开发环境优缺点
來源:沒看到來源,抱歉。。向無名大神致敬啊。。
????今天打算拿出來幾個IDE對比一下它們的優點和缺點,好給剛入門的初手一些參考。為 了避免存在誤人子弟之嫌,我不會以我個人偏好下定義哪款好用哪款不好用,這里僅僅曬出自己一家之言,選擇權還是在大家手里,畢竟好用不好用,用了才知道 (不要看廣告看療效,咳咳),適合自己的才是最好的。
????以M4為例(咳咳,自己成M4專業戶了),目前基于M4的開發環境主要有Codewarrior10.1及以上、IAR6.1及以上、Keil MDK、CodeSourcery、GNU Tools、Green Hills等很多,不過前三種仍是主流。CodeSourcery自己當初曾經下下來試用過一陣,仍然是基于Eclipse,感覺跟 Codewarrior差不多(當然可能自己沒怎么深入),GNU Tools麻煩的在于需要自己搭建配置GCC和GDB,但是把這哥倆集成到某個IDE當中不失為一種上上策之選,下面會介紹其實Codewarrior就 是這樣的,至于Green Hills自己接觸的確有點少所以就不多提了。
????說的那么多文字,感覺還是圖來的實在,呵呵,下面我就用圖文的形式對Codewarrior、IAR和MDK做了簡單分析比較,圖文來自當初我在山東賽區 研討會上的總結,有興趣的可以移步《2013年山東賽區智能車研討會Kinetis技術培訓資料分享》去下載全部文檔,下面就直接上圖了,一家之言,歡迎 拍磚,當然如果覺著還可以的話歡迎投票,呼呼~
?
平時用ADS習慣了,原以為切換到新的平臺會有很多的不適應。但幾天用下來,感覺其實差別并不大。
對于嵌入式軟件開發來說,其實最重要的還是程序如何編譯、鏈接以及裝載。如果對這些問題了解得已經很透徹的話,會發現所有的開發工具都是基于這些最基本的東西的,只是實現的方式不同。具體到應用的層面,如果遇到問題,完全可以通過Google、Baidu解決,實在解決不了的,可以到Keil或IAR的論壇發帖求助。
Keil、IAR與ADS最大的不同,也可以說是最大的特點,就是內置了豐富的樣例程序。對于嵌入式系統的新手來說,可能會覺得這些東西比較有用。因為你不需要了解系統是如何啟動的,只需要在原來的基礎上改一下,加入自己的的代碼就可以實現想要的功能。但是長遠來看,如果你想了解嵌入式系統的精粹就難了。看過Keil的啟動代碼,說實話,如果初學者來學習的話,基本上看不懂!里面甚至引入了XML語言,程序都是可以配置的。面對冗長的代碼,可能連看下去的勇氣都沒有了。而ADS不同,它的代碼都是要用戶實現的(一開始可以借用),多用幾次,雖然入門比Keil等工具要難,但能很快的掌握系統運行的過程。而不是簡單的從Main函數開始。
也許ADS上沒有像Keil一樣豐富的例子,但完全可以在網上下載一個成熟的工程(比如SEP4020的Sample代碼),在這個工程的基礎上修改。這些工程的代碼往往是精練的,易于掌握的。
個人認為,ADS是最好的入門工具,雖然一開始可能沒有Keil那么吸引人。可能我是從ADS入門的原因吧!:)如果你想真正的了解嵌入式系統,從Start.s(或Boot.s)開始吧!雖然剛開始的過程是枯燥的、乏味的。當然了,如果你有Keil的基礎,也可以選擇從RVMDK入門。但是切記不要滿足于“從Main函數開始”。ARM匯編是很好玩的!:)
當你認為你已經可以寫ARM的C程序的時候,應該去了解編譯器的一些基礎知識。比如RO段、RW段、ZI段,比如程序鏈接與分散裝載,只有掌握了這些,才能讓你在寫程序的時候游刃有余。你才會發現,整個系統都在你的心中,它是自己取得第一條指令的,怎么進行硬件初始化的,怎么進行C語言運行環境初始化的,怎么調用函數的,怎么從函數返回的,C和匯編怎么轉換的,系統怎么處理中斷的,又怎么樣從中斷返回的。這時候,你會發現,寫程序是一件好玩的事情!:)
當你覺得對底層系統已經夠了解的時候,再嘗試一下OS,了解一下任務、調度,做得越多,你會發現這里面的東西越多。無論到哪一個層次,切忌淺嘗輒止,深入進去,掌握它!
總結
以上是生活随笔為你收集整理的浅析Codewarrior、IAR和Keil MDK三大开发环境优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Proteus模拟STM32F103R6
- 下一篇: 交通运输部:春节期间小客车免收高速通行费