專利名稱:一種實現(xiàn)對51軟核在線應(yīng)用代碼調(diào)試的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子計算機(jī)技木,特別涉及單片機(jī)調(diào)試技木。
背景技術(shù):
隨著現(xiàn)場可編程邏輯陣列(FPGA)及電子設(shè)計自動化(EDA)技術(shù)的發(fā)展,百萬門級的FPGA、可重構(gòu)的嵌入式MCU、功能復(fù)雜的IP核(Intellectual Property core)及各種功能強(qiáng)大的EDA工具的出現(xiàn),實現(xiàn)將MCU、存儲器和ー些外圍電路集成到ー個芯片成為可能。隨著IP核技術(shù)在FPCA中的應(yīng)用,特別是MCU IP核技術(shù)的發(fā)展。出現(xiàn)了各種性能不同的嵌入式MCU軟核。MCS-51系列MCU是目前應(yīng)用時間最長、最普及、可獲得應(yīng)用資料最多的功能強(qiáng)大的8位MCU。建立8051MCU可綜合IP核對于各種嵌入式系統(tǒng)和片上系統(tǒng)(SOC)的應(yīng)用起到了極大的促進(jìn)作用。針對8051MCU的應(yīng)用前景,出現(xiàn)了幾個比較典型的8051IP核,如DW8051核,OpenCore組織的0C8051及T51核,MC8051核等。這些IP核都是采用硬件描述語言(HDL)描述的軟MCU內(nèi)核,其與エ藝無關(guān),能夠在多種FPGA上進(jìn)行邏輯綜合及實現(xiàn)。如圖I所示,MC8051核結(jié)構(gòu)的最頂層(MC805l_top)將代碼空間ROM(MC8051_ROM)、外部數(shù)據(jù)空間RAMx(MC8051_RAMx)、內(nèi)部存儲空間RAM(MC8051_RAM)、及微處理器核MC8051_cOre封裝在內(nèi)部。實際應(yīng)用中用戶可添加自定義附加邏輯模塊。本發(fā)明的涉及部分主要集中于這ー層次。MC8051核的應(yīng)用程序的一般開發(fā)流程如下I)在keil等單片機(jī)開發(fā)平臺中寫下源代碼,且編譯成hex文件;2) hex文件轉(zhuǎn)化為FPGA中的ROM初始化數(shù)據(jù)文件,如xilinx公司FPGA中ROM數(shù)據(jù)初始化的· coe文件;3)在FPGA開發(fā)工具中基于轉(zhuǎn)化后的文件生成R0M,再把該ROM和MC8051_core源代碼一起執(zhí)行綜合布局布線等,得到可以配置FPGA的下載文件,如xilinx的.bit文件;4)將bit文件下載至FPGA中,進(jìn)行驗證,如果發(fā)現(xiàn)錯誤則需要轉(zhuǎn)回第一歩修改代碼,再重做上述流程。由以上開發(fā)流程可見,MC8051核在實際應(yīng)用中其開發(fā)流程費(fèi)時費(fèi)力I)任意的代碼上的小改動都需要開發(fā)人員從第一歩生成hex文件開始重頭再來
一遍;2)中間步驟太多,如果出現(xiàn)錯誤,不好判斷是開發(fā)流程中哪ー步出錯。也可能是單片機(jī)代碼出錯,也可能是文件轉(zhuǎn)換錯誤,也可能是FPGA代碼出錯。3)開發(fā)人員無法實時監(jiān)控8051內(nèi)部寄存器及變量的變化情況,這就導(dǎo)致軟件錯誤尋找的困難。4)對開發(fā)人員要求較高,需要開發(fā)人員不僅掌握51開發(fā)工具的使用,還要掌握FPGA開發(fā)工具的使用。由于以上原因,當(dāng)需要在MC8051核中開發(fā)實用程序時,往往在代碼的調(diào)試階段耗費(fèi)大量時間和精力,而效果卻并不理想。keil公司的Monitor-51是最為常用的51仿真エ具之一。而MC8051核等51軟核因為其不同于一般實體的51單片機(jī),為軟MCU內(nèi)核的性質(zhì),現(xiàn)有的Monitor-51對51單片機(jī)的在線調(diào)試方法不能用于51軟核。如果MC8051核等51軟核要推廣應(yīng)用,如何高效率地進(jìn)行代碼的調(diào)試是需要首先解決的問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種基于Monitor-51,在51軟核上實現(xiàn)在線應(yīng)用代碼調(diào)試的方法。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,其特征在于,包括以下步驟Monitor-51 預(yù)處理步驟根據(jù)51軟核的工作頻率,設(shè)置Monitor-51監(jiān)控程序的串ロ波特率;將Monitor-51監(jiān)控程序編譯成hex文件,再將hex文件轉(zhuǎn)換為可被51軟核中合并后的外部存儲空間RAMx讀取的初始化文件;51軟核預(yù)處理步驟設(shè)置51軟核的工作頻率;生成51軟核的內(nèi)部存儲空間RAM ;將51軟核的獨(dú)立的外部數(shù)據(jù)空間與代碼空間合并,形成統(tǒng)ー的可讀寫的外部存儲空間RAMx,并使用初始化文件對外部存儲空間RAMx進(jìn)行初始化;生成包含51軟核的FPGA配置數(shù)據(jù)文件;在線調(diào)試步驟將包含51軟核的FPGA配置數(shù)據(jù)文件下載至FPGA中,設(shè)置PC機(jī)中Monitor-51驅(qū)動模塊的串ロ波特率與Monitor-51監(jiān)控程序的串ロ波特率相匹配,用RS232串ロ線連接PC機(jī)及FPGA開發(fā)板進(jìn)行在線調(diào)試。具體的,將51軟核的外部數(shù)據(jù)空間與代碼空間合并具體為合井代碼空間的地址線與外部數(shù)據(jù)空間地址線,合井代碼空間和外部數(shù)據(jù)空間的數(shù)據(jù)總線。進(jìn)ー步的,Monitor-51預(yù)處理步驟中,為了用戶設(shè)置的方便,Monitor-51預(yù)處理步驟中還包括對51軟核外部存儲空間RAMx的劃分在Monitor-51存儲空間中從零地址開始按由低位到高位的順序依次將放入用戶程序、用戶外部數(shù)據(jù)、Moni tor-51監(jiān)視程序、監(jiān)視程序外部數(shù)據(jù)。本發(fā)明的有益效果是,通過對51軟核與Monitor-51進(jìn)行修改,使用Monitor-51對核進(jìn)行在線仿真成為可能,實現(xiàn)了對51軟核應(yīng)用代碼的在線調(diào)試,切實可行,大大縮短了基于51軟核的可編程片上系統(tǒng)開發(fā)的周期,適用于MC8051核以及其它51軟核。
圖I為現(xiàn)有的MC8051核結(jié)構(gòu)的最頂層示意圖;圖2為經(jīng)實施例修改后的MC8051核結(jié)構(gòu)的最頂層示意圖。
具體實施方式
以MC8051核為例,為了實現(xiàn)MC8051核的在線仿真調(diào)試,需要完成以下四方面的エ作—、哈佛結(jié)構(gòu)改為馮·洛伊曼結(jié)構(gòu)由于在線仿真的本質(zhì)是通過Monitor-51代碼監(jiān)控用戶代碼的運(yùn)行,所以需要可讀寫的代碼空間。普通MC8051核是只讀的代碼空間與可讀寫的數(shù)據(jù)空間相分離的哈佛結(jié)構(gòu),所以將修改MC8051核的存儲結(jié)構(gòu)為馮·洛伊曼結(jié)構(gòu),即合并代碼空間與數(shù)據(jù)空間為統(tǒng)ー且可讀寫的存儲空間。ニ、Monitor-51的修改修改Monitor-51中所用串ロ波特率;對51軟核外部存儲空間RAMx進(jìn)行分配,劃分出用戶程序空間和用戶外部數(shù)據(jù)空間,Monitor-51監(jiān)控程序和監(jiān)控程序外部數(shù)據(jù)空間。三、定時器組增加由于Monitor-51在運(yùn)行時要占用一個定時器,在MC8051核中、添加一組定時器。四、MC8051核復(fù)位后程序指針(PC,program counter)地址修改指向Monitor-51代碼首地址。在xilinx FPGA上利用Monitor-51在線仿真功能進(jìn)行MC8051軟核中用戶程序在線仿真調(diào)試I.實例的軟硬件平臺自制帶RS232串ロ的FPGA開發(fā)板,其中FPGA為xilinx公司的spartan3e系列芯片;計算機(jī)PC (personal computer)機(jī)一臺;串ロ連接線一根。軟件為xilinx公司的FPGA開發(fā)軟件ISE,及keil公司的51單片機(jī)開發(fā)軟件keil uVision(自帶Monitor-51工具)。2.代碼修改I)Monitor-51 的配置修改(I)對51軟核外部存儲空間RAMx進(jìn)行分配為了用戶使用的方便,將用戶程序和數(shù)據(jù)放入存儲空間低位,為0000h-27FFh,共10K。Monitor-51監(jiān)視程序放置在2800h_3EFFh中(其中Monitor-51監(jiān)視程序的大小4-5K,這里有IK左右的余量);監(jiān)視程序外部數(shù)據(jù)存儲空間3F00h-3FFFh。這里各空間的分配是由于實例中RAMx只有16KB,所以這樣分配。若在其他應(yīng)用中,那么可以修改用戶存儲空間大小,Monitor-51監(jiān)控程序所占空間依次改變。(2)將Monitor-51監(jiān)控程序所用串ロ的波特率設(shè)置為9600bps :根據(jù)MC8051最高可運(yùn)行主頻,本實施例將MC8051的頻率設(shè)置為18MHz。因此,為獲得9600bps的波特率,設(shè)置時選擇新添加的定時器組中的定時器TH1,修改定時器THl中定時變量為OFBH ;當(dāng)其它應(yīng)用中MC8051主頻不一樣時,需要改變此值,使得Monitor-51監(jiān)控程序依然能以9600bps的串ロ波特率與PC機(jī)端的調(diào)試程序通信。Monitor-51的配置修改之后,將Monitor-51監(jiān)控程序編譯生成mon51. hex文件,再將hex文件轉(zhuǎn)化為FPGA中隨機(jī)存取存儲器初始化數(shù)據(jù)格式文件,如本實施轉(zhuǎn)換為M0N51.coe文件。2)修改MC8051微處理器核(MC8051_core)內(nèi)代碼(I)添加定時器組由于Monitor-51在運(yùn)行時要占用一個定時器,所以添加一組定時器組,串ロ總數(shù)量不變;(2)修改核內(nèi)空間訪問指令,將空間選擇信號引出,合并數(shù)據(jù)空間與代碼空間主要將代碼空間的地址線與數(shù)據(jù)空間地址線合井,以及將代碼空間和數(shù)據(jù)空間數(shù)據(jù)總線合并,使得代碼空間與數(shù)據(jù)空間合并為統(tǒng)一且可讀寫的存儲空間。(3)片上復(fù)位的實現(xiàn)為了方便用戶程序的設(shè)置,Monitor-51將存儲空間中低位地址用作用戶存儲空間。由此帶來的問題是,每當(dāng)MC8051復(fù)位時,不能正確調(diào)用Monitor-51對用戶代碼進(jìn)行監(jiān)控。所以修改MC8051核的復(fù)位地址,使其指向51軟核存儲空間中存儲監(jiān)控程序的首地址,使得Monitor-51能被正確調(diào)用。3)進(jìn)行MC8051核的創(chuàng)建(I)添加數(shù)字時鐘管理模塊DCM :通過DCM實現(xiàn)時鐘信號的管理,設(shè)置MC8051的エ作頻率為18MHz。這是因為開發(fā)所用的FPGA上MC8051運(yùn)行主頻最高為20MHz ;(2)配置存儲器內(nèi)部RAM(MC8051_RAM)是MC8051的內(nèi)部隨機(jī)存取存儲器,是不具有在線調(diào)試功能 MC8051單片機(jī)也需要的?,F(xiàn)有的MC8051中,RAMx是外部數(shù)據(jù)隨機(jī)存取存儲器,與代碼空間ROM是獨(dú)立的。本實施例中RAMx(MC8051_RAMx)是外部數(shù)據(jù)空間與代碼空間合并一起的存儲空間,去掉了物理上的代碼空間(MC8051_R0M),如圖2所示。定制單片機(jī)核的存儲空間大小MC8051核的存儲空間最大為64KB,根據(jù)FPGA片內(nèi)資源和實際應(yīng)用不同,需定制。本實例中,將RAMx適當(dāng)減小,將原來的64KB的RAMx減小為16KB。MC8051核中的內(nèi)部RAM及RAMx部分采用硬核,通過調(diào)用ISE中的IP核BlockMemory Generator v2. 7 (內(nèi)存塊生成工具)來實現(xiàn)(I)內(nèi)部RAM實現(xiàn)的配置將存儲類型Memory Type設(shè)置為單端ロ RAM (SinglePort RAM);設(shè)置存儲容量(Memory Size)的寫寬度(Write Width)為8,寫深度(WriteDepth)為128 ;設(shè)置工作模式(Operating Mode)為寫優(yōu)先(Write First),設(shè)置使能端(Enable)為使能信號啟用(Use ENAPin)。(II) RAMx實現(xiàn)的配置將存儲類型Memory Type設(shè)置為單端ロ RAM (SinglePort RAM);設(shè)置存儲容量(Memory Size)的寫寬度(Write Width)為8,寫深度(WriteDepth)為16384,設(shè)置工作模式(Operating Mode)為寫優(yōu)先(Write First),設(shè)置使能端(Enable)為始終啟用(Always Enable),并使用M0N51. coe文件進(jìn)行存儲器初始化(MemoryInitialization)。至此,將生成的內(nèi)部RAM、RAMx以及修改配置后的MC8051_core,添加管腳約束ucf文件,進(jìn)行綜合布局布線,最后生成包含MC8051核的可以配置FPGA的下載文件(xilinx的bit文件)。3.在線調(diào)試將生成好的帶在線代碼調(diào)試功能的MC8051核(bit文件)下載至帶232串ロ的FPGA開發(fā)板中,用串ロ線連接PC機(jī)及FPGA開發(fā)板。keil軟件設(shè)置為以Monitor-51方式調(diào)試,設(shè)置PC機(jī)中Monitor-51驅(qū)動模塊的串ロ波特率為9600bps,與Monitor-51監(jiān)控程序所用串ロ的波特率相匹配,在keil中創(chuàng)建51工程,添加應(yīng)用代碼文件,編譯鏈接生成HEX文件。在PC端就能利用keil軟件的調(diào)試界面通過串ロ與MC8051核中的監(jiān)控代碼通信,在線觀察程序運(yùn)行狀態(tài)和MC8051核內(nèi)部寄存器,內(nèi)部存儲空間的使用情況,調(diào)試程序的運(yùn)行。
權(quán)利要求
1.一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,其特征在于,包括以下步驟 Monitor-51預(yù)處理步驟 根據(jù)51軟核的工作頻率,設(shè)置Monitor-51監(jiān)控程序的串口波特率; 將Monitor-51監(jiān)控程序編譯成hex文件,再將hex文件轉(zhuǎn)換為可被51軟核中合并后的外部存儲空間RAMx使用的初始化文件; 51軟核預(yù)處理步驟 設(shè)置51軟核的工作頻率; 生成51軟核的內(nèi)部存儲空間RAM ;將51軟核的獨(dú)立的外部數(shù)據(jù)空間與代碼空間合并,形成統(tǒng)一的可讀寫的外部存儲空間RAMx,并使用初始化文件對外部存儲空間RAMx進(jìn)行初始化; 生成包含51軟核的FPGA配置數(shù)據(jù)文件; 在線調(diào)試步驟 將包含51軟核的FPGA配置數(shù)據(jù)文件下載至FPGA中,設(shè)置PC機(jī)中Monitor-51驅(qū)動模塊的串口波特率與Monitor-51監(jiān)控程序的串口波特率相匹配,用RS232串口線連接PC機(jī)及FPGA開發(fā)板進(jìn)行在線調(diào)試。
2.如權(quán)利要求I所述一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,其特征在于,將51軟核的外部數(shù)據(jù)空間與代碼空間的合并具體為合并代碼空間的地址線與外部數(shù)據(jù)空間地址線,合并代碼空間和外部數(shù)據(jù)空間的數(shù)據(jù)總線。
3.如權(quán)利要求I所述一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,其特征在于,Monitor-51預(yù)處理步驟中還包括對51軟核外部存儲空間RAMx劃分將51軟核存儲空間中從零地址開始按由低位到高位的順序依次分配給用戶程序、用戶外部數(shù)據(jù)、Monitor-51監(jiān)視程序、監(jiān)視程序外部數(shù)據(jù)。
4.如權(quán)利要求3所述一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,其特征在于,51軟核預(yù)處理步驟中還包括,修改51軟核的復(fù)位地址,使其指向51軟核存儲空間中存儲監(jiān)控程序的首地址。全文摘要
本發(fā)明提供一種實現(xiàn)51軟核在線應(yīng)用代碼調(diào)試的方法,通過對51軟核與Monitor-51進(jìn)行修改,將51軟核的獨(dú)立的外部數(shù)據(jù)空間與代碼空間合并,形成統(tǒng)一的可讀寫的外部存儲空間RAMx,生成包含51軟核的FPGA配置數(shù)據(jù)文件;將包含51軟核的FPGA配置數(shù)據(jù)文件下載至FPGA中,實現(xiàn)對51軟核應(yīng)用代碼的在線調(diào)試,切實可行,大大縮短了基于51軟核的可編程片上系統(tǒng)開發(fā)的周期,適用于MC8051核以及其它51軟核。
文檔編號G06F11/26GK102662811SQ20121009275
公開日2012年9月12日 申請日期2012年3月31日 優(yōu)先權(quán)日2012年3月31日
發(fā)明者唐續(xù), 王嘉, 董平, 蒲曉蓉, 魏平 申請人:電子科技大學(xué)