平震宇,李培峰,顧曉燕
(1.江蘇信息職業(yè)技術(shù)學(xué)院物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫214101;2.蘇州大學(xué)計算機科學(xué)與技術(shù)學(xué)院,江蘇蘇州215006)
隨著大規(guī)模在線開放課程(Massive Open Online Courses,MOOC)的迅猛發(fā)展,MOOC已經(jīng)成為風(fēng)靡教育領(lǐng)域以學(xué)習(xí)者為中心的在線學(xué)習(xí)模式,是新形勢下教育理念融合信息技術(shù)的產(chǎn)物。MOOC具有開放性、大規(guī)模學(xué)習(xí)人群參與、高品質(zhì)微視頻、完整的課程組織結(jié)構(gòu)以及基于大數(shù)據(jù)的學(xué)習(xí)分析等本質(zhì)特征[1]。2010年MOOC在美國初露端倪,2012年我國一些知名大學(xué)也紛紛加入MOOC行列。2014年5月教育部“高等學(xué)校本科教學(xué)質(zhì)量與教學(xué)改革工程”建設(shè)的愛課程網(wǎng)推出“中國大學(xué)MOOC”在線教育平臺,2015年在教育部出臺的《關(guān)于加強高等學(xué)校在線開放課程建設(shè)應(yīng)用與管理的意見》推動下“教學(xué)名師”紛紛走進了MOOC課堂,數(shù)以萬計的課程面向?qū)W習(xí)者開放。
隨著MOOC如火如荼建設(shè),課程越來越豐富,選課人數(shù)越來越多,問題和質(zhì)疑也隨之而來。對于計算機、電信等實踐性較強的學(xué)科有一個實際問題日益突出,MOOC單純的理論教學(xué)無法滿足授課需要,需要提供高品質(zhì)的實踐環(huán)節(jié)教學(xué)資源[2-3]。如果僅僅提供線上理論課程教學(xué)視頻,或者有實踐環(huán)節(jié)教學(xué)視頻,沒有實驗環(huán)境進行實際操作,可能導(dǎo)致只有少部分學(xué)習(xí)者能夠堅持下來[4]。
嵌入式Linux開發(fā)是一門實踐性很強的課程,學(xué)生必須配合大量的實踐練習(xí)才能掌握嵌入式相關(guān)技能。目前各院校計算機、電信專業(yè)都開設(shè)了嵌入式Linux開發(fā)課程,為滿足實踐教學(xué)要求,各院校都購買了嵌入式實驗設(shè)備,有些是功能大且全的嵌入式實驗箱,有些是功能單一的開發(fā)板[5]。這對于MOOC學(xué)習(xí)者就存在以下兩個問題:
(1)嵌入式系統(tǒng)試驗設(shè)備種類繁多、軟硬件資源各不相同,導(dǎo)致對應(yīng)的系統(tǒng)設(shè)置和操作的不同。
(2)實驗設(shè)備后期維護也存在較大的難度,一旦損壞需要較長的維修周期[6-7]。
因此虛擬仿真平臺為MOOC教學(xué)過程中的實踐教學(xué)提供了實現(xiàn)方法。通過構(gòu)建嵌入式虛擬仿真平臺,學(xué)習(xí)者在虛擬仿真平臺上完成各種預(yù)定的實踐項目。使MOOC學(xué)習(xí)者獲得一種高效、穩(wěn)定、廉價的實踐環(huán)境[8-9]。
Windows系統(tǒng)常用的虛擬仿真環(huán)境有Java虛擬機、Vmware,Microsoft的Virtual PC、Virtual Server等。嵌入式虛擬仿真環(huán)境有SkyEye,ARMulator以及本文使用的虛擬化模擬器(Quick Emulator,QEMU)。QEMU是使用可移植動態(tài)二進制翻譯器的模擬器??梢栽谀繕梭w系結(jié)構(gòu)(QEMU運行依賴的體系結(jié)構(gòu))的主機上模擬執(zhí)行源體系結(jié)構(gòu)(被模擬的體系結(jié)構(gòu))的操作系統(tǒng)和應(yīng)用程序。QEMU是純軟件實現(xiàn)的虛擬化模擬器,幾乎可以模擬任何硬件設(shè)備。例如x86、PowerPC、ARM、MIPS等多種目標平臺。Google在開發(fā)Android系統(tǒng)的同時使用QEMU開發(fā)了模擬器,降低了開發(fā)人員的開發(fā)成本,促進了Android技術(shù)的推廣。
QEMU支持兩種工作模式:在用戶模式仿真(user mode emulation)下,QEMU能夠模擬運行為源體系結(jié)構(gòu)編譯的應(yīng)用程序。在全系統(tǒng)模式仿真(system mode emulation)下,QEMU模擬源體系結(jié)構(gòu)的整個硬件平臺[10-11]。QEMU可以在目標體系架構(gòu)(如x86)下運行源體系架構(gòu)(如ARM)的操作系統(tǒng)和程序,它虛擬仿真一個完整的系統(tǒng),包括一個或多個處理器以及如顯卡、網(wǎng)卡等各種外圍設(shè)備,全系統(tǒng)模式仿真使用的范圍更加的廣泛[12-13]。
QEMU通過其快速、可移植的動態(tài)翻譯程序創(chuàng)建接近于主機性能的虛擬機[13-14]。QEMU完成編譯配置后,可以進行開發(fā)板級虛擬仿真,使學(xué)習(xí)者如同使用真實的開發(fā)板一樣。QEMU提供了以下4種不同模式的網(wǎng)絡(luò):網(wǎng)橋、網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Addresss Translation,NAT)內(nèi)置的用戶模式網(wǎng)絡(luò)、直接分配網(wǎng)絡(luò)設(shè)備。豐富的網(wǎng)絡(luò)支持特別有利于課程實踐教學(xué),例如BootLoad下載內(nèi)核、掛載網(wǎng)絡(luò)文件系統(tǒng)等。
目標體系結(jié)構(gòu)可以選擇Windows+MinGW或者Linux系統(tǒng),為了減少編譯系統(tǒng)代碼時產(chǎn)生的函數(shù)庫依賴問題,本文選用Xubuntu系統(tǒng)。Xubuntu是一份基于Ubuntu的Linux發(fā)行版,采用輕量級的XFce桌面環(huán)境,并面向低端機器作了優(yōu)化。
由于Mini2440開發(fā)板的軟硬件資源非常豐富,所以一直是嵌入式開發(fā)學(xué)習(xí)者的入門首選。Mini2440使用的基于ARM920T的S3C2440A芯片,QEMU有個項目分支專門支持S3C2440 芯片(http://repo.or.cz/qemu/mini2440.git)。首選下適配Mini2440 的QEMU,u-boot和內(nèi)核。
如果使用git下載速度慢,可以直接通過網(wǎng)頁下載。
下載完成后依次編譯QEMU程序,u-boot和內(nèi)核。首先編譯QEMU,在編譯之前先安裝zlib1g-dev、libsdldev兩個庫。使用下列命令編譯:
./configure--target-list=arm-softmmu
make-j4
QEMU主程序qemu-system-arm在arm-softmmu文件夾內(nèi),可以使用qemu-system-arm--version測試程序運行是否正常。
編譯u-boot,打開Makefile文件,修改編譯u-boot使用的交叉編譯工具鏈(Cross_Compile變量賦值armnone-linux-gnueabi-)。使用下列命令編譯:
make mini2440_config
make
編譯完成后在當前目錄下生成名為u-boot.bin的文件,將u-boot.bin 文件復(fù)制到/opt/mini2440 文件夾中。
編譯內(nèi)核,在編譯內(nèi)核之前首先使用命令apt-get install uboot-mkimage安裝uImage工具。進入內(nèi)核目錄,使用下列命令編譯內(nèi)核:
編譯完成之后在arch/arm/boot/目錄下生成uImage文件,將此文件復(fù)制到/opt/mini2440 文件夾中。
(1)編寫啟動腳本mini2440_start.sh。因為QEMU主程序qemu-system-arm啟動參數(shù)設(shè)置非常復(fù)雜,所有需要編寫mini2440_start啟動腳本,將腳本存放在/opt/mini2440文件夾中。啟動腳本內(nèi)容如下:
(2)創(chuàng)建網(wǎng)絡(luò)配置腳本。為了實現(xiàn)QEMU虛擬機與外部網(wǎng)絡(luò)的通信,需要在宿主機中創(chuàng)建并配置一個網(wǎng)橋,并將宿主機的接口作為網(wǎng)橋的一個接口。首先需要在宿主機中創(chuàng)建并配置一個tap設(shè)備,QEMU虛擬機將該tap設(shè)備連接到虛擬機VLAN中,將tap設(shè)備作為網(wǎng)橋的另一個接口,QEMU虛擬機通過tap設(shè)備就可以與外部網(wǎng)絡(luò)完全通信了。創(chuàng)建qemu-ifup腳本如下:
兩個網(wǎng)絡(luò)配置文件存放在/opt/mini2440文件夾下。
(3)掛載nfs文件系統(tǒng)??梢允褂肂usyBox自己搭建文件系統(tǒng)或者使用FriendlyARM的文件系統(tǒng)。將文件系統(tǒng)存放在/opt/root_qtopia目錄中。
再輸入bootm命令開始加載內(nèi)核,當文件系統(tǒng)掛在成功后,嵌入式虛擬仿真平臺的界面如圖1所示。
圖1 嵌入式虛擬仿真平臺的界面
《嵌入式Linux應(yīng)用與開發(fā)實踐》課程是一門實踐性非常強的課程。課程偏重于嵌入式系統(tǒng)設(shè)計開發(fā)中的軟件方面,涉及如何搭建嵌入式Linux開發(fā)環(huán)境、配置嵌入式開發(fā)常用服務(wù)、移植Bootloader、移植內(nèi)核、搭建文件系統(tǒng)、GUI應(yīng)用開發(fā)與移植。本課程遵循“一體化設(shè)計、結(jié)構(gòu)化課程、顆粒資源”建設(shè)為理念,以工作過程為導(dǎo)向,依據(jù)職業(yè)能力成長規(guī)律設(shè)計并組織課程內(nèi)容,建設(shè)以學(xué)習(xí)者為中心的在線開放課程。課程結(jié)合在線開放課程教學(xué)的特征與需求,圍繞教學(xué)目標精心設(shè)計教學(xué)活動,科學(xué)規(guī)劃在線學(xué)習(xí)資源,明確學(xué)業(yè)評價策略和學(xué)習(xí)激勵措施[15]。課程發(fā)布在“中國大學(xué)MOOC”在線教育平臺(見圖2)。
圖2 《嵌入式Linux應(yīng)用與開發(fā)實踐》課程主要內(nèi)容
課程運行一個學(xué)期后,受到本校學(xué)生的熱烈歡迎,取得了良好的教學(xué)效果,充分激發(fā)了學(xué)生的積極性和主動性。
由于兄弟院校的嵌入式試驗設(shè)備各不相同,實驗開發(fā)環(huán)境不一致,導(dǎo)致兄弟院校學(xué)生無法按照課程視頻進行相應(yīng)的實驗操作。為了使MOOC課程可以面向更多的學(xué)生,搭建了統(tǒng)一的嵌入式虛擬仿真環(huán)境(見圖3),并在課程公告發(fā)布了嵌入式虛擬仿真環(huán)境的百度云共享地址。根據(jù)嵌入式虛擬仿真環(huán)境優(yōu)化了課程實踐教學(xué)項目,見表1。課程以虛擬仿真項目為主導(dǎo),通過項目來學(xué)習(xí)對應(yīng)的理論知識,根據(jù)技術(shù)難點將項目劃分為“階段性虛擬仿真項目”和“綜合性虛擬仿真項目”。
圖3 虛擬仿真環(huán)境在MOOC課程中的應(yīng)用
表1 虛擬仿真實踐教學(xué)內(nèi)容
通過以上虛擬仿真項目的實踐練習(xí),使不同層次的學(xué)習(xí)者熟練掌握嵌入式Linux系統(tǒng)的開發(fā)流程和程序設(shè)計的各主要環(huán)節(jié),使學(xué)習(xí)者掌握嵌入式開發(fā)環(huán)境的搭建、嵌入式開發(fā)工具,交叉編譯、BootLoader移植、內(nèi)核移植等嵌入式系統(tǒng)開發(fā)的核心技能,為今后從事嵌入式系統(tǒng)行業(yè)的設(shè)計、開發(fā)工作打下堅實的基礎(chǔ)。MOOC通過搭建虛擬仿真環(huán)境統(tǒng)一了交叉編譯環(huán)境,使得不同院校的學(xué)習(xí)者可以使用相同版本的內(nèi)核和BootLoader。課前學(xué)習(xí)者通過MOOC提供的視頻學(xué)習(xí)課程的基礎(chǔ)知識以及完成相關(guān)階段性虛擬仿真項目與測試題。在課堂教學(xué)過程中針對完成項目過程中出現(xiàn)的問題進行討論,并采用輪流的方式對項目的重點和難點進行講解,最后由教師對項目的重點、難點進行系統(tǒng)的梳理和總結(jié)。
MOOC學(xué)習(xí)者免費獲得了開發(fā)實踐環(huán)境,不再需要為嵌入式實驗設(shè)備而發(fā)愁。自2016年在“中國大學(xué)MOOC”平臺上開課至今,平均每學(xué)期有6 000人參加課程的學(xué)習(xí),累計共有14 000人通過了課程考核,其中有1 200人獲得課程優(yōu)秀證書。從實施效果來看,課程體現(xiàn)“以學(xué)生為中心”的教育理念,學(xué)生自主學(xué)習(xí)的能力不斷增強,激發(fā)了學(xué)生對專業(yè)知識的興趣,通過虛擬仿真項目的實踐練習(xí)提高了解決問題的能力。學(xué)生的嵌入式項目開發(fā)的綜合能力不斷提升,通過課堂上討論提高學(xué)生對所學(xué)知識的綜合應(yīng)用和舉一反三的能力。各組學(xué)生通過相互協(xié)作完成綜合性虛擬仿真項目,培養(yǎng)了學(xué)生的團隊協(xié)作能力,增強了學(xué)生的團隊凝聚力。
針對在《嵌入式Linux應(yīng)用與開發(fā)實踐》MOOC中嵌入式實驗設(shè)備無法滿足實踐環(huán)節(jié)教學(xué)需要。本文通過構(gòu)建嵌入式虛擬仿真環(huán)境,使MOOC學(xué)習(xí)者能完成預(yù)定實踐教學(xué)項目。嵌入式虛擬仿真環(huán)境可以讓MOOC學(xué)習(xí)者免費獲得開發(fā)實踐環(huán)境,并且嵌入式虛擬仿真平臺具有很好的可擴展性。經(jīng)過兩年的實際應(yīng)用結(jié)果表明將嵌入式虛擬仿真平臺應(yīng)用于MOOC實踐教學(xué)后,能充分發(fā)揮虛擬仿真與MOOC的優(yōu)勢,通過開放與共享,并提供優(yōu)質(zhì)、高效的、穩(wěn)定的、免費的虛擬仿真平臺,將“以學(xué)生為中心”的教學(xué)理念和模式充分展示出來。