分析復雜器件內部的實時可視性的設計方法
6. 塊狀記錄
在某些情況下,在不影響執行時(如沒有實時運算時)有可能可以暫停對象。此時可以通過在能安全暫停的情況下觸發一次暫停來“避免”緩沖期上載開銷,然后在系統暫停的時候再對緩沖器上載。
7. 按塊上載
如果任務比較空閑,可以在系統沒有完全利用時用來上載緩沖器。盡管這不會減少上載開銷,但卻可以將上載的影響轉移到一個對系統性能影響更小的時段。
8. RTOS監測
RTOS,即:實時系統(Real-time operating system),實時系統能夠在指定或者確定的時間內完成系統功能和外部或內部、同步或異步時間做出響應的系統。它的正確性不僅依賴系統計算的邏輯結果,還依賴于產生這個結果的時間。因此實時系統應該在事先先定義的時間范圍內識別和處理離散事件的能力;系統能夠處理和儲存控制系統所需要的大量數據。 為了便于理解,機場的售票系統就是一個典型的實時系統。
對于更復雜的監測,可以在實時操作系統上找到支持。很多操作系統具有內置的機制和庫,能支持片上監測硬件,即易于配置又為管理循環緩沖器和向外發送數據流需要的基礎架構提供基本代碼,并提供用于自監測的Hook函數。通過對記錄過程抽象化以及卸載數據,可以快速地對監測的對象、監測的方式、監測的頻率、獲取數據的位置以及卸載方式等進行重新配置。在創建自己的基礎來測試代碼之前,應首先檢查RTOS提供的內容。
RTOS就是這樣的一個標準內核,包括了各種片上外設初始化和數據結構的格式化,不必、也不推薦用戶再對硬件設備和資源進行直接操作,所有的硬件設置和資源訪問都要通過RTOS核心。硬件這樣屏蔽起來以后,用戶不必清楚硬件系統的每一個細節就可以進行開發,這樣就減少了開發前的學習量。
一般來說,對硬件的直接訪問越少,系統的可靠性越高。RTOS是一個經過測試的內核,與一般用戶自行編寫的主程序內核相比,更規范,效率和可靠性更高。對于一個精通單片機硬件系統和編程的“老手”而言,通過RTOS對系統進行管理可能不如直接訪問更直觀、自由度大,但是通過RTOS管理能夠排除人為疏忽因素,提高軟件可靠性。
另外,高效率地進行多任務支持是RTOS設計從始至終的一條主線,采用RTOS管理系統可以統一協調各個任務,優化CPU時間和系統資源的分配,使之不空閑、不擁塞。針對某種具體應用,精細推敲的應用程序不采用RTOS可能比采用RTOS能達到更高的效率;但是對于大多數一般用戶和新手而言,采用RTOS是可以提高資源利用率的,尤其是在片上資源不斷增長、產品可靠性和進入市場時間更重要的今天。
9. 避免訪問存儲器和其它系統資源
只有在硬件機制不足的情況下,才應該用軟件手段作為補充,例如當需要非常大的緩沖器或者當有限的處理降低了整體的干擾時。理想的情況是,如果在不使用系統總線或存儲器的情況下監測系統總線或存儲器,將能得到更準確的結果。如果將采集的數據量控制到最小,就可以避免使用存儲器中的緩沖器,只是通過JTAG或總線直接發送。
10. 連續采集
在一段時間內從流體中連續采集樣品,對于該時段而言,稱之為連續采樣。連續采樣主要用于污染物濃度隨時間變化的場合,用以描述流體中污染物質的平均濃度,尤其適用于江、河的水質監測和連續排放的廢水污染源、廢氣污染源的監測。可反映一定時段內的平均水平,代表性強;缺點是不能反映污染物的瞬時濃度和最大值,容易掩蓋污染的極限情況。
在過程中監測如果需要采集大量的數據,可以考慮連續采集。注意,因為在每次運行時會采集到不同的信息,將無法對結果進行關聯,因為時間戳包含不同的測試延時。在考慮從什么地方開始發現問題時,這種方法最好。因為這樣能降低概率,也能降低監測的等級。
11. 模塊
如果通過JTAG或總線發送數據,則可以在目標和主機之間放置一個處理模塊來處理時間戳的產生和有限的數據處理。通過將時間戳的工作卸載到該模塊,可以釋放測試總線的帶寬,用來發送更多的信息。模塊也是實現完全無干擾監測的非常有效的方法。例如,模塊可以監測系統總線,監測測試總線上某個特定的存儲器地址范圍,或使用直接存儲器訪問(DMA)來觸發一次準實時的數據塊獲取。
硬件輔助監測
在某些情況下,測試代碼可能要么對系統影響太大,要么不夠準確,或者不能簡單地獲得理解流過復雜的SoC的數據流的動態特性所需要的信息。越來越多的SoC架構包含用于輔助監測器件的硬件運行的功能,以滿足這些需求:
1. 事件計數器
計數是一種最簡單基本的運算,計數器就是實現這種運算的邏輯電路,計數器在數字系統中主要是對脈沖的個數進行計數,以實現測量、計數和控制的功能,同時兼有分頻功能,計數器是由基本的計數單元和一些控制門所組成,計數單元則由一系列具有存儲信息功能的各類觸發器構成,這些觸發器有RS觸發器、T觸發器、D觸發器及JK觸發器等。計數器在數字系統中應用廣泛,如在電子計算機的控制器中對指令地址進行計數,以便順序取出下一條指令,在運算器中作乘法、除法運算時記下加法、減法次數,又如在數字儀器中對脈沖的計數等等。計數器可以用來顯示產品的工作狀態,一般來說主要是用來表示產品已經完成了多少份的折頁配頁工作。
用軟件監測一個事件時,很多細微的細節不容易被發現。例如,記錄某個特定的CPU內核在等待訪問共享資源(如外部存儲器)時停止的次數,采用軟件就無法實現。包含一些設置很好的計數器的硬件設計,可以以很低的額外成本實現對系統動態特性的深入了解。數據可以通過調試器的JTAG接口讀出,或被周期性地讀出,例如,由軟件中的背景任務讀出并寫入到緩沖器中,以便在稍后的時間進行查詢。
評論