分析復(fù)雜器件內(nèi)部的實時可視性的設(shè)計方法
如果在一個系統(tǒng)中擁有幾個處理器和外設(shè),要開發(fā)具有成本效益、可靠的產(chǎn)品,尤其是在今天很短的產(chǎn)品開發(fā)時間的條件下,了解所有這些芯片的實時動態(tài)特性將變得非常重要。實時嵌入式系統(tǒng)越來越多地在多內(nèi)核ASIC或系統(tǒng)級芯片(SoC)上實現(xiàn),以利用這些器件所具有的低功耗、低成本和更高集成度的優(yōu)點。
本文引用地址:http://butianyuan.cn/article/150519.htm開發(fā)者所擁有的很多這些標準設(shè)計工具是依賴于了解老的技術(shù)產(chǎn)品的內(nèi)部運行情況來實現(xiàn)的,已經(jīng)不適用于這些新型的、功能強大的多功能設(shè)計了。瓶頸、延遲和對于像總線和存儲器等共享資源的競爭這些問題,對于實時數(shù)據(jù)傳輸來說是致命的。為了獲得最佳性能,開發(fā)者應(yīng)比以前更需要了解芯片內(nèi)部運行的具體情況。
然而,對系統(tǒng)組件之間的事務(wù)處理的監(jiān)控不再是像以前那樣連接一個邏輯分析儀或者總線分析儀那么簡單了,因為很多感興趣的信號深“埋”在芯片內(nèi)部。對SoC的可視性需要一套硬件和軟件相混合的裝置來采集SoC本身內(nèi)部的數(shù)據(jù),并由特征描述以及關(guān)聯(lián)工具提供支持,這些工具能幫助開發(fā)者分析所采集的數(shù)據(jù)。
回到現(xiàn)實情況
傳統(tǒng)上,當(dāng)沒有邏輯分析儀可用,或者太難于設(shè)置時,開發(fā)者使用軟件測試工具來獲得對他們設(shè)計的可視性。他們會向目標對象增加調(diào)試代碼來采集、處理和上載調(diào)試數(shù)據(jù)。例如,在進入和離開一個函數(shù)時打開和關(guān)閉某個計時器,無論是過去還是現(xiàn)在,對于通過軟件分析器來對函數(shù)進行描述來說,這種方法都是一種的簡捷方法。
盡管這只需要增加很少的C語言printf指令到測試代碼中,對采集的數(shù)據(jù)進行格式化,并輸出到一個標準的I/O器件,但此時這些代碼對代碼的大小、存儲器利用、緩沖器性能、時序和系統(tǒng)資源競爭都有很大的影響。這些缺點使得printf只適合于測試非實時的控制代碼。對于實時的或者確定性代碼,
減少干擾
有很多方法可以在增加可視性的同時減少干擾。從概念上來說,對一個系統(tǒng)進行監(jiān)測涉及到數(shù)據(jù)采集、數(shù)據(jù)緩沖、上載來自目標器件的數(shù)據(jù)、后續(xù)處理以及進行顯示等。認真安排這些活動在什么時候以及哪里發(fā)生,可以將它們對系統(tǒng)性能的影響減到最小。減少與測試代碼以及數(shù)據(jù)采集設(shè)備相關(guān)的存儲器區(qū)域,可以采集到更多的數(shù)據(jù),并增加對系統(tǒng)實時行為測試的精度或廣度。
一般需要數(shù)據(jù)點幾倍大小的存儲空間來記錄關(guān)聯(lián)信息,這些關(guān)聯(lián)信息用于更準確地對其進行理解。例如,除了在采集時的數(shù)據(jù)值,可能還需要標記數(shù)據(jù)相關(guān)聯(lián)的變量名字,獲得一個數(shù)據(jù)采集時間的時間戳,并注意當(dāng)在獲得時間戳?xí)r正在執(zhí)行的函數(shù)等。有幾種方法用于獲得和組織這種關(guān)聯(lián)信息,并且不需要依賴于printf和其字符串格式化功能。通常在數(shù)據(jù)中包含pattern,如果用某種方式來采集數(shù)據(jù),那么可以推斷出一些額外的特性,而不需要將它們包含到緩沖器中。增加可視性的一些方法包括:
1. 記錄格式
如果在緩沖器中采集一個變量,則不再需要對所采集的什么變量進行標記。如果需要采集多個值,就可以創(chuàng)建一種記錄格式,每一個值對應(yīng)一個給定的位置,這樣避免了不得不對采集的內(nèi)容再次進行標注的情況。
2. 多個緩沖器
緩沖寄存器又稱緩沖器,它分輸入緩沖器和輸出緩沖器兩種。前者的作用是將外設(shè)送來的數(shù)據(jù)暫時存放,以便處理器將它取走;后者的作用是用來暫時存放處理器送往外設(shè)的數(shù)據(jù)。有了數(shù)控緩沖器,就可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,實現(xiàn)數(shù)據(jù)傳送的同步。由于緩沖器接在數(shù)據(jù)總線上,故必須具有三態(tài)輸出功能。 另有電梯緩沖器,汽車彈簧緩沖器。
通過將相似的數(shù)據(jù)點分組在一起,可以簡化循環(huán)緩沖管理,減少對每個數(shù)據(jù)點的采集延時。同樣地,如果按照優(yōu)先級來對數(shù)據(jù)采集進行隔離,那么當(dāng)系統(tǒng)在100%的利用狀態(tài)時,可能使循環(huán)緩沖器抓取到非關(guān)鍵信息的溢出,而不是用一個非實時的上載來弄亂了實時系統(tǒng)的時限要求。在任何情況下,都需要用來標記溢出的機制。并且如果緩沖器存在一些前提條件,例如需要重構(gòu)的時間戳,則可能追蹤丟失了多少數(shù)據(jù)。
3. 采樣數(shù)據(jù)
把模擬音頻轉(zhuǎn)成數(shù)字音頻的過程,就稱作采樣,所用到的主要設(shè)備便是模擬/數(shù)字轉(zhuǎn)換器(Analog to Digital Converter,即ADC,與之對應(yīng)的是數(shù)/模轉(zhuǎn)換器,即DAC)。采樣的過程實際上是將通常的模擬音頻信號的電信號轉(zhuǎn)換成二進制碼0和1,這些0和1便構(gòu)成了數(shù)字音頻文件。采樣的頻率越大則音質(zhì)越有保證。由于采樣頻率一定要高于錄制的最高頻率的兩倍才不會產(chǎn)生失真,而人類的聽力范圍是20Hz~20KHz,所以采樣頻率至少得是20k×2=40KHz,才能保證不產(chǎn)生低頻失真,這也是CD音質(zhì)采用44.1KHz(稍高于40 采樣過程kHz是為了留有余地)的原因。
通過周期性地以某一規(guī)定間隔截取音頻信號,從而將模擬音頻信號變換為數(shù)字信號的過程。每次采樣時均指定一個表示在采樣瞬間的音頻信號的幅度的數(shù)字。
配置硬件計數(shù)器并使其運行對系統(tǒng)的影響很小。無論如何,讀取一個計數(shù)器并上載其值都是具有干擾性的。對計數(shù)器的記錄越頻繁,記錄就越準確,但采集和上載的干擾就越大。在確定確實需要更準確的信息之前,保持較低的記錄頻率。例如,一個記錄當(dāng)前哪個函數(shù)在執(zhí)行的周期性分析器能確保得到一個非常準確的代碼使用百分比情況。這樣的分析器僅收集了在每個函數(shù)調(diào)用的記錄期間所采集的信息的一部分,于是干擾很小。也可以按低優(yōu)先級任務(wù)來對數(shù)據(jù)點采樣,盡管這樣可能使得結(jié)果產(chǎn)生一些偏差。
4. 確定性的數(shù)據(jù)
如果數(shù)據(jù)采樣獲取的頻率固定的話,不必要加入一個時間戳。作為一種替代選擇,如果數(shù)據(jù)必須通過一組連續(xù)的運算塊,只需記錄數(shù)據(jù)值和時間戳,因為可以從時間戳的次序確定實際的程序塊。如果獲取了幾個值,可能更有效率,以確保數(shù)據(jù)流能通過一系列的程序塊,此時只需記錄函數(shù)和時間戳,并采用數(shù)據(jù)記錄格式。
5. 動態(tài)/智能記錄
通常只在需要時采集數(shù)據(jù)(換言之,在對某些信息感興趣的情況下),這樣減少了數(shù)據(jù)采集產(chǎn)生的影響。利用幾個調(diào)試標記,可以縮小采集的范圍。這可以通過設(shè)置一個特定的標記來實現(xiàn),節(jié)約緩沖器空間。設(shè)置或檢查一個標記只需要一個或者兩個處理器周期,因此這是非常有用的方法,即使是對于基于硬件的計數(shù)器亦是如此。
評論