一、文檔背景
對于工程中變量的變化情況,是大部分工程師在項目開發過程中經常需要注意的。而目前大部分的工程師的做法一般都是通過串口打印變量的值,通過打印出來的變量值的情況從而去判斷變量的變化是否正常。這樣的方式,只是展示當前時刻變量的值而已,而對于變量的變化情況并不直觀。
Keil MDK的Logic Analyzer功能是一種強大的調試工具,允許開發者實時觀察和分析嵌入式系統中的變量、寄存器和內存位置的變化情況。通過圖形化的波形顯示,開發者可以直觀地查看數據隨時間的變化,幫助識別代碼運行中的邏輯問題和性能瓶頸。這種可視化的調試方式大大提高了開發和調試效率,尤其在處理復雜的嵌入式系統時,能更迅速地定位和解決問題,確保系統穩定高效運行。
二、 Logic Analyzer功能的實現
(一) 、軟硬件環境:
1. 軟件環境:Keil MDK 5.38a
2. 硬件環境:ULINK Pro、STM32F103開發板
3. 電腦環境:windows 11
(二) 、Logic Analyzer功能的使能:
1. 要想啟動Logic Analyzer功能,需要使能仿真器的Trace功能(如圖2-1)。
注意:Logic Analyzer功能在這里使用的SW接口進行調試,非ETM接口。Logic Analyzer功能使能Trace的時候勾選Trace Enable選項即可,和性能分析、代碼覆蓋率不一樣,不需要芯片具備Trace數據端口。

圖2-1
(三) 、Logic Analyzer功能的使用
1. Logic Analyzer窗口可以通過菜單中View->Analysis Windows->Logic Analyzer去打開(如圖2-2),或者可以通過工具欄中System Analysis WIndows的圖標去打開Logic Analyzer窗口(如圖2-3)。

圖2-2

圖2-3
2. 想要將變量添加到Logic Analyzer窗口中,可以在代碼中直接選中對應的變量,然后,右鍵選擇Add ‘xxx’ to ...->Analyzer。然后,我們就可以在Logic Analyzer窗口中看到變量被添加到進去了(如圖2-4)。或者也可以通過watch窗口中去添加(如圖2-5)。

圖2-4

圖2-5
3. 如果在前面的步驟中沒有使能Trace功能的話,在添加變量到Logic Analyzer窗口時候就會提示“Cannot Add ‘xxx’ to Logic Analyzer”,并且在Command窗口中會提示“*** error 129: Trace is disabled!”(如圖2-6)。

圖2-6
4. 添加好變量到Logic Analyzer窗口后,運行程序后,就會顯示出當前變量的變化情況了。(如圖2-7)注意:這里不會實時顯示波形,需要程序停止運行后,才會顯示出波形。并且只能顯示全局變量和靜態變量的變化情況。

圖2-7
三、Logic Analyzer窗口解析

圖3-1
(一) 、上圖就是整個Logic Analyzer窗口的。窗口中主要由工具欄和顯示窗口組成的。
(二) 、工具欄包含以下的內容
1. Setup按鈕:打開一個Setup Logic Analyzer對話框來定義用于記錄和配置信號輸出的變量。可以通過信號的上下文菜單更改一些配置設置。(如圖3-2)
a) Current Logic Analyzer Signals:顯示當前被添加到 Logic Analyzer 中的變量或者信號
b) Signal Display:配置信號波形的外觀。
i) Display Type:設置信號顯示輸出模式為Analog(模擬量)、BIt(0或1)或狀態量(信號轉換)。根據數據的類型選擇即可。
ii) Color:選擇數據信號波形顯示的顏色
iii) Hexadecimal Display:顯示以HEX格式顯示信號值。當禁用時,顯示十進制值。
c) Display Range:顯示類型模擬配置信號幅度范圍。范圍值可以用十六進制或十進制格式指定。
i) Max:波形顯示的最大值
ii) Min:波形顯示的 最小值
d) Display Formula(signal & Mask)>> Shift:顯示信號值的特定位
i) And Mask:顯示的信號值指定與掩碼
ii) Shift Right:顯示的信號值指定右移因子
e) Export/Import:
i) Export Signal Definitions:將當前的信號定義(不是信號記錄)保存在一個“*. uvl”文件中。
ii) Import Signal Definitions:導入先前保存在“. uvl”文件中的信號定義。
f) Kill All:清除Logic Analyzer中的全部信號。

圖3-2
2. Load:將之前記錄并保存的信號導入到文件(*. UVLA)中。(如圖3-3)
3. Save:將信號以專有格式(.UVLA)存儲在一個文件中,或者以逗號分隔的文件格式(.CSV),或以制表符分隔的文件格式(*.TAB)存儲,以便將來進行分析。(如圖3-3)

圖3-3
4. 時間字段顯示(如圖3-4)
a) Min Time:設置顯示的信號記錄緩沖區中的第一個時間戳。當μVision記錄信號時,時間從零開始,并不斷向前滾動。
b) Max Time:信號記錄緩沖區的最后一個時間戳。它顯示自信號記錄開始的時間。
c) Grid:設置兩條柵格線之間的時間間隔。

圖3-4
5. Zoom縮放按鈕改變顯示的時間范圍(如圖3-5):
a) In:放大信號以獲得參考線的詳細視圖。兩條網格線之間的時間間隔變小了。
b) Out:將信號放大,以便更好地查看參考線。兩條網格線之間的時間間隔變大。
c) All:顯示了信號記錄緩沖區的完整內容。

圖3-5
6. Min/Max按鈕配置顯示的信號幅度范圍(如圖3-6)
a) Auto:根據信號記錄緩沖數據自動配置信號幅度范圍。
b) Undo:可恢復在單擊“Auto”按鈕之前存在的幅度范圍設置。

圖3-6
7. Update Screen按鈕用于刷新、停止或清除屏幕內容。(如圖3-7)
a) Start/Stop:Stop停止更新顯示。μVision繼續填充信號記錄緩沖區。單擊按鈕時,該按鈕將其樣板文本更改為Start。Start用來自信號記錄緩沖區和傳入數據的數據更新顯示。單擊按鈕時,該按鈕將其樣板文本更改為Stop。
b) Clear:清空屏幕和數據緩沖區。

圖3-7
8. Transition按鈕將參考線固定到下一個過渡點。(如圖3-8)
a) Priv:將參考線移動到前一個過渡點。
b) Next:將參考線移動到后續的過渡點。

圖3-8
9. Jump to按鈕可導航到與鼠標光標對應的代碼或跟蹤數據。(如圖3-9)
a) Code:打開導致信號轉換的代碼行處的反匯編或源代碼窗口。當程序計數器值被記錄時,該按鈕處于活動狀態。
b) Trace:打開“Trace Data”和“Trace Navigation”窗口。跟蹤記錄與邏輯分析器同步。
10. SIgnal Info:當鼠標懸停在信號點上時,信號信息啟用信號細節。(如圖3-10)
11. Show Cycles:啟用周期信息,這些信息顯示在時間戳軸中。(如圖3-10)
12. Amplitude:啟用參考振幅線,當Cursor啟用時,也啟用鼠標振幅線。(如圖3-10)
13. Cursor:使鼠標光標行能夠顯示鼠標位置的信號值,并與參考行進行增量。(如圖3-10)
14. Timestamps Enable:啟用動態激活時間戳。(如圖3-10)

(如圖3-10)
四、討論分析
1. Logic Analyzer可以添加什么信號或者變量?
可以添加靜態變量和全局變量。可以添加在Symbol Windows的各個端口的值。

圖4-1
2. 關于端口值的變化如何查看?
請參考:0101TEC20230814-Keil MDK-邏輯分析
五、結論
Keil MDK的Logic Analyzer功能,可以有效地降低客戶在對于數據或者端口數據的檢測的工作難度。通過Logic Analyzer功能,直觀地通過波形就可以分析出變量的波動情況。確認是否存在數據異常的狀態。還可以有參考性地根據時間戳判斷異常發生的時間等信息。

首頁 > 資源中心 > FAQ
