高手談嵌入式調試的復雜性_第1頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、高手談嵌入式調試的復雜性系統的調試往往很復雜,可用的手段并不像pc編程那么多,開發成本較pc系統也要大無數。嵌入式系統調試主要手段惟獨jtag為代表的單步追蹤、printf夾殺大法等。這兩種調試辦法在嵌入式中也不盡然所有能解決問題。jtag需要調試者有一個調試設備(有可能很昂貴),和目標系統相連。用法類似gdb client等軟件登錄調試設備,跟蹤運行程序。說實話,這個辦法對嵌入式來講是終極的調試方法,也是比較好的調試辦法。但仍然有幾個不足,當斷點過多時,超出硬件的限制,某些低檔的cpu不支持更多的斷點,就需要jtag利用軟件模擬,或采納軟件陷阱(軟中斷或異樣)等方法實現斷點。機理比較復雜,容

2、易點說,1.不能舉行長時光調試,不太穩定; 2.有可能影響程序的運行時刻的行為,通過時序影響。掛接jtag系統后,利用硬件實現的斷點不會影響系統運行的速度,但是軟件實現的斷點是必然犧牲一些性能的。牢靠性也要打折扣的。當斷點太多,而系統又進入臨界區域,可能會造成斷點不起作用。由于嵌入式實現全局臨界區域往往需要關閉中斷,有些cpu沒有非屏蔽中斷,當斷點超過一定數量,用法軟件斷點,而軟件斷點又需要在中斷工作的狀況下用法特殊調試時序問題和高速通信類的代碼,jtag協助并不大。通信過程往往很快,通信包也是接二連三,才干完成一個完整的動作。假如是高速通訊,斷點是無法讓程序完成工作的。所以只能用法print

3、f夾殺的方法,printf夾殺方法很好。但是也要注重幾個問題:嵌入式系統往往沒有屏幕,printf輸出是通過串口輸出。而串口工作模式有兩種,一種是查詢,另外一種是中斷,或dma。不管哪種,調試輸出的printf只能用法查詢的方法輸出,千萬不要用法中斷或dma的方法。不管是前后臺程序也好,還是操作系統也好,都有不便利的時候,大概在全局臨界內需要打印(關閉了中斷),大概需要在中斷里打印(不允許嵌套中斷),大概要在一些驅動里打印(無數協作的設備沒有初始化,內存分配和中斷并不能很好的工作)。在這些狀況下,利用uart中斷輸出字符是不明智的。所以調試輸出只能用法查詢的方法。嵌入式智能硬件等系統學習企鵝意

4、義氣嗚嗚吧久零就易,不要夢想著用法什么牛叉的方法,不必了。一句話,不行靠!既然做調試,那牢靠的輸出結果是第一要求。也就是由于如此,printf也會影響代碼的工作效率,串口最高的波特率115200bps,越迅速的cpu越是鋪張時光,由于需要等待上一個字符輸出完畢,這段時光徹低是通過空轉消耗這部分時光。所以用法printf要有一些技巧,在不影響一些關鍵時序的位置下再打印,而不是任意爛打沉沒了bug。以上這兩種方法并不能很好的解決所有的問題,在實際中假如嵌入式系統有一兩個燈,嘗試用io口將其在特別的狀況下點亮熄滅的方法,也可表示程序的狀態。這種方法適合調試中斷、臨界區域這些問題。點量led燈需要的時

5、光是十分短的,基本上是一條內存讀寫指令,假如io口寄存器是cpu統一編址的話。基本上造成的影響微不足道。在調試一些復雜的時序的時候,還可以用法空閑的io口,將其在特別的狀況下拉低,拔高,然后利用數字或者規律分析儀抓取再詳細分析。特殊是分析一段代碼的執行頻度,執行時光,優化效果等。對整體的性能提升等,有十分大的意義。對于容易的,廠商開發軟件都有個時序統計的功能。但對于有cache和mmu的單片機,時序統計并不準,往往不如用示波器測得的準。假如沒有示波器利用cpu內部的時光計數器也可以實現時光的統計,需要結合printf用法。我一個同事,調試飛利浦的7,因為飛利浦arm7外擴的ram所有是靜態ram,即使在cpu死機狀況下,只要不斷電,sram里的數據也不會走失,因為sram和內部的sram統一編址,所以,拜訪起來也就是一條讀寫命令,速度很快。利用這個特性,他把程序的模塊和點所有標志上,當系統運行不正常,將arm7復位以后,arm7上電第一個工作就是取出復位前的數據打印出來。由此可調試arm7的代碼,十分巧妙的方法。假如惟獨sd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論