針對(且不限于)嵌入式處理器的可配置LLDB底層調(diào)試器
一般來說,軟件開發(fā)人員或處理器開發(fā)人員有時需要檢查和調(diào)試代碼。代碼調(diào)試可以在不同層次上進(jìn)行,例如查看波形或解析打印輸出,但首選是在交互會話中檢查代碼。調(diào)試器通過接受開發(fā)人員的命令、執(zhí)行命令并顯示結(jié)果來促進(jìn)交互會話。例如,在代碼的某一行停止時顯示變量值。這次我們可以重點關(guān)注下 LLDB(底層調(diào)試器),它是在 LLVM 項目下開發(fā)的調(diào)試器。
調(diào)試器和定制
調(diào)試器通常支持多種目標(biāo),如 x86、Arm或RISC-V。它們擁有這些目標(biāo)的嵌入式知識(也稱為 ABI),例如程序員可以看到哪些寄存器、目標(biāo)有哪些指令或內(nèi)存映射如何?然而,RISC-V 的誕生帶來了一個新的維度。RISC-V 支持并認(rèn)可自定義擴(kuò)展,這意味著處理器可能擁有更多開發(fā)人員感興趣的指令和/或寄存器,但標(biāo)準(zhǔn) RISC-V 目標(biāo)機(jī)并不知曉這些指令和/或寄存器。
對于這些問題,Codasip給出了解決方案,這些解決方案不僅適用于 RISC-V 架構(gòu),還適用于使用 Codasip Studio 工具描述的幾乎所有架構(gòu)(即定制處理器)。
LLDB及其架構(gòu)
LLDB是 LLVM 項目下的下一代調(diào)試器,可重用 LLVM 編譯器中的大量代碼,如表達(dá)式評估。它包含所有標(biāo)準(zhǔn)功能:
斷點、觀察點
程序流程控制(步入/步出/步進(jìn)、繼續(xù)、中斷)
變量
寄存器
內(nèi)存
LLDB 結(jié)構(gòu)設(shè)計精良,模塊化程度高。而模塊化的意義在于它為擴(kuò)展做好了準(zhǔn)備且可以利用插件架構(gòu)。
LLDB插件
獨立的插件可處理以下功能:
指令反匯編
在不同平臺上啟動可執(zhí)行文件
支持各種可執(zhí)行文件和調(diào)試格式或支持的高級語言,如 C 或 C++
每種插件類型都有一個預(yù)定義的API,插件必須實現(xiàn)該API。除插件外,LLDB還有一個核心主體,可利用插件并保存有關(guān)支持的架構(gòu)/目標(biāo)及其特性的信息。然后目標(biāo)將插件和ABI連接起來。例如RISC-V 目標(biāo)機(jī)知道ELF 是默認(rèn)的可執(zhí)行文件格式,以及RISC-V 架構(gòu)可能是32位或64 位,有 32 個寄存器等信息。
雖然LLDB在起點(baseline)中是靈活的,但要最大限度地利用定制計算,就必須對其進(jìn)行增強(qiáng)。
Codasip如何實現(xiàn)對LLDB的增強(qiáng)?
對此我們使用插件增強(qiáng)LLDB,以添加對以下功能的支持:
在Codasip仿真器或FPGA/ASIC上運(yùn)行的進(jìn)程
可配置的ABI,且不僅僅適用于RISC-V處理器
可配置的反匯編器
CodAL語言(見下文)
除此以外我們還增強(qiáng)了LLDB內(nèi)核,支持雙棧架構(gòu)、哈佛架構(gòu)和16位架構(gòu),以及其他許多大大小小的全方位改進(jìn)。
但是對于定制計算來說還需要更進(jìn)一步。如上所述,設(shè)計人員可能會添加新指令或新寄存器。在這種情況下LLDB插件系統(tǒng)是不夠的。當(dāng)然,Codasip Studio可以為插件生成代碼,但這么操作編譯時間會非常長。
當(dāng)然沒有任何一個項目希望看到以上的不利情況。每個人都希望在開發(fā)處理器時能在幾秒到幾分鐘的時間內(nèi)快速周轉(zhuǎn),而不是更長。
添加配置功能
因此Codasip通過增加一個新的配置級別。該配置級別允許添加(或刪除)新的寄存器、指令或內(nèi)存映射,而無需重新編譯插件。配置本身由處理器模型自動生成,并在LLDB啟動時自動傳遞。然后LLDB 會加載配置文件并更新加載的插件。這樣,我們就能從內(nèi)置插件和處理器定制中獲益,而且一切都在幾秒鐘內(nèi)完成。
下面的示例顯示了 LLDB 的命令行界面。
使用機(jī)器接口或Python,LLDB也可以集成到集成開發(fā)環(huán)境中。
那么處理器將如何調(diào)試?
到目前為止,我們已經(jīng)討論了軟件和 C/C++ 調(diào)試。但是處理器設(shè)計也需要調(diào)試。Codasip Studio提供的不僅僅是標(biāo)準(zhǔn)的波形調(diào)試。我們還增強(qiáng)了 LLDB對CodAL語言的支持。這項功能允許直接在CodAL中調(diào)試處理器,而無需在RTL中檢查波形。換句話說,LLDB可以在CodAL級別完成所有標(biāo)準(zhǔn)調(diào)試工作,如訪問CodAL變量、步進(jìn)或設(shè)置斷點等。設(shè)計人員可以輕松地從C/C++通過匯編轉(zhuǎn)到CodAL代碼。下圖顯示了這種情況。
同時LLDB還包括其他優(yōu)秀功能。其中一個值得一提的功能是使用Python 編寫腳本。這可以無縫、順利地集成到CI/CD或其他自動化框架中。它支持Windows、Linux或MacOS等主流平臺(Codasip Studio同時也支持所有平臺)。LLDB可以使用機(jī)器接口協(xié)議或Python集成到大多數(shù)集成開發(fā)環(huán)境(如 VS Code、Eclipse 等)中。此外,Codasip還為那些從GDB轉(zhuǎn)向LLDB的用戶提供了一個不錯的命令圖。如果您對該話題感興趣,隨時歡迎加入LLDB社區(qū)和Codasip,探索更多LLDB功能和特性!
關(guān)于Codasip
Codasip作為領(lǐng)先的處理器解決方案供應(yīng)商,支持系統(tǒng)級芯片(SoC)開發(fā)人員設(shè)計出差異化的產(chǎn)品,從而獲得競爭優(yōu)勢。客戶可使用Codasip Studio設(shè)計自動化工具, 開放的架構(gòu)許可以及可定制的RISC-V處理器IP系列,通過定制計算,充分解鎖RISC-V的無限潛力。Codasip總部位于歐洲,同時服務(wù)于全球市場,目前已實現(xiàn)在數(shù)十億顆芯片中布局。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19432瀏覽量
231258 -
ARM
+關(guān)注
關(guān)注
134文章
9176瀏覽量
369324 -
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307846 -
調(diào)試器
+關(guān)注
關(guān)注
1文章
306瀏覽量
23842
原文標(biāo)題:針對嵌入式處理器的可配置LLDB底層調(diào)試器都有哪些絕活兒?
文章出處:【微信號:Codasip 科達(dá)希普,微信公眾號:Codasip 科達(dá)希普】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
基于SoPC的通用在線調(diào)試器設(shè)計
如何設(shè)置VS代碼配置來調(diào)試嵌入式處理器
![如何設(shè)置VS代碼<b class='flag-5'>配置</b>來<b class='flag-5'>調(diào)試</b><b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>](https://file1.elecfans.com/web2/M00/B4/66/wKgZomVulFSAb4ohAAAXycng_DI620.png)
基于嵌入式調(diào)試器的網(wǎng)絡(luò)通信方法設(shè)計與實現(xiàn)
嵌入式系統(tǒng)軟件開發(fā)環(huán)境中調(diào)試器的設(shè)計
基于DCC和JTAG的ARM硬件仿真調(diào)試器的研究與實現(xiàn)
飛思卡爾推出針對其嵌入式多核處理器的應(yīng)用軟件模塊
一個針對FPGA的完全可配置嵌入式32位RISC處理器
![一個<b class='flag-5'>針對</b>FPGA的完全<b class='flag-5'>可配置</b><b class='flag-5'>嵌入式</b>32位RISC<b class='flag-5'>處理器</b>](https://file1.elecfans.com//web2/M00/A5/58/wKgZomUMOAGAdm8yAAB9z_mS7wI884.jpg)
基于可配置處理器的嵌入式系統(tǒng)ESL設(shè)計需求
嵌入式處理器在片調(diào)試功能的設(shè)計
![<b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>在片<b class='flag-5'>調(diào)試</b>功能的設(shè)計](https://file.elecfans.com/web2/M00/49/02/pYYBAGKhtDOAJw-zAAAS0u6p-qA937.jpg)
基于SOPC的M8051嵌入式調(diào)試器設(shè)計
![基于SOPC的M8051<b class='flag-5'>嵌入式</b><b class='flag-5'>調(diào)試器</b>設(shè)計](https://file1.elecfans.com//web2/M00/A6/56/wKgZomUMPPeAJvY9AAAM3Aj6VHU898.jpg)
32位ARM嵌入式處理器的調(diào)試技術(shù)
利用Xtensa可配置處理器加速嵌入式算法的性能和增強(qiáng)系統(tǒng)的靈活性
![利用Xtensa<b class='flag-5'>可配置</b><b class='flag-5'>處理器</b>加速<b class='flag-5'>嵌入式</b>算法的性能和增強(qiáng)系統(tǒng)的靈活性](https://file.elecfans.com/web1/M00/BB/12/pIYBAF6frfKAdd6VAAECBYcnUME913.png)
嵌入式處理器
![<b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式處理器
![<b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論