搞單片機寫固件的朋友都會用到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中想要實現該功能就較為復雜,下面這個文章可以教你如何在MDK中實現該功能:
不復位MCU直接調試運行程序,讓bug聞風喪膽
4. Pack install
最后講講這個Pack install,它本身沒有啥可吐槽的,主要是服務器好像沒有國內加速,每次用個新片子都要下載上個把小時,特別是電信用戶,有時下到90%幾斷了真的很糟心。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
IAR
+關注
關注
5文章
350瀏覽量
36665 -
LwIP協議棧
+關注
關注
0文章
19瀏覽量
7347 -
MCU芯片
+關注
關注
3文章
250瀏覽量
11437
發布評論請先 登錄
相關推薦
評論