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