1. 程式人生 > >初窺arm模擬器

初窺arm模擬器

        嵌入式系統是一種專用的計算機系統,作為裝置或裝置的一部分。通常,嵌入式系統是一個控制程式儲存在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資源。

線上模擬器可以很容易地做到這些事情,並且還能夠提供很多其它功能。模擬器是軟體和硬體之間的橋樑。在專案進行的某些階段,你必須讓程式在實際的硬體上面執行。模擬器可以很容易地幫助你瞭解如何在除錯階段充分利用模擬器。

三、模擬器究竟是什麼?

模擬器可以替代你的目標系統中的MCU,模擬其執行。 模擬器執行起來和實際的目標處理器一樣,但是增加了其它功能,使你能夠通過桌面計算機或其它除錯介面來觀察MCU中的程式和資料,並控制MCU的執行。仿 真器是除錯嵌入式軟體的一個經濟、有效的手段。Nohau的EMUL51XA-PC模擬器系列用來除錯Philips P51XA系列MCU,而EMUL51-PC系列模擬器則支援眾多廠家的8051系列微控制器。

四、內部和外部模式

內部模式是指程式和資料位於MCU晶片內部,以FLASH或EPROM的形式存在,地址和資料匯流排 對於使用者並不可見,由此節省下來的晶片引腳作為I/O口提供給使用者。內部模式也稱單片模式,所有的程式執行都發生在內部ROM中。為了有效地模擬這種芯 片,要求模擬器使用bondout或增強型Hooks晶片。

外部模式是當程式儲存器,可能還有部分資料儲存器,位於MCU外部的情況,需要有地址和資料匯流排來 訪問這部分儲存器。外部模式也稱擴充套件模式,使用者晶片、bondout晶片和增強型hooks晶片都能夠產生這種工作模式,這種情況下晶片的地址和資料匯流排 引腳不能作為通用I/O口使用。Nohau的模擬器使用這三種晶片來實現有效的程式除錯。

五、Bondout、增強型Hooks晶片和標準產品晶片

這些名詞是指模擬器所使用的、用來替代目標MCU的三種模擬處理器。只有Bondout和增強型 Hooks晶片能夠實現單片除錯,標準產品晶片不能。和標準產品晶片相比,bondout晶片有一些增加的引腳,連線到晶片內部矽片的電路節點上,所有又 稱“超腳晶片”.P51XA系列微控制器模擬器都使用bondout晶片,EMUL51XA-PC就是很好的例子。

增強型Hooks晶片利用各種晶片引腳上面沒有的機器週期來提供地址和資料匯流排,一些80C51系 列模擬器就是使用增強型Hooks晶片。有趣的是,這些增強型Hooks晶片中的一些也是標準的產品晶片。使用增強型Hooks晶片作為模擬CPU需要一 些額外的特殊功能電路來從複用的晶片引腳中,分解出地址和資料匯流排以及一些必須的控制訊號,使用者的目標板沒有這些電路,所有仍然是單片工作模式。採用 bondout晶片和增強型Hooks晶片能夠實現極為精確的模擬,從功能一直到晶片的功耗。

六、使硬體工作起來

軟體模擬器是很好的,可是它不能考慮進所有的變化因素。軟體模擬器設計師必須考慮到每一件事情,特別是那些只有在硬體搭起來以後才會出現的因素,比如電容、定時、電感、晶片版本等,隨著 CPU速度的增加,這些變得越來越重要。

目標Monitor相比之下要好得多,因為它是在實際硬體中執行的。但是為了使Monitor程式能夠執行起來,目標系統必須是一個完整的、能夠工作的系統。採用模擬器後就不是這樣,模擬器在目標系統硬體不完整、或者是一點硬體都沒有的情況下都可以執行。然而目標Monitor可以安裝在最終產品的程式中,隨時都可以啟用,用來進行除錯,所以這對於測試和維護來說還是有一定優勢的。

七、模擬器的優點

模擬器具有軟體模擬器和目標Monitor的所有功能,加上下面一些優點:

1.不使用目標系統或CPU資源

目標Monitor核心一般需要10K的ROM和10~20位元組的RAM以及一個空閒的通訊埠。一個好的模擬器不會使用上面任何一項。模擬器對於目標系統應當是不可見的,也就是所謂的“全透明模擬”.

2.硬體斷點

軟體斷點的實現是通過在使用者目的碼中插入2位元組的TRAP(陷井)指令,將正常的程式流偏轉到調 試器上。如果程式計數器碰巧落到第二個位元組上,程式就會崩潰。 Nohau模擬器的硬體斷點功能使用比較器,將系統匯流排狀態與預先設定的鎖存器內容相比較,用以監測對於指定地址的訪問,而不修改任何程式儲存器內容。區 域斷點需要使用硬體斷點來實現,但是軟體斷點仍然是很方便、有用的,所以Nohau的模擬器兩種斷點功能都提供。

當用戶的目標程式存放在ROM中時,軟體斷點是不能用的,因為無法插入TRAP指令。對於ROM程式儲存器系統,只能使用硬體斷點。

3.跟蹤功能(TRACE)

跟蹤功能以時間為線索記錄所有的處理器機器週期、以及可選的外部訊號電平。跟蹤功能能夠記錄所有的 取指操作,並且在採用流水線並行處理模式的微控制器中,如P51XA,區分在流水線中被取消的指令以及那些成功地執行的指令。跟蹤的開始通過條件觸發來實 現,這樣可以實現過濾功能,也就是隻有感興趣的指令週期被記錄下來,其餘的被捨棄。軟體模擬器和目標Monitor沒有跟蹤儲存器,也不能實現Trace 功能。

4.條件觸發

條件觸發是非常強大、便於使用的功能,它使你可以在某些事件發生時,進行某個預先設定的行動,觸發 條件可以包括地址、資料、時鐘週期和外部訊號,這些條件可以觸發一個斷點、啟動/停止跟蹤記錄、記錄一個時間標記、以及很多其它由模擬器功能所決定的行 動。這種強大的工具只有在模擬器中才能實現。Nohau模擬器的條件觸發功能和跟蹤功能有機地結合在一起,具有三級時間觸發,最高階觸發具有計數功能。

5.實時顯示儲存器和I/O口內容

使用模擬器後,可以實時地觀察儲存器和I/O口的內容,而不僅僅是軟體模擬。你可以將自己特別喜歡的外設晶片連線到Nohau模擬器特性板的下部,然後在除錯介面中訪問它。如果你瞭解外設的所有細節,那麼可以非常精確地進行系統模擬。

在很多情況下我們可能已經發現,好象只有在接入實際的硬體系統後某些問題才開始出現。採用模擬器能夠使你從一開始就進入這一階段,從而及早地發現問題、更快地完成除錯任務。

因為模擬器內部自帶的RAM可以和目標系統中的ROM互相替代,所以你在ROM目標系統中也可以簡易地進行程式程式碼和資料的除錯和修改。

同樣,當目標系統中還沒有裝上儲存器時,你可以使用模擬器中的模擬儲存器對系統進行除錯。模擬儲存器的大小、解析度和映象地址可以由使用者選擇。

6.硬體效能分析

軟體模擬器和目標Monitor只能模擬系統執行,然後進行效能分析,但是它們已經做得不錯了;而 模擬器則更進一步,在實際硬體上面進行效能分析,這樣就增加了精度。而且,使用實際的硬體能夠發現在軟體模擬中無法發現的錯誤。虛假中斷以及其它一些故障 可能會出乎意料地消耗CPU資源,導致嚴重的效能問題,而且很難發現。利用模擬器的效能分析,這些問題很容易暴露。

7.將模擬器和目標系統相連線

模擬器和目標系統的連線很容易。大多數問題都被模擬器公司及其代理解決了。連線需要兩個步驟:

首先,需要選擇適當的介面卡連線方法,最好選用焊接和插座方式。P51XA系列微控制器模擬器支援PLCC插座和表面安裝兩種目標連線方式。夾接介面卡價格較高而且不可靠,不推薦使用者使用。

然後,模擬器上面的軟體和跳線器必須正確配置,和目標板以及軟體初始化程式相匹配。這很簡單,好的技術支援應當包括這一點。Nohau的模擬器一般使用預設設定就可以工作。

對於P51XA系列微控制器,只要在使用者的目標板上焊接一個晶片插座(PLCC或表面安裝形式)、插入EMUL51XA-PC的特性板介面卡接頭,在PC機或膝上型電腦上執行除錯軟體就可以了。然後你就可以用隨模擬提供的TIme.c測試程式對目標系統進行測試了!

總結

本文提供了一些關於線上模擬器的資訊,以及給作為嵌入式系統設計師的你帶來的好處。根據你的需要,你將在產品開發中對開發工具作出更恰當的選擇。相信你通過自己的努力可以得到更多的知識。