9.發(fā)現它,分析它,解決它
10.利用初學(xué)者的思維
這十條秘訣在業(yè)界廣為流傳,使很多人受益。本文圍繞這十條秘訣展開(kāi)論述。
1.懂得使用工具
通常嵌入式系統對可靠性的要求比較高。嵌入式系統安全性的失效可能會(huì )導致災難性的后果,即使是非安全性系統,由于大批量生產(chǎn)也會(huì )導致嚴重的經(jīng)濟損失。這就要求對嵌入式系統,包括嵌入式軟件進(jìn)行嚴格的測試、確認和驗證。隨著(zhù)越來(lái)越多的領(lǐng)域使用軟件和微處理器控制各種嵌入式設備,對門(mén)益復雜的嵌入式軟件進(jìn)行快速有效的測試愈加顯得重要。
就象修車(chē)需要工具一樣,好的程序員應該能夠熟練運用各種軟件工具。不同的工具,有不同的使用范圍,有不同的功能。使用這些工具,你可以看到你的系統在干些什么,它又占用什么資源,它到底和哪些外界的東西打交道。讓你郁悶好幾天的問(wèn)題可能通過(guò)某個(gè)工具就能輕松搞定,可惜你就是不知道。那么為什么那么多的人總是在折騰個(gè)半死之后才想到要用測試工具呢?原因很多,主要有兩個(gè)。一個(gè)是害怕,另一個(gè)是惰性。害怕是因為加入測試用具或測試模塊到代碼需要技巧同時(shí)有可能引入新的錯誤,所以他們總喜歡寄希望于通過(guò)不斷地修改重編譯代碼來(lái)消除bug,結果卻無(wú)濟于事。懶惰是因為他們習慣了使用printf之類(lèi)的簡(jiǎn)單測試手段。下面來(lái)介紹一些嵌入式常用的測試工具。
.源碼級調試器[Source-level Debugger]
這種調試器一般提供單步或多步調試、斷點(diǎn)設置、內存檢測、變量查看等功能,是嵌入式調試最根本有效的調試方法。比如VxWorks TornadoII提供的gdb就屬于這一種。
.簡(jiǎn)單實(shí)用的打印顯示工具[printf]
printf或其它類(lèi)似的打印顯示工具估計是最靈活最簡(jiǎn)單的調試工具。打印代碼執行過(guò)程中的各種變量可以讓你知道代碼執行的情況。但是,printf對正常的代碼執行干擾比較大(一般printf占用CPU比較長(cháng)的時(shí)間),需要慎重使用,最好設置打印開(kāi)關(guān)來(lái)控制打印。
.ICE或JTAG調試器[In-circuit Emulator]
ICE是用來(lái)仿真CPU核心的設備,它可以在不干擾運算器的正常運行情況下,實(shí)時(shí)的檢測CPU的內部工作情況。像桌面調試軟件所提供的:復雜的條件斷點(diǎn)、先進(jìn)的實(shí)時(shí)跟蹤、性能分析和端口分析這些功能,它也都能提供。ICE一般都有一個(gè)比較特殊的CPU,稱(chēng)為外合(bond-out)CPU。這是一種被打開(kāi)了封裝的CPU,并且通過(guò)特殊的連接,可以訪(fǎng)問(wèn)到CPU的內部信號,而這些信號,在CPU被封裝時(shí),是沒(méi)法“看到”的。當和工作站上強大的調試軟件聯(lián)合使用時(shí),ICE就能提供你所能找到的最全面的調試功能。但ICE同樣有一些缺點(diǎn):昂貴;不能全速工作;同樣,并不是所有的CPU都可以作為外合CPU的,從另一個(gè)角度說(shuō),這些外合CPU也不大可能及時(shí)的被新出的CPU所更換。JTAG(Joint Test Action Group)雖然它最初開(kāi)發(fā)出來(lái)是為了監測IC和電路連接,但是這種串行接口擴展了用途,包括對調試的支持。AD公司為Blackfin設計的Visual Dsp++就支持高速的JTAG調試。
.ROM監視器[ROM Monitor]
ROM監控器是一小程序,駐留在嵌入系統ROM中,通過(guò)串行的或網(wǎng)絡(luò )的連接和運行在工作站上的調試軟件通信。這是一種便宜的方式,當然也是最低端的技術(shù)。它除了要求一個(gè)通信端口和少量的內存空間外,不需要其它任何專(zhuān)門(mén)的硬件。并提供了如下功能:下載代碼、運行控制、斷點(diǎn)、單步步進(jìn)、以及觀(guān)察、修改寄存器和內存。因為ROM監控器是操作軟件的一部分,只有當你的應用程序運行時(shí),它才會(huì )工作。如果你想檢查CPU和應用程序的狀態(tài),你就必須停下應用程序,再次進(jìn)入ROM監控器。
.Data監視器[Data Monitor]
這種監視器在不停止CPU運行的情況下不僅可以顯示指定變量?jì)热,還可以收集并以圖形形式顯示各個(gè)變量的變化過(guò)程。
.OS監視器[Operating System Monitor]
操作系統監視器可以顯示諸如任務(wù)切換、信號量收發(fā)、中斷等事件。一方面,這些監視器能夠為你呈現事件之間的關(guān)系和時(shí)間聯(lián)系;另一方面,還可以提供對信號量?jì)?yōu)先級反轉、死鎖和中斷延時(shí)等問(wèn)題的診斷。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/