呂為工,張 策,2,李 斌
(1.哈爾濱工業(yè)大學(xué)(威海)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;2.哈爾濱工業(yè)大學(xué)(威海)教務(wù)處,山東威海 264209)
嵌入式系統(tǒng)課程是一門軟硬件交叉課程,目前在高等院校計(jì)算機(jī)專業(yè)和電子類專業(yè)普遍開設(shè)。作為一門直接面向應(yīng)用的課程,這2 個(gè)專業(yè)分別培養(yǎng)嵌入式軟件工程師和嵌入式硬件工程師人才。隨著技術(shù)進(jìn)步和社會(huì)發(fā)展,面向計(jì)算機(jī)專業(yè)的嵌入式軟件工程師人才需求不斷擴(kuò)大,從百度招聘網(wǎng)[1]可知,北京、上海和深圳的嵌入式軟件工程師需求遠(yuǎn)大于嵌入式硬件工程師需求,大約為其6 倍,這種情況決定了嵌入式系統(tǒng)課程在整個(gè)嵌入式教學(xué)體系中的重要地位,如表1 所示。
表1 北京上海深圳3 地嵌入式軟件/硬件工程師需求情況及對(duì)比
在嵌入式系統(tǒng)教學(xué)中,與應(yīng)用關(guān)系最密切的是實(shí)踐教學(xué),其是合格嵌入式人才培養(yǎng)的最終環(huán)節(jié),許多嵌入式系統(tǒng)課程設(shè)計(jì)都針對(duì)實(shí)踐教學(xué),如華南農(nóng)業(yè)大學(xué)信息學(xué)院的“競(jìng)教結(jié)合”[2]、東華理工大學(xué)軟件學(xué)院的“面向卓越工程師培養(yǎng)”[3]、國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院的“合作式實(shí)踐教學(xué)”[4]等在這方面進(jìn)行了嘗試。雖然這些嘗試從多個(gè)角度對(duì)嵌入式系統(tǒng)實(shí)踐教學(xué)提供了助益,但沒有直接提供嵌入式系統(tǒng)實(shí)踐教學(xué)內(nèi)容的設(shè)計(jì)思路。本文針對(duì)計(jì)算機(jī)專業(yè)的嵌入式系統(tǒng)課程進(jìn)行設(shè)計(jì),從嵌入式應(yīng)用系統(tǒng)角度出發(fā),基于嵌入式軟件工程師構(gòu)建應(yīng)用系統(tǒng)主要工作,直接給出實(shí)驗(yàn)內(nèi)容規(guī)劃。
電子類專業(yè)強(qiáng)調(diào)硬件底層,一般提供基于單片機(jī)的硬件開發(fā)實(shí)驗(yàn)[5]或多種硬件單元實(shí)驗(yàn)[6],一般不使用嵌入式操作系統(tǒng),或僅完成操作系統(tǒng)下硬件單元的簡(jiǎn)單控制[7];計(jì)算機(jī)專業(yè)則強(qiáng)調(diào)嵌入式操作系統(tǒng)使用,除個(gè)別學(xué)校沿襲電子類專業(yè)實(shí)驗(yàn)內(nèi)容[11]外,大部分基于嵌入式操作系統(tǒng)WindowsCE[8]或Linux[9-10]設(shè)計(jì)實(shí)踐內(nèi)容。硬件方面一般使用操作系統(tǒng)提供驅(qū)動(dòng)支持,不需要或很少需要驅(qū)動(dòng)程序開發(fā)。因此,計(jì)算機(jī)專業(yè)的嵌入式實(shí)踐教學(xué)內(nèi)容通常底層硬件支持部分偏弱,偏重操作系統(tǒng)編程,缺乏統(tǒng)籌軟硬件的合理設(shè)計(jì)。
本文從嵌入式軟件工程師構(gòu)建應(yīng)用系統(tǒng)主要工作出發(fā),從嵌入式應(yīng)用系統(tǒng)角度統(tǒng)籌嵌入式系統(tǒng)課程設(shè)計(jì)教學(xué)內(nèi)容,無(wú)論是整體還是局部的實(shí)踐教學(xué)設(shè)計(jì),均符合培養(yǎng)嵌入式軟件工程師目標(biāo)。設(shè)計(jì)加強(qiáng)了硬件驅(qū)動(dòng)程序?qū)嵺`環(huán)節(jié),著重培養(yǎng)學(xué)生使用而不是設(shè)計(jì)硬件的能力,使學(xué)生在熟悉嵌入式系統(tǒng)軟硬件開發(fā)環(huán)境后,能夠掌握構(gòu)建典型嵌入式應(yīng)用系統(tǒng)過(guò)程中涉及的各個(gè)知識(shí)點(diǎn)和相關(guān)軟件應(yīng)用。
嵌入式應(yīng)用系統(tǒng)通常有兩類:一類是基于單片機(jī)風(fēng)格的嵌入式應(yīng)用系統(tǒng),這類系統(tǒng)通常不包含操作系統(tǒng),軟件相對(duì)簡(jiǎn)單,更多針對(duì)的是嵌入式硬件工程師;另一類嵌入式應(yīng)用系統(tǒng)則使用比較高端的嵌入式系統(tǒng)硬件并基于嵌入式操作系統(tǒng),這類系統(tǒng)目前的開發(fā)環(huán)境主要為L(zhǎng)inux+QT或安卓,嵌入式軟件工程師主要工作就是基于這樣的開發(fā)環(huán)境構(gòu)建嵌入式應(yīng)用系統(tǒng)。
本文的嵌入式應(yīng)用系統(tǒng)指上述第二類系統(tǒng),為此首先給出一個(gè)功能完整的嵌入式應(yīng)用系統(tǒng),它集成有專用的硬件和軟件業(yè)務(wù)邏輯,運(yùn)行在操作系統(tǒng)之上,支持?jǐn)?shù)據(jù)管理、Web 訪問(wèn)功能,擁有可視圖形界面。嵌入式應(yīng)用系統(tǒng)構(gòu)建過(guò)程如圖1 所示。
從圖1 可以看出,嵌入式軟件工程師在系統(tǒng)構(gòu)建過(guò)程中要完成4 部分工作:
(1)在嵌入式硬件平臺(tái)上安裝和移植操作系統(tǒng),通常包括bootloader、內(nèi)核和根文件系統(tǒng)的移植與燒寫,一般要進(jìn)行操作系統(tǒng)軟件配置和編譯,除特殊情況外一般不需要修變?cè)创a。
(2)對(duì)于操作系統(tǒng)不支持的個(gè)性化硬件,需要為其編寫驅(qū)動(dòng)程序。驅(qū)動(dòng)程序編寫要遵循操作系統(tǒng)規(guī)范,通常使用C 語(yǔ)言,需要了解嵌入式系統(tǒng)硬件接口。
(3)嵌入式應(yīng)用系統(tǒng)可能需要數(shù)據(jù)庫(kù)、Web 服務(wù)器及圖形用戶界面,需要在嵌入式環(huán)境下安裝或移植相關(guān)軟件,通常是一些可執(zhí)行程序或函數(shù)庫(kù),有自己的編程及使用規(guī)范。
(4)應(yīng)用層部分基于前面3 部分提供支持進(jìn)行編程,要完成應(yīng)用系統(tǒng)的業(yè)務(wù)邏輯及圖形用戶界面,一般使用C++或Java 編程,Web 后臺(tái)通常使用公用網(wǎng)關(guān)接口CGI(Common Gateway Interface)編程。
上述4 部分工作中,第(1)部分通常在嵌入式系統(tǒng)課程開發(fā)環(huán)境構(gòu)建實(shí)驗(yàn)中完成,是嵌入式系統(tǒng)課程設(shè)計(jì)的先期條件,而嵌入式系統(tǒng)課程設(shè)計(jì)則應(yīng)包含(2)、(3)和(4)這幾部分內(nèi)容。
圖1 典型嵌入式應(yīng)用系統(tǒng)構(gòu)建過(guò)程
要考慮高?,F(xiàn)有的嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)設(shè)備能否完成一個(gè)典型的嵌入式應(yīng)用系統(tǒng)實(shí)驗(yàn)教學(xué),嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)平臺(tái)情況如表2 所示。
一個(gè)穿著制服、管家打扮的男仆從房子里迎出來(lái)。她輕輕吩咐了幾句,用手示意有客人。管家躬身向我示禮,然后快步退下。
表2 現(xiàn)有嵌入式系統(tǒng)教學(xué)實(shí)驗(yàn)平臺(tái)情況
現(xiàn)有嵌入式系統(tǒng)實(shí)踐課程主要問(wèn)題有:
(1)實(shí)驗(yàn)內(nèi)容缺乏應(yīng)用系統(tǒng)視角,寬度不夠,沒有明確的整體構(gòu)架具象化要求,很多題目只涉及嵌入式應(yīng)用系統(tǒng)中一個(gè)很小的方面。
(2)很多課程設(shè)計(jì)題目都基于某種嵌入式硬件,如八字?jǐn)?shù)碼管和點(diǎn)陣數(shù)碼管、步進(jìn)電機(jī)、AD、實(shí)時(shí)時(shí)鐘RTC(Real Time Clock)、按鍵或鍵盤等,讓學(xué)生從頭構(gòu)建一個(gè)簡(jiǎn)單的基于底層硬件程序,這與嵌入式應(yīng)用系統(tǒng)設(shè)計(jì)中利用操作系統(tǒng)提供底層硬件支持生成應(yīng)用系統(tǒng)的方式差異很大。
(3)一般對(duì)Web 編程、圖形用戶界面GUI(Graphical User Interface)編程和數(shù)據(jù)庫(kù)編程沒有強(qiáng)制要求,這與網(wǎng)絡(luò)時(shí)代、數(shù)據(jù)化及物聯(lián)化的新時(shí)代嵌入式應(yīng)用相背離。
從應(yīng)用系統(tǒng)角度規(guī)劃嵌入式系統(tǒng)課程設(shè)計(jì)內(nèi)容以解決上述問(wèn)題,只要在課程設(shè)計(jì)過(guò)程中明確要求構(gòu)建一個(gè)“麻雀雖小、五臟俱全”的嵌入式應(yīng)用系統(tǒng),使之包含圖1(2)、(3)和(4)部分內(nèi)容,同時(shí)合理設(shè)計(jì)嵌入式系統(tǒng)實(shí)驗(yàn)及課程設(shè)計(jì)指導(dǎo)書,減少學(xué)生完成單個(gè)功能實(shí)驗(yàn)的工作量,使之將更多精力投入到利用相關(guān)開發(fā)環(huán)境和相關(guān)軟件完成應(yīng)用系統(tǒng)功能中,就能有效解決上述問(wèn)題。
嵌入式系統(tǒng)課程設(shè)計(jì)任務(wù)是完成一個(gè)嵌入式應(yīng)用系統(tǒng),這個(gè)嵌入式應(yīng)用系統(tǒng)要具有設(shè)備驅(qū)動(dòng)、數(shù)據(jù)管理、Web頁(yè)面及圖形界面等常用功能。為達(dá)成實(shí)現(xiàn)嵌入式應(yīng)用系統(tǒng)目標(biāo),筆者提供一些針對(duì)這些功能的單元實(shí)驗(yàn),以測(cè)試程序和實(shí)驗(yàn)指導(dǎo)書形式供學(xué)生學(xué)習(xí)使用。
雖然單元實(shí)驗(yàn)并不是嵌入式系統(tǒng)課程設(shè)計(jì)的直接任務(wù),也沒有與成績(jī)掛鉤,但如果不能理解和熟練運(yùn)用這些單元實(shí)驗(yàn)涉及到的技術(shù),就無(wú)法完成嵌入式應(yīng)用系統(tǒng)設(shè)計(jì)的。如果精心設(shè)計(jì)單元實(shí)驗(yàn)測(cè)試程序和實(shí)驗(yàn)指導(dǎo)書,充分利用學(xué)生已經(jīng)學(xué)習(xí)完成的嵌入式系統(tǒng)課程、編程語(yǔ)言等基礎(chǔ)知識(shí),則能更容易地完成嵌入式應(yīng)用系統(tǒng)設(shè)計(jì)。
表3 嵌入式系統(tǒng)課程設(shè)計(jì)單元實(shí)驗(yàn)內(nèi)容規(guī)劃
表3 為哈爾濱工業(yè)大學(xué)(威海)使用博創(chuàng)公司的ARM9實(shí)驗(yàn)箱及Linux+QT 開發(fā)環(huán)境的單元實(shí)驗(yàn)內(nèi)容規(guī)劃,其中單元實(shí)驗(yàn)內(nèi)容包含圖1 給出的所有4 個(gè)方面內(nèi)容。
(1)①、②和③部分在實(shí)驗(yàn)平臺(tái)已經(jīng)具備,很少甚至并不需要更改(除非需要添加新的底層支持)。
(2)第④部分給出實(shí)驗(yàn)箱部分硬件的使用方式,這些硬件既有輸入設(shè)備也有輸出設(shè)備,可以模擬應(yīng)用系統(tǒng)的輸入輸出。
(3)第⑤部分給出常用的3 種嵌入式Web 服務(wù)器,其中httpd 有源碼分析可做針對(duì)性修改;BOA 是相對(duì)比較早的Web 服務(wù)器,可以查找很多例子;goAhead 目前使用較多,效率較高,這里給出與LED 驅(qū)動(dòng)相結(jié)合通過(guò)網(wǎng)頁(yè)控制LED的例子。
(4)第⑥部分給出適用于嵌入式應(yīng)用的精簡(jiǎn)數(shù)據(jù)庫(kù)SQLite,數(shù)據(jù)處理簡(jiǎn)單方便,至于MySQL 或目前比較熱門的時(shí)間序列數(shù)據(jù)庫(kù)課程設(shè)計(jì)指導(dǎo)并沒有提供,如果使用需要學(xué)生自行查找相關(guān)資料。
(5)圖形界面實(shí)現(xiàn)給出QT 編程實(shí)例,同樣包含與LED驅(qū)動(dòng)相結(jié)合的通過(guò)圖形界面控制LED 的例子,這部分也可在安卓環(huán)境下使用Java 語(yǔ)言通過(guò)安卓框架實(shí)現(xiàn)。筆者學(xué)校的課程設(shè)計(jì)是基于ARM9 實(shí)驗(yàn)箱的,故沒有提供。
和單元實(shí)驗(yàn)不同,綜合實(shí)驗(yàn)部分要考評(píng)嵌入式系統(tǒng)課程設(shè)計(jì)成績(jī),是學(xué)生最終的實(shí)驗(yàn)成績(jī)。綜合實(shí)驗(yàn)既要有靈活性,支持多變的應(yīng)用背景,利于培養(yǎng)學(xué)生的創(chuàng)新思維,又要有明確要求,不要讓學(xué)生在實(shí)踐技術(shù)掌握上失于偏頗,適合于全面提升能力。
為此,本文沒有在綜合實(shí)驗(yàn)選題上加以限制,僅給出參考性而不是限制性題目。綜合實(shí)驗(yàn)的強(qiáng)制性要求不是體現(xiàn)在應(yīng)用系統(tǒng)功能上,而是體現(xiàn)在系統(tǒng)使用的嵌入式技術(shù)上,同時(shí)在硬件使用上也不作硬性要求,有能力的學(xué)生可以自備硬件平臺(tái),綜合實(shí)驗(yàn)具體要求如下:
(1)要在實(shí)驗(yàn)平臺(tái)上使用硬件,包括平臺(tái)內(nèi)置的所有硬件或自備外接模塊。要有針對(duì)設(shè)備的編程,可通過(guò)設(shè)備驅(qū)動(dòng)程序或硬件接口編程實(shí)現(xiàn)。
(2)要有圖形用戶界面,可以使用QTE 利用實(shí)驗(yàn)箱上的LCD 編碼生成用戶界面UI(UserInterface),利用觸摸屏完成人機(jī)交互。圖形界面要規(guī)整美觀、大方友好,支持中文。
(3)支持Web 操作,在主機(jī)上能通過(guò)網(wǎng)絡(luò)利用實(shí)驗(yàn)平臺(tái)上的Web 服務(wù)器生成網(wǎng)頁(yè)。界面同樣要規(guī)整美觀、大方友好,支持中文,后臺(tái)實(shí)現(xiàn)為CGI 編程。
(4)要有數(shù)據(jù)管理功能,使用數(shù)據(jù)庫(kù)軟件編程,支持實(shí)驗(yàn)數(shù)據(jù)增刪改查,用戶接口可以為Web 頁(yè)面或QT 圖形用戶界面。
嵌入式系統(tǒng)課程設(shè)計(jì)在春季學(xué)期開課,時(shí)長(zhǎng)為2 個(gè)星期,使用博創(chuàng)公司的ARM9 實(shí)驗(yàn)箱,授課對(duì)象為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)。2009 年開設(shè)嵌入式系統(tǒng)課程確定了教學(xué)內(nèi)容[12]及教材[13],2017 年增設(shè)了3 門嵌入式系統(tǒng)課程設(shè)計(jì)相關(guān)課程。課程設(shè)計(jì)伊始即采用基于嵌入式應(yīng)用系統(tǒng)的綜合實(shí)驗(yàn)方案,目前已執(zhí)行3 年。
圖2 為學(xué)生完成的3 個(gè)綜合實(shí)驗(yàn),從左到右分別為基于博創(chuàng)實(shí)驗(yàn)箱的嵌入式點(diǎn)菜系統(tǒng)、視頻監(jiān)控系統(tǒng)以及學(xué)生自備硬件平臺(tái)構(gòu)建的仿真武器控制系統(tǒng)。
圖2 學(xué)生完成的3 個(gè)綜合實(shí)驗(yàn)
通過(guò)參加嵌入式系統(tǒng)課程設(shè)計(jì),學(xué)生普遍提高了應(yīng)用實(shí)踐能力,理解了軟硬件結(jié)合的基本方法,提升了創(chuàng)新思維。很多學(xué)生在之后畢業(yè)設(shè)計(jì)中主動(dòng)選擇嵌入式應(yīng)用系統(tǒng)方面題目,從敢于在應(yīng)用系統(tǒng)中使用硬件轉(zhuǎn)變到善于在應(yīng)用系統(tǒng)中使用硬件。此外,有3 組學(xué)生以嵌入式系統(tǒng)課程設(shè)計(jì)作品為藍(lán)本加以改進(jìn),參加創(chuàng)新創(chuàng)業(yè)大賽,其中“多功能人體健康監(jiān)測(cè)系統(tǒng)”“基于人聯(lián)網(wǎng)的心電監(jiān)測(cè)裝置”獲山東省大學(xué)生科技創(chuàng)新大賽校內(nèi)賽三等獎(jiǎng)[14],“物聯(lián)積木”獲第二屆“校長(zhǎng)杯”創(chuàng)新創(chuàng)業(yè)競(jìng)賽一等獎(jiǎng)[15]。
嵌入式系統(tǒng)課程設(shè)計(jì)實(shí)施3 年來(lái),很好地完成了實(shí)踐教學(xué)任務(wù),7 次課的學(xué)生評(píng)教平均分超過(guò)90,如表4 所示。
表4 幾門嵌入式系統(tǒng)課程設(shè)計(jì)相關(guān)課程評(píng)教成績(jī)
嵌入式系統(tǒng)課程設(shè)計(jì)內(nèi)容從嵌入式應(yīng)用系統(tǒng)出發(fā)進(jìn)行設(shè)計(jì),有兩個(gè)主要特點(diǎn):
(1)天然繼承了應(yīng)用系統(tǒng)的整體性,實(shí)踐教學(xué)各部分內(nèi)容比較均衡,從宏觀到微觀、從整體到局部、從硬件到軟件,都與嵌入式系統(tǒng)應(yīng)用模式相匹配,有利于培養(yǎng)合格的嵌入式軟件工程師。
(2)內(nèi)容規(guī)劃中很自然包含一些在嵌入式應(yīng)用系統(tǒng)廣泛使用但在實(shí)踐教學(xué)中容易被忽略的內(nèi)容,如嵌入式可視化技術(shù)、嵌入式數(shù)據(jù)庫(kù)技術(shù)以及基于嵌入式Web 服務(wù)器的網(wǎng)絡(luò)平臺(tái)支持等,使實(shí)踐教學(xué)更加全面。
由于內(nèi)容規(guī)劃是基于嵌入式應(yīng)用系統(tǒng),而應(yīng)用系統(tǒng)會(huì)隨著技術(shù)進(jìn)步而變化,因此對(duì)授課教師提出了更高要求。只有緊跟嵌入式系統(tǒng)發(fā)展步伐,讓實(shí)踐教學(xué)內(nèi)容始終與之相匹配,才能更好地完成教學(xué)目標(biāo),為社會(huì)輸送更多實(shí)用的嵌入式系統(tǒng)人才。