> ==>發信人: Master.bbs@bbs.sayya.org (可愛的ASM), 信區: programming
> 你把「模擬器」跟「除錯器」搞混了..模擬器硬體本身是要模擬
> target上的uC,所以可以用硬體本身+ 內部寫好的軟體去[運算]
> 目標uC的I/O 信號、暫存器(包括調整運行時鐘),以中斷點還是
> 軟體控制,這軟體跟寫在uC的軟體不一樣,所以不會佔用可用的
> 硬體資源,模擬的uC當然就比模擬的目標高檔囉。
In Circuit Emulater 都是拿來除錯的, 可不像是 Emulater/Simulater
才是會被拿來模擬及執行.
會直接替代目標 uC 執行的 真實型ICE 對 target machine 的 I/O ,
Register 都是實質去 access 而不是 "算" 出來的. 這種 ICE 自備其
RAM 及 Mornitor Program ROM 及 I/O 界面. 但可以將這三者都對應
(MAP) 到 Target uC , 甚至提供 shadow RAM / ROM , 不使用斷點/暫
停, 都能實時不影響 Target uC 就做到監看記憶體的內容變化. 其映
射的 Memory 與 I/O space 從位址到資料都可以被 comparater 設定
硬體斷點.
JTAG/ICE/OCD 就不是如此, 她是用 Target uC 來執行, 但也用 OCD 的
comparater 來設定硬體斷點. Target Machine 的 ROM/RAM I/O 要正常
才能運作. 理論上, Target uC 內建的 boundary scan 可以錄到 uC
register 內容, 就有如 processor 的 register 被接出排線到
console Lamp 似的, 只是她是用高速 shifter 的 series line 來代
替. 只是這種可以 scan 的位元位置不可能很多, 而且是時間性抽樣的,
因此不會完全齊全真實. 斷點查閱所有 register 內容時, 有可能會靠
NMI(Non Mask Interrupt) 混用 Mornitor Program 來進行.
> 想像乘在PC上完任天堂遊戲,用的ROM檔就是你要運作的程式,
> 模擬器程式就是ICE上寫好的韌體,PC就是模擬器硬體本身。
> minitor提供的中斷機制, 是利用真實uC本身的硬體資源( 程式
> 空間、本身的硬體中斷、堆疊空間)達成,x86用的是外部記憶體,
> minitor當然是在外部的ROM上, 對於一些本身內建EEPROM、Flash
> 的uC,monitor程式就會是在MCU裡面,像基本型的8051,有些人就
> 會把monitor寫在內部ROM中,利用軟體搭配硬體中斷進行單步除錯
> ,不過monitor的功能實做的作法很多,端看各家的思維不同。
> 寫法也不一樣。
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234