王 娜,彭 劍,周月鵬
(韶關(guān)學(xué)院 信息工程學(xué)院,廣東 韶關(guān) 512005)
嵌入式技術(shù)是智能硬件和物聯(lián)網(wǎng)的核心技術(shù)。是繼硬件時代(80年代:IBM)、軟件時代(90年代:微軟、facebook)、互聯(lián)網(wǎng)(00年代:谷歌、百度)、移動互聯(lián)網(wǎng)(10年代:蘋果、華為)之后,“萬物互聯(lián)、泛在智能”的物聯(lián)網(wǎng)時代正在呼之欲出。截至2021年12月,全球聯(lián)網(wǎng)設(shè)備已達280億,其中160億與物聯(lián)網(wǎng)相關(guān),到2025年全球聯(lián)網(wǎng)設(shè)備可能達到500億,將為全球提供無處不在、無所不包、無所不能的物聯(lián)網(wǎng)服務(wù)及應(yīng)用。物聯(lián)網(wǎng)正在快速地滲透到各個領(lǐng)域,越來越多的設(shè)備、車輛、終端等納入到信息網(wǎng)絡(luò)之中,使人類加速邁向萬物互聯(lián)、泛在感知的時代。智能學(xué)科的崛起必定帶動新型的嵌入式技術(shù)的發(fā)展。在物聯(lián)網(wǎng)熱潮下,從事設(shè)計開發(fā)智能設(shè)備終端的嵌入式計算企業(yè)面臨著全新的機遇,同時有著良好素質(zhì)的嵌入式從業(yè)人員的缺口與日俱增,嵌入式從業(yè)人員面臨著一個空前的歷史機遇。
嵌入式的發(fā)展前景是被普遍認可的,但學(xué)生對嵌入式行業(yè),并不是特別熱衷,究其原因主要有5點:(1)考研,考公人數(shù)上升;(2)想從事嵌入式開發(fā)的同學(xué)能力不足(高校開設(shè)嵌入式課程理論居多,實踐項目少,學(xué)得比較淺顯);(3)迷茫的學(xué)生不少,不清楚專業(yè)的就業(yè)方向;(4)各大JAVA相關(guān)公司誤導(dǎo)學(xué)生去學(xué)軟件;(5)部分學(xué)生轉(zhuǎn)行,沒有從事本專業(yè)的工作。
同時,芯片領(lǐng)域被“卡脖子”讓國人重新認識到研發(fā)自主芯片的重要性。為擺脫受限于人的局面,國家迅速制定了一系列芯片發(fā)展規(guī)劃,民營企業(yè)加大投入引進人才、突破技術(shù)。人才培養(yǎng)是國產(chǎn)芯片之路的基石,筆者主要研究以應(yīng)用型創(chuàng)新型人才培養(yǎng)為導(dǎo)向的嵌入式系統(tǒng)與設(shè)計課程改革。嵌入式系統(tǒng)與設(shè)計課程是嵌入式方向的核心課程,該課程的培養(yǎng)目標之一是培養(yǎng)學(xué)生對于嵌入式開發(fā)和嵌入式行業(yè)的興趣、提升理論與工程應(yīng)用開發(fā)結(jié)合、理論指導(dǎo)實踐的意識;充分、全面激發(fā)學(xué)生的學(xué)習(xí)興趣和潛能,提高學(xué)生的社會責(zé)任感、創(chuàng)新精神和實踐應(yīng)用能力。
嵌入式技術(shù)是一門應(yīng)用工程技術(shù),是把用戶需求,各種協(xié)議/標準配合硬件轉(zhuǎn)化成最后產(chǎn)品的工作,其難度和復(fù)雜度都是非常大的。嵌入式系統(tǒng)課程體系既涉及電子電路、ARM處理器體系結(jié)構(gòu),匯編語言,寄存器、各種接口和總線、模塊電路等底層硬件知識,又涉及U-Boot移植、Linux系統(tǒng)移植、文件系統(tǒng)制作、設(shè)備驅(qū)動等中間層知識,還涉及Linux系統(tǒng)編程、網(wǎng)絡(luò)編程、QT或者Android圖形化界面設(shè)計等應(yīng)用層知識。
嵌入式技術(shù)是應(yīng)用型交叉學(xué)科技術(shù),嵌入式課程不像數(shù)據(jù)庫、Java等傳統(tǒng)課程那么成熟,教材更是五花八門,有基于ARM9,CortexA8,CortexA9,CortexA7等各種ARM處理器架構(gòu)和開發(fā)平臺的教材,教材內(nèi)容重難點差別大,而目前市場應(yīng)用廣泛的Cortex A53等64位處理器并沒有相應(yīng)教材,導(dǎo)致教師上課被動,備課難度大。學(xué)生對課堂教授知識跟不上新技術(shù)感到不足,臨近畢業(yè)紛紛參加校外相關(guān)嵌入式培訓(xùn)機構(gòu),費用大,學(xué)習(xí)周期長,使學(xué)生的生活及學(xué)習(xí)都受到影響。
有學(xué)生自己購買開發(fā)板,跟著網(wǎng)上的視頻課程學(xué)習(xí),這類學(xué)習(xí)資源龐雜,有正點原子、北京迅為、野火等。這些公司推出了自己的開發(fā)板和學(xué)習(xí)視頻,不但價格昂貴,而且因為知識體系龐雜,課程內(nèi)容太多,學(xué)生在學(xué)習(xí)時缺乏指導(dǎo)和學(xué)習(xí)方法,很可能長時間不得要領(lǐng),學(xué)習(xí)效率低下,很難堅持下來,導(dǎo)致學(xué)生紛紛吐槽“嵌入式有毒”。
嵌入式系統(tǒng)與設(shè)計課程48學(xué)時,其中理論課32學(xué)時,實驗課16學(xué)時,較少的課時數(shù),教師無法系統(tǒng)、深入講解相關(guān)的裸機接口技術(shù)、系統(tǒng)移植和驅(qū)動開發(fā)等知識點。按課程講解的順序展開的計劃授課內(nèi)容依次是:ARM-CortexA8處理器體系結(jié)構(gòu)和S5PV210芯片的接口技術(shù)、匯編指令集,ARM裸機程序開發(fā),U-boot的工作原理和移植方法,Linux內(nèi)核配置與裁剪,Linux內(nèi)核模塊開發(fā),字符設(shè)備驅(qū)動程序制作等。這些知識點相輔相成前后關(guān)聯(lián),但在授課過程中總會因為ARM體系結(jié)構(gòu)和裸機的知識占用課時較多,導(dǎo)致系統(tǒng)移植和驅(qū)動的課程不夠時間講解,只能進行簡單介紹甚至直接跳過。但是嵌入式的目標是做出產(chǎn)品,利用ARM 和Linux系統(tǒng)開發(fā)穩(wěn)定的嵌入式產(chǎn)品;ARM-CortexA系列處理器用來做裸機開發(fā)根本發(fā)揮不了ARM處理器的性能,只有運行了操作系統(tǒng)才能夠充分發(fā)揮ARM 處理器的優(yōu)勢,保證系統(tǒng)運行的安全性和穩(wěn)定性。課程后半部分系統(tǒng)移植和驅(qū)動的知識是產(chǎn)品開發(fā)必不可少的技術(shù),而ARM 本身處理器的知識不需深究。但如果不講清楚,在驅(qū)動編寫時對驅(qū)動接口的理解又不深入只知其然不知其所以然。
相關(guān)嵌入式課程的改革一直在進行中,并取得一定的成效,相關(guān)的研究成果有面向“雙創(chuàng)”教育的嵌入式系統(tǒng)課程改革與實踐[1]、基于產(chǎn)教融合的嵌入式應(yīng)用型課程體系構(gòu)建研究[2]、CDIO理念下《嵌入式系統(tǒng)》工程教學(xué)模式的探索與實踐[3]、基于PBL教學(xué)理念的嵌入式系統(tǒng)教學(xué)改革與研究[4]與OBE 理念下課程教學(xué)的研究及實踐——嵌入式應(yīng)用開發(fā)為例[5]等,所有研究方法都是旨在提高學(xué)生的實踐應(yīng)用能力。筆者認為無論采用何種教學(xué)理念教和學(xué)模式,最終的落腳點都是如何更好地把知識傳授給學(xué)生,使學(xué)生掌握學(xué)習(xí)方法,激發(fā)學(xué)習(xí)興趣,使其能夠深入自主學(xué)習(xí)。
嵌入式系統(tǒng)的知識龐雜,且是分層的,其系統(tǒng)軟硬件層次架構(gòu),見圖1。在實際工作中,嵌入式工程師會根據(jù)具體工作層次,分為嵌入式軟件工程師、嵌入式系統(tǒng)工程師和嵌入式驅(qū)動工程師,但初學(xué)者需要熟悉整個嵌入式開發(fā)流程,能獨立構(gòu)建簡單的嵌入式產(chǎn)品[6]。
圖1 嵌入式Linux 系統(tǒng)軟硬件架構(gòu)層次圖
課程授課不能把每一層的知識面面俱到,可引導(dǎo)學(xué)生利用縱向思維,先把整個知識的框架結(jié)構(gòu)理解掌握,再利用每一層的基本知識構(gòu)建一個簡單的產(chǎn)品模型,即先盡快開發(fā)出產(chǎn)品的雛形,然后再逐步迭代,層層完善,逐漸清晰,一步步走向成熟,開發(fā)出最終產(chǎn)品,此方法即產(chǎn)品開發(fā)方法中的快速原型法[7]。對初學(xué)者采用“快速原型法”的嵌入式產(chǎn)品開發(fā)方法,使其能夠快速掌握嵌入式開發(fā)模型和開發(fā)流程,基于這種開發(fā)方法,筆者提出一種可前后兼顧的課程講授方法——嵌入式基礎(chǔ)框架教學(xué)法[8]。具體措施,見圖2。
圖2 課程授課層次圖
教學(xué)案例:以開發(fā)產(chǎn)品為目標,從最簡單的嵌入式產(chǎn)品開發(fā)入手,實現(xiàn)遠程和觸摸屏控制LED燈。基于此目標,先學(xué)習(xí)ARM體系結(jié)構(gòu)和ARM指令集,實現(xiàn)匯編和C語言裸機點亮LED燈,然后學(xué)習(xí)Linux字符設(shè)備驅(qū)動,實現(xiàn)LED驅(qū)動開發(fā),學(xué)習(xí)QT界面開發(fā),實現(xiàn)界面按鈕控制LED,學(xué)習(xí)網(wǎng)絡(luò)編程,實現(xiàn)LED數(shù)據(jù)上傳云平臺,最終實現(xiàn)遠程控制。從一個簡單GPIO接口的縱向深入學(xué)習(xí),沒有橫向展開,開發(fā)出第一個簡單產(chǎn)品,掌握嵌入式開發(fā)的總體框架和流程,先使學(xué)生入門。
最新技術(shù)雖然沒有相應(yīng)教材,但嵌入式產(chǎn)品追求的一直是高性能和低功耗,新技術(shù)性能提高的同時功耗也在增大,市場上一直是多平臺并存,教材選用ARM-Cortex A9多核處理器架構(gòu),與新技術(shù)接近,相對成熟,資料豐富,市場應(yīng)用廣泛,實驗設(shè)備也相應(yīng)更新,學(xué)生實驗課積極性高,興趣濃厚。
從LED簡單項目入手。項目實施中,學(xué)生主動找資料學(xué)習(xí),自主篩選出項目所需知識進行學(xué)習(xí),以“快速原型法”開發(fā)項目為驅(qū)動,激發(fā)學(xué)生對產(chǎn)品進行逐步迭代完善,培養(yǎng)了學(xué)生的應(yīng)用和創(chuàng)新能力。
結(jié)合“快速原型法”產(chǎn)品開發(fā)技術(shù)的框架教學(xué)法解決課時不足問題,靠課堂灌輸?shù)闹R畢竟有限,激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生應(yīng)用能力和創(chuàng)新能力才是嵌入式課程教學(xué)的終極目標。
最終課程結(jié)束時,要求學(xué)生提交在LED項目基礎(chǔ)上迭代完成課程大作業(yè),占學(xué)生總評成績的50%,作業(yè)要求實現(xiàn)功能主要有幾個方面:(1)實時監(jiān)控RFID信號,即門禁卡的信號;(2)將采集的門禁卡信號與數(shù)據(jù)庫進行核對和驗證,驗證通過驅(qū)動繼電器將門打開;(3)將本次操作記錄到數(shù)據(jù)庫,具體實現(xiàn)可以通過無線WIFI模塊上傳給服務(wù)器;(4)在開發(fā)板LCD屏上通過圖形界面進行交互。
分析該案例用到的技術(shù),RFID模塊通過Linux系統(tǒng)的SPI驅(qū)動進行數(shù)據(jù)讀寫,繼電器的操作是通過GPIO的驅(qū)動實現(xiàn),頂層對于驅(qū)動的操控利用系統(tǒng)文件IO接口調(diào)用實現(xiàn)。數(shù)據(jù)上報服務(wù)器需要SOCKET網(wǎng)絡(luò)編程實現(xiàn)。圖形化界面開發(fā)選擇QT,使用C++作為開發(fā)語言[9]。本案例是一個典型的嵌入式產(chǎn)品模型,通過分析讓學(xué)生明白嵌入式產(chǎn)品的相關(guān)技術(shù),所有的嵌入式相關(guān)課程的學(xué)習(xí)圍繞實現(xiàn)此案例中相關(guān)功能,有目標地學(xué)習(xí),并且將來做課程設(shè)計和畢業(yè)設(shè)計時,學(xué)生可在此案例基礎(chǔ)上設(shè)計和增加相應(yīng)功能,例如增加手勢識別,語音模塊,GPS模塊、GPRS模塊、攝像頭模塊等,在已經(jīng)做好的基本框架上根據(jù)實際應(yīng)用繼續(xù)創(chuàng)新,培養(yǎng)學(xué)生的創(chuàng)新和應(yīng)用能力。
嵌入式系統(tǒng)與設(shè)計課程授課方法采用理論講解,代碼編寫,然后下載到開發(fā)板調(diào)試運行的沉浸式教學(xué)方法,讓學(xué)生馬上看到實際的運行效果,能更直觀深刻理解知識,更好地調(diào)動學(xué)生的學(xué)習(xí)興趣。
嵌入式的基礎(chǔ)框架就是搞清楚什么是bootloader、kernel和文件系統(tǒng)[10],先進行這 3 部分內(nèi)容的講解,能進行u-boot移植,內(nèi)核裁剪和最小文件系統(tǒng)制作,然后將這幾個文件燒寫到板子上,之后學(xué)習(xí)字符設(shè)備驅(qū)動中簡單的GPIO接口驅(qū)動,完成基礎(chǔ)框架知識學(xué)習(xí)[11]。講授完字符設(shè)備驅(qū)動開發(fā)的相關(guān)知識并能正確編寫IO口驅(qū)動控制LED燈,驅(qū)動開發(fā)即已入門,對所做項目進一步迭代完善,完成最終課程大作業(yè),并將完成情況計入過程考核中,考核學(xué)生的創(chuàng)新應(yīng)用能力。
這種授課順序保證了產(chǎn)品開發(fā)中重點知識的講授時間,以最簡單產(chǎn)品開發(fā)為出發(fā)點,講解驅(qū)動框架,有利于培養(yǎng)學(xué)生通過操作系統(tǒng)這個抽象軟件開發(fā)產(chǎn)品的能力,這是尤為重要的步驟。前期學(xué)生學(xué)習(xí)的單片機和STM32課程都是裸機開發(fā),裸機最大的特點是對于程序的每行代碼每個細節(jié)都非常清晰,而直接在操作系統(tǒng)的抽象層開發(fā)會感覺很不踏實。而學(xué)會這種中間抽象層的開發(fā)才符合潮流,是產(chǎn)品發(fā)展和個人發(fā)展必須轉(zhuǎn)變的思路和觀念。最后引導(dǎo)學(xué)生課程結(jié)束之后繼續(xù)深入學(xué)習(xí)驅(qū)動中斷和內(nèi)核時間管理,進一步深入學(xué)習(xí)驅(qū)動知識,并應(yīng)用到案例中,對產(chǎn)品功能進一步完善,不斷迭代,隨著產(chǎn)品的逐漸成熟,根據(jù)新的需求,堅持學(xué)習(xí)所需知識,最終開發(fā)出成熟的產(chǎn)品[12]。
以筆者授課班級為例,課程在開展教學(xué)改革后獲得了學(xué)生的一致認可,課程在線評教評分在4.7分以上,項目案例迭代得到很好地推進。物聯(lián)網(wǎng)學(xué)生基于項目案例進行轉(zhuǎn)化成挑戰(zhàn)杯、廣東省大學(xué)生電子設(shè)計競賽等參賽作品。從2018 級物聯(lián)網(wǎng)工程班開始,嵌入式系統(tǒng)與設(shè)計課程實施教學(xué)改革,嵌入式課程改革使學(xué)生對嵌入式課程體系,自身價值和社會定位有了更清楚的認識,學(xué)生更加勇于嘗試、勇于探究、不怕失敗,申請大創(chuàng)項目和參加學(xué)科競賽更加踴躍,2018 級學(xué)生畢業(yè)設(shè)計題目 65%以上都是嵌入式相關(guān)應(yīng)用題目,其中梁海亮同學(xué)的畢業(yè)設(shè)計“基于嵌入式Linux的老年人居家健康伴侶”被評為優(yōu)秀畢業(yè)論文。畢業(yè)實習(xí)的崗位基本都是與專業(yè)相關(guān)的技術(shù)崗位,單片機和STM32的學(xué)得好的畢業(yè)生很多,但懂Linux驅(qū)動開發(fā)的畢業(yè)生很少,待遇又高,在薪資待遇和滿意度方面學(xué)生反應(yīng)良好,通過談話了解到同學(xué)們對自己未來,都有很好的規(guī)劃。各方面數(shù)據(jù)顯示進行嵌入式教學(xué)改革,大大提高了學(xué)生的學(xué)習(xí)積極性。
為檢驗教學(xué)效果,筆者對任教的5 個班級(2017物聯(lián)網(wǎng)1、2班,2018物聯(lián)網(wǎng)1班和2019物聯(lián)網(wǎng)1、2班)進行從班級課程平均成績、畢業(yè)設(shè)計嵌入式方向人數(shù)、嵌入式方向獲獎和項目立項人數(shù)及職業(yè)規(guī)劃中致力嵌入式和Android方向?qū)W生人數(shù)等4個維度對比傳統(tǒng)教學(xué)和框架教學(xué)兩種教學(xué)模式的結(jié)果,從2019級學(xué)校開始學(xué)分制改革,專業(yè)選修課只有部分學(xué)生選,所以課程合班上課,對比數(shù)據(jù),見表1。
表1 物聯(lián)網(wǎng)工程專業(yè)不同教學(xué)模式評價結(jié)果
對比傳統(tǒng)授課模式,學(xué)生的課程成績明顯提高,說明學(xué)生的上課積極性提高,對于嵌入式方向的畢業(yè)設(shè)計人數(shù)、獲獎和立項人數(shù)和致力于嵌入式和Android底層開發(fā)人數(shù)都有明顯提高,說明框架教學(xué)使學(xué)生清楚嵌入式系統(tǒng)框架,掌握了有效學(xué)習(xí)方法,對嵌入式方向提高了學(xué)習(xí)興趣和創(chuàng)新應(yīng)用能力。
2018級物聯(lián)網(wǎng)課程結(jié)束后對其班級學(xué)生進行匿名問卷調(diào)查,以此了解學(xué)生對教學(xué)方法的滿意度。其中有50人填寫調(diào)查問卷,學(xué)生滿意度比較高,教學(xué)質(zhì)量與效果有很大改善,有力證明了教學(xué)改革的有效性,調(diào)查結(jié)果,見表2。
表2 2018級物聯(lián)網(wǎng)工程1班教學(xué)滿意度調(diào)查(n=50)
采用這種基礎(chǔ)框架的講授方法,并根據(jù)“快速原型法”的產(chǎn)品開發(fā)流程,邊學(xué)邊做,使學(xué)生隨著知識和開發(fā)經(jīng)驗的積累,不斷深入學(xué)習(xí)基礎(chǔ)知識,以及更深層次的框架知識,這樣相互迭代,使得整體水平得到進一步升華,直到能夠精通嵌入式技術(shù),實現(xiàn)了培養(yǎng)學(xué)生應(yīng)用能力和創(chuàng)新能力的目的,并達到我們的最終目的——開發(fā)出目標產(chǎn)品,為企業(yè)和國家培養(yǎng)合格的嵌入式開發(fā)人才。