模擬器的出現也是有原因的,有兩點: 一,早期的微控制器內部沒有ROM,比如8031、8032,這種微控制器只能外部擴充套件紫外擦除的EPROM儲存器,就是晶片上帶視窗的ROM。紫外擦除的ROM需要用紫外燈照射較長時間(10分鐘或者更多)才能擦掉晶片中的內容以便寫入新的程式。二是有的微控制器內部ROM是一次寫入成型的,比如8751,程式寫入微控制器的ROM之後就不能被擦除。 因此,如果這樣直接用微控制器來除錯,怎麼除錯呢?把程式寫入ROM然後執行,出問題了就修改程式在寫道ROM中再執行?但寫一次ROM需要不少時間啊!如果是8751微控制器,寫一次程式不對,那這微控制器就廢了,要知道當時的微控制器比肉價還貴呢。 因此出現了模擬器,這模擬器用RAM當充當微控制器的程式儲存器,這樣就可以快速的反覆寫入程式進行執行測試,透過插入其他程式碼來觀察暫存器和RAM中資料的變化,以判斷程式執行是否正確。這樣就高效快速的設計程式了。 現在的微控制器高階,比如C8051F、STM32等,其模擬器把程式直接寫入微控制器的內部的ROM中,透過JTAG邏輯讀出暫存器和RAM中的資料來判斷執行是否正確,這就算“直接用微控制器來進行除錯”了。
模擬器的出現也是有原因的,有兩點: 一,早期的微控制器內部沒有ROM,比如8031、8032,這種微控制器只能外部擴充套件紫外擦除的EPROM儲存器,就是晶片上帶視窗的ROM。紫外擦除的ROM需要用紫外燈照射較長時間(10分鐘或者更多)才能擦掉晶片中的內容以便寫入新的程式。二是有的微控制器內部ROM是一次寫入成型的,比如8751,程式寫入微控制器的ROM之後就不能被擦除。 因此,如果這樣直接用微控制器來除錯,怎麼除錯呢?把程式寫入ROM然後執行,出問題了就修改程式在寫道ROM中再執行?但寫一次ROM需要不少時間啊!如果是8751微控制器,寫一次程式不對,那這微控制器就廢了,要知道當時的微控制器比肉價還貴呢。 因此出現了模擬器,這模擬器用RAM當充當微控制器的程式儲存器,這樣就可以快速的反覆寫入程式進行執行測試,透過插入其他程式碼來觀察暫存器和RAM中資料的變化,以判斷程式執行是否正確。這樣就高效快速的設計程式了。 現在的微控制器高階,比如C8051F、STM32等,其模擬器把程式直接寫入微控制器的內部的ROM中,透過JTAG邏輯讀出暫存器和RAM中的資料來判斷執行是否正確,這就算“直接用微控制器來進行除錯”了。