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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用軟件查找硬件錯誤

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Russell Klein ? 2022-06-29 15:25 ? 次閱讀

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

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

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

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

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

在最壞的情況下,您可能不得不花費大量時間并旋轉另一套面具。額外的延誤和費用。

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

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

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

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

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

而且,更糟糕的是,它是侵入性的:在這 4 秒內,時鐘正在走動。處理器狀態(tài)將保持不變,但處理器之外的世界將繼續(xù)。如果您只是在調試處理器代碼,這可以工作(即使速度很慢)。但是,如果您嘗試調試與非處理器硬件的交互,這將變得非常困難,因為在您完成該單個步驟時,處理器之外的所有內容都已更改狀態(tài)。

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

今天的模擬器調試速度很快

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

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

因此,關于軟件調試在模擬器上是否實用的歷史擔憂不再適用。您可以在流片前徹底使用您的計算平臺。軟件開發(fā)人員可以在芯片可用甚至 FPGA 原型可用之前很久就開始軟件開發(fā)。可用于調試的工具旨在為軟件工程師所熟悉——即使您最終發(fā)現了硬件錯誤。

行使部分系統(tǒng)

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

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

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

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

審核編輯:郭婷

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

    關注

    68

    文章

    19103

    瀏覽量

    228823
  • Android
    +關注

    關注

    12

    文章

    3917

    瀏覽量

    127040
  • Linux
    +關注

    關注

    87

    文章

    11212

    瀏覽量

    208721
收藏 人收藏

    評論

    相關推薦

    服務器錯誤是怎么回事?常見錯誤原因及解決方法匯總

    服務器錯誤是怎么回事?最常見的原因分有六個,分別是:硬件問題、軟件問題、網絡問題、資源耗盡、數據庫、文件權限問題。可以根據以下具體錯誤原因進行辨別,并選擇適合的解決方法。關于常見服務器
    的頭像 發(fā)表于 08-12 10:11 ?1156次閱讀

    揭秘:單片機硬件軟件延時之大不同!

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

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

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

    說說硬件調試中發(fā)現的那些低級錯誤

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

    fpga是硬件還是軟件

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

    fpga是硬件還是軟件

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

    CMOS設置錯誤的解決方法

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

    ug內部錯誤,內存訪問違例怎么解決

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

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

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

    vlookup函數顯示值不可用錯誤

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

    xlookup查詢結果錯誤值什么情況

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

    vlookup常見的12種錯誤

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

    vlookup查找多個符合條件數值

    VLOOKUP是Excel中一種非常有用的函數,用于在指定的數據范圍內查找特定值,并返回相應的結果。通常情況下,VLOOKUP只能找到第一個匹配的值并返回對應的結果。但是如果我們想要查找多個符合條件
    的頭像 發(fā)表于 12-01 10:42 ?2285次閱讀

    c語言代碼錯誤怎么找

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