嵌入式系統是計算機專用的一種系統,作為設備的一部分通常是一個控制程序存儲在ROM中的嵌入式處理器控制板。實際上一切帶有數字接口的設備,如手表、微波爐、錄像機、汽車等,都是利用嵌入式系統完成工作的,有些嵌入式還包含操作系統,但多數嵌入式系統都是由單個程序實現整個控制邏輯。
所謂ARM仿真器,即用于調試基于ARM內核芯片的一個硬件模塊。ARM內核包括ARM7,ARM9,ARM11,Cortex-A,Cortex-M,Cortex-R等系列,而基于這些內核的芯片則更多了。那么這些仿真器選擇有一個原則,用于低端嵌入式微控制器的話,用ULINK2,ULINKPpro即可,可以調試Cortex-M,Cortex-R芯片。用于高端的應用處理器ARM9,ARM11,Cortex-A的話,就需要用到DSTREAM仿真器了。
一、嵌入式產品的開發周期
典型的嵌入式微控制器開發項目的第一個階段是用C編譯器從源程序生成目標代碼,生成的目標代碼將包括物理地址和一些調試信息。目前代碼可以用軟件模擬器、目標Monitor或在線仿真器來執行和調試。軟件模擬器是在PC機或工作站平臺上,以其CPU(如x86)及其系統資源來模擬目標CPU(如P51XA),并執行用戶的目標代碼;而目標Monitor則是將生成的目標代碼下載到用戶目標板的程序存儲器中,并在下載的代碼中增加一個Monitor任務軟件,用來監視和控制用戶目標代碼的執行,用戶通過目標板上的串行口或其它調試端口,利用桌面計算機來調試程序。
程序的調試是通過設置斷點、使程序在指定的指令位置停止運行來實現的。在程序中止的時候,檢查存儲器和寄存器的內容,作為發現程序錯誤的線索。
程序經過調試、找到所有的錯誤后,修改源代碼,重新編譯,以一種標準格式生成目標代碼文件,比如Intel HEX.這個目標代碼將被存儲在最終產品的非揮發存儲器,比如EPROM或FLASH中。
二、為什么需要仿真器
軟件模擬器和目標 Monitor提供了一種經濟的調試手段,對于很多設計來說已經足夠。但是也有很多場合,需要利用仿真器來找到程序錯誤。 無論在哪一種場合,仿真器都能夠減少調試時間、簡化系統集成、增加可靠性、優化測試步驟,從而使其物有所值。更常見的情況是工程師在項目的不同階段同時使用軟件模擬器和仿真器,特別是在大的開發項目中。
軟件模擬器和軟件調試器在斷點之外只提供了很少的幾種功能,比如顯示端口內容和代碼覆蓋。沒有檢測事件和條件、然后作出反應的手段,也沒有辦法記錄MCU的總線周期、然后判斷程序的執行究竟發生了什么情況。如果你的MCU有片上EPROM或FLASH存儲器,并且運行在單片模式,則只有仿真器才能夠對系統進行調試,而不嚴重占用和消耗MCU資源。
在線仿真器可以很容易地做到這些事情,并且還能夠提供很多其它功能。仿真器是軟件和硬件之間的橋梁。在項目進行的某些階段,你必須讓程序在實際的硬件上面運行。仿真器可以很容易地幫助你了解如何在調試階段充分利用仿真器。