來源 | HaaS技術社群
1、前言
今年阿裡雲官方推出的HaaS100開發闆引起了嵌入式開發者的極大關注,阿裡雲IOT部門提供的開發者7*24小時咨詢答疑服務,也受到了廣大開發人員的歡迎。
在釘釘開發者群裡,很多愛好者問了下面的問題:
在基于AliOS Things 的RTOS上,HaaS100上如何開發調試?
AliOS Things的shell 系統是什麼樣的?
如何獲得系統記憶體大小?
為了解答這些開發調試相關的問題,我們給大家帶來了《帶你上手HaaS100 開發調試》系列,計劃推出一系列文章,幫助開發者進一步了解AliOS Things,了解HaaS100,進而快速開發應用。
今天首先推出的是HaaS100 J-Link仿真器的連接配接和使用。
對于嵌入式開發者來說,使用仿真器進行代碼調試是很常見的操作,關于仿真器的原理網上也有很多的學習資料,這裡不再贅述,直接上正文。
2、HaaS100如何連接配接仿真器
2.1、連接配接方法
HaaS100支援SWD接口連接配接仿真器,如圖所示:

排針的引腳定義如下
連接配接步驟為:
1、按照圖中所示用線将SWDIO(圖中白色線)、SWCLK(圖中紫色線),加上電源3V3(使用排針1腳或2腳)和地GND(圖中黑色線,或者排針上任一GND均可)共四根線與仿真器連接配接。筆者使用的是較常見的V9仿真器,如下圖:
2、上電,打開Jlink GDB Server,筆者使用的是SEGGER GDB Server V6.70e,選擇Cortex-M33,SWD接口,點選OK;
3、點選OK,連接配接如圖:
注意,如果硬體連接配接沒有問題,那麼上圖中的J-Link和 Device欄中顯示綠色,GDB顯示為紅色(因為我們還沒有運作GDB軟體)。另外,請注意圖中的“Listening on TCP/IP port 2331”,這個端口要我們在運作GDB時需要。
4、運作GDB,開始調試(例如:調試鏡像為xx.elf):
a. 打開指令行,進入到鏡像所在目錄,執行指令 arm-none-eabi-gdb.exe [email protected](舉例)
b. 連接配接GDBServer的2331端口。在GDB指令行中執行指令 tar ext:2331
5、運作如圖,這個時候仿真器已經連上開發闆,并且已經停下,我們可以繼續後面的調試工作了。
2.2、注意事項
由于HaaS100開發闆硬體設計考慮了工業使用的需求,是以闆上使用了硬體看門狗,喂狗時間是1.6s,并且無法用軟體關閉,導緻了開發者在使用仿真器連接配接的時候,由于不斷觸發了狗複位而一直無法連接配接仿真器的情況。這裡筆者提供一種将硬體看門狗斷開的解決方法——使用電烙鐵去掉圖中紅圈标出的電阻,如圖:
3、GDB常用操作指令
GDB的常用操作,網上也是有很多資料。這裡例舉一些供大家參考:
3.1、檢視調用棧
bt
3.2、檢視反彙編
檢視反彙編
disassemble
檢視main函數的反彙編
disassemble \m main
檢視main函數的15行反彙編
x/15i main
檢視pc附近的5條彙編
x/5i $pc
3.3、變量操作
檢視變量值
p g_test
修改變量值
set g_test=1
3.4、記憶體操作
檢視0x80000000 記憶體位址上的資料(以16進制,32位顯示,列印4個)
x/4xw 0x80000000
列印 0x80000000處 的字元串資料
x/s 0x80000000
3.5、寄存器操作
檢視寄存器資訊
i r
改變寄存器
set $r0=1
列印所有寄存器資訊
i all-registers
檢視斷點
i b
4、相關文檔
一文輕松入門HaaS100診斷調試系統5、開發者技術支援
如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号
更多技術與解決方案介紹,請通路阿裡雲AIoT首頁
https://iot.aliyun.com/