0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

針對(duì)嵌入式處理器的可配置LLDB底層調(diào)試器解析

Codasip 科達(dá)希普 ? 來(lái)源: Codasip 科達(dá)希普 ? 2023-10-16 14:58 ? 次閱讀

針對(duì)(且不限于)嵌入式處理器的可配置LLDB底層調(diào)試器

一般來(lái)說(shuō),軟件開發(fā)人員或處理器開發(fā)人員有時(shí)需要檢查和調(diào)試代碼。代碼調(diào)試可以在不同層次上進(jìn)行,例如查看波形或解析打印輸出,但首選是在交互會(huì)話中檢查代碼。調(diào)試器通過(guò)接受開發(fā)人員的命令、執(zhí)行命令并顯示結(jié)果來(lái)促進(jìn)交互會(huì)話。例如,在代碼的某一行停止時(shí)顯示變量值。這次我們可以重點(diǎn)關(guān)注下 LLDB(底層調(diào)試器),它是在 LLVM 項(xiàng)目下開發(fā)的調(diào)試器。

調(diào)試器和定制

調(diào)試器通常支持多種目標(biāo),如 x86、ArmRISC-V。它們擁有這些目標(biāo)的嵌入式知識(shí)(也稱為 ABI),例如程序員可以看到哪些寄存器、目標(biāo)有哪些指令或內(nèi)存映射如何?然而,RISC-V 的誕生帶來(lái)了一個(gè)新的維度。RISC-V 支持并認(rèn)可自定義擴(kuò)展,這意味著處理器可能擁有更多開發(fā)人員感興趣的指令和/或寄存器,但標(biāo)準(zhǔn) RISC-V 目標(biāo)機(jī)并不知曉這些指令和/或寄存器。

對(duì)于這些問(wèn)題,Codasip給出了解決方案,這些解決方案不僅適用于 RISC-V 架構(gòu),還適用于使用 Codasip Studio 工具描述的幾乎所有架構(gòu)(即定制處理器)。

LLDB及其架構(gòu)

LLDB是 LLVM 項(xiàng)目下的下一代調(diào)試器,可重用 LLVM 編譯器中的大量代碼,如表達(dá)式評(píng)估。它包含所有標(biāo)準(zhǔn)功能:

斷點(diǎn)、觀察點(diǎn)

程序流程控制(步入/步出/步進(jìn)、繼續(xù)、中斷)

變量

寄存器

內(nèi)存

LLDB 結(jié)構(gòu)設(shè)計(jì)精良,模塊化程度高。而模塊化的意義在于它為擴(kuò)展做好了準(zhǔn)備且可以利用插件架構(gòu)。

LLDB插件

獨(dú)立的插件可處理以下功能:

指令反匯編

在不同平臺(tái)上啟動(dòng)可執(zhí)行文件

支持各種可執(zhí)行文件和調(diào)試格式或支持的高級(jí)語(yǔ)言,如 C 或 C++

每種插件類型都有一個(gè)預(yù)定義的API,插件必須實(shí)現(xiàn)該API。除插件外,LLDB還有一個(gè)核心主體,可利用插件并保存有關(guān)支持的架構(gòu)/目標(biāo)及其特性的信息。然后目標(biāo)將插件和ABI連接起來(lái)。例如RISC-V 目標(biāo)機(jī)知道ELF 是默認(rèn)的可執(zhí)行文件格式,以及RISC-V 架構(gòu)可能是32位或64 位,有 32 個(gè)寄存器等信息。

雖然LLDB在起點(diǎn)(baseline)中是靈活的,但要最大限度地利用定制計(jì)算,就必須對(duì)其進(jìn)行增強(qiáng)。

Codasip如何實(shí)現(xiàn)對(duì)LLDB的增強(qiáng)?

對(duì)此我們使用插件增強(qiáng)LLDB,以添加對(duì)以下功能的支持:

作為平臺(tái)的Codasip仿真器、RTL仿真器或JTAG

在Codasip仿真器或FPGA/ASIC上運(yùn)行的進(jìn)程

可配置的ABI,且不僅僅適用于RISC-V處理器

可配置的反匯編器

CodAL語(yǔ)言(見下文)

除此以外我們還增強(qiáng)了LLDB內(nèi)核,支持雙棧架構(gòu)、哈佛架構(gòu)和16位架構(gòu),以及其他許多大大小小的全方位改進(jìn)。

但是對(duì)于定制計(jì)算來(lái)說(shuō)還需要更進(jìn)一步。如上所述,設(shè)計(jì)人員可能會(huì)添加新指令或新寄存器。在這種情況下LLDB插件系統(tǒng)是不夠的。當(dāng)然,Codasip Studio可以為插件生成代碼,但這么操作編譯時(shí)間會(huì)非常長(zhǎng)。

當(dāng)然沒(méi)有任何一個(gè)項(xiàng)目希望看到以上的不利情況。每個(gè)人都希望在開發(fā)處理器時(shí)能在幾秒到幾分鐘的時(shí)間內(nèi)快速周轉(zhuǎn),而不是更長(zhǎng)。

添加配置功能

因此Codasip通過(guò)增加一個(gè)新的配置級(jí)別。該配置級(jí)別允許添加(或刪除)新的寄存器、指令或內(nèi)存映射,而無(wú)需重新編譯插件。配置本身由處理器模型自動(dòng)生成,并在LLDB啟動(dòng)時(shí)自動(dòng)傳遞。然后LLDB 會(huì)加載配置文件并更新加載的插件。這樣,我們就能從內(nèi)置插件和處理器定制中獲益,而且一切都在幾秒鐘內(nèi)完成。

下面的示例顯示了 LLDB 的命令行界面。

99fe87f8-699c-11ee-939d-92fbcf53809c.png

使用機(jī)器接口Python,LLDB也可以集成到集成開發(fā)環(huán)境中。

9a1a3b24-699c-11ee-939d-92fbcf53809c.png

那么處理器將如何調(diào)試?

到目前為止,我們已經(jīng)討論了軟件和 C/C++ 調(diào)試。但是處理器設(shè)計(jì)也需要調(diào)試。Codasip Studio提供的不僅僅是標(biāo)準(zhǔn)的波形調(diào)試。我們還增強(qiáng)了 LLDB對(duì)CodAL語(yǔ)言的支持。這項(xiàng)功能允許直接在CodAL中調(diào)試處理器,而無(wú)需在RTL中檢查波形。換句話說(shuō),LLDB可以在CodAL級(jí)別完成所有標(biāo)準(zhǔn)調(diào)試工作,如訪問(wèn)CodAL變量、步進(jìn)或設(shè)置斷點(diǎn)等。設(shè)計(jì)人員可以輕松地從C/C++通過(guò)匯編轉(zhuǎn)到CodAL代碼。下圖顯示了這種情況。

同時(shí)LLDB還包括其他優(yōu)秀功能。其中一個(gè)值得一提的功能是使用Python 編寫腳本。這可以無(wú)縫、順利地集成到CI/CD或其他自動(dòng)化框架中。它支持Windows、Linux或MacOS等主流平臺(tái)(Codasip Studio同時(shí)也支持所有平臺(tái))。LLDB可以使用機(jī)器接口協(xié)議或Python集成到大多數(shù)集成開發(fā)環(huán)境(如 VS Code、Eclipse 等)中。此外,Codasip還為那些從GDB轉(zhuǎn)向LLDB的用戶提供了一個(gè)不錯(cuò)的命令圖。如果您對(duì)該話題感興趣,隨時(shí)歡迎加入LLDB社區(qū)和Codasip,探索更多LLDB功能和特性!

關(guān)于Codasip

Codasip作為領(lǐng)先的處理器解決方案供應(yīng)商,支持系統(tǒng)級(jí)芯片(SoC)開發(fā)人員設(shè)計(jì)出差異化的產(chǎn)品,從而獲得競(jìng)爭(zhēng)優(yōu)勢(shì)??蛻艨墒褂肅odasip Studio設(shè)計(jì)自動(dòng)化工具, 開放的架構(gòu)許可以及可定制的RISC-V處理器IP系列,通過(guò)定制計(jì)算,充分解鎖RISC-V的無(wú)限潛力。Codasip總部位于歐洲,同時(shí)服務(wù)于全球市場(chǎng),目前已實(shí)現(xiàn)在數(shù)十億顆芯片中布局。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18926

    瀏覽量

    227220
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8967

    瀏覽量

    365018
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18817

    瀏覽量

    298489
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    297

    瀏覽量

    23568

原文標(biāo)題:針對(duì)嵌入式處理器的可配置LLDB底層調(diào)試器都有哪些絕活兒?

文章出處:【微信號(hào):Codasip 科達(dá)希普,微信公眾號(hào):Codasip 科達(dá)希普】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于SoPC的通用在線調(diào)試器設(shè)計(jì)

    目前,國(guó)內(nèi)生產(chǎn)的部分在線仿真調(diào)試器可以對(duì)部分嵌入式芯片進(jìn)行仿真調(diào)試。但從本質(zhì)上,這些仿真調(diào)試器無(wú)法對(duì)所有帶在線調(diào)試功能的
    發(fā)表于 01-16 11:02 ?833次閱讀
    基于SoPC的通用在線<b class='flag-5'>調(diào)試器</b>設(shè)計(jì)

    如何設(shè)置VS代碼配置來(lái)調(diào)試嵌入式處理器

    是通過(guò)單擊一個(gè)按鈕,之后魔法在后臺(tái)發(fā)生。在VS Code中,如果您單擊調(diào)試按鈕,您可能會(huì)收到?jīng)]有配置好的反饋。在這篇文章中,我們將了解如何設(shè)置VS代碼配置來(lái)調(diào)試
    的頭像 發(fā)表于 12-05 11:08 ?1044次閱讀
    如何設(shè)置VS代碼<b class='flag-5'>配置</b>來(lái)<b class='flag-5'>調(diào)試</b><b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>

    基于嵌入式調(diào)試器的網(wǎng)絡(luò)通信方法設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹了在嵌入式調(diào)試器中如何通過(guò)以太網(wǎng)口進(jìn)行嵌入式軟件調(diào)試,實(shí)現(xiàn)了主機(jī)與開發(fā)板之間的網(wǎng)口通信。針對(duì)具體的
    發(fā)表于 05-27 12:53 ?9次下載

    嵌入式系統(tǒng)軟件開發(fā)環(huán)境中調(diào)試器的設(shè)計(jì)

    調(diào)試在軟件開發(fā)流程中是一個(gè)比較重要的環(huán)節(jié),調(diào)試器是衡量一個(gè)軟件開發(fā)環(huán)境優(yōu)劣的重要因素.本文對(duì)嵌入式系統(tǒng)軟件開發(fā)環(huán)境、軟件調(diào)試調(diào)試器設(shè)計(jì)所遵
    發(fā)表于 05-30 13:51 ?29次下載

    基于DCC和JTAG的ARM硬件仿真調(diào)試器的研究與實(shí)現(xiàn)

    嵌入式系統(tǒng)開發(fā)是當(dāng)今計(jì)算機(jī)軟件發(fā)展的一個(gè)熱點(diǎn)。嵌入式系統(tǒng)調(diào)試器是進(jìn)行嵌入式開發(fā)的關(guān)鍵工具,常用于對(duì)嵌入式軟件的
    發(fā)表于 10-27 16:27 ?56次下載

    調(diào)試嵌入式處理器的幾種常用方法

    調(diào)試嵌入式處理器的幾種常用方法 前言 在任何產(chǎn)品
    發(fā)表于 03-11 12:25 ?1560次閱讀
    <b class='flag-5'>調(diào)試</b><b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>的幾種常用方法

    飛思卡爾推出針對(duì)嵌入式多核處理器的應(yīng)用軟件模塊

    飛思卡爾推出針對(duì)嵌入式多核處理器的應(yīng)用軟件模塊 飛思卡爾半導(dǎo)體公司宣布推出一套針對(duì)嵌入式多核處理器
    發(fā)表于 10-06 08:34 ?592次閱讀

    一個(gè)針對(duì)FPGA的完全可配置嵌入式32位RISC處理器

    一個(gè)針對(duì)FPGA的完全可配置嵌入式32位RISC處理器 使用嵌入式微處理器的FPGA設(shè)計(jì)不斷增長(zhǎng)。根據(jù)Dataquest的統(tǒng)計(jì),一年大約啟
    發(fā)表于 11-03 08:59 ?714次閱讀
    一個(gè)<b class='flag-5'>針對(duì)</b>FPGA的完全<b class='flag-5'>可配置</b><b class='flag-5'>嵌入式</b>32位RISC<b class='flag-5'>處理器</b>

    基于可配置處理器嵌入式系統(tǒng)ESL設(shè)計(jì)需求

    基于可配置處理器嵌入式系統(tǒng)ESL設(shè)計(jì)需求 近年來(lái),越來(lái)越多的嵌入式系統(tǒng)和SoC開始轉(zhuǎn)向使用可配置處理
    發(fā)表于 01-14 09:41 ?810次閱讀

    嵌入式處理器在片調(diào)試功能的設(shè)計(jì)

    以 龍芯1號(hào) 處理器為研究對(duì)象,探討了嵌入式處理器中在片調(diào)試功能的設(shè)計(jì)實(shí)現(xiàn)方法。大大方便了軟件開發(fā)與系統(tǒng)調(diào)試
    發(fā)表于 06-29 17:45 ?48次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>在片<b class='flag-5'>調(diào)試</b>功能的設(shè)計(jì)

    基于SOPC的M8051嵌入式調(diào)試器設(shè)計(jì)

    嵌入式系統(tǒng)開發(fā)過(guò)程中,上位機(jī)通過(guò)調(diào)試器完成對(duì)目標(biāo)機(jī)軟件的開發(fā)、下載、調(diào)試。早期的調(diào)試器與上位機(jī)之間通過(guò)串口或并口通信,存在速度慢、通用性差等缺陷。
    發(fā)表于 10-15 11:02 ?2312次閱讀
    基于SOPC的M8051<b class='flag-5'>嵌入式</b><b class='flag-5'>調(diào)試器</b>設(shè)計(jì)

    32位ARM嵌入式處理器調(diào)試技術(shù)

    摘要 :針對(duì)32位ARM處理器開發(fā)過(guò)程中調(diào)試技術(shù)的研究,分析了目前比較流行的基于JTAG的實(shí)時(shí)調(diào)試技術(shù),介紹了正在發(fā)展的嵌入式
    發(fā)表于 12-04 14:58 ?447次閱讀

    基于SOPC的M8051調(diào)試器設(shè)計(jì)及系統(tǒng)測(cè)試

    M8051是Mentor公司的嵌入式8051處理器,憑借良好的性能和功耗控制,占據(jù)了大量的SoC(System on a Chip)市場(chǎng)。該處理器集成了OCI(On-Chip
    發(fā)表于 03-30 14:12 ?2627次閱讀
    基于SOPC的M8051<b class='flag-5'>調(diào)試器</b>設(shè)計(jì)及系統(tǒng)測(cè)試

    利用Xtensa可配置處理器加速嵌入式算法的性能和增強(qiáng)系統(tǒng)的靈活性

    可配置處理器允許嵌入式開發(fā)人員來(lái)定制適合目標(biāo)算法的處理器,使得處理器和算法能夠更好地匹配。設(shè)計(jì)人員可以增加專用的、可變寬度的寄存
    發(fā)表于 04-25 10:40 ?1212次閱讀
    利用Xtensa<b class='flag-5'>可配置</b><b class='flag-5'>處理器</b>加速<b class='flag-5'>嵌入式</b>算法的性能和增強(qiáng)系統(tǒng)的靈活性

    嵌入式處理器

      嵌入式處理器嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。范圍極其廣闊,從最初的4位處理器,目前仍在大規(guī)模應(yīng)用的8位單片機(jī),到最新的受到廣泛青睞的32位,64位
    發(fā)表于 10-20 17:21 ?1次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>處理器</b>