車立新
【摘 要】介紹了一種單片機(jī)的仿真調(diào)試的方法,設(shè)計(jì)人員可以在沒(méi)有仿真器的情況下采用合理的措施,檢查單片機(jī)內(nèi)部程序的正確性:還可以在已有的目標(biāo)板上設(shè)計(jì)開發(fā)后續(xù)的程序,有效縮短產(chǎn)品設(shè)計(jì)的周期,達(dá)到降低設(shè)計(jì)成本的目的。
【關(guān)鍵詞】單片機(jī);仿真調(diào)試
在應(yīng)用單片機(jī)開發(fā)設(shè)計(jì)電子產(chǎn)品的時(shí)候,絕大多數(shù)的設(shè)計(jì)人員都要使用仿真器。設(shè)計(jì)者在編制調(diào)試程序的時(shí)候,可以通過(guò)仿真器跟蹤單片機(jī)內(nèi)部程序的運(yùn)行流程,檢查程序的每一步執(zhí)行的情況都否滿足設(shè)計(jì)者的初衷。同時(shí),設(shè)計(jì)者可以直觀全面地得到單片機(jī)內(nèi)部程序運(yùn)行中的各項(xiàng)參數(shù)和數(shù)據(jù),進(jìn)而判斷所設(shè)計(jì)軟件程序的正確性和有效性,大大提高了程序設(shè)計(jì)的效率??梢哉f(shuō),仿真器是設(shè)計(jì)人員調(diào)試程序最有力的助手。
仿真器固然有很多的優(yōu)點(diǎn),筆者這里卻另辟蹊徑,在程序設(shè)計(jì)調(diào)試過(guò)程中拋開仿真器,單獨(dú)談一談單片機(jī)的“在線仿真調(diào)試”方案,僅供單片機(jī)愛好者參考。
所謂的單片機(jī)的“在線仿真調(diào)試”方案,實(shí)際上就是我們把測(cè)試程序燒入單片機(jī)芯片中,讓單片機(jī)脫離仿真器獨(dú)立運(yùn)行。在運(yùn)行過(guò)程中,設(shè)計(jì)者可以通過(guò)合理有效的手段獲取單片機(jī)實(shí)際運(yùn)行過(guò)程中外圍器件的一些狀態(tài)和必要數(shù)據(jù),檢查單片機(jī)運(yùn)行的程序是否符合設(shè)計(jì)要求,即所謂的“在線仿真調(diào)試”。
這種“在線仿真調(diào)試”的手段雖然得到的數(shù)據(jù)信息有限,但是也能得到一些必要的和關(guān)鍵的信息,對(duì)于熟練的設(shè)計(jì)人員也是可行的。獲取信息的手段包括檢查單片機(jī)外部連接發(fā)光二極管的狀態(tài)、數(shù)碼管或者液晶的顯示內(nèi)容、串行通訊的必要數(shù)據(jù)等。設(shè)計(jì)者可以根據(jù)所得到的狀態(tài)或數(shù)據(jù)來(lái)驗(yàn)證程序運(yùn)行的正確性。如果程序設(shè)計(jì)有疏漏,設(shè)計(jì)者需要重新調(diào)整編輯軟件程序,燒入單片機(jī)后再次測(cè)試,直到圓滿完成開發(fā)任務(wù)。
要想做到“在線仿真調(diào)試”,必須滿足如下兩個(gè)條件:(1)單片機(jī)內(nèi)部的程序存儲(chǔ)器具有FLASH功能,可以多次地把程序燒入單片機(jī);(2)設(shè)計(jì)人員必須對(duì)所使用單片機(jī)的內(nèi)部資源及周邊功能都比較熟悉,能夠迅速地編制出必要的測(cè)試程序。
從加快設(shè)計(jì)周期上講,有些新開發(fā)的產(chǎn)品與原有產(chǎn)品硬件相近,軟件功能差別也不大,開發(fā)任務(wù)時(shí)間又偏緊,設(shè)計(jì)人員也可以采用“在線仿真調(diào)試”的方式,即不必重畫仿真目標(biāo)板,直接設(shè)計(jì)生產(chǎn)用的線路板,只是通過(guò)改動(dòng)原有的軟件程序來(lái)適應(yīng)新的產(chǎn)品要求。
從安全性上講,有些情況下直接連接仿真器運(yùn)行很危險(xiǎn),如目標(biāo)板上有強(qiáng)電接入,使得強(qiáng)電與仿真器之間沒(méi)有電氣隔離,容易損壞仿真器的硬件,即使把強(qiáng)電用隔離變壓器處理也不能保證絕對(duì)安全;有些場(chǎng)合程序運(yùn)行時(shí)不允許中斷,例如,在動(dòng)態(tài)測(cè)試傳動(dòng)設(shè)備時(shí),如果程序在斷點(diǎn)停止運(yùn)行后會(huì)損壞相關(guān)設(shè)備,進(jìn)而造成巨大的損失。這樣就必須用“在線仿真調(diào)試”來(lái)達(dá)到目的。
還有些無(wú)奈的情況,有些產(chǎn)品具有停電低功耗運(yùn)行功能,這種低功耗工作方式仿真器無(wú)法實(shí)現(xiàn)仿真運(yùn)行,只有脫機(jī)運(yùn)行才能完成低功耗運(yùn)行功能的測(cè)試工作;有些單片機(jī)廠家的單片機(jī)內(nèi)部資源豐富,但是相應(yīng)的仿真器很昂貴,動(dòng)輒數(shù)萬(wàn)元人民幣,租用和購(gòu)買都不合適。如果研發(fā)項(xiàng)目需要幾個(gè)人共同開發(fā),那么在研發(fā)初期無(wú)法實(shí)現(xiàn)人手一臺(tái)仿真器,就只有使用“在線仿真調(diào)試”的方式來(lái)節(jié)省研發(fā)設(shè)備的資金投入,并且可以不受場(chǎng)地限制,只需一臺(tái)計(jì)算機(jī)和一個(gè)目標(biāo)板,再外加一個(gè)串行TTL/RS232接口通訊模塊就可以了。
“在線仿真調(diào)試”的方法給我們提供數(shù)據(jù)信息的方式有兩種:一種是應(yīng)用于數(shù)據(jù)量較少的系統(tǒng),直接借助目標(biāo)板上的顯示器件(數(shù)碼管或者液晶)就可以獲取一些必要的信息,更有甚者,通過(guò)發(fā)光二極管也可以表達(dá)很多的狀態(tài);另一種是應(yīng)用于數(shù)據(jù)量較大的系統(tǒng),設(shè)計(jì)者在程序中先把數(shù)據(jù)組織好,然后借助于單片機(jī)上的異步通訊接口,通過(guò)串行TTL/RS232接口通訊模塊把數(shù)據(jù)傳送給計(jì)算機(jī),在計(jì)算機(jī)上分析所得到的數(shù)據(jù)。這就像使用仿真器調(diào)試程序一樣,通訊時(shí)就相當(dāng)于使用仿真器運(yùn)行程序至所設(shè)斷點(diǎn)處,所得數(shù)據(jù)就相當(dāng)于仿真器所得到的相應(yīng)寄存器及變量的數(shù)值,唯一的區(qū)別就是這里介紹的斷點(diǎn)是軟斷點(diǎn),程序在執(zhí)行斷點(diǎn)后還可以繼續(xù)運(yùn)行。當(dāng)然,設(shè)計(jì)者可以連續(xù)觀察多組數(shù)據(jù),更好地分析程序運(yùn)行的流程。
我們?cè)诶猛ㄓ嵔涌凇霸诰€仿真調(diào)試”的時(shí)候,應(yīng)把數(shù)據(jù)組織得有一定的規(guī)律,這樣就可以迅速直觀地檢查運(yùn)行結(jié)果,進(jìn)而調(diào)整相應(yīng)的程序段,為下一次的“在線仿真調(diào)試”做準(zhǔn)備。這樣的“在線仿真調(diào)試”雖然每次都得把程序?qū)戇M(jìn)單片機(jī)中,過(guò)程略顯繁瑣,但是所設(shè)置的軟斷點(diǎn)并不影響程序的連續(xù)執(zhí)行,我們可以把多組數(shù)據(jù)放在一起比對(duì)查看,最大程度發(fā)揮“在線仿真調(diào)試”的優(yōu)勢(shì)。
“在線仿真調(diào)試”,實(shí)質(zhì)上就是設(shè)計(jì)者編制并運(yùn)行測(cè)試程序,單片機(jī)在程序的運(yùn)行過(guò)程中有效地給設(shè)計(jì)者反饋出必要的數(shù)據(jù)信息,然后通過(guò)有效地調(diào)整單片機(jī)的程序來(lái)達(dá)到最理想的結(jié)果。這就要求設(shè)計(jì)者的產(chǎn)品設(shè)計(jì)經(jīng)驗(yàn)豐富,處理問(wèn)題時(shí)頭腦靈活,對(duì)程序運(yùn)行過(guò)程中發(fā)生的異常情況心中有數(shù),并在最短的時(shí)間調(diào)整程序來(lái)完成進(jìn)一步的“在線仿真調(diào)試”。
以上僅是一家之言,僅供參考。總之設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)的時(shí)候,一定要靈活地選取最安全最方便最有效的方案,不必過(guò)于教條,最主要的是要不斷地積累經(jīng)驗(yàn),在滿足產(chǎn)品設(shè)計(jì)要求的同時(shí)提升自己的價(jià)值。
【參考文獻(xiàn)】
[1]單片機(jī)原理系統(tǒng)設(shè)計(jì)與開發(fā)應(yīng)用.中國(guó)科學(xué)技術(shù)大學(xué)出版社,1995.
[2]何立民.單片機(jī)高級(jí)教程.北京航空航天出版社,2000.
[3]單片機(jī)與嵌入式系統(tǒng)應(yīng)用.北京航空航天大學(xué)出版社,2006.9.
[4]電子技術(shù)應(yīng)用.華北計(jì)算機(jī)系統(tǒng)工程研究所,2012.8.