宋俊玉 黃淼
(河南大學計算機與信息工程學院 河南開封 475004)
嵌入式產(chǎn)品隨著物聯(lián)網(wǎng)的發(fā)展廣泛地出現(xiàn)在人們?nèi)粘I罟ぷ鳟斨?;隨著5G技術(shù)的發(fā)展,嵌入式會愈發(fā)應用廣泛。當今社會對嵌入式人才的需求越來越迫切。嵌入式集計算機系統(tǒng)、通信原理、程序設計、電路等知識于一體,課程重點是加強學生理論聯(lián)系實際的能力,培養(yǎng)應用型人才[1]。國內(nèi)由于嵌入式起步較晚,高校嵌入式人才培養(yǎng)跟不上技術(shù)發(fā)展的潮流,與實際嵌入式開發(fā)需求脫軌,導致大學生就業(yè)沒有專業(yè)開發(fā)能力,企業(yè)無法招聘到符合崗位需求的人才。為迎合社會需求,嵌入式教學改革要加大實踐課程教學 ,特別是將創(chuàng)新項目實例引進教學,能夠很大程度上提升學生的實踐能力、設計能力和創(chuàng)新能力。同時不同學校不同專業(yè)應當根據(jù)自身特點,靈活調(diào)整教學內(nèi)容,發(fā)揮各自的優(yōu)勢,培養(yǎng)出專業(yè)相關(guān)型嵌入式開發(fā)人才。本文就嵌入式課程實踐教學以及培養(yǎng)應用型人才等問題進行了思考和探討。
嵌入式開發(fā)課程作為一門應用開發(fā)類課程,需要學生具有電路基礎、編程基礎、模擬電路和數(shù)字電路、信號與系統(tǒng)、單片機原理和接口技術(shù)、微機原理等前導課程相關(guān)知識。實際教學過程中,由于任課老師之間缺乏溝通,可能導致課程安排不合理以及內(nèi)容重復等問題,導致課時浪費。傳統(tǒng)嵌入式教學主要以ARM+Linux為核心,介紹ARM的體系結(jié)構(gòu)、ARM指令尋址方式和ARM指令集的使用以及Linux系統(tǒng)在嵌入式系統(tǒng)上的應用和QT/Embedded界面編程開發(fā)。嵌入式開發(fā)課程在理論上承接了“單片機原理與應用”、“微型計算機原理與接口技術(shù)”以及嵌入式前期課程“物聯(lián)網(wǎng)與嵌入式系統(tǒng)開發(fā)”等課程,這些課程在內(nèi)容以及結(jié)構(gòu)上有重復和相似的地方,例如指令、尋址方式等方面,因此在理論教學上浪費較多學時,學生沒有足夠的精力去學習課程以外的知識,對嵌入式開發(fā)淺嘗輒止,無法勝任嵌入式系統(tǒng)開發(fā)的工作[2]。
嵌入式開發(fā)屬于定制開發(fā),硬件可定制,軟件可裁剪,這就要求開發(fā)人員對軟硬件有深入的了解,只有在實際開發(fā)和實驗才能真正地掌握嵌入式技術(shù)。嵌入式課程要求學生有將理論聯(lián)系實踐的能力。實踐教學與理論學習相輔相成,然而目前高校的嵌入式課程仍然以理論教學為主,實踐教學時間不足總學時的三分之一。目前嵌入式課程開設的實驗有,嵌入式開發(fā)環(huán)境搭建:(1)WMware Workstation的安裝、使用。(2)Radhat獲取和在虛擬機中配置。(3)虛擬機NFS共享設置。(4)Windows超級終端配置和使用。嵌入式實驗目標機配置:(1)燒寫Linux操作系統(tǒng)的BootLoaderuboot。(2)配置燒寫Linux操作系統(tǒng)內(nèi)核-zImage。(3)燒寫Linux根文件系統(tǒng)。基于QT的嵌入式圖形界面實驗、嵌入圖形界面移植實驗和嵌入式觸摸屏實驗。但這些實驗主要是對教材范例和試驗箱范例的驗證,而沒有一個完整的工程項目,工程開發(fā)的分析、設計、調(diào)試和運行是我們實踐教學缺失的環(huán)節(jié)。而且在以教學為主、實驗為輔的教學體系下,實驗課程時間較少,實驗內(nèi)容枯燥,多為驗證性實驗,學生總是跟著教師指導和實驗指導書走,無法吸引學生興趣和發(fā)揮學生的想象力,因而取得的效果不好。在一些較為綜合性實驗中,學生表現(xiàn)的較差,具體存在的問題是代碼編譯無法通過,集成開發(fā)環(huán)境配置不好等問題。此外,由于教學設備限制,多是老師講解操作方法,學生自己做,很少將實驗過程給學生演示,學生在試驗中具有盲目性,從而缺乏積極性,選擇敷衍了事,嚴重影響實驗效果。
嵌入式學習開發(fā)包括三個階段“熟悉”、“嘗試”、“開發(fā)”。“熟悉”即了解開發(fā)的環(huán)境和開發(fā)流程,熟悉開發(fā)平臺和開發(fā)軟件的使用?!皣L試”階段是指學生了解軟硬件設計方法,開發(fā)一些小的模塊和小項目,鍛煉學生的實踐能力?!伴_發(fā)”階段是指學生在掌握軟硬件開發(fā)能力的基礎上,進行實際項目的開發(fā),在這個過程中,不僅需要嵌入式開發(fā)能力,還要求學生綜合運用所學課程和知識進行系統(tǒng)設計和開發(fā)的能力,培養(yǎng)學生獨立思考、設計創(chuàng)新和團隊協(xié)作能力。然而在大部分高校都停留在前兩個階段。帶領(lǐng)學生進行嵌入式項目的開發(fā),需要指導老師有扎實的專業(yè)背景和項目經(jīng)驗。目前,大部分高校在嵌入式方面師資力量嚴重不足,軟硬件都有建樹的老師較少,有工作研發(fā)經(jīng)歷的老師更是匱乏。
傳統(tǒng)嵌入式系統(tǒng)開發(fā)課程考核以試卷形式為主,導致考試時突擊背書就能拿到不錯的成績。理論考試碎片化的知識點并不能讓學生真正掌握嵌入式開發(fā)。實驗打分主要以學生提交的實驗報告為打分標準,并不能反映學生真實的實驗操作水平,同時嵌入式系統(tǒng)的整體方案設計能力以及在設計中與其他相關(guān)學科的結(jié)合能力無法考察。實踐內(nèi)容的考核多為模塊化設計考核,缺乏實際項目開發(fā)能力的考核。
嵌入式開發(fā)課程具有多門前導課程應當與嵌入式作為一個完整的體系進行規(guī)劃。任課教師和院系領(lǐng)導要加強交流,制定合理的教學方案,減少重復內(nèi)容的講述,同時相關(guān)的地方要做到相互呼應。在課程之間,軟硬件協(xié)調(diào)之間,應當以知識為線索,貫穿整個教學過程。首先,在低年級首先開設C語言編程基礎,此時大部分學生對于計算機的理解能力有限,同時開設電路基礎,為以后的開發(fā)學習打好基礎。在后續(xù)課程中,通過匯編語言學習和單片機的學習和實際開發(fā),使得學生將軟硬件結(jié)合起來,并具有一定開發(fā)能力。有了以上基礎,學生再來學習嵌入式開發(fā)會水到渠成??梢赃m當合并嵌入式系列的實踐課程,不僅能夠增加實踐教學的課時,又能提高各課程之間的聯(lián)系,充分發(fā)揮課程相互促進的作用。
課程實踐是嵌入式教學中的重要環(huán)節(jié),在總學時不變的前提下,盡量縮減理論授課課時,增加實驗課程的學時,甚至可以在機房實驗室上課,在講到具體知識點時,可以方便馬上進行練習,以增加對課程內(nèi)容的掌握,同時提升學生的興趣。在授課內(nèi)容上,由于有“物聯(lián)網(wǎng)與嵌入式”、“微型計算機原理與接口技術(shù)”等前導課程,因此可以適當減少對硬件結(jié)構(gòu)和指令系統(tǒng)的講解,增加嵌入式開發(fā)流程和環(huán)境等與實踐相關(guān)內(nèi)容的講解和演示,如虛擬機VMware的安裝使用、NFS共享設置等。為了更好理解嵌入式系統(tǒng)工作原理,對Bootloader-Uboot的構(gòu)成和作用做重點講解,以及Linux操作系統(tǒng)內(nèi)核-zImage和Linux根文件系統(tǒng)的介紹和制作過程演示,從而保證學生在實踐過程中,得到更好的效果。同時學院應提供學生實踐的必要硬件條件,除了開放實驗室,還可以利用實驗室現(xiàn)有的小型嵌入式實驗板或者購買一批用于學生課下實踐開發(fā)。嵌入式課程實踐教學應當采用實驗和項目實踐相結(jié)合的形式。實驗采用章節(jié)教學的方式,貫穿理論教學的全程,實踐課程通常是放在理論課程和相關(guān)實驗完成之后,進行綜合實踐訓練,學生可自由組隊,同時安排指導老師指導學生利用所學理論進行嵌入式系統(tǒng)開發(fā),使所學知識能夠融會貫通,應用于實踐。
嵌入式開發(fā)具有跨學科性強、軟硬件結(jié)合緊密、應用廣泛等特點,因此要培養(yǎng)出來綜合素質(zhì)過硬,滿足社會需求的嵌入式開發(fā)人員,除了要有與社會需求相關(guān)的最新教材和實驗設備外,還需要一支強大的師資團隊。這樣的隊伍需要具有扎實的專業(yè)基礎同時還需要具有工程項目經(jīng)驗。有人提出直接找企業(yè)嵌入式開發(fā)人員進行授課,但是教學需要整體規(guī)劃,考慮前導課程和相關(guān)課程之間的銜接,而且掌握原理對于學生后續(xù)發(fā)展非常重要,不能割裂理論和實踐一味搞開發(fā)??梢悦嫦蛏鐣衅妇哂虚_發(fā)經(jīng)驗的“雙資老師”,或者在周末等課余時間,請企業(yè)中的開發(fā)人員來學校進行宣講,對社會實際需求和項目實際開發(fā)流程進行講解,同時可以請他們帶領(lǐng)學生進行課程設計、專業(yè)比賽,甚至畢業(yè)設計。另外可以為學校年輕任課老師提供更多學習交流機會,定期到嵌入式開發(fā)企業(yè)進行實地考察和學習。
針對嵌入式課程的特點,嵌入式開發(fā)課程的考核形式應該不拘一格,試卷考試可采用開卷考試,考查學生對基本概念的掌握,避免學生死記硬背。實驗要當堂打分,學生完成實驗并且回答老師提出的問題后方可獲得本節(jié)實驗課程的分數(shù),加強考查學生嵌入式開發(fā)的整體設計、功能模塊的使用以及在具體場景中的應用的能力。此外,為了提高學生整體方案設計能力、獨立思考能力和課程結(jié)合能力,指導學生進行創(chuàng)新項目開發(fā),項目結(jié)束時進行評定,并計入實驗成績。
嵌入式開發(fā)以應用為核心,軟硬件可裁剪,功能可定制,對嵌入式的成本,體積,與可靠性有嚴格的要求[3]。在進行實際項目開發(fā)之前,首先通過章節(jié)實驗確保學生對功能模塊原理掌握并可以熟練應用,如顯示屏、DAC、ADC、存儲器、WiFi模塊等,在完成模塊化學習后,可以帶領(lǐng)學生做一些小的產(chǎn)品,如紅外報警系統(tǒng)等。在此基礎上,引導學生開發(fā)創(chuàng)新項目。創(chuàng)新項目可由小組配合完成,既能提高學生積極性,又可以起到鍛煉學生團隊意識的作用,團隊成員自由分工,每個人在團隊中選擇自己擅長的方面,同時相互配合,共同完成創(chuàng)新項目。下面以具體項目實例進行開發(fā)流程的講解。
創(chuàng)新項目一方面要具有綜合性,同時可以結(jié)合其他課程,如單片機等;另一方面,要具有創(chuàng)新性和趣味性,選擇當下流行的技術(shù)如語音識別等。本項目選擇一個以語音識別為核心的機器人,且結(jié)合單片機技術(shù),使得機器人具備語音聊天和進行簡單運動等功能。
進行實際的開發(fā)首先要選擇合適的嵌入式開發(fā)板,本項目選擇樹莓派4B板,該版是一款基于ARM的微型電腦主板,采用ARM-Cortex-A72架構(gòu),功能強大,且具有豐富的外設以及接口。軟件方面在wukongrobot開源項目的基礎上進行二次開發(fā),實現(xiàn)對語音機器人的運動控制。硬件方面選購合適的電源、小車部件、音響和麥克風等。實際開發(fā)通過串口或網(wǎng)絡連接樹莓派,直接在樹莓派上配置和開發(fā)。首先進行語音模塊的搭建和開發(fā),利用百度、圖靈等語音識別和處理API實現(xiàn)語音聊天并為語音控制奠定基礎;第二步,通過編寫特定程序?qū)崿F(xiàn)對控制命令的識別處理;第三步,通過樹莓派的GPIO口控制驅(qū)動電路實現(xiàn)小車的前進后退轉(zhuǎn)彎等。有余力的同學還可以在此基礎上進行進一步開發(fā),如通過內(nèi)網(wǎng)穿透軟件實現(xiàn)遠程控制機器人的目的。通過項目實例開發(fā)為以后的嵌入式開發(fā)打下堅實的基礎。
高等學校的嵌入式開發(fā)課程需要與市場接軌,合理編排課程內(nèi)容和形式。整合嵌入式系列課程的銜接,注重實踐教學,帶領(lǐng)學生進行更有趣且與社會聯(lián)系緊密的創(chuàng)新性項目開發(fā),提高學生積極性,培養(yǎng)學生綜合開發(fā)能力和創(chuàng)新能力。