秉承“取之于開源,貢獻(xiàn)于開源”的理念,進(jìn)迭時(shí)空在 Debug 軟件的開發(fā)與維護(hù)中,始終堅(jiān)持 Upstream First 原則,積極將優(yōu)化與修復(fù)反饋至開源上游,與全球開發(fā)者共同推動(dòng) RISC-V 生態(tài)的繁榮與發(fā)展。
Debug 相關(guān)軟件項(xiàng)目概覽
RISC-V 調(diào)試所涉及的核心開源軟件主要包括 GDB 和 OpenOCD。
GDB(GNU Debugger)是 GNU 項(xiàng)目下的功能強(qiáng)大的源碼級(jí)調(diào)試工具,允許開發(fā)者查看程序在執(zhí)行時(shí)的內(nèi)部狀態(tài),包括設(shè)置斷點(diǎn)、單步執(zhí)行、查看變量和內(nèi)存等。在 RISC-V 生態(tài)中,GDB 繼續(xù)扮演開發(fā)人員重要的調(diào)試交互界面的角色。
OpenOCD(Open On-Chip Debugger)承擔(dān)了實(shí)現(xiàn) RISC-V 調(diào)試規(guī)范的具體功能。作為一個(gè)支持多種架構(gòu)的調(diào)試工具,OpenOCD 的官方代碼托管于https://review.openocd.org.為應(yīng)對(duì) RISC-V 這一新興架構(gòu)的快速迭代與適配需求,社區(qū)為此專門 Fork 了一個(gè)支持 RISC-V 的適配版本,該版本托管于https://github.com/riscv-collab/riscv-openocd.


目前,riscv-openocd 已實(shí)現(xiàn)對(duì) RISC-V 調(diào)試規(guī)范 v0.11 和 v0.13 的支持,并部分集成 v1.0 特性,能夠滿足日常開發(fā)調(diào)試需求,且仍在持續(xù)演進(jìn)中。
此外,riscv-test 項(xiàng)目(https://github.com/riscv-software-src/riscv-tests)中提供了一套 Debug Tests 測試套件。由于調(diào)試過程依賴于多個(gè)系統(tǒng)組件的協(xié)同工作,該測試套件通過 Python 腳本調(diào)用 OpenOCD 和 GDB,模擬真實(shí)調(diào)試流程,執(zhí)行端到端測試,從而有助于發(fā)現(xiàn)從Debug接口到相關(guān)底層組件中可能存在的問題。
始于 K1:一個(gè) PR 的上游之路
在進(jìn)迭時(shí)空首款 RISC-V AI CPU K1 芯片的研發(fā)過程中,OpenOCD 與 riscv-tests 在調(diào)試驗(yàn)證環(huán)節(jié)發(fā)揮了關(guān)鍵作用。在 K1 研發(fā)階段,OpenOCD 已具備較為完善的基礎(chǔ)調(diào)試功能,然而,由于 K1 的硬件架構(gòu)將 8 個(gè)核心分為 2 個(gè) Cluster,每個(gè)Cluster對(duì)應(yīng)一個(gè)調(diào)試模塊(Debug Module, DM),且兩個(gè)調(diào)試模塊共同連接至同一個(gè)調(diào)試傳輸模塊(Debug Transport Module, DTM),導(dǎo)致當(dāng)時(shí)無論是開源 OpenOCD 還是商用調(diào)試器,均未支持此類“單 DTM 對(duì)接多 DM ”的結(jié)構(gòu)。


得益于 OpenOCD 的開源特性,團(tuán)隊(duì)得以對(duì)其進(jìn)行自主修改。通過代碼分析,發(fā)現(xiàn)可借鑒其他架構(gòu)的現(xiàn)有配置,僅需 6 行代碼即可實(shí)現(xiàn)對(duì)多 DM 調(diào)試結(jié)構(gòu)的支持。完成修改并經(jīng) FPGA 驗(yàn)證后,進(jìn)一步補(bǔ)充了調(diào)試日志等輔助內(nèi)容,最終向上游社區(qū)提交了一個(gè)總計(jì) 27 行改動(dòng)的初始 PR。

該 PR 獲得了社區(qū)維護(hù)者的寶貴意見。經(jīng)過 126 次評(píng)審討論,最終完成修改并合入的 PR 代碼行數(shù)擴(kuò)充至 396 行。除增強(qiáng)檢查機(jī)制、更新文檔外,還對(duì) DM 層接口進(jìn)行了重構(gòu),使代碼更加清晰、易于維護(hù)。

盡管最初未預(yù)料到僅6行的修改最終會(huì)演變?yōu)閿?shù)百行的代碼重構(gòu),但這一過程顯著加深了團(tuán)隊(duì)對(duì)代碼的理解,既降低了未來維護(hù)成本,同時(shí)為開源生態(tài)貢獻(xiàn)了力量,是一次值得的投入。
在與社區(qū)的溝通中,開放、協(xié)作的氛圍和有效的技術(shù)支持堅(jiān)定了進(jìn)迭時(shí)空將改進(jìn)貢獻(xiàn)回上游的決心——從最開始就把事情做對(duì),而非在下游維護(hù)一個(gè)“打補(bǔ)丁”版本,反復(fù)應(yīng)對(duì)版本沖突。
從 K1 到 K3:持續(xù)投入迭代
在 K1 調(diào)試支持完成后,相關(guān)配置文件已提交至 OpenOCD 主線。現(xiàn)在用戶可直接使用上游版本調(diào)試 K1,無需額外補(bǔ)丁。

除了 K1 中發(fā)現(xiàn)和修復(fù)的若干問題,進(jìn)迭時(shí)空在下一代芯片 K3 的研發(fā)過程中也識(shí)別出新的需求與挑戰(zhàn)。例如,K3 采用的 X100 核心支持虛擬化擴(kuò)展,其在調(diào)試虛擬機(jī)時(shí)暴露出 OpenOCD 地址轉(zhuǎn)換邏輯的潛在問題;同時(shí), Debug v1.0中 External Trigger 等新功能的引入,也催生了新的代碼改進(jìn)需求。在發(fā)現(xiàn)和解決這些問題后,進(jìn)迭時(shí)空選擇將其都提交至社區(qū)。等到 K3 正式交付,開發(fā)者將能夠像使用K1時(shí)一樣, 直接使用上游版本即可支撐調(diào)試需求,獲得良好的調(diào)試體驗(yàn)。
未來展望
截至目前,進(jìn)迭時(shí)空已累計(jì)向 OpenOCD 與 riscv-tests 貢獻(xiàn)并合入40余個(gè)Commit,另有數(shù)個(gè)補(bǔ)丁仍在評(píng)審中。在此特別感謝社區(qū)開發(fā)者,尤其是幾位維護(hù)者(@timsifive、@en-sc、@JanMatCodasip)在代碼評(píng)審與協(xié)作中給予的支持。
RISC-V 調(diào)試規(guī)范自 2018 年 12 月發(fā)布 v0.13 以來,經(jīng)過社區(qū)共同努力,已于 2025 年 2 月正式批準(zhǔn) v1.0 版本。目前,riscv-openocd 的代碼在持續(xù)完善,上游 OpenOCD 也正在加快合并來自 RISC-V Fork的改動(dòng)。
隨著 RISC-V 生態(tài)的發(fā)展,CPU 核心、SoC 系統(tǒng)與軟件棧日趨復(fù)雜,高效可靠的調(diào)試手段愈發(fā)重要。RISC-V 本身的開放性與靈活性,也為調(diào)試技術(shù)的探索提供了廣闊空間,例如日漸成熟的 Trace 規(guī)范即將帶來更強(qiáng)大的調(diào)試能力。
-
開源
+關(guān)注
關(guān)注
3文章
3980瀏覽量
45496 -
RISC-V
+關(guān)注
關(guān)注
48文章
2754瀏覽量
51650 -
進(jìn)迭時(shí)空
+關(guān)注
關(guān)注
0文章
48瀏覽量
270
發(fā)布評(píng)論請先 登錄
取之于開源,貢獻(xiàn)于開源:進(jìn)迭時(shí)空AI計(jì)算生態(tài)開源貢獻(xiàn)
進(jìn)迭播客 |「RISC-V 圓桌白話錄」首期正式上線!
進(jìn)迭時(shí)空與青少年共赴RISC-V AI科技未來!
芯活力,搏未來——2025進(jìn)迭時(shí)空應(yīng)屆生入職培訓(xùn)
迎接泛機(jī)器人時(shí)代:進(jìn)迭時(shí)空如何以RISC-V架構(gòu)數(shù)智未來
進(jìn)迭時(shí)空第三代高性能核X200研發(fā)進(jìn)展
大象機(jī)器人攜手進(jìn)迭時(shí)空推出 RISC-V 全棧開源六軸機(jī)械臂產(chǎn)品
進(jìn)迭時(shí)空同構(gòu)融合技術(shù)加速大模型AI應(yīng)用創(chuàng)新
大象機(jī)器人攜手進(jìn)迭時(shí)空推出 RISC-V 全棧開源六軸機(jī)械臂產(chǎn)品
大象機(jī)器人×進(jìn)迭時(shí)空聯(lián)合發(fā)布全球首款RISC-V全棧開源小六軸機(jī)械臂
RISC-V+OpenHarmony5.0:進(jìn)迭時(shí)空與中科院共筑數(shù)字世界新基石
進(jìn)迭時(shí)空亮相RISC-V產(chǎn)業(yè)發(fā)展大會(huì):新AI CPU引領(lǐng)大模型時(shí)代

進(jìn)迭時(shí)空 debug upstream | 取之于開源,貢獻(xiàn)于開源
評(píng)論