用實(shí)時跟蹤方法調(diào)試嵌入式軟件
底層操作系統(tǒng)設(shè)計工程師也經(jīng)常使用邏輯分析儀,但他們更加注重觀察那些和二進(jìn)制轉(zhuǎn)換類似的存儲指令,也就是通常所說的實(shí)時指令跟蹤。如今邏輯分析儀配有一種稱為反匯編的工具可完成這項(xiàng)任務(wù),反匯編工具專門針對處理器或總線設(shè)計,它可以從一系列二進(jìn)制信息中提取特定的處理器存儲內(nèi)容。
軟件設(shè)計人員通常都不太熟悉硬件工具,所以他們總是避免使用這些工具。軟件設(shè)計人員在電腦或工作站上用C++、VB及類似的語言編寫程序源代碼,并希望使用這些平臺完成整個設(shè)計、調(diào)試和評估過程。他們用軟件工具(仿真器和調(diào)試器)運(yùn)行新的目標(biāo)器件,而硬件工具如邏輯分析儀對許多軟件設(shè)計人員來說總是顯得格格不入。但由于現(xiàn)在系統(tǒng)日趨復(fù)雜,相互之間影響也越來越大,這種狀況正在漸漸改變。
目前用得最廣泛的是一種所謂在線仿真器(ICE)的工具,它可以追蹤目標(biāo)器件并提取出源代碼。ICE是軟件設(shè)計工作站中運(yùn)行控制工具的一個集成組件,它監(jiān)測目標(biāo)器件總線的活動情況,給出源代碼運(yùn)行結(jié)果信息。有了ICE后,軟件工程師不需要使用邏輯分析儀調(diào)試就可以完成整個項(xiàng)目。
然而對軟件工程師來說,不幸的是ICE在有些方面的性能已落后于新一代高速處理器、存儲器件和總線,速度和連接性局限使它無法獨(dú)立觀測現(xiàn)代高速總線的復(fù)雜活動,軟件工程師必須使用邏輯分析儀這一測量工具來驗(yàn)證他們源代碼的日子已經(jīng)到來。
現(xiàn)代數(shù)字設(shè)計人員經(jīng)常要與高速復(fù)雜多處理器系統(tǒng)打交道,如像圖1所示的一個用于通訊系統(tǒng)的基本嵌入式多處理器系統(tǒng)。上述三個領(lǐng)域的工程師都需要能有一種工具獲取長期相關(guān)數(shù)據(jù),可從圖1系統(tǒng)中得到數(shù)以百萬計的運(yùn)行周期信息,該工具要能夠從主處理器及其它從處理器、存儲總線和外圍總線獲得信息,重要的是這些信息還要和時間聯(lián)系起來,以便用戶可以清楚地知道所有不同的處理器和總線之間是怎樣相互作用的。只有邏輯分析儀才能即刻滿足所有要求。
用集成工具完成軟件分析調(diào)試
軟件設(shè)計人員都很理想地希望其軟件評估工作兩頭好處都能占到,既可以在熟悉的工作站控制終端上運(yùn)行邏輯分析儀的采樣、顯示和分析,又不需要接觸到真正的邏輯分析儀。如今儀器生產(chǎn)廠商已開發(fā)出能滿足這種要求的解決方案,可以把功能強(qiáng)大的邏輯分析儀(如Tektronix TLA700系列)和經(jīng)驗(yàn)證的控制/仿真/調(diào)試工具(如Wind River的VisionClick)集成在一起。
這兩種功能結(jié)合起來的性能遠(yuǎn)大于各部分功能的簡單相加。如果沒有執(zhí)行控制工具,邏輯分析儀盡管能得到被測系統(tǒng)(SUT)的實(shí)時相關(guān)數(shù)據(jù),但卻不能修改CPU的狀態(tài),也不能單步執(zhí)行程序,或者控制所監(jiān)測的數(shù)據(jù)轉(zhuǎn)換;而如果沒有邏輯分析儀,執(zhí)行控制工具雖然可以控制程序的每步執(zhí)行情況,但是得不到滿意的次納秒級時序數(shù)據(jù),或與時間對應(yīng)的結(jié)果。
將兩種性能集成在一起的開發(fā)系統(tǒng)能采集實(shí)時信號、存儲狀況及源代碼,所有這一切都可以在易于操作的仿真(執(zhí)行控制)工具環(huán)境下獲得。有了這種工具,軟件工程師就能夠得到長期高精度跟蹤數(shù)據(jù),即使總線速度很高也不怕,有些邏輯分析儀的存儲能力甚至達(dá)到64M。
這樣一來,邏輯分析儀看起來就像是控制工具的一部分,得到的數(shù)據(jù)以軟件開發(fā)人員能看懂的形式顯示在仿真工作站屏幕上,它可以顯示出不同級別的數(shù)據(jù),從存儲器到高級源代碼,還包括帶有清楚時間顯示的每一運(yùn)行周期的功能(圖2)。
值得一提的是很多邏輯分析儀沒有提供足夠的分辨率,無法將多個總線得到的結(jié)果正確聯(lián)系起來,尤其是那些老式儀器。如有些儀器聲稱可以顯示時序調(diào)整的波形和存儲內(nèi)容,但調(diào)整圖形卻是以多個被測系統(tǒng)周期顯示的,當(dāng)試圖在一個復(fù)雜系統(tǒng)中追索一項(xiàng)數(shù)據(jù)轉(zhuǎn)換時,它根本就不可能跟蹤出每個周期最后將連接到什么位置,有問題出現(xiàn)時也難以分辨出原因和結(jié)果之間的關(guān)系。雖然從技術(shù)上說,得到的波形和存儲的內(nèi)容是實(shí)時追蹤結(jié)果,但它太不精確了,對硬件和操作系統(tǒng)的故障判斷沒有多大幫助。
要想使顯示的多種形式時序總線數(shù)據(jù)有意義,關(guān)鍵在于每次采樣的時間信息,并要有足夠的分辨率。如果每次采集的數(shù)據(jù)都帶有時間信息(分辨率500皮秒),就能夠把主處理器總線指令與系統(tǒng)外設(shè)總線的結(jié)果等同起來。
數(shù)據(jù)采樣工具必須既要“寬”(有很多輸入通道)又要“深”(有很大的存儲容量儲存得到的數(shù)據(jù)),帶有擴(kuò)展內(nèi)存的組合式邏輯分析儀可滿足這些要求,特別是當(dāng)擴(kuò)展內(nèi)存可以從64K到64M時,能勝任ICE環(huán)境下的任何要求。
要注意邏輯分析儀產(chǎn)生的每一個畫面都是從二進(jìn)制波形信息得來的,所獲得的信息及其高分辨率和時間精度都是一些基本單元,通過反匯編器和支持處理器轉(zhuǎn)換成存儲內(nèi)容和源代碼顯示出來,這些都是自動按時間調(diào)整的,在多總線測試點(diǎn)上會導(dǎo)致執(zhí)行延遲。
高性能邏輯分析儀和仿真器真正結(jié)合在一起后,可以為更快、更有效的代碼驗(yàn)證和除錯創(chuàng)造條件,例如對每一個采樣點(diǎn)都用不同的窗口進(jìn)行顯示就很有用,有些用存儲內(nèi)容或者代碼格式,而另一些則用時序格式。對于屏幕上的這些顯示,每個窗口的光標(biāo)都處于程序執(zhí)行的同一點(diǎn)上,如果軟件工程師在執(zhí)行某一步程序時遇到問題,只需要把光標(biāo)指向那一步,此時帶有光標(biāo)的硬件周期波形就會在另一窗口中自動顯示出來,這樣軟件和硬件設(shè)計人員就能很容易地一起合作解決問題。
綜合式仿真/邏輯分析儀對代碼優(yōu)化也很有幫助。軟件設(shè)計師要在預(yù)定的時間內(nèi)使程序運(yùn)行完畢,利用仿真器屏幕上可顯示實(shí)際時間值的特性(如圖2),可以很方便地看出程序是否能在規(guī)定的時間內(nèi)完成,其它代碼優(yōu)化工具如直方圖還能對軟件工程師提供進(jìn)一步幫助。
使用集成邏輯分析儀還增加了很多其它仿真器功能,如功能概括工具可得到單個指令的最小、最大和平均完成時間,這得益于改進(jìn)后邏輯分析儀所提供的時間分辨率,條件追蹤工具和代碼器也能進(jìn)一步提高時間分辨率和采樣深度。
最重要的是,綜合型仿真/邏輯分析儀能使對硬件不感興趣的軟件工程師不需要觸摸它就可以控制這一功能強(qiáng)大的采樣儀器。工程師可以對分析儀進(jìn)行全面控制,不管什么時候,只要按下仿真器上的“運(yùn)行”按鈕,仿真應(yīng)用程序和邏輯分析功能都會立即執(zhí)行,仿真器運(yùn)行代碼,邏輯分析儀則進(jìn)行全面追蹤,把描述目標(biāo)器件活動的所有數(shù)據(jù)都存起來。邏輯分析儀的高分辨率和高精度可把每一個處理器和總線周期都記錄下來,同時也有賴于這兩個工具的結(jié)合,使得軟件工程師仍然可以在熟悉的環(huán)境下更有效地工作。
作者:Davis Chen
區(qū)域銷售經(jīng)理
泰克公司
Email:davis.chen@exgate.tek.com
評論