本站小編為你精心準備了軟件仿真環境設計與實踐參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
內核與雙進程
COACHV型是美國Zoran公司的一款數字信號處理器,擁有基于消息驅動的嵌入式系統的所有基本特質。其良好的體系結構平臺完全滿足實驗教學需要。平臺的核心是可編程DSPRTOS內核,內核以面向狀態(有限狀態機)模型方法工作。系統啟動時開啟主進程(COACH進程)和用戶進程(HCE進程)。兩個進程運行機制如圖1所示。主進程維持硬件運轉,執行機器指令,保持與用戶進程的通信。其實現細節被封裝在固件系統里。用戶進程實現人機交互,提供可視化人機界面,將用戶操作解析成功能指令,調用特定的API函數以獲得內核操作權限。與其他嵌入式系統一樣,COACH為上層開發者提供了一套功能完備的應用編程接口集。基于這分類細致,功能完備的API體系,用戶進程得以驅動主機進程。
消息分類
對設計者可見的用戶進程是一個基于消息驅動的進程,消息分為兩類。一類是系統消息,由主機進程在執行功能時發出,或者外圍設備中斷/定時器觸發,屬于進程被動接收的消息。這類消息種類明確,協議固定。另一類是用戶自定義消息,類似于MFC中自定義消息,DSP系統都預留了數量不等的用戶自定義消息,該類消息的發送方和響應方都是用戶進程。
事件驅動及消息傳遞機制如圖1所示。COACH進程和HCE進程各自有一個消息隊列,硬件執行時需要與兩進程通信時,將產生對應的事件,相應的消息將存放在目標進程的消息隊列里。HCE以調用API的方式間接訪問COACH,而后者以事件消息來反饋前者。特別地,HCE可以給自身的消息隊列發達消息,即為自同步。
PC仿真設計原理
為實現設計代碼在仿真平臺和真實平臺之間的無縫移植,仿真平臺必須模擬出真實平臺對外的所有封裝接口和必要的內部邏輯。數字系統基本可以在三個不同功能級上進行仿真:系統級仿真、寄存器傳輸級仿真、邏輯級仿真等,對整個嵌入式系統進行仿真屬于典型的系統級仿真。系統級的仿真就是模擬整個系統在真實的仿真環境中運行時的行為。在系統級的仿真中,只要系統的所有組件的基本行為及其操作環境能被精確模擬,其他設計細節可以簡化或者忽略。嵌入式軟件的仿真開發環境中的仿真系統是為了驗證軟件對硬件控制的正確性,只需要仿真出硬件的外部邏輯。仿真過細反而會增加仿真的工作量和仿真構件的復雜度。在嵌入式軟件仿真開發平臺的實現中,關鍵技術主要包含:構件化技術和仿真技術。
1構件化技術
構件是具有標準的對外接口和明確功能的對象。基于構件技術的軟件系統具有很高的重用性和良好的可擴展性。構件按照一定方式組合在一起,構成一個完整的系統,如圖2所示。構件模型的提取和設計是實現構件的關鍵。以內核硬件為最小孵化平臺建立原型系統,在滿足軟硬件運轉的前提下,將其他設備及輔助工具納入外設構件庫管理,以標準化接口實現設備靈活的安裝、卸載和替換。外部設備采取動態集成的方式,可根據不同的需求進行靈活增減,如圖3所示。
2軟件仿真技術
軟件仿真技術是實現仿真平臺的關鍵,包括基于事件驅動和基于電路兩種仿真方式。本文采用基于事件驅動的軟件仿真技術,完滿仿真系統邏輯。如圖4所示,PC仿真平臺需要模擬COACH內核RTOS運轉,硬件設備,功能API等方面的工作。筆者將此命名為“仿真COACH”;另外,筆者將應用編程代碼歸納為“仿真HCE”。在真實平臺上,兩者都各自以進程形式存在內核RTOS中,而在仿真環境下,兩者將以線程形式存生。喚起這兩個線程的工作由PC進程(命名為“仿真RTOS”)完成,PC進程模擬了內核RTOS的工作,通過事件信號機制完成兩線程的阻塞、激活和切換操作。此外,“仿真RTOS”還承擔摸擬控制臺輸入和界面顯示。
3可信性設計
在真實的開發環境下,設計代碼都嵌入在用戶進程代碼里。因此對設計者來說,用高級語言(本平臺使用C)編寫的代碼能否無差異地在真實平臺和仿真平臺之間相互移植,成為衡量軟件仿真技術可信性的關鍵。為達到此設計要求,在仿真環境下編寫的代碼將無縫嵌入到“仿真HCE”中被執行。預編譯手段保證了代碼的跨平臺特性和語法一致性。在構建仿真環境時,“仿真RTOS”與“仿真COACH”將視“仿真HCE”如黑箱,同樣,“仿真HCE”只能使用前二者提供的與真實環境里命名規則完全一致的API接口函數和事件消息。正是因為“仿真HCE”做到了無視外部環境是否真實或模擬,在PC仿真平臺上運行的“應用代碼”可以原封不動地嵌入目標固件。無縫移植既能保證了開發工作的連續性和一致性,也證明PC仿真開發環境的可靠性和可信性。
4實用性設計
仿真開發環境的實用性主要體現在三個方面:首先,仿真環境使得開發工作更加高效、快捷和低耗。虛擬硬件設備可以無視硬件冗長的制作調試期,實現軟、硬件系統的并行開發。可視化開發環境使得開發過程更加直觀,結合PC上的輔助工具和VisualStudio里強大的調試功能,開發者能熟練而快捷地完成工作。更重要地,PC仿真技術更使得原本成本高昂的嵌入式系統開發擺脫了硬件平臺的桎梏,為高校實驗室開設靈活豐富的嵌入式系統實驗提供了技術支持。其次,代碼的無縫移植簡化了平臺轉換的工序,更使得即便在實驗課程中編寫的代碼也具備相當的實用價值。可自由定義的運行時調試器可以同時在雙平臺使用,實時監控運行狀態。再者,基于構件的技術可以將嵌入式系統化繁為簡,由簡到繁。靈活構造的實驗平臺契合漸進式教學需要,實驗人員借仿真平臺透徹內核運行機制,分解組裝系統功能,深化理解嵌入式系統。
實現與測試
在PC上編寫軟件時,要注意軟件的可移植性,選用具有較高移植性的編程語言,盡量少調用操作系統函數,并注意屏蔽不同硬件平臺帶來的字節順序、字節對齊、位段空間分配方向、代碼優化(提高代碼效率、減少代碼的大小、避免內存泄漏)等問題。同理,在PC上編寫嵌入式系統仿真開發平臺時,也要屏蔽PC與嵌入式系統在上述硬件方面的差異,目的是使仿真平臺上編寫的代碼盡可能無縫移植到目標平臺上。
1程序框架
用VisualC++MFC設計一個人機界面對話框(仿真RTOS),類封裝了按鍵和LCD顯示的功能和變量。對話框發起兩個線程,分別仿真COACH和HCE。代碼如下:
2仿真RTOS主進程
以一個對話框控件類實現主進程的所有功能,包含控制臺輸入、界面輸出和雙線程入口函數。類定義如下(部分代碼已省略):
3仿真COACH線程
具體工作包含仿真COACH系統的狀態機運轉、API及消息通信。在API被執行過程中,COACH依協議定義讀寫消息隊列。消息隊列由COACH自己維護,接收HCE線程和界面主進程發送過來的消息。因本線程代碼量大,本處以偽代碼簡要表示流程。
4仿真HCE線程
以線程的方式運行于仿真平臺中,組織全部用戶代碼。類似地,線程也維護一個消息隊列,接收COACH線程發送的消息或者自身的同步消息。
5測試
仿真系統建立以后,它必須經過驗證和確認過程,以確立其結果正確性的可信度,然后才能成為項目決策的論據。本文以COACH嵌入式DSP系統為原型,以典型應用案例為藍本,成功設計實現了仿真開發環境演示版,運行效果如圖5。測試結果證明,仿真開發環境完美仿真了嵌入式系統內外部運行機制和開發環境,極大提高了嵌入式開發的效率,豐富了嵌入式系統的開發手段。
結語
本文結合構件化技術和軟件仿真技術,開創性地設計了一套既可用于漸進式實驗教學又能達到無縫移植的商用嵌入式軟件仿真開發環境。此環境高度仿真了COACH嵌入式DSP系統的運行機制和開發環境。實踐證明,軟件仿真技術達到了設計代碼“無縫移植”的目的,而構件化技術使高校在嵌入式系統開發實驗課程上可以采取靈活多變、由簡入繁的漸進式教學。仿真開發環境雖完整仿真了嵌入式RTOS和軟件體系,但是屏顯和圖形用戶界面API的仿真尚需完善。另外,為使仿真開發環境能適應不同的硬件配置變化,構建通用仿真環境設計模式和硬件仿真工具箱是可行的思路。
作者:栗華山羅婕單位:華南理工大學南校區計算中心華南理工大學工程訓練中心