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

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

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

在硬件/軟件接口調(diào)試

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Frank Schirrmeister, ? 2022-06-19 07:36 ? 次閱讀

雖然硬件/軟件接口的設(shè)計問題已經(jīng)討論了 10 年的大部分時間,但當(dāng)今應(yīng)用程序驅(qū)動設(shè)計中軟件內(nèi)容的增加已經(jīng)給這些問題帶來了新的緊迫性——特別是軟件對硬件和高效分區(qū)的依賴。過去,軟件開發(fā)人員使用連接到原型板的嵌入式軟件調(diào)試器以獨立于硬件的“外圍盲區(qū)”方式執(zhí)行調(diào)試任務(wù)。這提供了對處理器的深入了解,但幾乎沒有關(guān)于周圍外圍設(shè)備和片上互連結(jié)構(gòu)的信息。相比之下,硬件開發(fā)人員專注于寄存器和片上系統(tǒng) (SoC) 互連中的低級效應(yīng),這些效應(yīng)每年都變得越來越復(fù)雜。

在考慮調(diào)試挑戰(zhàn)時,必須評估片上和系統(tǒng)內(nèi)效應(yīng)。在開發(fā)階段需要進行片上調(diào)試,以確保芯片本身正常工作。系統(tǒng)內(nèi)效應(yīng)與芯片在其環(huán)境中的行為方式有關(guān)。如果要在芯片開發(fā)期間考慮影響,則調(diào)試系統(tǒng)內(nèi)影響需要對環(huán)境進行復(fù)雜建模,或者在芯片可用后控制實際環(huán)境。

圖 1 顯示了一個典型的基于 ARM 內(nèi)核的 SoC,其處理器子系統(tǒng)包含各種處理器,這些處理器通過連貫的結(jié)構(gòu)連接到芯片的其余部分。SoC 還包含用于 3D 圖形、數(shù)字信號處理、專用專用硬件加速器、低速外設(shè)和高速接口的定制應(yīng)用特定組件。調(diào)試挑戰(zhàn)包括同步調(diào)試多個內(nèi)核、確保 IP 塊集成正常工作、調(diào)試 AMBA 4 AXI 一致性擴展 (ACE) 協(xié)議等協(xié)議,以及調(diào)試整個芯片互連。

圖 1:典型的基于 ARM 內(nèi)核的 SoC 存在調(diào)試挑戰(zhàn),例如同步調(diào)試多個內(nèi)核。

pYYBAGKsS0aAPlW3AAP8HBXdvdE081.png

相比之下,圖 2 在其系統(tǒng)環(huán)境中顯示了相同的 SoC。SoC 和實際系統(tǒng)外圍設(shè)備之間的連接建立在 PCB 上,并且通常基于 DigRF、MIPIUSB 等標(biāo)準(zhǔn)。現(xiàn)在,調(diào)試挑戰(zhàn)從片上區(qū)域轉(zhuǎn)移到芯片在其環(huán)境中的行為方式。例如,圖形引擎生成的幀是否被外部顯示器正確顯示?各種片外和系統(tǒng)內(nèi)效應(yīng)需要與片上效應(yīng)一起考慮,因為它們通常會驅(qū)動圖形內(nèi)容和控制。

圖 2:系統(tǒng)環(huán)境中的 SoC 對芯片在其環(huán)境中的行為方式提出了調(diào)試挑戰(zhàn)。

poYBAGKsS0-AJdbTAAU1c-4qO8U543.png

硬件/軟件集成和調(diào)試方法

在開發(fā)流程中,設(shè)計團隊使用多種技術(shù)來實現(xiàn)軟件調(diào)試和硬件/軟件集成。

一旦所有芯片都可用并集成后,硬件團隊通常會構(gòu)建有限數(shù)量的原型板,以便軟件開發(fā)人員可以開始在設(shè)備上構(gòu)建他們的代碼。在產(chǎn)品發(fā)布并激增后,這些原型板通常被稱為開發(fā)套件。它們以實時速度運行并且完全準(zhǔn)確。調(diào)試器通過 JTAG(邊界掃描)接口連接到這些板。這種類型的軟件調(diào)試非常普遍且易于理解,但也有其挑戰(zhàn),因為對硬件深度的訪問受限于實現(xiàn)的片上儀器的級別。

將集成到板上的基于 FPGA 的芯片原型可以在硅片之前幾個月提供。這些原型在數(shù)十 MHz 范圍內(nèi)運行,硬件精確,并且通常只有在穩(wěn)定的寄存器傳輸語言 (RTL) 代碼可用后才能使用。它們允許有限的調(diào)試功能。與軟件調(diào)試器的連接通常通過 JTAG 建立,但設(shè)計人員可以使用調(diào)試信息增強 RTL,以啟用硬件/軟件調(diào)試和分析。根據(jù)原型,可以將芯片連接到環(huán)境;經(jīng)常需要使用速度適配器,或者需要降低環(huán)境速度以匹配原型速度。

硬件仿真器甚至可以在設(shè)計流程的早期使用,它們在 MHz 速度范圍內(nèi)執(zhí)行正在開發(fā)的芯片或其子集。它們提供快速啟動(與基于 FPGA 的原型設(shè)計相比,后者需要對實現(xiàn)硬件的代碼進行更多修改)和更好的硬件/軟件調(diào)試,因為硬件仿真器的很大一部分專用于調(diào)試和控制設(shè)計。然而,當(dāng)今仿真器的大小和價格限制了它們被大量軟件開發(fā)人員復(fù)制的能力。

RTL 仿真是第一個可以滿足精確硬件和軟件的執(zhí)行環(huán)境。它提供了出色的硬件調(diào)試能力,但由于它運行在 KHz 范圍內(nèi),它在軟件開發(fā)和軟硬件集成方面的適用性非常有限。RTL 專注于硬件驗證,傳統(tǒng)上僅用于非常低級的裸機軟件開發(fā)。鑒于現(xiàn)代片上和片外接口的復(fù)雜性,商業(yè)驗證 IP(提供預(yù)定義的測試模式以檢查接口正確性)可以在片上和系統(tǒng)內(nèi)使用。

使用不太準(zhǔn)確的抽象硬件模型,正在開發(fā)的虛擬芯片平臺可以高速運行,有時在硅片之前 9-12 個月就可以使用。它們使用 GNU 調(diào)試器 (GDB) 和周期精確調(diào)試接口 (CADI) 等標(biāo)準(zhǔn)接口提供出色的軟件調(diào)試功能,以將軟件調(diào)試器連接到虛擬化硬件。以后可以在板級使用相同的軟件調(diào)試器。根據(jù)建模工作,整個芯片及其環(huán)境可用于片上和系統(tǒng)內(nèi)的高級硬件/軟件調(diào)試。

最后,軟件開發(fā)工具包 (SDK) 通常是最早可用的開發(fā)平臺。像 Apple iPhone SDK 或 Android SDK 這樣的 SDK 使許多軟件開發(fā)人員能夠為非常抽象的硬件編寫代碼,因此無法調(diào)試。在 SDK 上開發(fā)的代碼通常需要重新編譯才能在實際設(shè)備上運行,這與前面提到的虛擬原型和其他引擎不同,后者加載 .elf 文件并運行相同的二進制代碼,然后在硬件目標(biāo)上執(zhí)行。

跨執(zhí)行引擎進行調(diào)試

電子制造商越來越多地跨多個內(nèi)核分發(fā)軟件,以保持在復(fù)雜設(shè)計的功率范圍內(nèi)。因此,多核調(diào)試已成為更大的挑戰(zhàn)。多核設(shè)計的完全同步的異構(gòu)軟件調(diào)試非常適合在所有軟件組件和硬件本身中設(shè)置斷點,然后允許檢查狀態(tài)、堆棧、軟件中的變量和硬件中的寄存器。

使用原型板,即使不是不可能,也很困難。如果斷點觸發(fā)了一個處理器的軟件并導(dǎo)致其停止,則所有其他處理器繼續(xù)執(zhí)行,從而改變斷點發(fā)生的環(huán)境狀態(tài)。相比之下,使用虛擬原型,所有參與元素(即所有處理器和硬件模塊)都可以在斷點發(fā)生時準(zhǔn)確停止,從而實現(xiàn)高效的硬件/軟件調(diào)試。

此外,當(dāng)開發(fā)人員在實際硬件或老一代虛擬原型上工作時,他們會看到各種不同步的調(diào)試器窗口。現(xiàn)代虛擬原型允許用戶通過抽象層有效地集成來自不同供應(yīng)商的處理器模型,從而在單一、統(tǒng)一的環(huán)境中實現(xiàn)完全同步的調(diào)試和分析。

另一個在實際開發(fā)板上難以分析的影響是根據(jù)硬件所處的狀態(tài)而必須停止軟件。在仿真器、RTL 模擬器和虛擬原型的世界中,硬件調(diào)試是先進的,兩者硬件和軟件可以根據(jù)表示硬件內(nèi)狀態(tài)或狀態(tài)轉(zhuǎn)換的斷點有效地停止 - 例如達(dá)到特定的計數(shù)器值或通過總線發(fā)送的特定事務(wù)。

每當(dāng)涉及基于軟件的硬件執(zhí)行時,軟件調(diào)試也可以與不同硬件抽象級別的混合有效地同步。這在衍生項目開始時很有價值,因為新的硬件組件在事務(wù)級別作為高度抽象的模型可用,而不是在 RTL 上實現(xiàn)的硬件。

全面了解硬件/軟件

現(xiàn)代軟件的復(fù)雜性及其對執(zhí)行它的硬件的依賴性使得延遲調(diào)試和硬件/軟件集成,直到所有芯片都可用并集成到 PCB 上是不可行的。芯片和系統(tǒng)開發(fā)團隊可以使用多個執(zhí)行引擎,但這些引擎的開發(fā)和調(diào)試軟件能力差異很大。圖 3 顯示了之前介紹的芯片和電路板與引擎相結(jié)合以執(zhí)行正在開發(fā)的芯片以及與硬件/軟件調(diào)試的連接。

圖 3:結(jié)合 SoC 和電路板的硬件/軟件執(zhí)行引擎在芯片開發(fā)過程中執(zhí)行芯片。

poYBAGKsS1iAQqVzAATjsala9JE667.png

Debug 有幾個層次,通常構(gòu)建在 Eclipse 等集成開發(fā)環(huán)境 (IDE) 上。用戶需要調(diào)試實際硬件、操作系統(tǒng)之外的裸機軟件執(zhí)行、硬件和軟件的結(jié)合以及整個系統(tǒng)的性能。

隨著不同引擎和新一代軟件調(diào)試器的混合組合,該行業(yè)正在接近一個時代,在這個時代,軟件開發(fā)人員可以比以往任何時候都更早地在設(shè)計周期中獲得軟件和硬件的完整程序員視圖。

作者:Frank Schirrmeister,Michael (Mac) McNamara,Larry Melling,Neeti Bhatnagar

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    19044

    瀏覽量

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

    關(guān)注

    134

    文章

    9009

    瀏覽量

    366098
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5273

    瀏覽量

    119659
收藏 人收藏

    評論

    相關(guān)推薦

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤

    。雖然是傳言甚至戲謔但多少也反應(yīng)出硬件調(diào)試中一些奇怪的問題,有時甚至不以人的意志為轉(zhuǎn)移。 我們看來,系統(tǒng)性能能否成功無非就是軟件硬件的配
    發(fā)表于 07-03 12:02

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤

    硬件調(diào)試中會經(jīng)常遇到各種意想不到的問題,有些調(diào)試花了幾個月,各種能想到的辦法都嘗試了,最后發(fā)現(xiàn)卻是一個非常低級的錯誤,有多低級?請看今天的內(nèi)文介紹。
    的頭像 發(fā)表于 07-03 12:00 ?246次閱讀
    說說<b class='flag-5'>硬件</b><b class='flag-5'>調(diào)試</b>中發(fā)現(xiàn)的那些低級錯誤

    從事嵌入式方向,一定要軟硬件通吃?

    軟件工程師的職責(zé)嵌入式軟件工程師的主要職責(zé)是為嵌入式系統(tǒng)編寫和調(diào)試代碼,確保系統(tǒng)按預(yù)期工作。他們需要處理底層硬件接口、實時操作系統(tǒng)(RTOS
    的頭像 發(fā)表于 06-05 08:10 ?938次閱讀
    從事嵌入式方向,一定要軟<b class='flag-5'>硬件</b>通吃?

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    、機器人等。 定義和工作職責(zé) 嵌入式軟件工程師的主要職責(zé)包括但不限于:設(shè)計、開發(fā)、測試和調(diào)試嵌入式軟件應(yīng)用程序,以滿足特定硬件軟件要求。他
    發(fā)表于 05-16 11:00

    JTAG整個嵌入式系統(tǒng)開發(fā)生命周期中的系統(tǒng)調(diào)試和測試中的作用

    時代變了。如今,內(nèi)存空間和高CPU時鐘頻率“幾乎”。設(shè)計、調(diào)試和測試挑戰(zhàn)已經(jīng)從硬件組件集成和調(diào)試發(fā)展到系統(tǒng)硬件設(shè)計的仿真,先于 SOC 流片,再到系統(tǒng)
    發(fā)表于 05-03 10:13 ?330次閱讀
    JTAG<b class='flag-5'>在</b>整個嵌入式系統(tǒng)開發(fā)生命周期中的系統(tǒng)<b class='flag-5'>調(diào)試</b>和測試中的作用

    fpga是硬件還是軟件

    FPGA(現(xiàn)場可編程門陣列)本質(zhì)上是一種硬件設(shè)備,但它在功能實現(xiàn)上結(jié)合了硬件軟件的特性。
    的頭像 發(fā)表于 03-27 14:14 ?855次閱讀

    SWD接口隔離調(diào)試的電路

    軟件工程師里面我的硬件水平最好,調(diào)試軟件的時候經(jīng)常用到RTT打印或者Jscope打印,但是
    的頭像 發(fā)表于 03-07 21:19 ?819次閱讀
    SWD<b class='flag-5'>接口</b>隔離<b class='flag-5'>調(diào)試</b>的電路

    fpga能焊接口轉(zhuǎn)換板上調(diào)試嗎?

    fpga能焊接口轉(zhuǎn)換板上調(diào)試嗎?對pcb走線要求高嗎? 不高的話,直接焊接在轉(zhuǎn)接板上,引出的線接面包板上的元器件做實驗了。
    發(fā)表于 02-06 22:59

    火災(zāi)報警參考軟件調(diào)試環(huán)境設(shè)置

    軟件調(diào)試
    Piezoman壓電俠
    發(fā)布于 :2024年01月18日 15:53:22

    硬件spi和軟件spi的區(qū)別

    硬件SPI(串行外設(shè)接口)和軟件SPI是兩種不同的SPI傳輸方式。SPI是一種同步串行數(shù)據(jù)通信協(xié)議,通常用于連接微控制器和外部設(shè)備,如存儲器、傳感器和顯示屏等。 硬件SPI是通過專用的
    的頭像 發(fā)表于 12-26 16:55 ?5249次閱讀

    FPGA硬件電路的調(diào)試必備原則和技巧

    調(diào)試FPGA電路時要遵循必須的原則和技巧,才能降低調(diào)試時間,防止誤操作損壞電路。通常情況下,參考以下步驟執(zhí)行 FPGA硬件系統(tǒng)的調(diào)試。 1
    的頭像 發(fā)表于 12-22 16:40 ?678次閱讀
    FPGA<b class='flag-5'>硬件</b>電路的<b class='flag-5'>調(diào)試</b>必備原則和技巧

    USB硬件接口類型速覽

    USB硬件接口 USB硬件接口版本如下圖: USB硬件接口版本 USB
    的頭像 發(fā)表于 12-12 15:22 ?2644次閱讀
    USB<b class='flag-5'>硬件</b><b class='flag-5'>接口</b>類型速覽

    嵌入式硬件軟件哪個好?

    ,他的領(lǐng)域是比較廣泛的,一些消費電子,通訊設(shè)備等這些方面。因為領(lǐng)域大,相對而言就業(yè)領(lǐng)域也是比較大的,人才需求量也是一樣。嵌入式軟件工程師相對于硬件工程師來說,人才需求比硬件工程師要大
    發(fā)表于 12-05 15:17

    adau1452的iis接口硬件軟件怎么設(shè)計?

    請問這個硬件部分是兼容所有iis接口的音頻芯片么?有沒有較多的參考設(shè)計,目前的需求有兩類,一類是一路入,一路出,一類是兩路入,16路出,后面的我可以參考官方 的板子,但是前面的設(shè)計沒辦法,之前我是用wm8978或者es8388這類芯片,看
    發(fā)表于 11-28 08:01

    MCU的調(diào)試接口——怎么堵住這個后門?

    MCU的調(diào)試接口——怎么堵住這個后門?
    的頭像 發(fā)表于 10-31 17:02 ?457次閱讀
    MCU的<b class='flag-5'>調(diào)試</b><b class='flag-5'>接口</b>——怎么堵住這個后門?