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

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

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

使用軟件查找硬件錯(cuò)誤

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Russell Klein ? 2022-06-29 15:25 ? 次閱讀

有一個(gè)基本的自然法則適用于任何計(jì)算芯片,無論是處理器、微控制器還是片上系統(tǒng):軟件總是會(huì)發(fā)現(xiàn)硬件錯(cuò)誤。在我的整個(gè)職業(yè)生涯中,我參與過的項(xiàng)目中沒有一個(gè)被證明是正確的。

如果你很不幸,在你制作芯片后軟件發(fā)現(xiàn)了一個(gè)錯(cuò)誤,那么接下來會(huì)發(fā)生什么取決于問題的嚴(yán)重程度。

如果它不是致命的,并且如果你很幸運(yùn)并且像一些知名處理器制造商那樣擁有市場力量,那么每個(gè)人都會(huì)圍繞這個(gè) bug 編寫代碼,然后所有未來的版本都必須復(fù)制這個(gè) bug 以實(shí)現(xiàn)向后兼容性。這不適用于我們大多數(shù)人。更傾向于:

您可能必須刪除不起作用的功能。

功率可能太高,或性能太慢,損害您的競爭力和獲得好價(jià)格的能力。

在最壞的情況下,您可能不得不花費(fèi)大量時(shí)間并旋轉(zhuǎn)另一套面具。額外的延誤和費(fèi)用。

最好的解決方案是在您投入芯片之前運(yùn)行該軟件并捕獲這些錯(cuò)誤。您將同時(shí)驗(yàn)證軟件和硬件。但是怎么做呢?

模擬軟件非常慢。我們說的是幾年。除了瑣碎的代碼之外,根本不是一個(gè)選項(xiàng)。

相比之下,仿真被證明是解決這個(gè)問題的關(guān)鍵工具。您可以在模擬器上實(shí)例化硬件,然后讓它在合理的時(shí)間范圍內(nèi)運(yùn)行實(shí)際代碼。也許不是真正的系統(tǒng)速度,但足夠快以使其成為可行的解決方案。

但是,假設(shè)您要找到問題,您必須能夠追蹤這些問題的原因,而調(diào)試部分在歷史上一直是問題所在。事實(shí)上,許多工程師一直不愿意使用仿真,因?yàn)樵谶^去,訪問內(nèi)部處理器狀態(tài)的唯一途徑是通過 JTAG。仿真器以幾 MHz 的時(shí)鐘速度運(yùn)行;仿真器上的 JTAG 只運(yùn)行其中的一小部分。

那么,例如,如果你想單步執(zhí)行指令?這意味著通過 JTAG 傳輸大約 400 萬個(gè)低級(jí)位。在仿真器上以 1 MHz 完成,這將需要 4 秒非常昂貴的實(shí)時(shí)仿真器時(shí)間。

而且,更糟糕的是,它是侵入性的:在這 4 秒內(nèi),時(shí)鐘正在走動(dòng)。處理器狀態(tài)將保持不變,但處理器之外的世界將繼續(xù)。如果您只是在調(diào)試處理器代碼,這可以工作(即使速度很慢)。但是,如果您嘗試調(diào)試與非處理器硬件的交互,這將變得非常困難,因?yàn)樵谀瓿稍搯蝹€(gè)步驟時(shí),處理器之外的所有內(nèi)容都已更改狀態(tài)。

由于仿真器上的 JTAG 既緩慢又具有侵入性,調(diào)試——尤其是與性能和同步相關(guān)的問題——變得非常令人沮喪。因此,考慮到這一點(diǎn),仿真在過去并不是首選解決方案——阻力仍然存在。

今天的模擬器調(diào)試速度很快

但是時(shí)代和模擬器已經(jīng)改變。Mentor 有一種單獨(dú)的方法來捕獲不依賴于 JTAG 的處理器狀態(tài),因此它可以快速發(fā)生 - 在 40-50 MHz 范圍內(nèi)。這可能比 FPGA 原型上的 JTAG 更快。數(shù)據(jù)被饋送到我們的 CoModel 主機(jī),狀態(tài)歷史可以在其中存儲(chǔ)和重新創(chuàng)建,一個(gè)周期一個(gè)周期。

鑒于已存儲(chǔ)的跟蹤,您現(xiàn)在可以針對(duì)該跟蹤重放任何有問題的軟件,它將遵循系統(tǒng)狀態(tài),以便您可以看到哪里出了問題??梢詥尾綀?zhí)行;您可以探測寄存器和內(nèi)存;你可以看公交車。一切都沒有入侵:您的調(diào)試工作不會(huì)改變系統(tǒng)狀態(tài)。這一切都可以離線完成——您無需使用實(shí)時(shí)仿真器,這使其更具成本效益。

因此,關(guān)于軟件調(diào)試在模擬器上是否實(shí)用的歷史擔(dān)憂不再適用。您可以在流片前徹底使用您的計(jì)算平臺(tái)。軟件開發(fā)人員可以在芯片可用甚至 FPGA 原型可用之前很久就開始軟件開發(fā)??捎糜谡{(diào)試的工具旨在為軟件工程師所熟悉——即使您最終發(fā)現(xiàn)了硬件錯(cuò)誤。

行使部分系統(tǒng)

我們要解決的下一個(gè)挑戰(zhàn)是影響單個(gè) IP 塊的開發(fā)人員,這些 IP 塊最終將成為整個(gè)系統(tǒng)的一部分。今天的問題是,在完全系統(tǒng)集成之前,你真的不能用真正的軟件運(yùn)行你的塊,因?yàn)橄到y(tǒng)需要你的部分和所有其他部分才能工作。因此,即使您提前完成了塊設(shè)計(jì),也是“快點(diǎn)等待”。

在 Mentor,我們正在開發(fā)一個(gè)測試平臺(tái)增強(qiáng)功能,它將提供計(jì)算平臺(tái)的關(guān)鍵部分。鑒于 ARM 的流行,我們將從 ARM 架構(gòu)和與 ARM 相關(guān)的總線開始。處理器將覆蓋 AndroidLinux。這將讓您在仿真器上實(shí)現(xiàn)您的模塊,并在完整系統(tǒng)設(shè)計(jì)可用之前將其“插入”抽象環(huán)境,讓您在驗(yàn)??證方面領(lǐng)先一步。

總之,您必須在生成掩碼之前運(yùn)行軟件,以證明您的計(jì)算硬件是正確的。仿真是做到這一點(diǎn)的唯一現(xiàn)實(shí)方法,而目前 Mentor 的 Veloce 仿真器上提供的工具使其成為非常實(shí)用、高效的練習(xí)。您可以用最少的實(shí)時(shí)仿真時(shí)間快速調(diào)試您的軟件和硬件。而且,在不久的將來,您將能夠在完全系統(tǒng)集成之前在 IP 塊上運(yùn)行和調(diào)試該軟件。

您可以更早地編寫軟件,并且可以更快地驗(yàn)證您的硬件。所有這些都使得您在真正的硅片中發(fā)現(xiàn)這些硬件錯(cuò)誤的可能性大大降低。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    19038

    瀏覽量

    228482
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3908

    瀏覽量

    126917
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11171

    瀏覽量

    208480
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    服務(wù)器錯(cuò)誤是怎么回事?常見錯(cuò)誤原因及解決方法匯總

    服務(wù)器錯(cuò)誤是怎么回事?最常見的原因分有六個(gè),分別是:硬件問題、軟件問題、網(wǎng)絡(luò)問題、資源耗盡、數(shù)據(jù)庫、文件權(quán)限問題??梢愿鶕?jù)以下具體錯(cuò)誤原因進(jìn)行辨別,并選擇適合的解決方法。關(guān)于常見服務(wù)器
    的頭像 發(fā)表于 08-12 10:11 ?864次閱讀

    揭秘:單片機(jī)硬件軟件延時(shí)之大不同!

    在嵌入式項(xiàng)目中,軟件開發(fā)基本上都會(huì)使用到延時(shí),那么,該用軟件延時(shí)還是硬件延時(shí)?它們又有什么區(qū)別呢?今天就來講講關(guān)于硬件延時(shí)和軟件延時(shí)的內(nèi)容,
    的頭像 發(fā)表于 07-25 08:11 ?585次閱讀
    揭秘:單片機(jī)<b class='flag-5'>硬件</b>與<b class='flag-5'>軟件</b>延時(shí)之大不同!

    請問是什么決定了SPI閃存的特性,硬件還是軟件?

    我想燒錄更大的軟件,我可以選擇 512 512 地圖,就像 1024 1024 一樣嗎?(或者地圖也是由硬件強(qiáng)加的?
    發(fā)表于 07-19 06:46

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

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

    fpga是硬件還是軟件

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

    fpga是硬件還是軟件

    FPGA(現(xiàn)場可編程門陣列)屬于硬件設(shè)備,而不是軟件。它是一種可編程的硬件設(shè)備,由大量的邏輯單元、存儲(chǔ)單元和互連資源組成,能夠?qū)崿F(xiàn)復(fù)雜的數(shù)字電路和系統(tǒng)設(shè)計(jì)。
    的頭像 發(fā)表于 03-14 17:08 ?1575次閱讀

    CMOS設(shè)置錯(cuò)誤的解決方法

    的問題。 第一部分:了解CMOS設(shè)置錯(cuò)誤的原因 1. 軟件問題:可能是由于操作系統(tǒng)錯(cuò)誤、驅(qū)動(dòng)程序沖突或病毒感染導(dǎo)致CMOS設(shè)置錯(cuò)誤。 2. 硬件
    的頭像 發(fā)表于 12-28 15:13 ?7514次閱讀

    ug內(nèi)部錯(cuò)誤,內(nèi)存訪問違例怎么解決

    問題,并提供一些預(yù)防這些問題的最佳實(shí)踐方法。 一、內(nèi)部錯(cuò)誤原因和解決方法 1. 軟件錯(cuò)誤軟件錯(cuò)誤是引起內(nèi)部
    的頭像 發(fā)表于 12-27 16:27 ?5544次閱讀

    PLC可編程邏輯控制器的常見錯(cuò)誤類型以及修復(fù)方法/PLC指示燈異常閃爍可能是哪些原因造成的?

    PLC(可編程邏輯控制器)常見的錯(cuò)誤類型包括: 1.程序錯(cuò)誤:PLC程序編寫不正確或存在無法識(shí)別的編程語句,導(dǎo)致程序執(zhí)行出錯(cuò)。 2.硬件故障:PLC設(shè)備本身出現(xiàn)問題,如I/O模塊故障、CPU出現(xiàn)異常
    的頭像 發(fā)表于 12-15 11:37 ?2392次閱讀

    vlookup函數(shù)顯示值不可用錯(cuò)誤

    不可用錯(cuò)誤",即#N/A。 這種錯(cuò)誤通常是由于一些常見的錯(cuò)誤和問題引起的,下面我將詳細(xì)介紹這些問題以及解決方法。 首先,最常見的原因是數(shù)據(jù)不匹配。VLOOKUP函數(shù)是根據(jù)一個(gè)主鍵進(jìn)行查找
    的頭像 發(fā)表于 12-03 10:18 ?1.1w次閱讀

    xlookup查詢結(jié)果錯(cuò)誤值什么情況

    XLOOKUP函數(shù)是Excel中的一種查找函數(shù),用于在指定范圍中搜索某個(gè)值,并返回所查找的結(jié)果。當(dāng)使用XLOOKUP函數(shù)時(shí),可能會(huì)遇到錯(cuò)誤值的情況。本文將詳細(xì)介紹XLOOKUP函數(shù)的錯(cuò)誤
    的頭像 發(fā)表于 12-03 10:16 ?1w次閱讀

    vlookup常見的12種錯(cuò)誤

    VLOOKUP是Excel中非常常用的函數(shù)之一,它能夠根據(jù)指定的值,在某一列范圍內(nèi)進(jìn)行查找,并返回相應(yīng)的值。雖然VLOOKUP是一個(gè)強(qiáng)大的函數(shù),但是由于其復(fù)雜性和靈活性,常常容易出現(xiàn)一些錯(cuò)誤。在本文
    的頭像 發(fā)表于 12-01 11:19 ?2855次閱讀

    c語言代碼錯(cuò)誤怎么找

    ,它們通常是由于C語言編寫規(guī)則被打破所引起的。實(shí)際上,C編譯器會(huì)提供非常詳細(xì)的錯(cuò)誤消息,告訴我們在哪個(gè)地方發(fā)生了錯(cuò)誤。 當(dāng)我們在編譯過程中遇到語法錯(cuò)誤時(shí),我們需要仔細(xì)閱讀編譯器提供的錯(cuò)誤
    的頭像 發(fā)表于 11-24 10:05 ?3139次閱讀

    linux中查找文件的命令

    在Linux中,可以使用以下命令來查找文件: find 命令:可以在指定目錄及其子目錄中查找文件,支持根據(jù)文件名、文件類型、文件大小、文件修改時(shí)間等條件進(jìn)行查找。 使用格式: find 例如,在當(dāng)
    的頭像 發(fā)表于 11-08 14:24 ?1150次閱讀