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