RV-LINK:GDB 使用 RV-LINK 仿真器調試 RISC-V 程序

RV-LINK:GDB 使用 RV-LINK 仿真器調試 RISC-V 程序

https://blog.csdn.net/zoomdy/article/details/101456186
zoomdy at 163 dot com

RV-LINK 項目主頁:https://gitee.com/zoomdy/RV-LINK
最新的文檔請訪問:https://gitee.com/zoomdy/RV-LINK/wikis,這裏的內容可能沒有及時更新。

準備 RV-LINK

首先將所支持的開發板燒入 RV-LINK 固件,然後開發板就變成 RISC-V 仿真器了,當前支持 Longan Nano 和 GD32VF103C-START 這兩款開發板,請參考《將 Longan Nano 開發板變成 RISC-V 仿真器》《將 GD32VF103C-START 開發板變成 RISCV-V 仿真器》

準備 RISC-V GDB

如果已經安裝了 RISC-V GCC 工具鏈,那麼忽略該步驟,跳到 《安裝 USB 串口驅動》。

下載 GDB

建議使用 GNU MCU Eclipse 項目發佈的交叉工具鏈裏的 GDB,下載地址:https://gnu-mcu-eclipse.github.io/toolchain/riscv/releases/

也可以通過芯來科技的下載頁面下載:https://www.nucleisys.com/download.php ,芯來科技網站下載會比較快一些。

根據所使用的系統選擇下載對應的版本,Ubuntu 下載 centos 版本,理論上 centos 版本適合所有 Linux 發行版。

安裝 GDB

將下載好的壓縮包解壓即可,不需要安裝。

將 bin 目錄加入 PATH 環境變量

將 riscv-none-embed-gdb 所在的目錄加入 PATH 環境變量。

...\GNU MCU Eclipse\RISC-V Embedded GCC\8.2.0-2.2-20190521-0004\bin

安裝 USB 轉串口驅動

RV-LINK 對上接口是一個 USB 串口,因此使用 RV-LINK 之前首先要配置好 USB 串口,RV-LINK 使用標準的 USB CDC ACM 串口,遵循《Universal Serial Bus Class Definitions for Communication Devices》(usbcdc11)規範。Linux 和 Windows 10 系統自動支持 CDC ACM 串口,Windows 7 需要安裝驅動。

Windows 7

當前,RV-LINK 所使用的 Longan Nano 和 GD32VF103C-START 開發板均以 GD32VF103CB 爲控制器,使用的是 GD 的 USB 串口 VID 和 PID,因此安裝 GD 的 USB 串口驅動。

在 GD 的下載頁面 http://gd32mcu.21ic.com/documents/index/classify_id/7 下載 USB Virtual Com Port Driver,下載需要註冊。

根據自身系統是32位或64位選擇x86或x64版。

在這裏插入圖片描述

點擊 Install 安裝即可。

Windows 10

Windows 10 會自動安裝 USB 串口驅動,只要將 RV-LINK 的 USB 口插入電腦,稍等片刻就可以了,打開設備管理器查看對應的串口號,以下假設串口號爲 COM4。

Linux

這裏假設使用 Ubuntu 發行版。Linux 自帶 USB 串口驅動,只要將 RV-LINK 的 USB 口插入電腦,設備名稱爲:/dev/ttyACM0,如果有多個 USB 串口,那麼也可能是 /dev/ttyACM1 等。

GDB 連接 RV-LINK

首先按照往常一樣執行 GDB:

riscv-none-embed-gdb xxx.elf

接着連接 RV-LINK,使用 target remote ... 命令連接 RV-LINK 對應的串口號。不同的系統,使用的串口號不同。GDB 連接 OpenOCD 時,使用的是 TCP/IP,RV-LINK 使用的是串口,區別就在這。

Windows:

target remote com4

Linux:

target remote /dev/ttyACM0

復位並halt:

monitor reset halt

其它就和平常使用 GDB 一樣一樣了:

  • load,下載程序
  • b main,設置斷點
  • info registers,查看通用寄存器
  • info all-registers,查看包括 CSR 在內的所有寄存器
  • … 等等

常見的問題

xlen 不匹配

如果 GDB 命令行參數沒有指定程序,那麼會報如下錯誤:

bfd requires xlen 8, but target has xlen 4

這隻要在 GDB 中輸入:

set arch riscv:rv32

告知 GDB,咱現在是 RV32,然後重新執行 target remote ... 就沒有問題了。

No such file or directory

Error message from debugger back end:
com3: No such file or directory.

可能的原因有:

  • 串口號錯誤,通過設備管理器查看正確的串口號,如果設備管理器沒有看到串口,那麼檢查 RV-LINK 是否正確連接,USB 串口驅動是否正確安裝。
  • 串口被佔用,串口被其它程序佔用,比如已經打開了一個調試進程,又打開同樣的調試進程就會報這個錯誤。
  • 如果在虛擬機裏跑,檢查一下有沒有將 USB 串口映射到虛擬機裏。

the target is not connected

Error message from debugger back end:
Remote replied unexpectedly to 'vMustReplyEmpty': 
RV-LINK ERROR: the target is not connected!
RV-LINK: Longan Nano, configed for GD32VF103 family.

可能的原因有:

  • 目標板沒有上電,檢查目標板的電源。
  • JTAG 連線有問題,檢查 JTAG 連線,任何一根線有短路或斷路,都無法連接上。

the target is not supported

Error message from debugger back end:
Remote replied unexpectedly to 'vMustReplyEmpty': 
RV-LINK ERROR: the target is not supported, upgrade RV-LINK firmware!
RV-LINK: Longan Nano, configed for GD32VF103 family.

可能的原因有:

  • 所連接的目標 MCU 不被當前的 RV-LINK 支持,例如當前 RV-LINK 配置成支持 GD32VF103,而實際連接的是 K210,就會報告這個錯誤。需要更換 RV-LINK 固件,如果目標 MCU 還沒有被 RV-LINK 支持,那麼需要在 RV-LINK 中添加對該 MCU 的支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章