嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)平臺設(shè)計(jì)

時間:2022-10-20 09:47:45

導(dǎo)語:嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)平臺設(shè)計(jì)一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)平臺設(shè)計(jì)

摘要:為解決嵌入式系統(tǒng)在線仿真實(shí)驗(yàn)教學(xué)平臺系統(tǒng)操作復(fù)雜性和實(shí)驗(yàn)板狀態(tài)可視化問題,提出優(yōu)化編譯功能,設(shè)計(jì)“一鍵式”遠(yuǎn)程在線編譯的方法。該方法屏蔽了嵌入式交叉編譯細(xì)節(jié),支持學(xué)生通過瀏覽器操作完成代碼編譯。融合虛擬現(xiàn)實(shí)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)基于Unity3D的可視化模塊,通過實(shí)時監(jiān)控部署在遠(yuǎn)程服務(wù)器端的實(shí)驗(yàn)板的輸出端口,采用3D渲染的實(shí)驗(yàn)板模型進(jìn)行可視化顯示輸出。教學(xué)實(shí)踐表明,89.72%的學(xué)生認(rèn)為實(shí)驗(yàn)平臺操作便捷、實(shí)驗(yàn)顯示效果好。該方法有效降低了實(shí)驗(yàn)入門難度,提高了學(xué)生的實(shí)驗(yàn)效率和體驗(yàn)度。

關(guān)鍵詞:嵌入式系統(tǒng);在線仿真實(shí)驗(yàn);3D可視化;在線編譯

嵌入式系統(tǒng)作為計(jì)算機(jī)、電子信息及自動化等信息類工科專業(yè)的核心課程,具有理論學(xué)習(xí)難度大、實(shí)踐操作性強(qiáng)等特點(diǎn)[1]。實(shí)驗(yàn)教學(xué)作為該課程的重要環(huán)節(jié),重點(diǎn)培養(yǎng)學(xué)生的動手實(shí)踐能力。傳統(tǒng)的教學(xué)模式需要在固定時間和地點(diǎn)統(tǒng)一組織學(xué)生“一人一板”開展實(shí)驗(yàn),在時間和空間上都有很大的局限性。部分院校因?yàn)閷W(xué)生較多,需要分批進(jìn)行實(shí)驗(yàn),甚至為了節(jié)省實(shí)驗(yàn)時間,實(shí)驗(yàn)內(nèi)容以演示或驗(yàn)證性為主[2]。此外,這種模式下的教學(xué),如果遇到突發(fā)性疫情,將無法繼續(xù)開展教學(xué)工作。針對上述教學(xué)模式中的不足,結(jié)合互聯(lián)網(wǎng)技術(shù),嵌入式系統(tǒng)在線仿真實(shí)驗(yàn)教學(xué)平臺應(yīng)運(yùn)而生[3-4]。嵌入式在線仿真實(shí)驗(yàn)平臺為學(xué)生提供了開放的嵌入式系統(tǒng)實(shí)驗(yàn)環(huán)境[5-6],學(xué)生可自行選擇合適的時間、地點(diǎn)通過在線方式開展實(shí)驗(yàn)。新的實(shí)驗(yàn)形式解決了傳統(tǒng)教學(xué)模式存在的不足,但為了達(dá)到良好的實(shí)驗(yàn)效果,在技術(shù)上需要解決的問題主要包括:(1)編譯環(huán)境配置復(fù)雜。目前學(xué)生比較熟悉Windows系統(tǒng)作為開發(fā)和編譯環(huán)境,而嵌入式系統(tǒng)實(shí)驗(yàn)編譯環(huán)境一般采用基于Linux的交叉編譯的方式,對于不熟悉Linux系統(tǒng)操作的學(xué)生需要投入大量的時間學(xué)習(xí)常用操作命令,在一定程度上增加了實(shí)驗(yàn)的入門難度,容易降低學(xué)生實(shí)驗(yàn)興趣。(2)遠(yuǎn)程在線實(shí)驗(yàn)無法觀察實(shí)驗(yàn)板數(shù)碼管和LED燈的狀態(tài),導(dǎo)致部分實(shí)驗(yàn)內(nèi)容受限。遠(yuǎn)程在線仿真實(shí)驗(yàn)平臺往往只能通過命令行的方式與實(shí)驗(yàn)板進(jìn)行交互,并通過命令行輸出的信息查看實(shí)驗(yàn)結(jié)果。學(xué)生無法觀察到實(shí)驗(yàn)板的顯示狀態(tài),所以只能部署僅僅通過命令行操作就能完成的實(shí)驗(yàn)內(nèi)容,限制了實(shí)驗(yàn)內(nèi)容的多樣性和創(chuàng)新性[7]。鑒于上述問題,需要系統(tǒng)設(shè)計(jì)的創(chuàng)新來突破這些局限,從而使基于在線仿真實(shí)驗(yàn)平臺的教學(xué)質(zhì)量有質(zhì)的提升[8-9]。本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于3D可視的嵌入式系統(tǒng)web在線仿真實(shí)驗(yàn)平臺,該平臺的主要優(yōu)勢包括:(1)設(shè)計(jì)了一種“一鍵式”遠(yuǎn)程在線編譯方法,該方法屏蔽了編譯細(xì)節(jié),學(xué)生只需在瀏覽器中編輯代碼,選擇編譯類型,即可編譯生成可執(zhí)行文件。不需學(xué)生花時間配置編譯環(huán)境,熟悉Linux系統(tǒng)和操作命令,只需重點(diǎn)關(guān)注課程實(shí)驗(yàn)內(nèi)容,降低了實(shí)驗(yàn)門檻。(2)融合虛擬現(xiàn)實(shí)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一種基于Unity3D的可視化模塊[10]。該模塊實(shí)時監(jiān)控部署在遠(yuǎn)程服務(wù)器端的實(shí)驗(yàn)板的輸入輸出端口,獲取數(shù)碼管、LED燈等顯示組件的狀態(tài),并基于HTTP協(xié)議將數(shù)據(jù)傳遞到前端瀏覽器[11],通過3D渲染的實(shí)驗(yàn)板模型進(jìn)行可視化顯示輸出。

1系統(tǒng)設(shè)計(jì)

在線仿真實(shí)驗(yàn)平臺主要實(shí)現(xiàn)學(xué)生通過Web瀏覽器訪問實(shí)驗(yàn)環(huán)境,開展嵌入式系統(tǒng)實(shí)驗(yàn),并通過3D虛擬硬件仿真運(yùn)行效果。圖1是嵌入式系統(tǒng)在線仿真實(shí)驗(yàn)平臺的總體架構(gòu)圖,該系統(tǒng)由實(shí)驗(yàn)服務(wù)和Web服務(wù)構(gòu)成,左側(cè)部分連接實(shí)驗(yàn)板的調(diào)試系統(tǒng),與實(shí)驗(yàn)板進(jìn)行實(shí)際交互,為實(shí)驗(yàn)服務(wù)。右側(cè)部分為Web服務(wù),負(fù)責(zé)實(shí)驗(yàn)服務(wù)部分與用戶之間的交互,將用戶指令傳遞給實(shí)驗(yàn)服務(wù)并將實(shí)驗(yàn)服務(wù)返回的結(jié)果通過瀏覽器展示給用戶。實(shí)驗(yàn)服務(wù)部分主要實(shí)現(xiàn)兩個功能。(1)代碼編譯。該模塊通過接口服務(wù)接收用戶發(fā)送過來的代碼文本,然后調(diào)用本地編譯環(huán)境的編譯指令,得到編譯返回結(jié)果并返還給用戶。(2)運(yùn)行程序。該模塊通過接口服務(wù)接收用戶發(fā)送過來的指令(Linux指令),然后通過SSH協(xié)議發(fā)送給連接的實(shí)驗(yàn)板,并將返回的運(yùn)行指令結(jié)果以及實(shí)驗(yàn)板上的LED和數(shù)碼管狀態(tài)返回給Web服務(wù)。Web服務(wù)部分主要包含三個功能。(1)用戶管理服務(wù)。Web服務(wù)負(fù)責(zé)管理用戶的信息,判斷用戶的身份,防止用戶直接調(diào)用實(shí)驗(yàn)服務(wù)提供的接口,防止實(shí)驗(yàn)服務(wù)直接暴露在網(wǎng)絡(luò)中,增加了實(shí)驗(yàn)服務(wù)的安全性。(2)實(shí)驗(yàn)數(shù)據(jù)管理。該模塊記錄并保存用戶實(shí)驗(yàn)時的數(shù)據(jù),教師可以為學(xué)生實(shí)驗(yàn)打分,學(xué)生可以查看之前實(shí)驗(yàn)的數(shù)據(jù),對實(shí)驗(yàn)進(jìn)行復(fù)習(xí)。(3)仿真頁面模塊。該模塊將Unity引擎嵌入到Web頁面中[12],通過調(diào)用實(shí)驗(yàn)服務(wù)接口獲取實(shí)驗(yàn)板的實(shí)時狀態(tài),然后將返回的結(jié)果以LED燈和數(shù)碼管的形式顯示到前端頁面上,模擬了真實(shí)實(shí)驗(yàn)板的實(shí)時狀態(tài)。實(shí)驗(yàn)服務(wù)和Web服務(wù)之間采用HTTP協(xié)議,通過JSON數(shù)據(jù)包封裝進(jìn)行數(shù)據(jù)通信。圖2是系統(tǒng)的功能邏輯結(jié)構(gòu)圖,左側(cè)部分為實(shí)驗(yàn)服務(wù)結(jié)構(gòu)(也稱虛擬機(jī)開發(fā)服務(wù)),右側(cè)部分為Web服務(wù)結(jié)構(gòu)。

2核心模塊設(shè)計(jì)

本系統(tǒng)在現(xiàn)有的嵌入式在線實(shí)驗(yàn)平臺的基礎(chǔ)上降低了實(shí)驗(yàn)系統(tǒng)操作復(fù)雜性,簡化了編譯操作方式。利用Unity3D技術(shù)可以直觀地展示實(shí)驗(yàn)板的狀態(tài),學(xué)生通過仿真實(shí)驗(yàn)平臺可以獲得和實(shí)驗(yàn)室相同的實(shí)驗(yàn)體驗(yàn)。

2.1“一鍵式”代碼編譯機(jī)制

1)實(shí)驗(yàn)板編譯環(huán)境。實(shí)驗(yàn)板使用MY-IMX6-EK314,其內(nèi)核版本是Linux3.14.52。由于嵌入式平臺空間有限、資源匱乏,無法安裝并運(yùn)行平臺所需要的編譯器,因此在編譯代碼的過程中,采用了交叉編譯的思想。交叉編譯的本質(zhì)是在一個平臺上生成另一個平臺上的可執(zhí)行代碼,將代碼放到通用主機(jī)平臺上編譯,然后再傳到嵌入式平臺上運(yùn)行[13]。經(jīng)過多次測試,選擇運(yùn)行最穩(wěn)定的Ubuntu16.04作為代碼編譯平臺。實(shí)驗(yàn)中的代碼編譯主要分為兩類,應(yīng)用程序編譯和驅(qū)動程序編譯。應(yīng)用程序?yàn)橛脩魬B(tài)的,典型的有控制臺打印輸出、用戶空間文件讀寫,驅(qū)動程序?yàn)閮?nèi)核態(tài)的,可以讀取或賦值嵌入式實(shí)驗(yàn)板的寄存器,獲取控制實(shí)驗(yàn)板的輸入和輸出。用戶態(tài)程序編譯較為簡單,只需要調(diào)用編譯鏈將需要編譯的代碼文件編譯成對象文件鏈接到一起。而驅(qū)動程序編譯在編譯過程中不僅需要鏈接本地文件,還需要進(jìn)入到內(nèi)核源碼目錄與內(nèi)核中的對象文件進(jìn)行鏈接。2)“一鍵式”在線遠(yuǎn)程編譯。由于編譯環(huán)境為Ubuntu16.04,不是目前使用最為廣泛的Windows系統(tǒng),學(xué)生直接在Linux系統(tǒng)下進(jìn)行編譯操作,相比于在Windows系統(tǒng)下有更多的困難。同時編譯操作需要手動在控制臺中輸入命令,配置編譯路徑和環(huán)境變量,如果學(xué)生只有在集成好編譯鏈的集成開發(fā)環(huán)境進(jìn)行編程的經(jīng)驗(yàn),那么在該嵌入式實(shí)驗(yàn)板的交叉編譯平臺下進(jìn)行代碼的編譯會存在一定的上手難度。所以在設(shè)計(jì)的嵌入式平臺中,采用了遠(yuǎn)程在線編譯技術(shù)。如圖3所示,在線遠(yuǎn)程編譯系統(tǒng)整體分為前端和后端兩個部分。前段為Web瀏覽器端,獲取學(xué)生輸入的代碼文本和編譯選項(xiàng)。后端為Web服務(wù)器端,負(fù)責(zé)接收代碼文本,并將代碼在編譯環(huán)境中進(jìn)行編譯,編譯成功后,將編譯生成的可執(zhí)行文件通過FTP服務(wù)上傳到實(shí)驗(yàn)板中。后端在本地編譯環(huán)境中為每個用戶建立了獨(dú)立的工作空間,防止不同用戶的代碼因?yàn)槊嗤葐栴}而改變或丟失。同時程序通過使用Java提供的Process類與操作系統(tǒng)的Shell進(jìn)行交互,通過事先輸入到代碼中的編譯指令進(jìn)行編譯操作,同時讀取指令的返回值來判斷編譯是否成功,并將編譯返回的信息發(fā)送給前端,告知學(xué)生出現(xiàn)了錯誤。在線遠(yuǎn)程編譯免去了學(xué)生在Ubuntu上進(jìn)行編譯操作,只要有Web瀏覽器,即可進(jìn)行代碼的編寫和編譯。學(xué)生不用額外花時間安裝Ubuntu系統(tǒng)、配置編譯環(huán)境、熟悉命令,而是將重心移到實(shí)驗(yàn)本身。如圖4所示,用戶在瀏覽器中,輸入編輯好的代碼,點(diǎn)擊提交編譯按鈕,嵌入式實(shí)驗(yàn)板即可得到編譯后的可執(zhí)行文件。

2.2基于Unity3D實(shí)驗(yàn)板可視化設(shè)計(jì)

實(shí)驗(yàn)中需要用到的硬件資源包含數(shù)碼管、LED燈、按鍵,學(xué)生在實(shí)驗(yàn)的時候能夠觀察到數(shù)碼管和LED燈的顯示情況,以及能夠通過按下按鍵實(shí)現(xiàn)按鍵控制的邏輯。由于LED燈和數(shù)碼管實(shí)際上是實(shí)驗(yàn)板的IO輸出端口,按鍵是IO輸入端口,因此可以通過讀取實(shí)驗(yàn)板的IO寄存器來獲得實(shí)驗(yàn)板的硬件資源對應(yīng)的IO端口輸入和輸出的值,從而獲取實(shí)驗(yàn)板當(dāng)前數(shù)碼管、LED燈和按鍵的狀態(tài)[14]。我們在實(shí)驗(yàn)板上部署了監(jiān)控程序,通過周期性讀取實(shí)驗(yàn)板IO寄存器的值來實(shí)時監(jiān)控實(shí)驗(yàn)板的狀態(tài),然后將檢測到的值通過UDP(userdatagramprotocol)協(xié)議傳遞給與實(shí)驗(yàn)板相連的服務(wù)器上,服務(wù)器作為后端將獲取到的實(shí)驗(yàn)板信息值緩存下來,瀏覽器前端通過請求接口獲取實(shí)驗(yàn)板的狀態(tài)信息,然后后端將實(shí)驗(yàn)板信息傳遞給前端,前端根據(jù)獲取到的值對頁面進(jìn)行重新渲染,最終實(shí)驗(yàn)板的狀態(tài)就能夠通過Web瀏覽器真實(shí)地展現(xiàn)在學(xué)生眼前。實(shí)驗(yàn)板3D效果圖5所示。由于寄存器的讀取是內(nèi)核態(tài)的,而基于Socket的UDP協(xié)議通信程序是用戶態(tài)的,因此我們開發(fā)了IO寄存器讀寫驅(qū)動模塊,使得用戶態(tài)應(yīng)用程序可以按照定義好的格式操作指定的驅(qū)動文件,實(shí)現(xiàn)制定IO寄存器的讀寫[15]。監(jiān)控程序單線程運(yùn)行,對IO寄存器進(jìn)行周期性地讀寫,并通過UDP協(xié)議與服務(wù)器進(jìn)行通信,不會過多占用硬件資源而影響實(shí)驗(yàn)板的正常運(yùn)行。

3系統(tǒng)測試與教學(xué)實(shí)踐

針對可視化模塊的測試,設(shè)計(jì)了數(shù)碼管驅(qū)動開發(fā)及應(yīng)用實(shí)驗(yàn)和GPIO編程實(shí)驗(yàn),學(xué)生在客戶端編輯代碼,并上傳到實(shí)驗(yàn)板進(jìn)行編譯、運(yùn)行,瀏覽器端加載3D實(shí)驗(yàn)板模型,實(shí)現(xiàn)數(shù)碼管的可視化輸出,程序讀取實(shí)驗(yàn)板系統(tǒng)時間,并通過數(shù)碼管進(jìn)行顯示。圖5(a)為時分的可視化顯示結(jié)果。圖5(b)所示為GPIO實(shí)驗(yàn)的截圖,實(shí)驗(yàn)內(nèi)容為每隔1s點(diǎn)亮實(shí)驗(yàn)板上的一個LED燈。結(jié)合嵌入式系統(tǒng)課程內(nèi)容,基于3D可視的嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)教學(xué)平臺設(shè)計(jì)了8個實(shí)驗(yàn),如表1所示。2020年春季學(xué)期,選課人數(shù)共有21人,實(shí)驗(yàn)平臺服務(wù)器端共部署4塊實(shí)驗(yàn)板,平臺運(yùn)行時間為每周一到周六,周日關(guān)閉平臺進(jìn)行維護(hù)。順利完成疫情期間嵌入式系統(tǒng)實(shí)驗(yàn)課的教學(xué)工作。由于目前公開文獻(xiàn)中的嵌入式虛擬實(shí)驗(yàn)平臺主要以虛擬實(shí)驗(yàn)環(huán)境為主,在實(shí)驗(yàn)平臺架構(gòu)和功能上不能滿足我校嵌入式系統(tǒng)相關(guān)課程的需求。對課程組實(shí)驗(yàn)平臺優(yōu)化前后的使用情況對比分析(圖6)發(fā)現(xiàn),實(shí)驗(yàn)1—5的新平臺使用時間減少,由于新增實(shí)驗(yàn)及實(shí)驗(yàn)難度依次增加,新平臺使用時間整體呈上升趨勢。相比編譯優(yōu)化前和優(yōu)化后的“一鍵式”編譯,學(xué)生平均實(shí)驗(yàn)時長有所減少,并且時長差有所減少,原因在于編譯優(yōu)化前學(xué)生需要配置交叉編譯鏈等步驟,存在部分學(xué)生不熟悉配置步驟。其中實(shí)驗(yàn)6的ZLG7290數(shù)碼管驅(qū)動開發(fā)實(shí)驗(yàn)、實(shí)驗(yàn)7的ZLG7290數(shù)碼管應(yīng)用開發(fā)實(shí)驗(yàn)和實(shí)驗(yàn)8的GPIO編程實(shí)驗(yàn)由于需要觀察實(shí)驗(yàn)板工作狀態(tài),所以原來只能采用線下方式進(jìn)行,在本文基于3D可視的嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)平臺可以實(shí)現(xiàn)在線實(shí)驗(yàn),有效地豐富了實(shí)驗(yàn)內(nèi)容。圖6學(xué)生實(shí)驗(yàn)平均時長實(shí)驗(yàn)成績是實(shí)驗(yàn)完成質(zhì)量、實(shí)驗(yàn)報(bào)告等綜合評定的結(jié)果,能夠反映學(xué)生的學(xué)習(xí)效果和教師的教學(xué)效果。2019年秋季學(xué)期共有121人上課,采用非3D可視線上和線下結(jié)合的教學(xué)方式,由于線上實(shí)驗(yàn)不支持可視化顯示實(shí)驗(yàn)板狀態(tài)信息,關(guān)于數(shù)碼管和GPIO實(shí)驗(yàn)需要完全使用線下實(shí)驗(yàn)箱完成。2020年春季學(xué)期共有21人上課,受到疫情影響,全部采用基于3D可視的線上實(shí)驗(yàn)平臺開展實(shí)驗(yàn)教學(xué)。學(xué)生成績統(tǒng)計(jì)結(jié)果如圖7所示,2019年秋季學(xué)期線下實(shí)驗(yàn)和2020年春季學(xué)期的線上實(shí)驗(yàn)的教學(xué)效果基本相當(dāng),表明該實(shí)驗(yàn)平臺基本可以代替線下實(shí)驗(yàn)箱完成嵌入式系統(tǒng)實(shí)驗(yàn)課程的教學(xué)任務(wù)。2020年秋季學(xué)期共有146人上課,采用基于3D可視的線上實(shí)驗(yàn)和線下實(shí)驗(yàn)結(jié)合的教學(xué)方式,根據(jù)最新實(shí)驗(yàn)成績統(tǒng)計(jì),優(yōu)良率均高于前兩個學(xué)期。基于3D可視的嵌入式系統(tǒng)Web在線仿真實(shí)驗(yàn)平臺能夠最大化還原實(shí)驗(yàn)場景,學(xué)生可以在課下利用碎片時間,通過該實(shí)驗(yàn)平臺投入更多的學(xué)習(xí)時間,在課上對實(shí)驗(yàn)做進(jìn)一步驗(yàn)證并對擴(kuò)展實(shí)驗(yàn)進(jìn)行探索,從而獲得更好的實(shí)驗(yàn)成績,達(dá)到提高教學(xué)質(zhì)量的目的。通過對2020秋季學(xué)期上課的146名學(xué)生進(jìn)行實(shí)驗(yàn)體驗(yàn)效果問卷調(diào)查,其結(jié)果如圖8所示,89.72%的學(xué)生認(rèn)為集成一鍵式編譯和3D可視化的線上實(shí)驗(yàn)平臺操作便捷、實(shí)驗(yàn)結(jié)果顯示效果非常好。可見該實(shí)驗(yàn)平臺在一鍵式編譯和基于3D可視化方面的優(yōu)化設(shè)計(jì)獲得了絕大多數(shù)學(xué)生的認(rèn)可。

4結(jié)語

本文提出了一種嵌入式系統(tǒng)在線仿真實(shí)驗(yàn)教學(xué)平臺的設(shè)計(jì)與實(shí)現(xiàn)方案,該系統(tǒng)通過簡化編譯過程使得學(xué)生更加關(guān)注實(shí)驗(yàn)內(nèi)容本身,通過可視化實(shí)驗(yàn)板模型,學(xué)生可以實(shí)時觀測到實(shí)驗(yàn)現(xiàn)象,獲得與在實(shí)驗(yàn)室做實(shí)驗(yàn)的體驗(yàn)感。實(shí)踐證明本系統(tǒng)在滿足學(xué)生隨時隨地實(shí)驗(yàn)的基礎(chǔ)上,優(yōu)化了系統(tǒng)交互性,能夠增加實(shí)驗(yàn)內(nèi)容的豐富性,降低實(shí)驗(yàn)門檻。在培養(yǎng)學(xué)生動手實(shí)踐積極性和能力方面發(fā)揮了重要作用。

作者:李輝勇 牛建偉 豆淵博 符宗愷 單位:北京航空航天大學(xué)計(jì)算機(jī)學(xué)院