新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)仿真器的原理介紹

單片機(jī)仿真器的原理介紹

作者: 時間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
一個理想的單片機(jī)仿真器使開發(fā)者能觀察到單片機(jī)內(nèi)部的操作,仿真器是使替代單片機(jī)并使單片機(jī)操作可視化的硬件工具。
一個ICE應(yīng)包括兩個接口,一個是連接到目標(biāo)板上的MCU插座,另一個與PC相連。仿真器應(yīng)該與目標(biāo)MCU在電氣及物理上等價,并能在開發(fā)系統(tǒng)中替代MCU。目標(biāo)系統(tǒng)的操作可由PC得以控制及觀察。在開發(fā)初期,開發(fā)系統(tǒng)依靠仿真器工作,當(dāng)目標(biāo)功能完善后,仿真器將被真正的MCU取代。

ICE的功能及特性:
在主機(jī)與目標(biāo)系統(tǒng)間產(chǎn)生對應(yīng)的程序區(qū),host memory作為仿真程序區(qū)(emulator memory)或Shadow memory
脫離目標(biāo)硬件實(shí)時測試代碼
單步(Step),全速(Run),從特定的狀態(tài)運(yùn)行到特定的狀態(tài)或到斷點(diǎn)(BreakPoint)。這通常指特定的地址,但也可以是特定的觸發(fā)條件。
修改MCU Register值
在線修改Memory內(nèi)容
實(shí)時跟蹤記錄已執(zhí)行的程序(Trace)

本文引用地址:http://butianyuan.cn/article/201611/315380.htm

ICE設(shè)計中的難點(diǎn)及局限性:
ICE功能的實(shí)現(xiàn)需要與MCU的data bus,address bus,control bus相連,而實(shí)際芯片三總線往往不連外部引腳
電氣上:ICE的驅(qū)動能力及時序需要與MCU完全相同,而ICE的外加電纜及電路必將降低負(fù)載能力及改變時序特性,引起一些目標(biāo)系統(tǒng)在極限狀態(tài)下與ICE聯(lián)調(diào)往往會失敗。
一個常見的現(xiàn)象是一個系統(tǒng)用ICE調(diào)試完成最終用實(shí)際MCU取代ICE可保證運(yùn)行,但若硬件開發(fā)過程中未用ICE,為了調(diào)試軟件問題在中途使用了ICE,往往會在時序及負(fù)載上出現(xiàn)問題。
理想的是所以的引腳的所以功能與MCU相同,而實(shí)際上不少低端仿真器占用了一個中斷資源以控制監(jiān)控程序的運(yùn)行

使用ICE的主要優(yōu)點(diǎn)在于:
軟件設(shè)計及實(shí)時測試可先于實(shí)際硬件完成
提供了修改,顯示memory及register的功能,提供了系統(tǒng)的開發(fā)效率

bond-out
MCU是芯片設(shè)計公司為實(shí)現(xiàn)其商用MCU的仿真功能,將內(nèi)部的數(shù)據(jù),地址及控制總線連接到芯片封裝的管腳上,使得外部仿真邏輯可以監(jiān)視和控制MCU內(nèi)部的狀態(tài)。一個ICE的質(zhì)量很大程度上依賴于它與其要仿真的MCU之間的吻合程度,bond-out
MCU能最大程度上提供ICE與商用MCU的無差別替換。

基于bond-out MCU的在線仿真器的結(jié)構(gòu)
見圖1。系統(tǒng)包括三部分,bond-out MCU,存貯用戶程序的SRAM及仿真監(jiān)控電路。bond-out
MCU的數(shù)據(jù),地址總線連接到SRAM,作為外部程序儲存器。同時數(shù)據(jù),地址及控制總線連接到仿真監(jiān)控電路,使ICE可以監(jiān)視和控制bond-out
MCU的運(yùn)行狀態(tài)。與PC相連的通訊接口根據(jù)速度及成本可選用串口,并口或USB接口。bond-out
MCU從本質(zhì)上將是商用MCU的一種擴(kuò)展,它包括所有商用MCU上的I/O并提供給用戶使用,其電氣與時序上應(yīng)保證與商用MCU對應(yīng)管腳完全一致。


在線仿真器基本功能的實(shí)現(xiàn)
單步(Step),全速(Run)
仿真監(jiān)控電路將A/D總線的控制權(quán)交給bond-out MCU,bond-out
MCU先給出指令地址,再使能SRAM讀信號,得到程序代碼,依次解碼并執(zhí)行。

斷點(diǎn)(BreakPoint)
見圖2。斷點(diǎn)電路由存貯斷點(diǎn)位置的SRAM和斷點(diǎn)監(jiān)控電路組成。存貯斷點(diǎn)位置的SRAM與存貯用戶程序的SRAM的地址總線并接,SRAM的某個數(shù)據(jù)位作為斷點(diǎn)信息存貯位,在下載用戶程序的同時將設(shè)置有斷點(diǎn)的地址上該位置為1,其余為0。當(dāng)仿真器在全速運(yùn)行時,該SRAM設(shè)為讀狀態(tài),斷點(diǎn)判斷電路監(jiān)控此數(shù)據(jù)位,當(dāng)其為高時停止仿真器全速運(yùn)行。

跟蹤記錄已執(zhí)行的程序(Trace)
見圖3。Trace電路由存貯Trace內(nèi)容的SRAM和Trace監(jiān)控電路組成。Trace SRAM的數(shù)據(jù)總線與bond-out
MCU地址總線并接,Trace SRAM的地址控制信號由Trace監(jiān)控電路產(chǎn)生。在仿真器初始化時Trace
SRAM的地址被設(shè)置為0,當(dāng)用戶要求開始記錄已執(zhí)行的程序,在每個指令周期中,Trace SRAM的地址自加一并將bond-out
MCU地址寫入SRAM中。在PC要讀取Trace內(nèi)容時,bond-out
MCU依次執(zhí)行過的程序地址被上載到PC端并對應(yīng)列出該地址上的指令代碼。Trace
的記錄長度受SRAM大小限制,當(dāng)超出記錄長度時前面的數(shù)據(jù)會被覆蓋。

讀取修改Register/Memory
使bond-out
MCU將Register/Memory的值從數(shù)據(jù)總線上輸出,例如要讀取20H地址上的值,仿真監(jiān)控電路取得總線控制權(quán),首先執(zhí)行一條指令使20H地址上的值送入A,再將A寫到數(shù)據(jù)總線上,仿真監(jiān)控電路就能讀到20H地址上的值。修改Register/Memory的方法,例如要改20H地址上的值,仿真監(jiān)控電路送出該值,控制bond-out
MCU執(zhí)行讀取數(shù)據(jù)總線到A的指令,再執(zhí)行將A送人20H地址的指令。

希望對大家用仿真器有幫助,還望各位討論和指正。



評論


技術(shù)專區(qū)

關(guān)閉