天天看點

RISC-V MCU開發 (七):代碼調試

MounRiver® Studio(MRS)配合GD-Link、WCH-Link、JLink等線上調試下載下傳器,可支援GDVFx系列、CH56x、CH57x、CH58x、CH32Fx、CH32Vx等RISC-V/ARM核心MCU工程的代碼調試功能。本文主要介紹MRS針對RISC-V核心MCU的代碼調試操作。

【啟動調試】以CH32V103C8T6的晶片工程為例來說,首先保證工程可以編譯通過,然後點選菜單欄 按鈕,開始進入調試模式,正常進入調試模式會停在如圖所示的位置,此位置有一個臨時斷點:

RISC-V MCU開發 (七):代碼調試

【更改預設斷點位置】當然如果希望工程可以直接停在main函數起始地方,也可以去手動更改此斷點的位置,點選調試圖示旁的下拉按鈕,選擇”Debug Configurations”,在彈出的頁面中選擇Startup頁籤,将set breakpoint at 設定為 main即可。

RISC-V MCU開發 (七):代碼調試

配置完成後點選右下角 Debug,或者儲存之後退出配置,點選菜單欄 ,進入調試模式後就會停在剛才設定的位置

RISC-V MCU開發 (七):代碼調試

【檢視機器碼】進入調試之後,可以看到左下角Disassembly視窗,此視窗可以顯示PC附近代碼的彙編以及位址,也可以在左側空白處滑鼠右鍵,選擇show opcodes,來顯示機器碼。

RISC-V MCU開發 (七):代碼調試

【機器碼斷點與跳轉】輕按兩下反彙編視窗左側空白處也可以設定斷點,紅框位置處可以填寫16進制的位址,用來跳轉到想要檢視位置的彙編代碼。主視窗用來顯示代碼運作位置,可以在左側窗體位置處輕按兩下來增加或取消斷點。

RISC-V MCU開發 (七):代碼調試

【軟體斷點】因為采用的是軟體斷點,理論上不限制斷點個數,但是過多的斷點會引起程式仿真變慢。

RISC-V MCU開發 (七):代碼調試

【變量檢視】右側Variables視窗會顯示目前函數中變量的值。也可以在此視窗修改你想要改變的變量的值,但注意隻是修改到Ram,重新上電後該值恢複為實際大小。

RISC-V MCU開發 (七):代碼調試

【添加監測變量】Experssions可以自定義添加監測的變量,也同樣可以修改,效果和Variables視窗中的一緻。

RISC-V MCU開發 (七):代碼調試

【錯誤中斷】下方Registers視窗顯示的是RISCV核心的CSR+GPR寄存器,可以用來觀測核心狀态,有幾個寄存器在出現HARDFAULT 錯誤時可以幫助定位問題,在進入硬體錯誤中斷處理函數時,mepc顯示的是出錯時的位址,mcause 顯示的是原因,mtval 顯示的是出錯時cpu取到的值,mcause值含義如下圖。

RISC-V MCU開發 (七):代碼調試

【斷點視窗】Breakpoints視窗可以顯示所有設定的斷點位置,可以在此處使能或者删除段斷點。

RISC-V MCU開發 (七):代碼調試

【記憶體視窗】Memory視窗可以用來查詢不同位址的值,例如我們查詢0x2000000,點選該視窗下綠色加号 ,在彈出的視窗輸入要查詢的位址。此處也可更改不同位址内的資料,要注意的是根據晶片手冊看此位址是否可以讀寫。

RISC-V MCU開發 (七):代碼調試

【外設寄存器視窗】Peripherals視窗可以選擇要觀察的外設寄存器,一同展示的内容除外設寄存器名稱外,還有位址以及描述資訊。

RISC-V MCU開發 (七):代碼調試

繼續閱讀