調試參數在嵌入式開發中再常見不過了,比如濾波系數、PID參數,以及一些簡單的模式參數切換、寫入和讀取等等。
初做項目或者一些簡單粗暴的朋友們,程序里面一些參數直接硬編碼寫死,而想進行適當修改的時候就只能通過源代碼重新編譯,再次燒錄。
一次性修改能夠達到滿意的效果那就不需要調試了,不然反復燒錄個10幾次應該是常事;同樣如果MCU程序不太大可能花不了太多的時間,否則這樣的調參方式效率實在太低了。
總結下來,在進行MCU程序的調試手段主要有兩種 :
仿真器調試 和 終端調試
在項目的初期,仿真器調試作為主要的調試手段;而中后期主要是終端調試,下面聊聊這兩個重要的調試內容 :
1
仿真器調試
仿真器調試是進行MCU開發前期必備的調試方法,常用的工具有Jlink,XDS100V3等等,這些開發工具都會匹配相應的IDE集成開發環境進行使用,不僅僅能夠控制程序的運行過程(單步調試、斷點等)還能夠查看RAM、寄存器和Flash中的各種數據,幫助開發工程師們快速的定位問題,排除bug。
比如,仿真器普遍采用的JTAG接口,其遵循的是JTAG協議,既然是通信協議那就不要太恐懼,了解通信協議和通信過程即可。
JTAG早期是用來測試芯片的,現在這項功能也是具備的,比如接上仿真工具就可以知道當前芯片是否可以燒錄,指示燈也會變換顏色等;還可以通過JTAG接口訪問芯片內部寄存器、掛在CPU總線上的相關設備等,最終獲得這些數據展現在IDE環境中以便開發者定位芯片的問題。
圖來源于 JTAG-Tutorial文檔,僅供學習參考
仿真會影響CPU運行嗎?
JTAG通過一種叫邊界掃描的技術,仿真過程中其內部均有獨立的寄存器等機構進行交互,正常運行過程中是不會影響到CPU的正常工作的,也就是說其仿真部分對于CPU是透明的。
2
終端調試
“終端”說白了就是一種人機交互接口,可以看成信息的輸入與輸出,一些朋友會說:我只用仿真器調試,不想用終端;仿真器調試又何嘗不是一種終端的表現形式呢?只是說終端的相應功能已經嵌入到了你的集成開發環境IDE中,RAM數據和程序運行指針的修改都是用戶數據的輸入,而RAM數據的顯示等等都是數據的輸出。
但是,對于我們平時調試的需求,并不需要像仿真器調試這么強大,主要是一些關鍵數據的顯示和一些命令的發送,一般的MCU項目都會有預留一定的通信接口,所以直接定義一套統一的調試通信協議并開發一些調試上位機那將會對MCU的調試效率大大提高,而且也方便以后移植到其他項目中使用。
當然,如果項目中原本就帶有觸摸屏或者按鍵+屏,也可以直接在這套終端上開發一些調試界面和功能,這樣就不需要太依賴筆記本電腦什么的,至于調試功能是否靈活就看技術功底了。
很多朋友對開發上位機有點恐懼,人原本就對陌生的事物充滿著恐懼!進行調試上位機開發其實只要具備一些基礎的應用程序開發知識就能夠在較快的時間里面掌握,當然如果你想把界面、特效、功能等等做得更加的秀,那就得有比較專業的知識和經驗了!
好吧,你不想沾一點點應用程序的邊,或者暫時沒有太多的精力研究這一塊,那我推薦你用研究一下終端,比如前面跟大家推薦的一款全能終端:
很多朋友把這種類型的終端與串口調試助手混為一談,這是不對的,終端功能一般比串口調試助手強點,像Linux這樣命令行系統,幾乎一切的操作均可以在終端上完成。
比如,在終端中讓輸出的信息帶有顏色,從而可把打印的日志信息進行分級輸出,以便信息的篩選;還能夠使用轉義字符來實現動態顯示、排版等功能,比如類似于命令行“Top”的實現效果。
最后,給大家推薦一個強大的嵌入式shell -- letter shell 3.0
letter shell 3.0是一個C語言編寫的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式設備,以C語言函數為運行單位,可以通過命令行調用,運行程序中的函數。
審核編輯 :李倩
-
mcu
+關注
關注
146文章
17171瀏覽量
351423 -
寄存器
+關注
關注
31文章
5355瀏覽量
120510 -
C語言
+關注
關注
180文章
7605瀏覽量
136991
原文標題:調試MCU上位機不會寫?可以玩下終端!
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論