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 alios_kernel@haas100-mk.kernel.elf(舉例)
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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238129.html
標籤:其他
