本文提供了一些關(guān)于在線(xiàn) ARM 仿真器的信息,以及給作為嵌入式系統設計師的你帶來(lái)的好處。根據你的需要,你將在產(chǎn)品開(kāi)發(fā)中對開(kāi)發(fā)工具作出更恰當的選擇。 一、嵌入式產(chǎn)品的開(kāi)發(fā)周期 典型的嵌入式微控制器開(kāi)發(fā)項目的第一個(gè)階段是用C編譯器從源程序生成目標代碼,生成的目標代碼將包括物理地址和一些調試信息。目前代碼可以用軟件模擬器、目標Monitor或在線(xiàn)仿真器來(lái)執行和調試。軟件模擬器是在PC機或工作站平臺上,以其CPU(如x86)及其系統資源來(lái)模擬目標CPU(如P51XA),并執行用戶(hù)的目標代碼;而目標Monitor則是將生成的目標代碼下載到用戶(hù)目標板的程序存儲器中,并在下載的代碼中增加一個(gè)Monitor任務(wù)軟件,用來(lái)監視和控制用戶(hù)目標代碼的執行,用戶(hù)通過(guò)目標板上的串行口或其它調試端口,利用桌面計算機來(lái)調試程序。 程序的調試是通過(guò)設置斷點(diǎn)、使程序在指定的指令位置停止運行來(lái)實(shí)現的。在程序中止的時(shí)候,檢查存儲器和寄存器的內容,作為發(fā)現程序錯誤的線(xiàn)索。 程序經(jīng)過(guò)調試、找到所有的錯誤后,修改源代碼,重新編譯,以一種標準格式生成目標代碼文件,比如Intel HEX。這個(gè)目標代碼將被存儲在最終產(chǎn)品的非揮發(fā)存儲器,比如EPROM或FLASH中。 二、為什么需要仿真器 軟件模擬器和目標 Monitor提供了一種經(jīng)濟的調試手段,對于很多設計來(lái)說(shuō)已經(jīng)足夠。但是也有很多場(chǎng)合,需要利用仿真器來(lái)找到程序錯誤。 無(wú)論在哪一種場(chǎng)合,仿真器都能夠減少調試時(shí)間、簡(jiǎn)化系統集成、增加可靠性、優(yōu)化測試步驟,從而使其物有所值。更常見(jiàn)的情況是工程師在項目的不同階段同時(shí)使用軟件模擬器和仿真器,特別是在大的開(kāi)發(fā)項目中。 軟件模擬器和軟件調試器在斷點(diǎn)之外只提供了很少的幾種功能,比如顯示端口內容和代碼覆蓋。沒(méi)有檢測事件和條件、然后作出反應的手段,也沒(méi)有辦法記錄MCU的總線(xiàn)周期、然后判斷程序的執行究竟發(fā)生了什么情況。如果你的MCU有片上EPROM或FLASH存儲器,并且運行在單片模式,則只有仿真器才能夠對系統進(jìn)行調試,而不嚴重占用和消耗MCU資源。 在線(xiàn)仿真器可以很容易地做到這些事情,并且還能夠提供很多其它功能。仿真器是軟件和硬件之間的橋梁。在項目進(jìn)行的某些階段,你必須讓程序在實(shí)際的硬件上面運行。仿真器可以很容易地幫助你了解如何在調試階段充分利用仿真器。 三、仿真器究竟是什么? 仿真器可以替代你的目標系統中的MCU,仿真其運行。 仿真器運行起來(lái)和實(shí)際的目標處理器一樣,但是增加了其它功能,使你能夠通過(guò)桌面計算機或其它調試界面來(lái)觀(guān)察MCU中的程序和數據,并控制MCU的運行。仿真器是調試嵌入式軟件的一個(gè)經(jīng)濟、有效的手段。Nohau的EMUL51XA-PC仿真器系列用來(lái)調試Philips P51XA系列MCU,而EMUL51-PC系列仿真器則支持眾多廠(chǎng)家的8051系列單片機。 四、內部和外部模式 內部模式是指程序和數據位于MCU芯片內部,以FLASH或EPROM的形式存在,地址和數據總線(xiàn)對于用戶(hù)并不可見(jiàn),由此節省下來(lái)的芯片引腳作為I/O口提供給用戶(hù)。內部模式也稱(chēng)單片模式,所有的程序執行都發(fā)生在內部ROM中。為了有效地仿真這種芯片,要求仿真器使用bondout或增強型Hooks芯片。 外部模式是當程序存儲器,可能還有部分數據存儲器,位于MCU外部的情況,需要有地址和數據總線(xiàn)來(lái)訪(fǎng)問(wèn)這部分存儲器。外部模式也稱(chēng)擴展模式,用戶(hù)芯片、bondout芯片和增強型hooks芯片都能夠產(chǎn)生這種工作模式,這種情況下芯片的地址和數據總線(xiàn)引腳不能作為通用I/O口使用。Nohau的仿真器使用這三種芯片來(lái)實(shí)現有效的程序調試。 五、Bondout、增強型Hooks芯片和標準產(chǎn)品芯片 這些名詞是指仿真器所使用的、用來(lái)替代目標MCU的三種仿真處理器。只有Bondout和增強型Hooks芯片能夠實(shí)現單片調試,標準產(chǎn)品芯片不能。和標準產(chǎn)品芯片相比,bondout芯片有一些增加的引腳,連接到芯片內部硅片的電路節點(diǎn)上,所有又稱(chēng)“超腳芯片”。P51XA系列單片機仿真器都使用bondout芯片,EMUL51XA-PC就是很好的例子。 增強型Hooks芯片利用各種芯片引腳上面沒(méi)有的機器周期來(lái)提供地址和數據總線(xiàn),一些80C51系列仿真器就是使用增強型Hooks芯片。有趣的是,這些增強型Hooks芯片中的一些也是標準的產(chǎn)品芯片。使用增強型Hooks芯片作為仿真CPU需要一些額外的特殊功能電路來(lái)從復用的芯片引腳中,分解出地址和數據總線(xiàn)以及一些必須的控制信號,用戶(hù)的目標板沒(méi)有這些電路,所有仍然是單片工作模式。采用bondout芯片和增強型Hooks芯片能夠實(shí)現極為精確的仿真,從功能一直到芯片的功耗。 六、使硬件工作起來(lái) 軟件模擬器是很好的,可是它不能考慮進(jìn)所有的變化因素。軟件模擬器設計師必須考慮到每一件事情,特別是那些只有在硬件搭起來(lái)以后才會(huì )出現的因素,比如電容、定時(shí)、電感、芯片版本等,隨著(zhù) CPU速度的增加,這些變得越來(lái)越重要。 目標Monitor相比之下要好得多,因為它是在實(shí)際硬件中運行的。但是為了使Monitor程序能夠運行起來(lái),目標系統必須是一個(gè)完整的、能夠工作的系統。采用仿真器后就不是這樣,仿真器在目標系統硬件不完整、或者是一點(diǎn)硬件都沒(méi)有的情況下都可以運行。然而目標Monitor可以安裝在最終產(chǎn)品的程序中,隨時(shí)都可以激活,用來(lái)進(jìn)行調試,所以這對于測試和維護來(lái)說(shuō)還是有一定優(yōu)勢的。 七、仿真器的優(yōu)點(diǎn) 仿真器具有軟件模擬器和目標Monitor的所有功能,加上下面一些優(yōu)點(diǎn): 1.不使用目標系統或CPU資源 目標Monitor內核一般需要10K的ROM和10~20字節的RAM以及一個(gè)空閑的通信端口。一個(gè)好的仿真器不會(huì )使用上面任何一項。仿真器對于目標系統應當是不可見(jiàn)的,也就是所謂的“全透明仿真”。 2.硬件斷點(diǎn) 軟件斷點(diǎn)的實(shí)現是通過(guò)在用戶(hù)目標代碼中插入2字節的TRAP(陷井)指令,將正常的程序流偏轉到調試器上。如果程序計數器碰巧落到第二個(gè)字節上,程序就會(huì )崩潰。 Nohau仿真器的硬件斷點(diǎn)功能使用比較器,將系統總線(xiàn)狀態(tài)與預先設定的鎖存器內容相比較,用以監測對于指定地址的訪(fǎng)問(wèn),而不修改任何程序存儲器內容。區域斷點(diǎn)需要使用硬件斷點(diǎn)來(lái)實(shí)現,但是軟件斷點(diǎn)仍然是很方便、有用的,所以Nohau的仿真器兩種斷點(diǎn)功能都提供。 當用戶(hù)的目標程序存放在ROM中時(shí),軟件斷點(diǎn)是不能用的,因為無(wú)法插入TRAP指令。對于ROM程序存儲器系統,只能使用硬件斷點(diǎn)。 3.跟蹤功能(TRACE) 跟蹤功能以時(shí)間為線(xiàn)索記錄所有的處理器機器周期、以及可選的外部信號電平。跟蹤功能能夠記錄所有的取指操作,并且在采用流水線(xiàn)并行處理模式的單片機中,如P51XA,區分在流水線(xiàn)中被取消的指令以及那些成功地執行的指令。跟蹤的開(kāi)始通過(guò)條件觸發(fā)來(lái)實(shí)現,這樣可以實(shí)現過(guò)濾功能,也就是只有感興趣的指令周期被記錄下來(lái),其余的被舍棄。軟件模擬器和目標Monitor沒(méi)有跟蹤存儲器,也不能實(shí)現Trace功能。 4.條件觸發(fā) 條件觸發(fā)是非常強大、便于使用的功能,它使你可以在某些事件發(fā)生時(shí),進(jìn)行某個(gè)預先設定的行動(dòng),觸發(fā)條件可以包括地址、數據、時(shí)鐘周期和外部信號,這些條件可以觸發(fā)一個(gè)斷點(diǎn)、啟動(dòng)/停止跟蹤記錄、記錄一個(gè)時(shí)間標記、以及很多其它由仿真器功能所決定的行動(dòng)。這種強大的工具只有在仿真器中才能實(shí)現。Nohau仿真器的條件觸發(fā)功能和跟蹤功能有機地結合在一起,具有三級時(shí)間觸發(fā),最高級觸發(fā)具有計數功能。 5.實(shí)時(shí)顯示存儲器和I/O口內容 使用仿真器后,可以實(shí)時(shí)地觀(guān)察存儲器和I/O口的內容,而不僅僅是軟件模擬。你可以將自己特別喜歡的外設芯片連接到Nohau仿真器特性板的下部,然后在調試界面中訪(fǎng)問(wèn)它。如果你了解外設的所有細節,那么可以非常精確地進(jìn)行系統模擬。 在很多情況下我們可能已經(jīng)發(fā)現,好象只有在接入實(shí)際的硬件系統后某些問(wèn)題才開(kāi)始出現。采用仿真器能夠使你從一開(kāi)始就進(jìn)入這一階段,從而及早地發(fā)現問(wèn)題、更快地完成調試任務(wù)。 因為仿真器內部自帶的RAM可以和目標系統中的ROM互相替代,所以你在ROM目標系統中也可以簡(jiǎn)易地進(jìn)行程序代碼和數據的調試和修改。 同樣,當目標系統中還沒(méi)有裝上存儲器時(shí),你可以使用仿真器中的仿真存儲器對系統進(jìn)行調試。仿真存儲器的大小、分辨率和映象地址可以由用戶(hù)選擇。 6.硬件性能分析 軟件模擬器和目標Monitor只能模擬系統運行,然后進(jìn)行性能分析,但是它們已經(jīng)做得不錯了;而仿真器則更進(jìn)一步,在實(shí)際硬件上面進(jìn)行性能分析,這樣就增加了精度。而且,使用實(shí)際的硬件能夠發(fā)現在軟件模擬中無(wú)法發(fā)現的錯誤。虛假中斷以及其它一些故障可能會(huì )出乎意料地消耗CPU資源,導致嚴重的性能問(wèn)題,而且很難發(fā)現。利用仿真器的性能分析,這些問(wèn)題很容易暴露。 7.將仿真器和目標系統相連接 仿真器和目標系統的連接很容易。大多數問(wèn)題都被仿真器公司及其代理解決了。連接需要兩個(gè)步驟: 首先,需要選擇適當的適配器連接方法,最好選用焊接和插座方式。P51XA系列單片機仿真器支持PLCC插座和表面安裝兩種目標連接方式。夾接適配器價(jià)格較高而且不可靠,不推薦用戶(hù)使用。 然后,仿真器上面的軟件和跳線(xiàn)器必須正確配置,和目標板以及軟件初始化程序相匹配。這很簡(jiǎn)單,好的技術(shù)支持應當包括這一點(diǎn)。Nohau的仿真器一般使用缺省設置就可以工作。 對于P51XA系列單片機,只要在用戶(hù)的目標板上焊接一個(gè)芯片插座(PLCC或表面安裝形式)、插入EMUL51XA-PC的特性板適配器接頭,在PC機或筆記本電腦上運行調試軟件就可以了。然后你就可以用隨仿真提供的TIme.c測試程序對目標系統進(jìn)行測試了! 八、總結 本文提供了一些關(guān)于在線(xiàn)仿真器的信息,以及給作為嵌入式系統設計師的你帶來(lái)的好處。根據你的需要,你將在產(chǎn)品開(kāi)發(fā)中對開(kāi)發(fā)工具作出更恰當的選擇。(21IC) |