本文將討論常見的調試問題以及預防和檢查這些故障問題的一些方法。
從歷史角度上來看,嵌入式應用代碼的調試流程可以分為兩類。第一類調試流程是回答 “我的代碼現在執行到哪里?” 的問題。當開發商依靠打印語句或者LED的閃爍來指示應用程序執行到某個節點的調試方法時,往往就屬于這種情形。如果開發工具支持這種調試方法,可以沿著應用應當程序應當執行的路徑插入斷點。第二類調試流程是幫助回答“我看到的這一數值是從哪里來的?”這一問題。在這種情況下,人們往往依靠寄存器顯示窗口觀察變量信息、處理器內存的內容。人們還可以嘗試單步執行,并且觀察所有這些數據窗口以了http://www.szfpc.net/大電流電感解某個寄存器狀態何時出現錯誤,內存位置何時得到錯誤的數據,抑或指針何時出現了誤用。當開發商寫完全部代碼后,如果無需了解網絡基礎設施,也沒有操作系統的任務調度需要考慮,那么就可以利用這些調試方法使一個應用程序運行起來。然而,現在的情況并非如此。嵌入式處理器以超過600 MHz的速度運行,并且擁有可支持Ethernet和USB等協議的嵌入式外設,它們支持功能齊備的操作系統,例如uClinux,而且這些操作系統所調度的各種應用程序是由數千行代碼構成。使用打印語句和利用LED來調試是不現實的,因為現在常常有如此之多的功能在執行是不可能的,或者它們會影響標準 I/O口,從而造成處理器性能大幅度下降。
也可能發生這樣的情況:處理器的工作速度是如此之快,以至于LED的亮滅速度會快到人眼無法察覺。另外現代的嵌入式系統通常支持斷點的設定,但是伴隨這些處理器所運行的代碼數量,使得這種類型的斷點調試難以駕馭。中斷和多線程系統在代碼的任何一點上設置一個斷點,可能都無法指示系統的正確狀態。由于斷點設置在物理內存的某個地址上,索引不必了解線程的狀態。如果使用寄存器顯示方法 大功率電感廠家 |大電流電感工廠