資料介紹
在嵌入式軟件開發過程中,一般來說,花在測試和花在編碼的時間比為3:1(實際上可能更多)。這個比例隨著你的編程和測試水平的提高而不斷下降,但不論怎樣,軟件測試對一般人來講很重要。很多年前,一位開發人員為了在對嵌入式有更深層次的理解,向Oracle詢問了這樣的一個問題:我怎么才能知道并懂得我的系統到底在干些什么呢?
Oracle面對這個問題有些吃驚,因為在當時沒有人這么問過,而同時代的嵌入式開發人員問的最多的大都圍繞“我怎么才能使程序跑的更快”、“什么編譯器最好”等膚淺的問題。所以,面對這個不同尋常卻異乎成熟的問題,Oracle感到欣喜并認真回復了他:你的問題很有深度很成熟,因為只有不斷地去深入理解才有可能不斷地提高水平。并且Oracle為了鼓勵這位執著的程序員,把10條關于嵌入式軟件開發測試的秘訣告訴了他:
1.懂得使用工具
2.盡早發現內存問題
3.深入理解代碼優化
4.不要讓自己大海撈針
5.重現并隔離問題
6.以退為進
7.確定測試的完整性
8.提高代碼質量意味著節省時間
9.發現它,分析它,解決它
10.利用初學者的思維
這十條秘訣在業界廣為流傳,使很多人受益。本文圍繞這十條秘訣展開論述。
1。懂得使用工具
通常嵌入式系統對可靠性的要求比較高。嵌入式系統安全性的失效可能會導致災難性的后果,即使是非安全性系統,由于大批量生產也會導致嚴重的經濟損失。這就要求對嵌入式系統,包括嵌入式軟件進行嚴格的測試、確認和驗證。隨著越來越多的領域使用軟件和微處理器控制各種嵌入式設備,對門益復雜的嵌入式軟件進行快速有效的測試愈加顯得重要。
就象修車需要工具一樣,好的程序員應該能夠熟練運用各種軟件工具。不同的工具,有不同的使用范圍,有不同的功能。使用這些工具,你可以看到你的系統在干些什么,它又占用什么資源,它到底和哪些外界的東西打交道。讓你郁悶好幾天的問題可能通過某個工具就能輕松搞定,可惜你就是不知道。那么為什么那么多的人總是在折騰個半死之后才想到要用測試工具呢?原因很多,主要有兩個。一個是害怕,另一個是惰性。害怕是因為加入測試用具或測試模塊到代碼需要技巧同時有可能引入新的錯誤,所以他們總喜歡寄希望于通過不斷地修改重編譯代碼來消除bug,結果卻無濟于事。懶惰是因為他們習慣了使用printf之類的簡單測試手段。下面來介紹一些嵌入式常用的測試工具。
。源碼級調試器[Source-level Debugger]
這種調試器一般提供單步或多步調試、斷點設置、內存檢測、變量查看等功能,是嵌入式調試最根本有效的調試方法。比如VxWorks TornadoII提供的gdb就屬于這一種。
。簡單實用的打印顯示工具[printf]
printf或其它類似的打印顯示工具估計是最靈活最簡單的調試工具。打印代碼執行過程中的各種變量可以讓你知道代碼執行的情況。但是,printf對正常的代碼執行干擾比較大(一般printf占用CPU比較長的時間),需要慎重使用,最好設置打印開關來控制打印。
.ICE或JTAG調試器[In-circuit Emulator]
ICE是用來仿真CPU核心的設備,它可以在不干擾運算器的正常運行情況下,實時的檢測CPU的內部工作情況。像桌面調試軟件所提供的:復雜的條件斷點、先進的實時跟蹤、性能分析和端口分析這些功能,它也都能提供。ICE一般都有一個比較特殊的CPU,稱為外合(bond-out)CPU。這是一種被打開了封裝的CPU,并且通過特殊的連接,可以訪問到CPU的內部信號,而這些信號,在CPU被封裝時,是沒法“看到”的。當和工作站上強大的調試軟件聯合使用時,ICE就能提供你所能找到的最全面的調試功能。但ICE同樣有一些缺點:昂貴;不能全速工作;同樣,并不是所有的CPU都可以作為外合CPU的,從另一個角度說,這些外合CPU也不大可能及時的被新出的CPU所更換。JTAG(Joint Test Action Group)雖然它最初開發出來是為了監測IC和電路連接,但是這種串行接口擴展了用途,包括對調試的支持。AD公司為Blackfin設計的Visual Dsp++就支持高速的JTAG調試。
.ROM監視器[ROM Monitor]
ROM監控器是一小程序,駐留在嵌入系統ROM中,通過串行的或網絡的連接和運行在工作站上的調試軟件通信。這是一種便宜的方式,當然也是最低端的技術。它除了要求一個通信端口和少量的內存空間外,不需要其它任何專門的硬件。并提供了如下功能:下載代碼、運行控制、斷點、單步步進、以及觀察、修改寄存器和內存。因為ROM監控器是操作軟件的一部分,只有當你的應用程序運行時,它才會工作。如果你想檢查CPU和應用程序的狀態,你就必須停下應用程序,再次進入ROM監控器。
.Data監視器[Data Monitor]
這種監視器在不停止CPU運行的情況下不僅可以顯示指定變量內容,還可以收集并以圖形形式顯示各個變量的變化過程。
.OS監視器[Operating System Monitor]
操作系統監視器可以顯示諸如任務切換、信號量收發、中斷等事件。一方面,這些監視器能夠為你呈現事件之間的關系和時間聯系;另一方面,還可以提供對信號量優先級反轉、死鎖和中斷延時等問題的診斷。
。性能分析工具[Profiler]
可以用來測試CPU到底耗在那里。profiler工具可以讓你知道系統的瓶頸在那里、CPU的使用率以及需要優化的地方。
。內存測試工具[Memory Teseter]
可以找到內存使用的問題所在,比如內存泄露、內存碎片、內存崩潰等問題。如果發現系統出現一些不可預知的或間歇性的問題,就應該使用內存測試工具測測看。
。運行跟蹤器[Execution Tracer]
可以顯示CPU執行了哪些函數、誰在調用、參數是什么、何時調用等情況。這種工具主要用于測試代碼邏輯,可以在大量的事件中發現異常的那些。
。覆蓋工具[Coverage Tester]
主要顯示CPU具體執行了那些代碼,并讓你知道那些代碼分支沒有被執行到。這樣有助于提高代碼質量并消除無用代碼。
.GUI測試工具[GUI Tester]
很多嵌入式應用帶有某種形式的圖形用戶界面進行交互,有些系統性能測試足根掘用戶輸入響應時間進行的。GUI測試工具可以作為腳本工具有開發環境中運行測試用例,其功能包括對操作的記錄和回放、抓取屏幕顯示供以后分析和比較、設置和管理測試過程(Rational公司的robot和Mercury的Loadrunner工具是杰出的代表)。很多嵌入式設備沒有GUI,但常常可以對嵌入式設備進行插裝來運行GUI測試腳本,雖然這種方式可能要求對被測代碼進行更改,但是節省了功能測試和回歸測試的時間。
Oracle面對這個問題有些吃驚,因為在當時沒有人這么問過,而同時代的嵌入式開發人員問的最多的大都圍繞“我怎么才能使程序跑的更快”、“什么編譯器最好”等膚淺的問題。所以,面對這個不同尋常卻異乎成熟的問題,Oracle感到欣喜并認真回復了他:你的問題很有深度很成熟,因為只有不斷地去深入理解才有可能不斷地提高水平。并且Oracle為了鼓勵這位執著的程序員,把10條關于嵌入式軟件開發測試的秘訣告訴了他:
1.懂得使用工具
2.盡早發現內存問題
3.深入理解代碼優化
4.不要讓自己大海撈針
5.重現并隔離問題
6.以退為進
7.確定測試的完整性
8.提高代碼質量意味著節省時間
9.發現它,分析它,解決它
10.利用初學者的思維
這十條秘訣在業界廣為流傳,使很多人受益。本文圍繞這十條秘訣展開論述。
1。懂得使用工具
通常嵌入式系統對可靠性的要求比較高。嵌入式系統安全性的失效可能會導致災難性的后果,即使是非安全性系統,由于大批量生產也會導致嚴重的經濟損失。這就要求對嵌入式系統,包括嵌入式軟件進行嚴格的測試、確認和驗證。隨著越來越多的領域使用軟件和微處理器控制各種嵌入式設備,對門益復雜的嵌入式軟件進行快速有效的測試愈加顯得重要。
就象修車需要工具一樣,好的程序員應該能夠熟練運用各種軟件工具。不同的工具,有不同的使用范圍,有不同的功能。使用這些工具,你可以看到你的系統在干些什么,它又占用什么資源,它到底和哪些外界的東西打交道。讓你郁悶好幾天的問題可能通過某個工具就能輕松搞定,可惜你就是不知道。那么為什么那么多的人總是在折騰個半死之后才想到要用測試工具呢?原因很多,主要有兩個。一個是害怕,另一個是惰性。害怕是因為加入測試用具或測試模塊到代碼需要技巧同時有可能引入新的錯誤,所以他們總喜歡寄希望于通過不斷地修改重編譯代碼來消除bug,結果卻無濟于事。懶惰是因為他們習慣了使用printf之類的簡單測試手段。下面來介紹一些嵌入式常用的測試工具。
。源碼級調試器[Source-level Debugger]
這種調試器一般提供單步或多步調試、斷點設置、內存檢測、變量查看等功能,是嵌入式調試最根本有效的調試方法。比如VxWorks TornadoII提供的gdb就屬于這一種。
。簡單實用的打印顯示工具[printf]
printf或其它類似的打印顯示工具估計是最靈活最簡單的調試工具。打印代碼執行過程中的各種變量可以讓你知道代碼執行的情況。但是,printf對正常的代碼執行干擾比較大(一般printf占用CPU比較長的時間),需要慎重使用,最好設置打印開關來控制打印。
.ICE或JTAG調試器[In-circuit Emulator]
ICE是用來仿真CPU核心的設備,它可以在不干擾運算器的正常運行情況下,實時的檢測CPU的內部工作情況。像桌面調試軟件所提供的:復雜的條件斷點、先進的實時跟蹤、性能分析和端口分析這些功能,它也都能提供。ICE一般都有一個比較特殊的CPU,稱為外合(bond-out)CPU。這是一種被打開了封裝的CPU,并且通過特殊的連接,可以訪問到CPU的內部信號,而這些信號,在CPU被封裝時,是沒法“看到”的。當和工作站上強大的調試軟件聯合使用時,ICE就能提供你所能找到的最全面的調試功能。但ICE同樣有一些缺點:昂貴;不能全速工作;同樣,并不是所有的CPU都可以作為外合CPU的,從另一個角度說,這些外合CPU也不大可能及時的被新出的CPU所更換。JTAG(Joint Test Action Group)雖然它最初開發出來是為了監測IC和電路連接,但是這種串行接口擴展了用途,包括對調試的支持。AD公司為Blackfin設計的Visual Dsp++就支持高速的JTAG調試。
.ROM監視器[ROM Monitor]
ROM監控器是一小程序,駐留在嵌入系統ROM中,通過串行的或網絡的連接和運行在工作站上的調試軟件通信。這是一種便宜的方式,當然也是最低端的技術。它除了要求一個通信端口和少量的內存空間外,不需要其它任何專門的硬件。并提供了如下功能:下載代碼、運行控制、斷點、單步步進、以及觀察、修改寄存器和內存。因為ROM監控器是操作軟件的一部分,只有當你的應用程序運行時,它才會工作。如果你想檢查CPU和應用程序的狀態,你就必須停下應用程序,再次進入ROM監控器。
.Data監視器[Data Monitor]
這種監視器在不停止CPU運行的情況下不僅可以顯示指定變量內容,還可以收集并以圖形形式顯示各個變量的變化過程。
.OS監視器[Operating System Monitor]
操作系統監視器可以顯示諸如任務切換、信號量收發、中斷等事件。一方面,這些監視器能夠為你呈現事件之間的關系和時間聯系;另一方面,還可以提供對信號量優先級反轉、死鎖和中斷延時等問題的診斷。
。性能分析工具[Profiler]
可以用來測試CPU到底耗在那里。profiler工具可以讓你知道系統的瓶頸在那里、CPU的使用率以及需要優化的地方。
。內存測試工具[Memory Teseter]
可以找到內存使用的問題所在,比如內存泄露、內存碎片、內存崩潰等問題。如果發現系統出現一些不可預知的或間歇性的問題,就應該使用內存測試工具測測看。
。運行跟蹤器[Execution Tracer]
可以顯示CPU執行了哪些函數、誰在調用、參數是什么、何時調用等情況。這種工具主要用于測試代碼邏輯,可以在大量的事件中發現異常的那些。
。覆蓋工具[Coverage Tester]
主要顯示CPU具體執行了那些代碼,并讓你知道那些代碼分支沒有被執行到。這樣有助于提高代碼質量并消除無用代碼。
.GUI測試工具[GUI Tester]
很多嵌入式應用帶有某種形式的圖形用戶界面進行交互,有些系統性能測試足根掘用戶輸入響應時間進行的。GUI測試工具可以作為腳本工具有開發環境中運行測試用例,其功能包括對操作的記錄和回放、抓取屏幕顯示供以后分析和比較、設置和管理測試過程(Rational公司的robot和Mercury的Loadrunner工具是杰出的代表)。很多嵌入式設備沒有GUI,但常常可以對嵌入式設備進行插裝來運行GUI測試腳本,雖然這種方式可能要求對被測代碼進行更改,但是節省了功能測試和回歸測試的時間。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式軟件開發流程
- 嵌入式軟件開發的特點、設計流程、嵌入式軟件的結構
- 嵌入式軟件開發需要懂的硬件基礎
- 嵌入式軟件開發做什么?嵌入式開發培訓學哪些
- 嵌入式軟件開發環境
- 關于做嵌入式軟件開發和普通桌面軟件開發的區別問題
- 嵌入式軟件開發基礎實驗報告4×4鍵盤控制
- 嵌入式軟件開發基礎實驗報告實時時鐘
- 嵌入式軟件開發基礎實驗報告數碼管顯示
- 嵌入式軟件開發基礎實驗報告中斷實驗
- 基于嵌入式軟件開發中構件技術的研究 6次下載
- ARM嵌入式軟件開發 65次下載
- Eclipse嵌入式軟件開發平臺 55次下載
- 嵌入式軟件開發與Embedded-GIS 36次下載
- 嵌入式軟件開發系列教程 (很多本書)
- 嵌入式軟件開發和軟件開發的區別 2357次閱讀
- 基于功能安全的汽車嵌入式軟件單元驗證技術研究 1086次閱讀
- 如何為嵌入式軟件開發選擇編譯器 905次閱讀
- 基于UML嵌入式軟件開發環境的自動取款機系統的應用方案 3777次閱讀
- 詳解嵌入式軟件開發到FPGA開發 6473次閱讀
- 業界廣為流傳的嵌入式軟件測試十大秘訣 2740次閱讀
- 嵌入式軟件開發編程規范介紹 4403次閱讀
- 嵌入式軟件開發的這些編程規范你了解嗎 3945次閱讀
- 嵌入式軟件工程師職業規劃必知 6620次閱讀
- 嵌入式開發和底層開發有什么區別 1.6w次閱讀
- 關于嵌入式軟件開發測試的十大秘訣 2355次閱讀
- 基于SCADE模型的高安全性嵌入式軟件解決方案設計 2815次閱讀
- 不得不看!關于嵌入式軟件開發的四點建議總結 7313次閱讀
- 學嵌入式開發入門_學嵌入式開發需要看哪些書籍 2.5w次閱讀
- 嵌入式Linux開發之C語言學習秘訣 9990次閱讀
下載排行
本周
- 1相關協議信號總結
- 0.94 MB | 4次下載 | 免費
- 2DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 3常用電子元器件介紹
- 3.21 MB | 1次下載 | 免費
- 4運算放大器基本電路中文資料
- 1.30 MB | 1次下載 | 免費
- 5ZP-WTU-PNMD02規格書
- 637.49 KB | 次下載 | 免費
- 6multisim的基本界面與操作方法
- 9.12 MB | 次下載 | 免費
- 7FS312A USB的PD快充協議電壓誘騙控制器中文手冊
- 1.51 MB | 次下載 | 免費
- 8FVT-2SVCTCXO電氣規格與應用:10~52MHz剪切正弦波在GPS、物聯網和移動設備中的使用
- 394.16 KB | 次下載 | 免費
本月
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發包
- 24.06 MB | 43次下載 | 1 積分
- 3錦銳CA51F005 SDK開發包
- 19.47 MB | 19次下載 | 1 積分
- 4PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 5HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 6蘋果iphone 11電路原理圖
- 4.98 MB | 7次下載 | 2 積分
- 7基礎模擬電子電路
- 3.80 MB | 5次下載 | 1 積分
- 8STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
- 3.32 MB | 5次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論