(深圳航天科技創(chuàng)新研究院,深圳 518057)
在單片機調(diào)試過程中,能夠實時地觀測某些變量的值,對調(diào)試工作是十分重要的。它既可以讓開發(fā)人員了解程序的運行情況,又可以反映出整個系統(tǒng)的動態(tài)信息。
以往,常見的實現(xiàn)方式主要有兩種。一種是通過通信接口(如串口、USB)將要觀測的變量發(fā)送到上位機中。上位機中運行一些調(diào)試助手類的工具,以數(shù)值或者波形的方式實現(xiàn)變量的觀測。這種方式需要在軟件中增加額外的代碼,且占用部分通信接口及MCU的運行時間。另一種方式是用編譯器(如IAR,KEIL)提供的一些觀測窗口功能。但多數(shù)情況下,編譯器提供的功能有限,往往只能實現(xiàn)對變化速率很慢的變量的簡單查看。
STM-Studio是意法半導體專門為STM32開發(fā)的一款變量實時觀測工具。其通過ST-LINK與STM32相連,除調(diào)試接口外,不會占用額外的引腳,且不需要對原程序做任何修改,大大地方便了軟件調(diào)試工作。
STM-Studio通過實時地讀取和顯示變量來調(diào)試和診斷STM32程序。它運行在PC上,通過ST-LINK與單片機相連。STM-Studio是一種非侵入性的工具,完全保存了程序的實時性,十分適合調(diào)試一些不能被暫停的程序,如電機控制程序等,并且可以多種圖形視圖。
主要功能有:
① 可以運行于各種Windows系統(tǒng)上。
② 通過ST-LINK與STM32相連(支持JTAG或SWD協(xié)議)。
③ 在程序運行時,從RAM中以非侵入的方式讀取變量。
④ 從ELF文件中解析調(diào)試信息。
⑤ 兩種類型觀測方式。
a. Variable viewer——以示波器形式顯示實時波形;
b. TouchPoint viewer——將兩個變量組合成一個二維坐標系的坐標,顯示點圖;
⑥ 將觀測的數(shù)據(jù)記錄成文件,并且可以在工具中進行回放。
編譯器在編譯完工程后,會產(chǎn)生ELF文件,不同編譯器的輸出文件會有所不同。如在IAR中,可以選擇產(chǎn)生*.out文件。
運行STM-Studio,點擊Import variales from executable,在可執(zhí)行文件框中選擇工程輸出的ELF文件,STM-Studio會自動識別里面的全局變量,并以列表形式顯示出來,如圖1所示。
圖1 導入ELF文件
在圖1中,選擇要觀測的變量,而后點擊Import,在軟件主界面的Display Variables settings窗口中,便可以看到添加進來的變量列表,如圖2所示,列表中包含了變量的部分信息,如內(nèi)存地址、數(shù)據(jù)類型等。
圖2 變量列表
用戶可以對STM-Studio的觀測做許多配置,以便更好地適合自己需求。這些配置主要包括——觀測數(shù)據(jù)的采樣率、采樣范圍和日志文件的存儲位置等。
首先,用戶可在Acquisition rate框中,輸入希望的數(shù)據(jù)采樣速率,最小為1 ms。但是,受制于ST-LINK的通信速率以及變量的數(shù)量和字長,最終的采樣率不一定能達到用戶期望的值。在日志文件中,會包含有每個采樣點的相對時間信息,用戶可從中獲得真實的采樣速率。
然后,在Variable selection選項中,用戶可以選擇軟件采樣的范圍。此處推薦選擇最后一個選項——Acquire only variables used by visible viewers。因為這個選項是三個選項中采樣范圍最小的一個,因此,采樣率最有保障。
最后,在Log file框中,選擇日志文件要存放的位置。觀測功能開始后,軟件會在相應位置創(chuàng)建一個文件,用于記錄數(shù)據(jù)。每次重新開始觀測功能,軟件都會清空該文件原來的數(shù)據(jù)。
以上是幾個常用的配置,除了這幾項,STM-Studio還有許多其它配置,比如設置觸發(fā)功能、與ST-LINK的連接設置等。
STM-Studio允許用戶創(chuàng)建多個觀測窗口,每個窗口顯示不同的變量組合。在Viewers settings中點擊右鍵,選擇New viewer便創(chuàng)建了一個新的窗口。各個窗口間也可以有多種組合方式,如圖3所示,創(chuàng)建了3個窗口,且將窗口2和窗口3單獨出來。
圖3 多窗口
在第2.1節(jié)中的變量列表里面,選擇變量,并在右鍵菜單Send to中指定變量使用窗口。在窗口的底部,會顯示有哪些變量加入了該窗口,以及對應的曲線是什么顏色。
A/D采樣是在開發(fā)中經(jīng)常用到的功能。有時,需要實時觀測A/D采集的數(shù)據(jù)或者記錄數(shù)據(jù)做一些分析。實例展示一個使用STM32F767的ADC采集信號發(fā)生器產(chǎn)生的正弦信號應用。
首先編寫一個A/D采集的程序,在程序中,ADC的一個通道以1 KHz的頻率采集信號發(fā)生器輸出端的信號,并將其轉換成電壓值,該值以float型存儲,命名為adc_value。然后編譯工程,并按前面描述,將變量加入到觀測窗口中。最后進行下載程序,并運行STM-Studio,得到如圖4所示的觀測曲線。 得到的日志文件如圖5所示。
圖4 觀測曲線
圖5 日志文件
參考文獻
[1] ST.Getting started with STM-STUDIO,2014.