天天看點

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

來源 | 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接口連接配接仿真器,如圖所示:

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

排針的引腳定義如下

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

連接配接步驟為:

1、按照圖中所示用線将SWDIO(圖中白色線)、SWCLK(圖中紫色線),加上電源3V3(使用排針1腳或2腳)和地GND(圖中黑色線,或者排針上任一GND均可)共四根線與仿真器連接配接。筆者使用的是較常見的V9仿真器,如下圖:

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

2、上電,打開Jlink GDB Server,筆者使用的是SEGGER GDB Server V6.70e,選擇Cortex-M33,SWD接口,點選OK;

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

3、點選OK,連接配接如圖:

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

注意,如果硬體連接配接沒有問題,那麼上圖中的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、運作如圖,這個時候仿真器已經連上開發闆,并且已經停下,我們可以繼續後面的調試工作了。

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

2.2、注意事項

由于HaaS100開發闆硬體設計考慮了工業使用的需求,是以闆上使用了硬體看門狗,喂狗時間是1.6s,并且無法用軟體關閉,導緻了開發者在使用仿真器連接配接的時候,由于不斷觸發了狗複位而一直無法連接配接仿真器的情況。這裡筆者提供一種将硬體看門狗斷開的解決方法——使用電烙鐵去掉圖中紅圈标出的電阻,如圖:

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

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、開發者技術支援

如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号

HaaS100開發調試系列 之 如何使用J-Link仿真器調試代碼

更多技術與解決方案介紹,請通路阿裡雲AIoT首頁

https://iot.aliyun.com/