嵌入式系統Web在線仿真實驗平臺設計

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

導語:嵌入式系統Web在線仿真實驗平臺設計一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

嵌入式系統Web在線仿真實驗平臺設計

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

關鍵詞:嵌入式系統;在線仿真實驗;3D可視化;在線編譯

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

1系統設計

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

2核心模塊設計

本系統在現有的嵌入式在線實驗平臺的基礎上降低了實驗系統操作復雜性,簡化了編譯操作方式。利用Unity3D技術可以直觀地展示實驗板的狀態,學生通過仿真實驗平臺可以獲得和實驗室相同的實驗體驗。

2.1“一鍵式”代碼編譯機制

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

2.2基于Unity3D實驗板可視化設計

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

3系統測試與教學實踐

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

4結語

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

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