資料介紹
? 嵌入式系統除錯的工作量,可望占了嵌入式軟體專案工作量的一半以上。了解硬體除錯功能以及它們所能解決的問題,是選擇正確的晶片、建立除錯系統以及提高生產效率的關鍵。
很多人都相信“臭蟲(bug)”此一用詞起源于海軍少將 Grace Murray Hopper。但事實上,沒人知道這種用法的真正來源,它可能可以回溯到 Thomas A Edison,或甚至更早。美國海軍后備役軍官 Hopper 在 1945 年 9 月 9 日于哈佛大學對 Mark II Aiken 繼電計算器( Relay Calculator)進行測試時,于短路的 Panel F #70 號繼電器處發現了一雙臭蟲。她把這只臭蟲拿掉后(就是對電腦進行除臭蟲(debugging)),就解決了這臺機器不定時關機的故障(參考文獻 1)。雖然這個早期的例子指的是從系統硬體中去除臭蟲,但今天“debugging”這個詞是指發現一個程式的問題,并去掉缺陷代碼(defective code)的過程。這些問題包括任何與原始意向的差異,而去掉缺陷代碼的做法則遠優于增加糾正代碼(correction code)。理想情況下,在任何時間都可以獲得所有的特性(如系統的匯流排與暫存器值),供監控與修改。但隨著 IC 轉向 SoC,可存取性(accessibility)就變得更加困難了。
對硬體除錯,是要盡可能地可以存取到嵌入式系統內部資源,這可以透過觀察系統的特性,如 CPU 狀態和 PC 值,或修改系統的參數。在嵌入式系統設計的早期可以用簡單技術進行除錯,如記錄(logging)與監控,或者對多核心 SoC而言,可以采用最新開發的方法,如跟蹤、緩衡記憶體除錯(cache debugging)和交叉觸發(cross-triggering)等。本文的重點不是在如何編寫代碼或為代碼除錯,而是描述現在可用的嵌入式硬體硅智財權(intellectual property ,IP),以及該 IP 能解決哪方面的除錯問題。
記錄與監控
最古老也是最常用的除錯方法就是在代碼中增加一些列印敘述(print statement),它可以顯示軟體某個部分的執行資訊,并提供暫存器和變數的實際值。這可能是一年級學生練習“hello world”的一種延續,該程式會在熒幕上顯示這兩個詞,用于表示程式能夠運行,以及執行到了某個點。列印敘述(或 printf 語句)只是記錄的一種變型,它是用處理器將重要資訊寫入一個“管道(pipe)”,作為外部跟蹤的過程。所使用的管道將視系統而訂,在 printf 情況下,管道是標準的輸出(熒幕),但它也可以是 UART、USB,甚至是通用 I/O。
當你需要用一種對程式設計工程師有意義的方式,組織各個部分資訊時(例如提供感測器資訊或狀態機的轉換),采用記錄的方法是很有價值的。可以用記錄工具來分析記錄的資訊,并產生一個后處理資料庫。必須小心使用記錄功能才能獲得高效率。例如,記錄資訊應使用關鍵字開頭,如“警告”、“錯誤”或“除錯”等,并應能識別出資訊的建立者。應將記錄功能劃分為一小組檔案,以便于維護,并提供時間戳資訊。不幸的是,記錄是一種侵入性的方法,它會修改軟體的即時狀態,因而不同于最終應用。
除錯監控器是另一種常見的除錯工具,它與運行在 CPU 記憶體中的目標代碼一起工作(參考文獻 2 和參考文獻 3)。除錯器運行在一臺主機上,它透過一個專用的埠發送指令和接收響應,從而達到與監控器通信的目的??梢詫?Linux 上的 gdbserver 程式當作一個除錯監控器,不過它比早期的 ROM 監控器更復雜
(圖 1)。

當使用者希望在某條指令處設置一個中斷點時,gdbserver 會保存該指令,而用一個系統呼叫(system call)來替代它。Gdbserver 然后用 Linux 的 ptrace 程式獲得所有進行系統呼叫的應用程式資訊。接著,當發生系統呼叫而啟動中斷點時,gdbserver 可以取得對被除錯應用的控制。除錯器運行在一臺主控機上,透過串列埠或乙太網路連接到目標物件(參考文獻 4)。監控器的方法既便宜又實用,但也有一些缺點,例如需要在進行任何除錯前載入代碼,并可能與應用軟體相互影響。如果代碼位于快閃記憶體中就不能使用監控器軟體,因為要插入軟體中斷點就需要修補應用軟體。
很多人都相信“臭蟲(bug)”此一用詞起源于海軍少將 Grace Murray Hopper。但事實上,沒人知道這種用法的真正來源,它可能可以回溯到 Thomas A Edison,或甚至更早。美國海軍后備役軍官 Hopper 在 1945 年 9 月 9 日于哈佛大學對 Mark II Aiken 繼電計算器( Relay Calculator)進行測試時,于短路的 Panel F #70 號繼電器處發現了一雙臭蟲。她把這只臭蟲拿掉后(就是對電腦進行除臭蟲(debugging)),就解決了這臺機器不定時關機的故障(參考文獻 1)。雖然這個早期的例子指的是從系統硬體中去除臭蟲,但今天“debugging”這個詞是指發現一個程式的問題,并去掉缺陷代碼(defective code)的過程。這些問題包括任何與原始意向的差異,而去掉缺陷代碼的做法則遠優于增加糾正代碼(correction code)。理想情況下,在任何時間都可以獲得所有的特性(如系統的匯流排與暫存器值),供監控與修改。但隨著 IC 轉向 SoC,可存取性(accessibility)就變得更加困難了。
對硬體除錯,是要盡可能地可以存取到嵌入式系統內部資源,這可以透過觀察系統的特性,如 CPU 狀態和 PC 值,或修改系統的參數。在嵌入式系統設計的早期可以用簡單技術進行除錯,如記錄(logging)與監控,或者對多核心 SoC而言,可以采用最新開發的方法,如跟蹤、緩衡記憶體除錯(cache debugging)和交叉觸發(cross-triggering)等。本文的重點不是在如何編寫代碼或為代碼除錯,而是描述現在可用的嵌入式硬體硅智財權(intellectual property ,IP),以及該 IP 能解決哪方面的除錯問題。
記錄與監控
最古老也是最常用的除錯方法就是在代碼中增加一些列印敘述(print statement),它可以顯示軟體某個部分的執行資訊,并提供暫存器和變數的實際值。這可能是一年級學生練習“hello world”的一種延續,該程式會在熒幕上顯示這兩個詞,用于表示程式能夠運行,以及執行到了某個點。列印敘述(或 printf 語句)只是記錄的一種變型,它是用處理器將重要資訊寫入一個“管道(pipe)”,作為外部跟蹤的過程。所使用的管道將視系統而訂,在 printf 情況下,管道是標準的輸出(熒幕),但它也可以是 UART、USB,甚至是通用 I/O。
當你需要用一種對程式設計工程師有意義的方式,組織各個部分資訊時(例如提供感測器資訊或狀態機的轉換),采用記錄的方法是很有價值的。可以用記錄工具來分析記錄的資訊,并產生一個后處理資料庫。必須小心使用記錄功能才能獲得高效率。例如,記錄資訊應使用關鍵字開頭,如“警告”、“錯誤”或“除錯”等,并應能識別出資訊的建立者。應將記錄功能劃分為一小組檔案,以便于維護,并提供時間戳資訊。不幸的是,記錄是一種侵入性的方法,它會修改軟體的即時狀態,因而不同于最終應用。
除錯監控器是另一種常見的除錯工具,它與運行在 CPU 記憶體中的目標代碼一起工作(參考文獻 2 和參考文獻 3)。除錯器運行在一臺主機上,它透過一個專用的埠發送指令和接收響應,從而達到與監控器通信的目的??梢詫?Linux 上的 gdbserver 程式當作一個除錯監控器,不過它比早期的 ROM 監控器更復雜
(圖 1)。

當使用者希望在某條指令處設置一個中斷點時,gdbserver 會保存該指令,而用一個系統呼叫(system call)來替代它。Gdbserver 然后用 Linux 的 ptrace 程式獲得所有進行系統呼叫的應用程式資訊。接著,當發生系統呼叫而啟動中斷點時,gdbserver 可以取得對被除錯應用的控制。除錯器運行在一臺主控機上,透過串列埠或乙太網路連接到目標物件(參考文獻 4)。監控器的方法既便宜又實用,但也有一些缺點,例如需要在進行任何除錯前載入代碼,并可能與應用軟體相互影響。如果代碼位于快閃記憶體中就不能使用監控器軟體,因為要插入軟體中斷點就需要修補應用軟體。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式系統系列叢書-時間觸發嵌入式系統設計模式 0次下載
- 嵌入式軟件接口怎么測試,嵌入式系統接口測試策略.doc
- 嵌入式系統分析與設計
- 嵌入式系統定義
- 嵌入式系統與嵌入式PLC
- 嵌入式系統與嵌入式PLC 27次下載
- 嵌入式系統是如何組成的
- 嵌入式系統接口與案例的分析與設計資料說明 3次下載
- 嵌入式操作系統的介紹和嵌入式操作系統的發展狀況和應用前景說明
- 嵌入式教程之《嵌入式實時內核設計》電子教材免費下載 27次下載
- 嵌入式Linux系統開發教程及案例分析 7次下載
- TI的嵌入式分析技術使設備更加智能 13次下載
- 實例分析嵌入式系統電源設計 5次下載
- 嵌入式系統設計師備考策略
- 嵌入式系統關鍵技術分析與開發應用
- 什么是嵌入式系統?嵌入式系統的具體應用 2562次閱讀
- 嵌入式系統應用實例的詳細資料介紹 4840次閱讀
- 嵌入式系統的全面解析 3280次閱讀
- 如何實現嵌入式系統遠程調試 5401次閱讀
- 嵌入式系統的規范發展回顧 1677次閱讀
- 關于嵌入式系統以及嵌入式平臺下的學科分工詳解 2025次閱讀
- 關于嵌入式系統8大關鍵特性詳解 1153次閱讀
- 嵌入式系統的特點大匯總 5896次閱讀
- 嵌入式系統有哪些部分組成_嵌入式系統的應用領域 3.4w次閱讀
- 嵌入式行業發展狀況_嵌入式行業人才需求_嵌入式系統就業前景分析 2.4w次閱讀
- 什么是嵌入式操作系統 常見的嵌入式系統有哪些 4w次閱讀
- 嵌入式操作系統是什么_嵌入式操作系統有哪些 2w次閱讀
- 嵌入式開發就業前景分析_嵌入式領域的職業發展方向 1.8w次閱讀
- 技術分析:典型的嵌入式系統設計 2742次閱讀
- 典型的嵌入式系統設計 2716次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論