林志強 王陽
【摘? 要】在實際的嵌入式開發(fā)過程中,由于軟件對硬件的高度依賴性,使得嵌入式開發(fā)陷入軟硬件互相制約的困境。而仿真開發(fā)成為解決該困境的有效途徑,將嵌入式軟件開發(fā)放到虛擬平臺上進行,可極大提高開發(fā)效率。論文介紹了基于MPC5554的仿真研究。
【Abstract】In the actual embedded development process, due to the high dependence of software on hardware, embedded development falls into the dilemma of mutual restriction of software and hardware. Simulation development has become an effective way to solve this dilemma. The development efficiency can be greatly improved by putting embedded software development on virtual platform. This paper introduces the simulation research based on MPC5554.
【關(guān)鍵詞】SkyEye;MPC5554;仿真
【Keywords】SkyEye; MPC5554; simulation
【中圖分類號】V448.25? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻標志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章編號】1673-1069(2021)02-0152-02
1 引言
作為一款典型的指令級仿真平臺,SkyEye上集成了多種CPU核,擁有模擬多種CPU開發(fā)板的能力。它支持CPU核、輸入輸出設(shè)備、存儲器、內(nèi)存管理單元等多種硬件[1]。按照功能分類,其可以分為用戶接口單元、目標控制單元、符號處理單元、目標模擬單元四個部分。本文主要闡述SkyEye對MPC554最小系統(tǒng)及典型外設(shè)的仿真以及功能驗證。
2 SkyEye目標模擬模塊的總體設(shè)計
2.1 SkyEye配置選項
根據(jù)SkyEye的功能劃分,可以從七個方面對SkyEye模擬進行配置,分別是:
①CPU核的配置;
②存儲器單元(RAM、flash)的配置;
③UART控制單元配置;
④網(wǎng)絡(luò)設(shè)備的配置;
⑤日志管理單元配置;
⑥開發(fā)板的加載;
⑦LCD單元的選擇。
2.2 SkyEye邏輯執(zhí)行流程
在基本選項配置完好的基礎(chǔ)上,SkyEye便可以運行。按照時間及功能劃分兩個過程:
①仿真品臺基本選項的配置及加載階段;
②邏輯功能運行過程。
過程①是整個仿真的基礎(chǔ),是正常運行的基本保證。過程②則在①的基礎(chǔ)上,執(zhí)行特定CPU的仿真,模擬特定的外設(shè)資源,執(zhí)行特定邏輯操作。
3 SkyEye的外部設(shè)備模擬實現(xiàn)
本文在Windows操作系統(tǒng)下安裝SkyEye平臺,選擇CPU型號為MPC5554,配置網(wǎng)絡(luò)基本選項,在完成基本配置的基礎(chǔ)上,主要開發(fā)上節(jié)提到的目標模擬單元,執(zhí)行嵌入式軟件APP,同時可以靈活地分析和調(diào)試源代碼,該單元具體包括的內(nèi)容如圖1所示。
3.1 對I/O設(shè)備的模擬
對I/O設(shè)備的模擬,主要包括:設(shè)備模塊初始化、設(shè)備模塊讀寫、設(shè)備模塊釋放等。因此,在mpc_io.c中包括如下函數(shù):
①io_read/write_word:輸入輸出設(shè)備的讀取和寫入接口,例如,模擬量讀寫、數(shù)字量的讀寫等。
②io_init:設(shè)備的初始化,向SkyEye注冊一個設(shè)備,同時注冊讀寫的接口。
③io_free:釋放設(shè)備對象,以此來釋放內(nèi)存。
3.2 對通訊設(shè)備的模擬
對通訊設(shè)備的模擬,主要包括:設(shè)備模塊初始化、設(shè)備模塊讀寫、設(shè)備模塊釋放、通訊中斷的讀寫。因此,在mpc_uart.c中包括如下函數(shù):
①uart_reset:UART通訊緩存區(qū)復(fù)位動作的模擬。
②uart_do_cycle:模擬中斷方式通訊條件下的串口操作,uart _do_cycle函數(shù)執(zhí)行周期為定時中斷的周期,并根據(jù)條件產(chǎn)生中斷信號。
③uart _read/ uart _write:通訊設(shè)備讀寫函數(shù)。
④uart_init:通訊設(shè)備的初始化,向SkyEye注冊一個設(shè)備,同時注冊讀寫的接口。
⑤uart_free:釋放通訊設(shè)備對象,以此來釋放內(nèi)存。
4 構(gòu)建5554最小系統(tǒng)并測試外設(shè)
4.1 建立5554最小系統(tǒng)
MPC5554屬于PowerPC內(nèi)核系列的32位微控制器,是飛思卡爾推出的MPC5500第一代產(chǎn)品,廣泛應(yīng)用在工業(yè)制造、汽車等嵌入式系統(tǒng)中[2]。它支持浮點運算,具備較高的計算性能,可以達到工業(yè)控制多任務(wù)、多中斷實時控制的需求。本文根據(jù)官網(wǎng)提供源碼,實現(xiàn)MPC5554最小系統(tǒng),如圖2所示。
4.2 編寫外設(shè)驅(qū)動
上文實現(xiàn)的最小系統(tǒng)只具備中斷響應(yīng)及片上串口escia收發(fā)功能,需要我們進一步開發(fā)外設(shè)驅(qū)動程序,如輸入輸出、通訊設(shè)備。編寫外設(shè)驅(qū)動程序可分為以下步驟:
①編寫model.h頭文件,定義外設(shè)相關(guān)寄存器地址(需要保證model.h定義的地址和第二節(jié)定義仿真系統(tǒng)中的地址一致)、所有外設(shè)函數(shù)的聲明等;
②編寫uart.c文件,主要實現(xiàn)串口初始化(波特率及校驗方式)、串口復(fù)位、串口收發(fā)函數(shù);
③編寫io_input.c和io_output.c,完成輸入輸出設(shè)備的采集和發(fā)送[3]。
4.3 外設(shè)測試
本文使用5554片上定時中斷,中斷任務(wù)定義為task1,后臺任務(wù)task2。實現(xiàn)如下:
Void task1(void)
{
Io_read();? //IO讀取
Io_write();? //IO寫入
Uart_write();? //串口發(fā)送,用來監(jiān)視
Uart_read();? ?//串口讀取,用來接收指令
}
Void task2(void)
{
While(1)
{
//后臺任務(wù)
}
}
5 結(jié)語
為了避免嵌入式開發(fā)中軟件對硬件的高度耦合帶來的影響,引入指令級仿真的方式,可極大提升軟件開發(fā)效率。在仿真平臺上進行開發(fā),可以有效地調(diào)試和驗證軟件的功能,不再依賴于具體硬件。因此,本文基于SkyEye仿真平臺,構(gòu)建了MPC5554仿真環(huán)境,并模擬和測試了I\O設(shè)備功能,取得了良好的效果。
【參考文獻】
【1】楊興偉.基于SkyEye的SMDK2410硬件仿真平臺設(shè)計[J].可編程控制器與工廠自動化,2009(10):87-90+105.
【2】劉明.基于MPC5554的周期數(shù)據(jù)傳輸關(guān)鍵技術(shù)[J].電子科技,2015,28(07):51-53.
【3】趙成.嵌入式系統(tǒng)應(yīng)用基礎(chǔ):基于S3C2410A的SKYEYE仿真與實踐[M].北京:國防工業(yè)出版社,2012.