天天看點

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

編輯語:

晶片開放社群(OCC)面向開發者推出RISC-V系列内容,通過多角度、全方位解讀RISC-V,系統性梳理總結相關理論知識,建構RISC-V知識圖譜,促進開發者對RISC-V生态全貌的了解。

上期内容提到,

RISC-V工具鍊

由衆多基礎工具組成,其中包含調試系統。在嵌入式開發中,調試工作将耗費大量時間,且随着如今的SoC均内置多顆CPU核心與叢集,調試的複雜度也日益攀升。一款高效、高性能的調試系統将有效提升開發效率。

本期【技術解碼】将介紹玄鐵CPU的調試系統,帶大家深入了解劍池系列工具鍊。

# 引言

對于開發人員來說,順暢的調試系統和高效的調試方法将有效降低開發過程中的資訊誤差,提升開發效率。本文将介紹玄鐵CPU的調試系統組成,分為如下兩大部分:

  • 調試系統的基本介紹
  • 玄鐵CPU調試系統簡介

希望通過本文的介紹,能使使用者對玄鐵CPU的調試系統有一定的了解、了解玄鐵CPU配套的調試工具的使用。同時友善大家更容易了解後續介紹的調試方法。

01 調試系統的基本介紹

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖1 典型的MCU調試系統中

調試系統是一套為基于硬體調試子產品,結合軟體調試工具,為開發者提供解決軟硬體bug的技術系統。軟體調試部分包括調試工具、link及其固件。硬體調試部分包括調試子產品(Debug Module)。

例如圖1所示,在典型的MCU調試系統中:

  • 調試工具(Debug Tools)是面向開發者調試的軟體工具,一般運作在開發人員的主機、伺服器等場景下。常見的有調試工具有GDB、IDE等,如T-HEAD的riscv工具鍊中的gdb,CDK,DebugServer等工具。開發者使用這類工具進行軟體程式的調試、分析工作;
  • 由于調試主機無法直接與CPU上的調試單元連接配接,是以需要link作為中間轉換工具,使得調試工具的操作能夠真實地作用在CPU上,比如平頭哥的CkLink,Segger的JLink等等;
  • CPU上的調試子產品(Debug Module)是支援大部分調試手段的基礎,實作對CPU的控制和讀寫寄存器、讀寫記憶體等功能。

02 玄鐵CPU調試系統總覽

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.1 玄鐵調試系統概覽

如圖2.1所示,玄鐵CPU調試系統主要由以下幾部分組成:

  • 軟體運作環境,指軟體運作的實際環境,包括模拟器、普通硬體環境(Bare Metal)、基于Linux核心的環境;
  • Debug Monitor,主要指配合調試工具,對被調試程式進行調試控制的工具,包括DebugServer/OpenOCD/GDBServer等。對于實際開發闆來說,往往還需要線上仿真調試工具(cable/link),如CkLink, JLink等;
  • 調試/Profiling工具,是開發者經常使用的用于調試程式的工具,主要包括GDB、perf、CPF、Trace、Flash Programmer等;
  • 使用者接口,是使用者直接接觸到的操作界面,主要是指令行工具(CMD Line)、劍池CDK、劍池CDS等。其中大部分調試/profiling工具大部分都支援指令行方式呈現。劍池CDK、劍池CDS相比指令行工具,有友好的界面,具有更好開發體驗。

本章節主要介紹玄鐵CPU的硬體調試架構,以及部分軟體調試工具、Profiling工具的簡介。

2.1 玄鐵CPU的硬體調試架構

在玄鐵CPU的硬體設計上,調試功能集中在調試子產品(Debug Module)中基本結構如圖2.2所示。基于該架構,調試子產品的各個功能可以覆寫各種IOT裝置領域的CPU,包括低功耗、音頻處理、視訊處理、計算型等領域的CPU。

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖2.2 RISC-V調試架構總覽

玄鐵CPU中的調試子產品,是基于《RISC-V Debug Spec v0.13.2》實作的,實作的功能包括:複位及調試控制、寄存器通路、記憶體通路、斷點等功能。

關于調試子產品中具體的功能及其操作接口,請查閱《RISC-V Debug Spec v0.13.2》,附連結:

https://github.com/riscv/riscv-debug-spec

基本的調試功能介紹:

  • Break-Point功能:Break-Point功能俗稱斷點功能,即插入斷點,使CPU運作到斷點位置後停住。開發人員可在斷點位置繼續進行其他調試手段操作,如讀寫記憶體、讀寫寄存器等。
  • Watch-Point功能:Watch-Point功能是一種對資料通路的調試手段。可以觀測某個記憶體位址是否發生了資料讀寫行為。
  • 寄存器通路:通路CPU的寄存器能力,包括通用寄存器,控制寄存器等。
  • 記憶體通路:通路總線上記憶體以及外設區的能力,可以讀寫記憶體上的資料,外設的控制/資料寄存器。
  • 調試控制:指的是單步執行指令、使CPU進入調試模式、全速運作等功能。

2.2 玄鐵CPU的軟體調試工具

如圖2.1所示,玄鐵CPU配套有諸多調試工具,本章節将分别介紹幾個典型調試工具,如表2.1所示:

表2.1 玄鐵調試工具

調試工具 描述
DebugServer 是一種Debug Monitor軟體,用于和玄鐵CPU的調試子產品進行互動,完成調試操作。
GDB 開源GDB軟體,支援玄鐵CPU體系結構,包括玄鐵8系列、9系列CPU
劍池CDK 平頭哥推出的玄鐵CPU內建開發環境
Perf Perf是Linux上強大的性能分析工具集合。結合PMU事件可對程式熱點采樣,cycle、指令數統計等。
CPF T-HEAD研發的性能分析工具,能真實反映CPU 的運作軌迹(目前僅在t-head qemu上支援)

2.1.1 DebugServer

DebugServer是平頭哥自行設計實作的調試工具。其目的是為了配合GDB完成對CPU的軟體調試,其中包含一套GDB Remote Serial Protocol的實作,并解析該協定,通過USB操作link完成協定的執行。同時DebugServer也實作了一套CLI,完成一些簡單的調試功能,如複位、指令單步,讀寫寄存器、讀寫記憶體等。

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.3 DebugServer Console版本界面

2.2.2 GDB

GDB是一個軟體調試工具,是GNU組織維護的開源軟體:

https://www.gnu.org/software/gdb/

。GDB支援不同的後端體系架構,目前GDB的釋出的源碼版本中已經支援玄鐵8系列、9系列CPU。能夠滿足玄鐵CPU的日常開發需求。

通過一段簡單示例看一下GDB使用。

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.4 RISC-V GDB使用示例

GDB詳細手冊參考:

https://www.gnu.org/software/gdb/documentation/

2.2.3 劍池CDK

劍池CDK是玄鐵CPU的開發環境,內建了編輯、編譯、調試等功能,便于開發者使用。本章節簡要介紹一下劍池CDK的調試功能,如下圖所示: 

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.5 劍池CDK調試界面

截圖中基本上涵蓋了日常使用到的調試功能:

  • 寄存器讀寫
  • 反彙編檢視
  • 源碼對應
  • 斷點管理
  • 變量檢視
  • 調試控制等

詳細調試手冊請檢視劍池CDK幫助文檔.

2.2.4 CPF

CPF(C-SKY Profiling analysis utils)是一套針對玄鐵CPU應用程式的性能分析工具,包含了一系列記錄和分析的工具。CPF基于T-Head trace(目前僅T-Head qemu支援T-Head trace功能)進行分析,通過T-Headtrace 硬體能夠非侵入式的擷取CPU運作時的資訊,真實反映CPU 的運作軌迹。借助于CPF,開發者可以提高開發效率,優化系統設計。

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.6 CPF report結果

如圖2.6所示,這是一個helloworld的列印輸出示例程式,通過CPF工具,可以直覺的看出該程式各函數在執行工程中的耗時占比,除此之外,還能看到程式執行的cycle數、指令數,被調用的次數等。

2.2.5 PERF

Perf是一系列強大的性能分析工具集合。在Linux 2.6.31版本引入,至今tool/perf目錄擁有1萬多個送出,是核心開發中最活躍的幾個領域之一,通過perf可以使用一到兩行指令就完成像程式熱點采樣,接口調用分析,阻塞分析。

玄鐵CPU的PMU單元支援了大量硬體事件計數器,包含了指令數,周期數,cache通路,分支預測等等,圖2.7 以memcpy為例示範perf通過PMU或者程式執行的指令數、周期數。

tst-mem2比tst-mem具有更大的循環拷貝次數。

RISC-V生态全景解析(八):平頭哥玄鐵CPU調試系統介紹

圖 2.7 perf stat –e instructions, cycles tst-mem

關于平頭哥玄鐵CPU的調試系統介紹就到這裡。其他關于玄鐵CPU調試系統的文檔請參考:

① RISC-V Debug Sepc: 

② GDB使用者手冊:

③ 玄鐵CPU調試技巧:

https://occ.t-head.cn/community/download?id=3854517824420909056

④ 劍池CDK使用者手冊:

https://occ.t-head.cn/development/series/download?spm=a2cl5.14290816.0.0.d3ef180f9g3GPH&id=3864775351511420928&type=kind&softPlatformType=4#sticky

後續我們還将為大家介紹基于玄鐵CPU的生态晶片,如何對RISC-V開發闆進行調試。

03 下期預告

玄鐵CPU的調試系統是劍池系列工具鍊的組成之一,下期内容我們将為大家介紹劍池系列工具鍊的另一基礎工具——劍池CDK。歡迎廣大開發者持續關注晶片開放社群RISC-V系列内容。

繼續閱讀