STC Monitor-51的單片機在線仿真調試
摘要:51內核單片機在線仿真調試是一種取代專業(yè)仿真器的有效手段。利用ISP/IAP方法和STC Monitor-51監(jiān)控程序,以及單片機集成開發(fā)環(huán)境Keil C51的在線仿真功能的支持,STC公司的IAP15F2K61S2單片機實現(xiàn)了在線仿真調試功能,為單片機教學和應用開發(fā)提供了一條新的途徑。
本文引用地址:http://m.butianyuan.cn/article/201610/307274.htm引言
當今很多院校中,單片機的教學仍以經(jīng)典的51內核單片機為主。其實驗與應用開發(fā)中最重要的環(huán)節(jié)是軟、硬件綜合調試,通常采用的方法主要有兩種:一種是使用仿真器,優(yōu)點是功能齊全,但是價格較高,一般廠家研發(fā)采用;另一種是使用軟件仿真和芯片直接燒寫驗證的方法,其成本雖然低,但在程序或硬件出現(xiàn)疑難問題時,很難找到原因。
實際上,還有一種成本低且具有在線仿真調試功能的技術是在線仿真調試,它特別適合初學者。“在線仿真調試”是指:通過Keil C51編譯器,結合單片機中的監(jiān)控程序,對系統(tǒng)的應用程序和硬件進行仿真調試,可以讓單片機以單步、斷點、全速等運行模式來執(zhí)行程序。在線仿真調試是單片機應用開發(fā)過程中的高效方法,國內STC公司的51內核單片機IAP15F2K61S2便具有在線仿真調試功能。
1 在線仿真調試概述
Keil C51編譯器開放了調試器與目標芯片的接口,只要芯片廠商提供自己特有的驅動程序(動態(tài)鏈接庫DLL),就能使Keil調試器在不改變圖形界面的情況下支持相應的硬件仿真調試。
STC Monitor-51是STC公司開發(fā)的內嵌Keil C51編譯器的目標系統(tǒng)調試模塊,它是一個實時監(jiān)控程序,可利用PC機的USB口與目標端進行通信。在線仿真調試系統(tǒng)的結構示意圖如圖1所示。
PC機端由Keil調試器和STC Monitor-51的驅動程序stcmon51.DLL組成,stcmon51.DLL是STC公司自主開發(fā)的Keil仿真驅動協(xié)議,功能相比于 Keil自帶的Mon51.DLL有較大的突破,例如:更改通信接口為真正的USB口,支持Keil Flash Download功能,支持軟件復位,增加斷點數(shù)量等。目標端由USB轉串口芯片CH340、51內核單片機及STC Monoitor-51監(jiān)控程序組成。Keil調試器將用戶的調試指令通過PC機的USB口傳送給目標端;目標端的USB轉串口芯片將其轉換為TTL電平后發(fā)送給單片機,最后由單片機中駐留的STC Monitor-51監(jiān)控程序分析并執(zhí)行。
2 在線仿真調試實現(xiàn)
2.1 IAP15F2K61S2的存儲器結構
STC Monitor-51具有載入并執(zhí)行用戶程序的功能,所以要求單片機的程序存儲器為Flash ROM,并具有ISP功能。ISP(In System Programming,在系統(tǒng)編程)指電路板上器件不用取出,就可以寫入用戶代碼,已經(jīng)編程的芯片也可以用ISP方式擦除或再編程。
IAP15F2K61S2單片機的程序存儲器與數(shù)據(jù)存儲器是獨立編址的。IAP15F2K61S2單片機內部在物理上有4個相互獨立的存儲器空間;程序存儲器(程序Flash)、片內基本RAM、片內擴展RAM與EEPROM(數(shù)據(jù)Flash)。IAP15F2K61S2單片機片內集成了61 KB的程序Flash存儲器,其地址為0000H~F3FFH。用戶可以使用的最大程序空間為55 KB,整個程序Flash存儲器的分布圖如圖2所示。
很多單片機在出廠時已經(jīng)將具有Boot loader功能的程序固化在系統(tǒng)區(qū)中,因此無需編程器就可通過ISP下載軟件將用戶程序下載到Flash ROM中。STC公司的單片機可以進行ISP串行下載程序,就是因為系統(tǒng)區(qū)中有芯片出廠時就已經(jīng)固化的ISP引導碼。如果想要下載應用程序至單片機,先要在下載軟件界面上進行相應選擇,然后再上電,當單片機檢測到上位機中有特定的下載條件時,便啟用ISP下載功能將程序下載至用戶程序區(qū);否則,單片機便會從用戶應用程序區(qū)中開始執(zhí)行代碼。
STC公司的最新ISP下載軟件stc-isp-15xx-v6.77.exe還可以將STC Monoitor-51監(jiān)控程序下載到監(jiān)控程序區(qū),從而實現(xiàn)在線仿真調試功能。
2.2 IAP15F2K61S2的ISP和IAP實現(xiàn)
在線仿真調試功能的實現(xiàn)依賴于用戶系統(tǒng)內部的監(jiān)控程序和PC機上的下載程序。其具體實現(xiàn)主要利用IAP(In Applicatin Programming,在應用編程)技術,即在程序運行時程序存儲器可由程序自身進行擦寫。IAP15F2K61S2單片機的IAP功能,與以下幾個特殊功能寄存器有關。
IAP_DATA:ISP/IAP數(shù)據(jù)寄存器,從Flash讀出的數(shù)據(jù)放在此處,寫入Flash的數(shù)據(jù)也需放在此處。
IAP_ADDRH:ISP/IAP地址寄存器高8位。
IAP_ADDRL:ISP/IAP地址寄存器低8位。
IAP_CMD:ISP/IAP命令寄存器,須IAP_TRIG觸發(fā)方可生效。
IAP_TRIG:ISP/IAP命令觸發(fā)寄存器。
IAP_CONTR:ISP/IAP控制寄存器。
當IAPEN(IAP_CONTR.7)=1時,只有對IAP_TRIG先寫入0x5A、再寫入0xA5,ISP/IAP命令才會生效。
ISP/IAP操作完成后,IAP命令寄存器、IAP地址高8位地址寄存器和低8位地址寄存器的內容都不變。如果需要對下一個地址的數(shù)據(jù)進行 ISP/IAP操作,則要手動將該地址的高8位和低8位對應寫入地址寄存器中。每次進行IAP操作時,都要對IAP_TRIG先寫入0x5A,再寫入 0xA5,ISP/IAP命令才會生效。
ISP/IAP命令寄存器IAP_CMD的格式如表1所列。通過對命令寄存器IAP_CMD的MS1和MS0位進行賦值,可以實現(xiàn)相應功能。
IAP15F2K61S2程序在用戶應用程序區(qū)時,不僅可以對數(shù)據(jù)Flash區(qū)(EEPROM)進行字節(jié)讀、字節(jié)編程和扇區(qū)擦除,而且可以修改用戶應用程序區(qū)。扇區(qū)擦除程序示意性代碼如下所示,其他ISP/IAP操作類似。
IAP_ADDRH=EE_address/256; //送扇區(qū)地址高字節(jié)(地址需要改變時才需重新送地址)
IAP_ADDRL=EE_address%256; //送扇區(qū)地址低字節(jié)(512字節(jié)/扇區(qū))
IAP_CONTR=0xS0; //設置等待時間,允許ISP/IAP操作,送一次就夠
IAP_CMD=3; //送扇區(qū)擦除命令,命令不需改變時,不需重新送命令
IAP_TRIG=0x5A;
IAP_TRIG=0xA5; //ISP/IAP觸發(fā)命令
2.3 監(jiān)控程序
為配合Keil調試器的硬件仿真調試,監(jiān)控程序應具備相應的單步、斷點設置、ID讀取等功能。仿真開始時,監(jiān)控程序接收命令,判斷相應的功能操作,再執(zhí)行。STCMonoit or-51監(jiān)控程序只能在程序中給定點處監(jiān)測,調試時需要占用程序空間,屬于一種侵入式的調試,其工作流程如圖3所示。
2.4 IAP15F2K61S2在線仿真調試過程
以前的51內核單片機在線仿真調試時,需要根據(jù)硬件結構,修改應用程序和Keil C51集成開發(fā)環(huán)境的參數(shù),初學者不易掌握,從而影響普及推廣。STC公司的IAP15F2K61S2是十分易用的在線仿真調試芯片,只需利用最新ISP 下載軟件stc-isp-15xx-v6.77.exe,將監(jiān)控程序下載到單片機中,就可輕松地實現(xiàn)在線仿真調試功能。IAP15F2K61S2線仿真調試過程如下。
2.4.1 安裝仿真驅動
運行ISP下載軟件stc-isp-15xx-v6.77.exe,在“Keil仿真設置”頁面中單擊“添加MCU型號到Keil中”按鈕,在出現(xiàn)的目錄選擇窗口中,確定到Keil的安裝目錄(一般可能為“C:Keil”)。添加頭文件的同時也會安裝STC的STC Monitor-51仿真驅動stcmon51.DLL。
2.4.2 創(chuàng)建仿真芯片
將一顆IAP15F2KG1S2通過目標板連接到電腦的USB口,然后在“Keil仿真設置”頁面中單擊“將IAP15F2K61S2設置為仿真芯片”按鈕,再給目標板上電,當程序下載完成后仿真器便制作完成。
2.4.3 創(chuàng)建項目工程
若上一步的驅動安裝成功,則在Keil中新建項目工程、選擇芯片型號時,便會有“STC MCU Database”的選擇項,然后從列表中選擇相應的MCU型號(目前STC支持仿真的型號只有STC15F2K60S2),單擊“確定”完成選擇,再按Keil的一般使用方法添加源程序到項目工程中,若編譯無誤,則可以進行下面的項目設置。
2.4.4 硬件仿真驅動選擇
選擇Project中的Opertions for Target’Target1’,進入“Debug”設置頁,在右側的硬件仿真驅動下拉列表中選擇“STC Monitor-51 Driver”項,然后單擊“Settin gs”按鈕,對串口的端口號和波特率進行設置,波特率一般選擇115 200或者57 600。到此設置便完成了。
2.4.5 在線仿真調試
在這個Keil工程下,按下“Ctrl+F5”即可開始在線仿真調試。若硬件連接無誤,將會進入到類似于常用的軟件調試,并在命令輸出窗口顯示當前的仿真驅動版本號和當運行、全速運行等進行仿真調試。調試中的注意事項主要有:斷點設置的個數(shù)不要太多,否則會影響調試速度;若仿真源代碼為匯編程序,則第一條語句必須是長跳轉語句,不能使用其他語句;仿真中,不能使用與P3.0和P3.1引腳相關的中斷和功能。
結語
結合IAP15F2K61S2單片機與監(jiān)控程序STC Monoitor-51、Keil C51集成開發(fā)軟件,提供了一種成本低、功能強的在線硬件仿真調試技術,降低了使用單片機開發(fā)工具的門檻,特別適用于單片機初學者以及學校的教學活動,也為選用51內核單片機進行應用開發(fā)帶來了極大便利,只需下載監(jiān)控代碼就可以進行在線仿真調試。
評論