創提部落格
希望我們能與您分享和探討成長中的點點滴滴
DT10功能介紹--DT10多波示波器
分享到
功能介紹
有些嵌入式軟體方面的問題,利用傳統的調試器可能無法解決,而通過邏輯分析器則能有效地解決。請仔細閱讀本文, 看我們如何一步一步地講解在這種情況下所需的配置。
但是,從傳統意義上講,邏輯分析器是硬體工程師用來調試數位電路的。從上面的參考檔中可以清楚地瞭解到,嵌入式軟體工程師在使用分析器之前,要做很多準備工作,因為該工具不是一個專門用來解決問題的軟體。
DT10 的多波示波器+模擬盒是專門為解決嵌入式軟體的問題而研發的,它的功能與邏輯分析器或示波器的功能很相似。它可以捕獲並顯示運行時軟體的特徵,並在示波器上即時顯示不斷更新的精確時間圖表。
DT10 的一些功能能夠幫助嵌入式工程師自動完成很多工作,包括:
√ 可以在原始程式碼中自動插入測試點(不需要複雜的代碼或腳本)
√ 能夠與使用者現有的主機通信機制(GPIO, UART, Ethernet 等)進行無縫結合
√ 可獲取並顯示內核事件的蹤跡(如:任務調度器、中斷程式,等)
√ 最多可同時獲取並即時顯示 20 個局部或全域變數
√ 最長可進行長達 30 天的持續執行追蹤(針對難以重現的問題)
√ 有離線回溯調試的功能,可回顧實際執行中出現的變數轉換情況
√ 示波器資料點和代碼的即時執行路徑蹤跡之間,可通過滑鼠按一下進行雙向定位
√ 可自動生成一系列分析報告,幫助發現並解決運行時出現的問題
DT10 信號類比盒
除了獲取即時的原始程式碼特徵之外,DT10 類比盒元件還能夠從目標設備上獲取邏輯和類比信號。動態追蹤器會同時同步硬體和軟體的資料,並將這些資料通過同一個時間圖表即時顯示在多波示波器上。
這個工具在排除嵌入式軟體故障方面的功能的確非常強大!
將 DT10 的動態追蹤器和類比盒結合起來,能非常有效地幫助嵌入式工程師來定位引發難以重現的軟體問題的根源。
功能顯示
近程檢測器設備使用感測器來計算正在靠近的目標的距離。在該設備上運行的軟體是用來計算距離的,然後再利用所得到的結果,根據目標距離的遠近來啟動1個,2個,或3個LED信號。
在這個例子中,我們利用 DT10 來監控嵌入式軟體在運行時的特徵,並將其與 LED 在這期間的行為關聯起來,因而在任何情況下,我們都可以準確知道該軟體在硬體上執行某個指定事件時所處的狀態。同樣地,我們還可以利用 DT10 監控正在執行的軟體的特徵,並確定此時硬體上的邏輯或類比信號的狀態。
使用DT10 動態追蹤器
1. 插入測試點
通過使用DT10,可以將測試點自動插入原始程式碼,以獲取並輸出軟體在目標硬體設備上運行時的特徵。這些特徵包括:精確的時間資訊、覆蓋率資訊、事件、變數監控資料,等等。
2. 配置測試點輸出
在這個例子中,我們通過配置測試點,將執行軟體的追蹤資料通過 GPIO 口發送到動態追蹤器裝置上。目標設備上的 GPIO 針孔與 DT10 動態追蹤器的 GPIO 口相連接。
3. 捕獲 LED 數位信號
DT10 類比盒也與目標設備相連接,通過設備上的3個LED 來獲取邏輯信號。為了回應附近的某個目標,設備上的 LED 會自動打開或關閉,這樣 DT10 就可以準確追蹤並監控信號高低轉變的情況了。通過使用一個單獨的時鐘脈衝源,動態追蹤器就能夠自動同步 LED 在打開和關閉狀態下所獲取的資料。
這樣配置工作就完成了。
如果有需要的話,可以讓目標設備運行盡可能長的時間,以重現有問題的行為。通過 DT10 動態追蹤器所獲取的所有資料都會被同步並發送到安裝在所連接的主機上的 DT10 軟體中。多波示波器可以對這些資料進行即時監控,而且以後還可以重播。
測試一旦完成,DT10 分析引擎就會對所獲得的資料進行掃描,並自動生成一系列分析報告,以説明解決嵌入式軟體中的問題。
DT10 生成報告這一步,有效地為工程師減少了很多負擔!
分析
第一部分: 根據 LED 邏輯信號特徵,確定軟體的執行狀態
可以用多波示波器來檢測邏輯或類比信號的蹤跡,並通過運行感測器 LED 找出可能存在問題的陣列,然後確定 嵌入式軟體執行過程中出現該陣列的具體時間。一旦發現了出現問題的具體位置,DT10 就會同步生成分析報告,該報告有助於從不同視角檢測軟體在運行時的特徵。
為了識別 LED 邏輯信號中可能存在問題的陣列,用戶可以在示波器中將其縮小,並通過手動滾動來查看執行的蹤跡;然後再放大,來對自己認為可能有問題的地方進行仔細檢查。
或者,用戶可以利用 DT10 的重播功能和自動停止條件在示波器中有效地重播執行情況,而且在符合自動停止條件的情況下(如:LED1 繼續,LED2 繼續,LED3 斷開),DT10 會自動停止重播。
既然我們已確定了可能存在的地方,我們就可以在示波器上對其進行放大。在示波器上隨便點擊一下,DT10 就可以根據由其生成的一系列軟體分析報告,來同步那個時間點的執行情況,包括軟體當時所處的狀態。
下面的截圖顯示了由 DT10 生成了幾個視圖,這些視圖能夠幫助發現並解決問題:
這樣工程師就能夠,比如,在某個信號狀態出現之前、之時、之後檢測代碼變數的轉變情況,或者能夠逐步跟蹤執行路徑,並在硬體出現某些特殊行為之前,發現是在執行了哪一行代碼,哪個分支時出現該問題的。
還有很多其它非常有用的、深入的報告,能夠幫助工程師分析運行時引發軟體問題的根源。
第二部分:根據軟體執行時的特徵,確定 LED 的狀態
在前面的例子中,我們先使用多波示波器來確定 LED 邏輯信號蹤跡所形成的陣列,再用 DT10 將其與軟體當時的運行特徵聯繫起來。
相反地,DT10 也能夠很有效地查出軟體在運行時的具體特徵(如:變數的狀態、出現的某個軟體事件、執行代碼的第幾行)並將其與當時的 LED 信號狀態聯繫起來。所以,我們也能夠看到軟體在特定的狀態下,LED 邏輯信號的情況。
這個例子中,軟體中的變數“g”存儲的是感測器與接近目標之間的計算距離。軟體會根據這個變數值將設備 LED1,2,3 設置為啟動狀態。
我們還能夠搜索 DT10 測試報告,找出變數呈現異常值的情況。
然後在測試報告中點擊有問題的那一步,DT10 就會更新其它使用中視窗,讓所有視窗都顯示該運行時的情況。然後我們就可以通過多波示波器放大來查看邏輯和類比信號的狀態,以瞭解當時的 LED 狀態。
總結
DT10 多波示波器和模擬盒在發現並解決嵌入式軟體的問題方面有非常獨特的能力。它的功能類似於邏輯分析器和示波器,可以讓軟體工程師看到代碼的執行情況。但是 DT10 多波示波器是專門為嵌入式軟體設計的,所以它的安裝和配置更為簡便。
嵌入式開發項目過程中經常會遇到一些非常難以重現的問題,DT10 的解決方案可以對這些問題進行追蹤,幫助解決該問題。