徐 偉
(青海師范大學,西寧 810001)
從上世紀90年代開始到現(xiàn)在,嵌入式系統(tǒng)廣泛應用在航空航天、車載電子、科研教學、交通管理、環(huán)境工程與工業(yè)控制等領域。2018年國家重大科技專項中提到“攻克智能終端嵌入式CPU 和操作系統(tǒng)的高性能低功耗等核心關鍵技術”的發(fā)展規(guī)劃,深度地推進嵌入式系統(tǒng)產(chǎn)業(yè)結構戰(zhàn)略性調(diào)整和優(yōu)化升級,推進行業(yè)技術創(chuàng)新和技術進步,促進嵌入式系統(tǒng)行業(yè)的重大發(fā)展。嵌入式系統(tǒng)行業(yè)重大發(fā)展背后是行業(yè)的相關企業(yè)對人才巨大的需求。因此高校對嵌入式系統(tǒng)應用型人才的培養(yǎng)也日益重視,許多院校紛紛開設了嵌入式系統(tǒng)課程。但是目前高校輸送的人才與企業(yè)需要的人才相差甚遠,甚至相當數(shù)目的相關專業(yè)畢業(yè)生連嵌入式系統(tǒng)的開發(fā)環(huán)境都難以順利搭建。因此我們急需在嵌入式系統(tǒng)的課程設計上做出修改,夯實學生基礎知識,提高學生的工程能力和創(chuàng)新能力,使畢業(yè)生能夠滿足行業(yè)企業(yè)技術發(fā)展需求。
(1)學生在理論方面學習困難。由于該課程涉及的知識點較多,許多概念抽象,學生學習難度大。教學中存在理論環(huán)節(jié)和實驗環(huán)節(jié)脫節(jié),達不到的理論與實踐相輔相成的教學效果。比如一些學校在此課程教學中使用的理論教材幾乎每章節(jié)都是針對ARM 芯片開展的,但是學生的動手實驗卻幾乎只針對的操作系統(tǒng)層面以及應用程序方面,顯出嚴重的脫節(jié)。在學習中,學生難以將理論和實踐聯(lián)系起來,而且在教學中等于變相增加學習難度,學習興趣也被打擊。
(2)雖然許多高校的實驗設備配置較高,但實驗課程的設計主要是驗證性實驗,缺乏自主動手設計性實驗,綜合性開發(fā)實驗則更少。學生在實驗課上難以自己動手設計和制作實驗項目,缺乏主動參與的環(huán)節(jié),無法調(diào)動其積極性,難以真正熟悉和掌握嵌入式系統(tǒng)的開發(fā)過程[1、2]。
(3)雖然實驗教學涉及面較廣,但單個實驗內(nèi)容的設計卻彼此孤立,實驗項目單一,沒有系統(tǒng)性地設計出一套實驗教學課程,來幫助學生逐步深入地進行實驗。
(4)多數(shù)高校本課程開設時間不長,課程建設不完善,多數(shù)教師無項目經(jīng)驗,教師的項目培訓機會也很少。目前僅有的培訓幾乎都來自實驗設備廠家的短期培訓,并且培訓內(nèi)容也只針對學校已購買設備的使用而不是項目開發(fā)。教師自己動手開發(fā)項目經(jīng)驗主要依賴教師自己摸索實踐[3]。
(5)在結束實驗教學環(huán)節(jié)后,教師通過對學生的調(diào)查發(fā)現(xiàn),大多數(shù)學生在實驗過程中僅驗證實驗指導書上的步驟以及代碼,并沒有深入理解底層硬件(包括外圍設備)、驅(qū)動程序、操作系統(tǒng)和軟件編程之間的關聯(lián)性,沒有真正掌握嵌入式系統(tǒng)的設計方法,甚至整個教學結束后也無法進行軟硬件結合的嵌入式系統(tǒng)完整開發(fā)[4]。學生也不能明白企業(yè)項目開發(fā)原則和方法。有相當數(shù)量的學生經(jīng)過一學期的嵌入式系統(tǒng)課程學習后,既不能清楚地說出實驗環(huán)境的主要軟硬件設備和工具,也不能獨立搭建一個完整的開發(fā)環(huán)境。
因此目前多數(shù)高校的嵌入式系統(tǒng)在實驗教學中未能取得明顯的教學效果。
本教學方案是以實驗教學為主,理論教學是實驗教學的基礎。理論課程設計與實驗教學課程設計相配合,并為實驗教學服務。到本課程開課時,學生已完成一系列軟硬件課程的學習。本課程需要的許多理論知識早已在前期課程中有不同程度的學習。因此理論教學環(huán)節(jié)中,教師針對學生的基礎以及此課程所需要的深度合理分配課時。筆者按照我校的教學安排(整個嵌入式系統(tǒng)的教學共計72學時),以24課時講授嵌入式系統(tǒng)的開發(fā)環(huán)境、交叉編譯工具、BootLoader 以及內(nèi)核移植、編程語言(我們使用C 語言)驅(qū)動開發(fā)、以及Android 圖形設計簡介理論知識環(huán)節(jié),剩下48課時集中于實驗教學。許多理論知識對于學生來說需要在實驗課上將其深入吸收。
實驗教學是嵌入式系統(tǒng)教學的重點。實驗教學的目的不是停留在驗證性實驗上,而是學生能夠自己設計并完成一些創(chuàng)新性實驗。實驗教學的平臺是億創(chuàng)宏達公司的Cortex-A9綜合實驗實訓系統(tǒng)。嵌入式系統(tǒng)是一門綜合性較高的課程,它涉及的知識較廣。若學生在本門課程學習結束后能夠達到上述的教學目的,那么學生不但借助本門課程將本專業(yè)的基礎知識深入地復習和深刻地領會,增強了本專業(yè)的學習興趣,而且提升了個人的工程項目開發(fā)能力和綜合“實戰(zhàn)”能力。
實驗教學分為三部分,第一部分是嵌入式系統(tǒng)開發(fā)環(huán)境的搭建和驗證性實驗教學部分。此實驗教學部分共計26課時,重視理論和實踐的結合。第二部分是教師進行案例實驗教學,共12課時。教師通過一個綜合案例進行教學演示,學生跟著教師一步一步動手學習。第三部分是綜合設計性實驗教學,此部分共計10課時,由學生自主完成,教師對其指導。
(1)在驗證性的實驗教學中,每兩個學生為一組共同完成。教師指導學生在Cortex-A9綜合實驗實訓系統(tǒng)上快速搭建并熟悉嵌入式開發(fā)環(huán)境,此后進入具體的驗證性實驗項目。此部分的驗證性實驗能夠綜合認識嵌入式系統(tǒng),產(chǎn)生學習興趣。驗證性實驗在已有的實驗框架下幫助學生掌握實驗原理和操作要領,讓學生學習實驗操作中的一些基本技能和實驗步驟,為后續(xù)的設計性實驗奠定基礎。教師針對每個驗證性實驗的關鍵點突出講解,引導學生掌握實驗的重難點。本階段實驗教學的考核方式是教師根據(jù)每組實驗結果和回答老師提出的針對性問題進行評判,以檢驗學生對實驗的掌握程度[2]。表1羅列了具體驗證性實驗和每個實驗的教學課時安排。
表1 驗證性實驗表
?
(2)案例教學。案例教學是以實際案例代替純理論講解,是引導學生對特定工程背景的教學內(nèi)容進行分析、討論并找出問題解決途徑的一種教學方式,它是培養(yǎng)學生獨立分析及處理問題的一種有效手段[5]。
在案例教學中,筆者使用一個自己設計的溫度和距離檢測系統(tǒng)來進行教學。此案例分為Android Studio 開發(fā)的顯示與控制APP 客戶端軟件,以及由溫度檢測模塊、Wi-Fi 通信模塊、超聲波測距模塊以及蜂鳴器模塊組成的嵌入式系統(tǒng)服務器??蛻舳塑浖到y(tǒng)與服務器通過Wi-Fi 模塊連接通信。服務器上的溫度檢測模塊與測距模塊只要有數(shù)據(jù)變動,在手機上的客戶端軟件上立即有數(shù)據(jù)顯示出來,這樣可以做到實時監(jiān)控。如果溫度檢測或者距離檢測超出設定的范圍,客戶端立即會有提示,觀測人員可以通過客戶端報警按鍵給服務發(fā)送報警信號,嵌入式服務器的蜂鳴器模塊將立即報警。圖1是案例教學的功能示意圖。
圖1 溫度距離檢測系統(tǒng)功能示意圖
此部分教學中客戶端APP 軟件的開發(fā)是重點也是難點,筆者使用7個課時來完成Android studio 軟件環(huán)境的搭建,客戶端界面的設計,以及界面底層程序的開發(fā)和調(diào)試。界面一(圖2)為實時顯示和控制。界面二(圖3)為后臺連接,設置服務器的ip 地址和端口號。客戶端使需要創(chuàng)建Socket 套接字,使用多線程來讀取服務器端的TCP 通信數(shù)據(jù),使用handler 機制對讀取到的溫度和距離數(shù)據(jù)做處理。
圖2 軟件顯示控制界面
圖3 后臺連接界面
服務器端的教學使用5課時來完成。服務器的四個模塊在驗證性實驗中已經(jīng)讓學生掌握了,因此本部分教學重點不再是各模塊的原理和基本步驟,而是各模塊與手機客戶端的通信。筆者使用TcpReceiveCmd()來實現(xiàn)監(jiān)控解析APP 端發(fā)出的請求溫度值或測距值;使用TCP 服務器發(fā)送數(shù)據(jù)函數(shù)TcpSendData()實現(xiàn)打包上傳溫度值和距離值;使用getUltrasonicDistance()實現(xiàn)對超聲波數(shù)據(jù)計算;使用get18B20Temperature()獲取DS18B20溫度傳感器的溫度值。服務器底層程序中的設計關鍵點有:創(chuàng)建socket 套接字,組裝數(shù)據(jù)包,發(fā)送請求幀,接受客戶端TCP 數(shù)據(jù)請求并解析以及處理數(shù)據(jù)并處理客戶端的界面顯示。以上部分都是在教學中的關鍵點。圖4是實驗箱在案例教學中的展示,圖5顯示教學中使用的超聲波測距模塊和溫度模塊。
(3)綜合設計性實驗是在已有的驗證性實驗和實驗案例教學的基礎上,結合學生以前所學的理論知識和實驗經(jīng)驗進行拓展。此部分實驗中規(guī)定3-5學生為一組,每組單獨完成一個實驗項目。學生們在各個小組自己動手設計實驗中,獨立設計系統(tǒng)方案,編程程序,集成調(diào)試,并編寫文檔[2、6、7]。表2是教學中給每個小組可參考的動手實現(xiàn)項目。
圖4 實驗箱
圖5 超聲波模塊和溫度模塊
表2 綜合設計性實驗列表
綜合設計性實驗的設計導向是工程實踐。在教學中,教師對每個實驗小組的項目及時指導,鼓勵各小組使用課程中沒有講解過的軟硬件模塊。
此部分實驗的考核也是重點??己私Y果根據(jù)基本設計要求、實驗結果以及各個拓展部分來進行評判。考核中鼓勵學生實現(xiàn)多線程功能、開發(fā)手機端App 或者QT 圖形界面、集成更多的功能模塊等等。每個實驗小組的考核分數(shù)由指導老師和其他各組同學打分組成,比例各占50%。每個小組錄制一段演示視頻,說明自己項目的功能和特點作為考核的材料[6]。
完成自主設計實驗是學生學習此門課程教學的目的。自主設計實驗能夠?qū)⑺鶎W到的理論知識、基礎實驗知識綜合應用。自主設計實驗不但是教學內(nèi)容,其結果也作為學生此課程學籍成績的一部分,如此更加調(diào)動學生的積極性。
學生進行自主設計實驗可以體現(xiàn)其創(chuàng)新能力和實踐能力。鼓勵優(yōu)秀的設計性實驗項目小組繼續(xù)完善,積極申請大學生創(chuàng)新創(chuàng)業(yè)項目,參加各級別的嵌入式設計大賽,甚至可以朝畢業(yè)設計的方向去開發(fā)。借助各種項目和比賽的拉動作用,學生的嵌入式動手設計能力能夠得到持續(xù)的提高[2]。筆者在教學中動員一些學生積極參加“博創(chuàng)杯”等嵌入式設計大賽,得到很好的鍛煉。
注重實驗教學,帶領學生完成綜合性設計實驗項目為目標的教學,有助于提升嵌入式系統(tǒng)教學的效果。注重設計性實驗的教學對于教師的教以及學生的學都有明顯的幫助,讓教師的教不再是課堂呆板的“滿堂灌”,學生被動聽;也改變了學生雖然在上機做實驗但仍然懵懵懂懂的教學效果。學生不但將本課程的理論知識熟練掌握,而且能借助此門課程完成本專業(yè)一系列知識集中復習和實踐,培養(yǎng)項目開發(fā)的能力。