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