1. 程式人生 > >STC Monitor-51的微控制器線上模擬除錯(轉)

STC Monitor-51的微控制器線上模擬除錯(轉)

  • 關鍵字

         IAP15F2K61S2    STC Monitor-51    線上模擬    監控程式

  • 摘要

        51核心微控制器線上模擬除錯是一種取代專業模擬器的有效手段。利用ISP/IAP方法和STC Monitor-51監控程式,以及微控制器整合開發環境Keil C51的線上模擬功能的支援,STC公司的IAP15F2K61S2微控制器實現了線上模擬除錯功能,為微控制器教學和應用開發提供了一條新的途徑。

  • 引言

        當今很多院校中,微控制器的教學仍以經典的51核心微控制器為主。其實驗與應用開發中最重要的環節是軟、硬體綜合除錯,通常採用的方法主要有兩種:一種是使用模擬器,優點是功能齊全,但是價格較高,一般廠家研發採用;另一種是使用軟體模擬和晶片直接燒寫驗證的方法,其成本雖然低,但在程式或硬體出現疑難問題時,很難找到原因。         實際上,還有一種成本低且具有線上模擬除錯功能的技術是線上模擬除錯,它特別適合初學者。“線上模擬除錯”是指:通過Keil C51編譯器,結合微控制器中的監控程式,對系統的應用程式和硬體進行模擬除錯,可以讓微控制器以單步、斷點、全速等執行模式來執行程式。線上模擬除錯是微控制器應用開發過程中的高效方法,國內STC公司的51核心微控制器IAP15F2K61S2便具有線上模擬除錯功能。

     1、線上模擬除錯概述

        Keil C51編譯器開放了偵錯程式與目標晶片的介面,只要晶片廠商提供自己特有的驅動程式(動態連結庫DLL),就能使Keil偵錯程式在不改變圖形介面的情況下支援相應的硬體模擬除錯。         STC Monitor-51是STC公司開發的內嵌Keil C51編譯器的目標系統除錯模組,它是一個實時監控程式,可利用PC機的USB口與目標端進行通訊。線上模擬除錯系統的結構示意圖如圖1所示。

圖1 線上模擬除錯系統的結構示意圖

        PC機端由Keil偵錯程式和STC Monitor-51的驅動程式stcmon51.DLL組成,stcmon51.DLL是STC公司自主開發的Keil模擬驅動協議,功能相比於 Keil自帶的Mon51.DLL有較大的突破,例如:更改通訊介面為真正的USB口,支援Keil Flash Download功能,支援軟體復位,增加斷點數量等。目標端由USB轉串列埠晶片CH340、51核心微控制器及STC Monoitor-51監控程式組成。Keil偵錯程式將使用者的除錯指令通過PC機的USB口傳送給目標端;目標端的USB轉串列埠晶片將其轉換為TTL電平後傳送給微控制器,最後由微控制器中駐留的STC Monitor-51監控程式分析並執行。

     2、線上模擬除錯實現

      2.1 IAP15F2K61S2的儲存器結構

        STC Monitor-51具有載入並執行使用者程式的功能,所以要求微控制器的程式儲存器為Flash ROM,並具有ISP功能。ISP(In System Programming,在系統程式設計)指電路板上器件不用取出,就可以寫入使用者程式碼,已經程式設計的晶片也可以用ISP方式擦除或再程式設計。         IAP15F2K61S2微控制器的程式儲存器與資料儲存器是獨立編址的。IAP15F2K61S2微控制器內部在物理上有4個相互獨立的儲存器空間;程式儲存器(程式Flash)、片內基本RAM、片內擴充套件RAM與EEPROM(資料Flash)。IAP15F2K61S2微控制器片內集成了61 KB的程式Flash儲存器,其地址為0000H~F3FFH。使用者可以使用的最大程式空間為55 KB,整個程式Flash儲存器的分佈圖如圖2所示。

圖2 IAP15F2K61S2程式FLASH儲存器的分佈圖

        很多微控制器在出廠時已經將具有Boot loader功能的程式固化在系統區中,因此無需程式設計器就可通過ISP下載軟體將使用者程式下載到Flash ROM中。STC公司的微控制器可以進行ISP序列下載程式,就是因為系統區中有晶片出廠時就已經固化的ISP引導碼。如果想要下載應用程式至微控制器,先要在下載軟體介面上進行相應選擇,然後再上電,當微控制器檢測到上位機中有特定的下載條件時,便啟用ISP下載功能將程式下載至使用者程式區;否則,微控制器便會從使用者應用程式區中開始執行程式碼。         STC公司的最新ISP下載軟體stc-isp-15xx-v6.77.exe還可以將STC Monoitor-51監控程式下載到監控程式區,從而實現線上模擬除錯功能。

      2.2 IAP15F2K61S2的ISP和IAP實現

        線上模擬除錯功能的實現依賴於使用者系統內部的監控程式和PC機上的下載程式。其具體實現主要利用IAP(In Applicatin Programming,在應用程式設計)技術,即在程式執行時程式儲存器可由程式自身進行擦寫。IAP15F2K61S2微控制器的IAP功能,與以下幾個特殊功能暫存器有關。         IAP_DATA:ISP/IAP資料暫存器,從Flash讀出的資料放在此處,寫入Flash的資料也需放在此處。         IAP_ADDRH:ISP/IAP地址暫存器高8位。         IAP_ADDRL:ISP/IAP地址暫存器低8位。         IAP_CMD:ISP/IAP命令暫存器,須IAP_TRIG觸發方可生效。         IAP_TRIG:ISP/IAP命令觸發暫存器。         IAP_CONTR:ISP/IAP控制暫存器。         當IAPEN(IAP_CONTR.7)=1時,只有對IAP_TRIG先寫入0x5A、再寫入0xA5,ISP/IAP命令才會生效。         ISP/IAP操作完成後,IAP命令暫存器、IAP地址高8位地址暫存器和低8位地址暫存器的內容都不變。如果需要對下一個地址的資料進行 ISP/IAP操作,則要手動將該地址的高8位和低8位對應寫入地址暫存器中。每次進行IAP操作時,都要對IAP_TRIG先寫入0x5A,再寫入 0xA5,ISP/IAP命令才會生效。         ISP/IAP命令暫存器IAP_CMD的格式如表1所列。通過對命令暫存器IAP_CMD的MS1和MS0位進行賦值,可以實現相應功能。

表1 IAP_CMD模式選擇

        IAP15F2K61S2程式在使用者應用程式區時,不僅可以對資料Flash區(EEPROM)進行位元組讀、位元組程式設計和扇區擦除,而且可以修改使用者應用程式區。扇區擦除程式示意性程式碼如下所示,其他ISP/IAP操作類似。         IAP_ADDRH=EE_address/256; //送扇區地址高位元組(地址需要改變時才需重新送地址)         IAP_ADDRL=EE_address%256; //送扇區地址低位元組(512位元組/扇區)         IAP_CONTR=0xS0; //設定等待時間,允許ISP/IAP操作,送一次就夠         IAP_CMD=3; //送扇區擦除命令,命令不需改變時,不需重新送命令         IAP_TRIG=0x5A;         IAP_TRIG=0xA5; //ISP/IAP觸發命令

      2.3 監控程式

        為配合Keil偵錯程式的硬體模擬除錯,監控程式應具備相應的單步、斷點設定、ID讀取等功能。模擬開始時,監控程式接收命令,判斷相應的功能操作,再執行。STCMonoit or-51監控程式只能在程式中給定點處監測,除錯時需要佔用程式空間,屬於一種侵入式的除錯,其工作流程如圖3所示。

圖3 STC Monoitor-51監控程式工作流程圖
      2.4 IAP15F2K61S2線上模擬除錯過程

        以前的51核心微控制器線上模擬除錯時,需要根據硬體結構,修改應用程式和Keil C51整合開發環境的引數,初學者不易掌握,從而影響普及推廣。STC公司的IAP15F2K61S2是十分易用的線上模擬除錯晶片,只需利用最新ISP 下載軟體stc-isp-15xx-v6.77.exe,將監控程式下載到微控制器中,就可輕鬆地實現線上模擬除錯功能。IAP15F2K61S2線模擬除錯過程如下。

        2.4.1 安裝模擬驅動

        執行ISP下載軟體stc-isp-15xx-v6.77.exe,在“Keil模擬設定”頁面中單擊“新增MCU型號到Keil中”按鈕,在出現的目錄選擇視窗中,確定到Keil的安裝目錄(一般可能為“C:\Keil\”)。新增標頭檔案的同時也會安裝STC的STC Monitor-51模擬驅動stcmon51.DLL。

        2.4.2 建立模擬晶片

        將一顆IAP15F2KG1S2通過目標板連線到電腦的USB口,然後在“Keil模擬設定”頁面中單擊“將IAP15F2K61S2設定為模擬晶片”按鈕,再給目標板上電,當程式下載完成後模擬器便製作完成。

        2.4.3 建立專案工程

        若上一步的驅動安裝成功,則在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”即可開始線上模擬除錯。若硬體連線無誤,將會進入到類似於常用的軟體除錯,並在命令輸出視窗顯示當前的模擬驅動版本號和當執行、全速執行等進行模擬除錯。除錯中的注意事項主要有:斷點設定的個數不要太多,否則會影響除錯速度;若模擬原始碼為彙編程式,則第一條語句必須是長跳轉語句,不能使用其他語句;模擬中,不能使用與P3.0和P3.1引腳相關的中斷和功能。

  • 結語

結合IAP15F2K61S2微控制器與監控程式STC Monoitor-51、Keil C51整合開發軟體,提供了一種成本低、功能強的線上硬體模擬除錯技術,降低了使用微控制器開發工具的門檻,特別適用於微控制器初學者以及學校的教學活動,也為選用51核心微控制器進行應用開發帶來了極大便利,只需下載監控程式碼就可以進行線上模擬除錯。