首先聲明本人并非Keil黑,本期純吐槽下在使用Keil過程中的一些不順手的地方,也極有可能講的并不全面,不客觀,望見諒,輕拍,也歡迎評論區討論。
搞單片機寫固件的朋友都會用到IDE,目前比較常見的IDE有:
MDK | ARM |
IAR | IAR |
Eclipse+編譯器(GCC) | NXP的MCUxpresso,TI的CCS,ST的TrueSTUDIO |
Embedded Studio | Segger |
編譯器名稱 | 廠商 |
---|
其中MDK和IAR應該是最流行的兩個IDE,MDK的粉絲可能還更多一些。實際使用過程中,MDK簡潔的目錄結構,方便的調試操作以及精簡的安裝包讓人贊嘆,新手很容易上手,但是用的時間久了,特別是用過更多的IDE后,你會發現,MDK缺少一些貼心的功能:
各家IDE廠商都可以在View窗口看到芯片的寄存器或者Memory,以NXP提供的MCUXpresso SDK lwip_ping為例:
MDK:
IAR:
有時在調試過程中,經常會遇到這樣一種情況,代碼前一個版本沒有問題,新加入一些功能后出現了bug,比如某個UART不工作了,通過比對源碼卻沒有發現明顯的問題,在這種情況下,在線仿真是一個比較好的手段,但是如果代碼復雜,解決該問題依舊需要花費更大的精力。
但是使用IAR或者MCUXpresso這類的IDE,可以將MCU的寄存器保存成文件,這樣我們就可以在正常代碼運行時保存一份寄存器列表文件,運行異常代碼保存另一份寄存器列表文件,通過對比這兩個文件去尋找具體哪個寄存器的某個bit產生的影響,從而在代碼中找到對應bit的處理方式去解決該問題。
IAR不僅提供了寄存器的Save功能,包括Watch窗口的數據也可以保存到電腦中,有些用戶做ADC的采樣,也可以直接把數組數據導入Excel來畫出信號曲線
IAR還提供了Memory的Save功能,這樣用戶就可以對某塊板子進行校準存參,然后把其Flash的參數數據導出燒寫到其他板子
存儲的類型可以是hex,s19或者bin
Save的Memory也可以是寄存器外設地址
2. RTOS插件
MDK默認的OS support僅支持RTX,對于第三方的RTOS并沒有很好的支持,需要用戶選擇第三方的調試工具,比如Tracealyzer,而IAR默認提供了包括FreeRTOS, ThreadX, embOS在內的多種插件,雖然功能并沒有Tracealyzer強大,但是至少能滿足觀察任務堆棧這樣比較基礎的需求。
3. Attach功能
本人09畢業時第一份工作使用的IDE是CW_Power_Architecture_V8.8,支持三種調試模式:
有時大家會遇到這樣一種情況,產品無緣無故的死機,有時是產品硬件問題,但更多情況是軟件問題,特別是異常非常難復現,而且有時還需要反復開關機才能出現,這就導致仿真器無法一直掛載去查找問題,attach的功能就是在不破壞MCU當前異常狀態下的一種仿真手段。IAR默認也支持該功能:
但是如果想在MDK中想要實現該功能就較為復雜。
4. Pack install
最后講講這個Pack install,它本身沒有啥可吐槽的,主要是服務器好像沒有國內加速,每次用個新片子都要下載上個把小時,特別是電信用戶,有時下到90%幾斷了真的很糟心,推薦使用工具下載離線包(建議迅雷下載)。
原文標題:為什么不喜歡 Keil ?
文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
IDE
+關注
關注
0文章
338瀏覽量
46740 -
keil
+關注
關注
68文章
1212瀏覽量
166842 -
編譯器
+關注
關注
1文章
1623瀏覽量
49108 -
MDK
+關注
關注
4文章
209瀏覽量
32063
原文標題:為什么不喜歡 Keil ?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論