終極調試利器,各種Link通喫!

來源:公衆號【魚鷹談單片機】

作者:魚鷹Osprey

ID   :emOsprey

今天繼續更新一期 KEIL 調試方法。

事實上,關於調試方法,魚鷹寫了一個系列,彙總文爲《佛祖保佑,永無 BUG,永不修改 | KEIL 調試系列總結篇》,對於 KEIL 方法感興趣的可以看看。

這個調試利器被硬漢哥稱之爲“終極調試工具”,並且寫了相關教程(可在後臺回覆關鍵字領取或硬漢論壇下載),不過魚鷹不是很贊同,因爲魚鷹發現了一種擴展性更強的方法,有時間會深入研究一下。

不過說到KEIL調試工具,確實可以稱之爲“終極”了,畢竟魚鷹說的那個方法相當於寫一個調試軟件了,不是那麼容易掌握的。

我們都知道,串口打印有不可替代的作用,在看程序執行流程時相當有用,但是有一個缺點很明顯:慢。

正因爲如此,我們無法在中斷中加入打印信息,也就不能很好的調試中斷的執行情況。

由此,魚鷹找到了一種替代串口的方法,ITM。

但是 ITM 有一個限制,那就是需要增加一個 IO 口作爲輸入輸出,一般而言,除非有接觸過 ITM 的道友會要求硬件工程師增加該 IO 口,否則調試接口一般爲四線制。

那麼是否有辦法直接利用四線接口,而完成我們需要的快速打印需求呢?

方法當然是有的,使用 J-LINK工具,配合RTT軟件,即可實現。還可以將輸出轉到類似xShell的軟件上(telnet、主機127.0.0.1、端口號19021),更方便直觀的觀察。

但不是所有的工程師都會選擇 J-LINK 作爲調試工具,這個時候又該怎麼辦?

今天的主角該登場了:EventRecorder,打印速度取決於調試器速度(調試器速度一般1M以上,比串口快的多),常規的CMSIS-DAP、J-LINK、ST-LINK都可支持。

這個工具的使用類似J-LINK,都是要在程序中增加調試組件纔可使用,並且需要一個比較大的空間作爲打印緩存,這算是一個缺點。

不同於硬漢的教程,魚鷹今天的筆記在硬漢教程的基礎上,減少了一些步驟,讓使用更加簡單。

1、升級KEIL軟件到 5.25 以上版本(這是魚鷹非常不爽的一點,因爲高版本穩定性太差了,時不時來一個崩潰,魚鷹用的 5.26 版本,莫名其妙崩潰,不知道各位道友有沒有比較穩定的5.25以上版本推薦一下唄?)。

2、添加魚鷹的組件包(該組件包是魚鷹從硬漢工程提取的,這樣可以像普通源文件一樣添加後即可使用)。

3、添加初始化代碼。

4、使用printf進行打印(注意確保自己的代碼沒有重定向 fputc 函數)。

簡單四步,完成打印的配置。

爲了看到我們需要的打印信息,可以通過以下方式打開兩個輸出窗口:

這裏說明幾點:

EventRecorder窗口將以十六進制的方式顯示,並且會顯示和組件相關的數據,通過篩選機制,可選擇顯示不同類型的數據,默認情況下會全部顯示。

注意,如果打印數據太多,來不及被KEIL取走數據,那麼顯示將出現紅色,代表已丟失數據。需要增加內存空間,但是有一個最大空間限制。該顯示數據可通過上面的保存按鈕保存,也可清除。

字符串顯示效果如下:

通過在顯示區右擊,彈出菜單,可保存顯示區內的字符串數據。

調試的時候,會出現一個警告,但問題不大,因爲按照要求,是需要將內存地址放到非初始化區的,但魚鷹發現不這樣做好像也能用。

更多其他詳細內容,可參考硬漢教程和 KEIL 官網教程。

最後來一個官網視頻,更加直觀。

推薦閱讀:

終極串口接收方式,極致效率

爲什麼說你一定要掌握 KEIL 調試方法?

延時功能進化論(合集)

指針,很難嗎?| 解析指針的過程與意義(一)

如何寫一個健壯且高效的串口接收程序?

KIEL 調試那些事兒之窗口展示——變量(二)

打了多年的單片機調試斷點到底應該怎麼設置?| 顛覆認知

-THE END-


如果對你有幫助,記得轉發分享哦

微信公衆號「魚鷹談單片機

每週一更單片機知識

長按後前往圖中包含的公衆號關注

魚鷹,一個被嵌入式耽誤的暢銷書作家

個人微信「EmbeddedOsprey

長按後打開對方的名片關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章