李寧,宋薇,庫少平
(武漢理工大學 計算機科學與技術(shù)學院,武漢430070)
李寧(副教授),主要研究方向為嵌入式系統(tǒng)、智能控制;宋薇(碩士研究生),主要研究方向為嵌入式系統(tǒng)工具開發(fā)、軟件測試;庫少平(副教授)主要研究方向為嵌入式系統(tǒng)。
隨著嵌入式技術(shù)的快速發(fā)展和普及,社會對嵌入式人才的需求猛增[1],80%的相關(guān)企業(yè)都表示急缺嵌入式開發(fā)方面的人才[2]。近幾年來國內(nèi)理工科高等院校的計算機、電子信息和自動化等專業(yè)已普遍開設(shè)嵌入式技術(shù)的相關(guān)課程,有些院系還開設(shè)了嵌入式專業(yè)。但是由于嵌入式技術(shù)涉及計算機、電子技術(shù)、微電子技術(shù)等領(lǐng)域的多門課程,因此在課程內(nèi)容、教師培養(yǎng)、教學方法、實踐方式上,很多院校的方案還不是很成熟,處于摸索階段。本文將筆者近幾年所采用的項目化教學方法進行了一些總結(jié),以供各位嵌入式教學方面的同行參考。
嵌入式系統(tǒng)的基本結(jié)構(gòu)如圖1所示。設(shè)計與實現(xiàn)一個嵌入式系統(tǒng),需要微電子技術(shù)、電子技術(shù)、計算機技術(shù)和應用領(lǐng)域四個方面的知識。在嵌入式系統(tǒng)設(shè)計中,應用領(lǐng)域知識是千變?nèi)f化的,這些不是嵌入式設(shè)計者能完全掌握的,往往需要相關(guān)領(lǐng)域工程師的密切配合。嵌入式領(lǐng)域?qū)θ瞬诺男枨笕鐖D2所示。微電子技術(shù)專業(yè)主要從事微處理器和各種IC的設(shè)計,為嵌入式應用設(shè)計提供最基礎(chǔ)的支持,其知識與嵌入式應用設(shè)計領(lǐng)域的關(guān)系并不大,社會需求也不是很大。電子技術(shù)專業(yè)主要從事嵌入式系統(tǒng)的硬件設(shè)計,是嵌入式系統(tǒng)設(shè)計必不可少的部分。由于很多IC廠家已經(jīng)提供了相關(guān)處理器的項目解決方案,因此現(xiàn)在硬件原理圖設(shè)計的工作量和復雜程度并不很大,而PCB板設(shè)計、調(diào)試以及生產(chǎn)管理的工作量相對而言更大一些。計算機技術(shù)專業(yè)主要從事嵌入式系統(tǒng)的軟件設(shè)計,目前嵌入式系統(tǒng)軟件的復雜程度正在快速增長,各種軟件設(shè)計已占到了嵌入式應用系統(tǒng)設(shè)計工作量的80%以上。
綜上所述,目前社會所需求的嵌入式人才是掌握電子設(shè)計和/或計算機相關(guān)知識的人才,也就是通常所說的硬件工程師和軟件工程師,而其中軟件設(shè)計人才應占80%左右。由于嵌入式的硬件和軟件都具有定制性,軟件工程需要掌握足夠的硬件知識,硬件工程師也應有相應的軟件知識。
圖1 嵌入式系統(tǒng)基本結(jié)構(gòu)
圖2 嵌入式人才需求結(jié)構(gòu)
另外,嵌入式系統(tǒng)設(shè)計是一個對實踐能力要求非常高的工作,相關(guān)領(lǐng)域知識更新速度非???如果沒有足夠的實踐經(jīng)歷很難掌握和了解嵌入式的相關(guān)知識。調(diào)查顯示,企業(yè)對相關(guān)人才要素關(guān)注程度從高到低分別是:技術(shù)、經(jīng)驗、敬業(yè)、學歷、其他[3]。
因此,如何培養(yǎng)具備合理軟硬件知識結(jié)構(gòu)、具有一定實踐經(jīng)驗的嵌入式人才,是當前嵌入式教學所面臨的重要問題,尤其是對于那些開設(shè)了嵌入式專業(yè)的院系。
目前國內(nèi)高校的嵌入式系統(tǒng)教學,普遍存在著以下問題,尤其是一些剛剛開設(shè)嵌入式系統(tǒng)課程的二本、三本和高職高專院校。
現(xiàn)有的高校嵌入式系統(tǒng)教材已經(jīng)很多了,但基本上可以分為兩類。一類教材是泛泛而談的:ARM、MIPS、x86、PowerPC等各種體系結(jié)構(gòu)處理器均作了基本介紹;μ C/OS、Linux、WinCE等各種操作系統(tǒng)也是一一羅列其特色。閱讀這種嵌入式教材,學生的感覺是走馬觀花,除了能記住幾個名詞之外,很難掌握嵌入式的基礎(chǔ)知識,更無法了解某一款處理器的基本開發(fā)過程。另一類教材通常是由嵌入式系統(tǒng)實驗設(shè)備廠商提供的,基本就是數(shù)據(jù)手冊加實驗手冊,學生使用這種教材往往只見樹木不見森林,很難系統(tǒng)掌握嵌入式系統(tǒng)的基本理論和概念。
目前非常缺乏一本以嵌入式系統(tǒng)開發(fā)過程為主線,以某種常見處理器和某種操作系統(tǒng)為主體,同時對其他體系結(jié)構(gòu)和操作系統(tǒng)作概要性介紹的教材。這也表明目前國內(nèi)嵌入式教學的積淀還不夠。
對于沒有開設(shè)嵌入式專業(yè)方向的學校,嵌入式系統(tǒng)課程通常是選修課,一般是32~48學時。老師需要全面介紹處理器、匯編語言、接口、操作系統(tǒng)、驅(qū)動程序開發(fā)、應用程序開發(fā)等知識;如果學生沒有足夠好的基礎(chǔ)和自學能力,基本是如墜云霧之中,沒有太大收獲。在開設(shè)了嵌入式專業(yè)方向的一些院校,通常開設(shè)多門嵌入式的課程:《嵌入式系統(tǒng)基礎(chǔ)》、《嵌入式操作系統(tǒng)》、《嵌入式應用軟件設(shè)計》等。這些課程基本覆蓋了嵌入式應用系統(tǒng)開發(fā)的全過程。目前,這些院系也存在缺乏合適教材、各門課程之間銜接不夠、部分具體知識相互重疊等情況。
盡管現(xiàn)在國內(nèi)多數(shù)計算機、電子、自動化院系基本都已配備了嵌入式實驗系統(tǒng),硬件上也都能完全滿足學生動手實踐的基本要求;但是在實際的實踐教學組織中,卻存在非常大的問題。首先是嵌入式系統(tǒng)一般比較復雜,很難像8051單片機系統(tǒng)那樣讓學生自己DIY一個最小硬件系統(tǒng)和軟件系統(tǒng);其次是實踐教學基本都是驗證性實驗,缺乏學生主動參與的環(huán)節(jié),無法調(diào)動學生積極性;最重要的是實踐動手學時嚴重不足,僅僅8~12小時的實驗很難讓學生真正了解和熟悉嵌入式開發(fā)過程。
現(xiàn)在少部分開設(shè)嵌入式課程較早的院系,其師資已比較強大,有些教師有從事嵌入式項目開發(fā)的經(jīng)歷,教學設(shè)備可以自制。但是還有相當多的院系,尤其是新開設(shè)嵌入式課程的院系都存在著師資嚴重缺乏的現(xiàn)象。主要存在以下問題:課程建設(shè)過程比較匆忙,多數(shù)以青年教師為主;由于企業(yè)對嵌入式人才需求旺盛,愿意進入高校的嵌入式人才非常少;多數(shù)教師無項目經(jīng)驗,動手能力比較差;教師培訓機會不多,且多數(shù)培訓也是實驗設(shè)備廠商的短期培訓。
目前從一本到高職高專的眾多高校都在開設(shè)嵌入式課程和嵌入式專業(yè)方向,但是這些學校的學生素質(zhì)、師資力量、硬件設(shè)備都存在著巨大的差異,所在專業(yè)和院系也不同,因此如何給老師和學生定位很重要?,F(xiàn)在很多不同層次的學校所開設(shè)的嵌入式課程都是一樣的學時、一樣的教材、一樣的設(shè)備,其效果則大相徑庭。嵌入式領(lǐng)域的工作分類很多,是從事軟件開發(fā)還是硬件開發(fā),是從事開發(fā)還是測試,是從事研發(fā)還是從事生產(chǎn),是了解整個研發(fā)過程還是集中關(guān)注其中某一個環(huán)節(jié)的工作,都需要根據(jù)具體情況進行分析和定位。
筆者近幾年一直從事嵌入式課程教學工作,組織過嵌入式興趣小組培訓,所帶研究生也從事嵌入式方向的研究。根據(jù)這幾年的經(jīng)驗,總結(jié)出一套項目化教學方法。
在進入大學二年級,完成基礎(chǔ)課程之后,給嵌入式方向的學生或?qū)η度胧接信d趣學生設(shè)定明確的項目目標,例如設(shè)計一個MP3、專用PDA等;并組建團隊,團隊規(guī)模一般在3~6人。采用導師制。導師先用4~6小時介紹嵌入式的概念以及嵌入式項目開發(fā)的一般過程,如圖3所示,并簡要介紹各階段所需要的知識以及分工合作關(guān)系。
圖3 嵌入式系統(tǒng)開發(fā)一般過程
通過設(shè)定項目,可以激發(fā)學生的興趣和積極性,明確目標;也對后期一些理論課程的重要性有了一些基本認識。團隊建設(shè)有利于學生之間形成良好的學習氛圍和環(huán)境,并能提高學生的溝通和交流能力;在后期學習的課程設(shè)計、畢業(yè)設(shè)計中都盡可能以這個團隊為基礎(chǔ)來安排任務(wù);其團隊的技術(shù)領(lǐng)袖會在后期學習中逐步突現(xiàn)出來。
在項目確定之后,鼓勵學生主動去探索,搜索資料學習相關(guān)知識,自主發(fā)現(xiàn)所需要的理論知識。在每門理論課程開展之前,導師應將項目中所對應的需求擺在學生面前,提倡提前學習和主動自學。帶著需求和問題去學習,通常比被動學習的效率高很多。
在每門相應理論課程學習之后,要求學生完成一些與項目相關(guān)的工作。例如,學習《微型計算機原理》之后,應閱讀項目所用處理器的數(shù)據(jù)手冊;學習《匯編語言》之后,應了解所用處理器的匯編語言指令集,并盡可能閱讀和編寫相應處理器的啟動代碼;學習《計算機接口技術(shù)》之后,應去了解項目相關(guān)的外設(shè)接口,并盡可能完成一個接口的無操作系統(tǒng)驅(qū)動程序的設(shè)計;學習《模擬電子學》、《數(shù)字電子學》之后,應去閱讀所用開發(fā)板的原理圖;學習《操作系統(tǒng)》之后,應去閱讀μ C/OS這樣小的操作系統(tǒng)源碼,并嘗試編寫多任務(wù)應用程序的例子;學習《計算機網(wǎng)絡(luò)》之后,應去了解項目所需要的計算機通信協(xié)議,能力較強的學生最好能實現(xiàn)其中一個較為簡單的通信模塊。
這些相關(guān)的工作并不要求學生完全完成或掌握,但是這個過程能讓學生感覺到理論課程的意義和價值,并學會利用理論課程的知識去解決問題、發(fā)現(xiàn)問題、觸類旁通,而且還可以激發(fā)其學習積極性和探索未知領(lǐng)域的熱情。對于學有余力的學生而言,可以提前掌握很多項目相關(guān)知識,并成為項目團隊的技術(shù)領(lǐng)袖。
對設(shè)有嵌入式專業(yè)方向的院系,可以用項目統(tǒng)一多種實踐環(huán)節(jié),教師以導師形式全程跟蹤。在相應的課程設(shè)計過程中完成某些功能驗證,例如《匯編語言》的課程設(shè)計是實現(xiàn)啟動代碼,《計算機接口技術(shù)》的課程設(shè)計是團隊成員分工完成相關(guān)外設(shè)的驅(qū)動程序。在大學三年級暑期實訓時,團隊可以集中完成部分功能設(shè)計;在畢業(yè)設(shè)計時則完成整個項目的原型設(shè)計、實現(xiàn)和測試工作。課程設(shè)計報告、畢業(yè)設(shè)計都需要按照項目設(shè)計說明書、項目測試說明書、設(shè)備使用說明書的格式進行撰寫。
對于沒有開設(shè)嵌入式專業(yè)方向的院系,組織嵌入式興趣小組,以參加競賽的形式來組織和引導學生的實踐過程更為合適一些。
項目團隊合作的時間大約為2年。在這個過程中,應提倡團隊自我管理,導師的責任是幫助學生建立團隊討論溝通機制、給出一些方向性的建議。團隊內(nèi)部自然會出現(xiàn)分工合作,有些同學會成為技術(shù)領(lǐng)袖,有些同學可能更擅長底層軟件開發(fā),有些同學則可能更適合測試。這對于學生自我定位非常有好處,并可以在就業(yè)前得到適當?shù)腻憻挋C會。
項目化教學方法的優(yōu)點是顯而易見的,但是在實施過程中困難也不少。主要有以下幾點是必須解決的。
由于很多老師沒有項目經(jīng)驗,因此無法組織項目。這就需要在項目化教學實施的最初階段,引進企業(yè)的工程師參與;或者派教師去企業(yè)參與項目,而不僅僅是參加簡單的培訓。另外,高校教師在組織項目化教學時也可借鑒嵌入式就業(yè)培訓機構(gòu)的一些教學方法,這些培訓機構(gòu)通常是采用完全項目化的方法教學。
項目化教學方法將會改變過去的課程安排。對于設(shè)有嵌入式方向?qū)I(yè)的院系,可以重新制定理論課程體系、實踐教學體系,比較容易安排較完整的課程體系;而無嵌入式方向?qū)I(yè)的院系,培養(yǎng)興趣小組和組織競賽團隊是比較可行的方式。
剛開始進行項目化教學時,尤其是學生能力不強的學校,應穩(wěn)定2~3個項目,便于老師掌握。項目也可從老師的科研項目中分解,某些優(yōu)秀的學生有時可以取得意想不到的成果,對于導師選拔研究生也非常有價值。另外,要鼓勵學生創(chuàng)新,讓學生提議項目,并注意項目積累。例如,筆者的第一個項目就是學生提議實現(xiàn)一個MP3播放器,最初是無操作系統(tǒng)、無人機界面、硬件解碼的MP3播放器;后續(xù)幾屆學生不斷提高,逐步實現(xiàn)了軟件解碼、多任務(wù)操作系統(tǒng)、UI界面、歌詞滾動等功能。要多鼓勵學生突破和創(chuàng)新,一旦成功,學生的成就感會非常大,積極性、創(chuàng)造性和熱情會被大大激發(fā)。
傳統(tǒng)的驗證性實驗顯然無法滿足項目化教學的要求??梢圆捎脙煞N方式:一是開放實驗室,每個團隊有自己專用的設(shè)備和場地;二是學生租用學校的實驗設(shè)備,在寢室中開展學習和實踐活動。很多學校的嵌入式實驗設(shè)備基本處于半閑置狀態(tài),浪費了資源。采取上述兩種方式,將大大提高設(shè)備的利用率,做到物盡其用。
不同層次學校的學生素質(zhì)差異比較大。對于一本、二本的學生,教師的主要工作是引導、鼓勵創(chuàng)新,并注意培養(yǎng)團隊領(lǐng)袖。對于三本、高職的學生,則要著重于某幾個固定的項目和幾個適合的技術(shù)點,教師必須起一定的主導作用;項目的難度應適當降低,可由老師提供一些解決方案,以幫助學生順利完成整個項目。
項目化嵌入式教學方法,通過項目引導來給學生確立目標,激發(fā)熱情;利用項目需求來引導和增強學生對理論學習的熱情和主動性;通過項目實踐來提高學生的動手能力。這些經(jīng)歷將可能改變一個人的學習和工作習慣,也許是受益終身的經(jīng)歷。另外,由于學生在大學期間已經(jīng)有了一些基本的項目開發(fā)經(jīng)歷,而且從文檔寫作到項目研發(fā)測試的整個過程都得到了訓練,因此學生很容易就業(yè)。學生就業(yè)之后,也能非常順利地實現(xiàn)過渡。
[1]嵌入式在線.我國嵌入式行業(yè)人才需求預測和培訓瓶頸[EB/OL].(2008-08-02)[2009-10-01].http://www.mcuol.com/Edu/222/28218.htm.
[2]北京華清遠見科技有限公司.2008-2009年中國嵌入式開發(fā)從業(yè)人員調(diào)查報告[EB/OL].(2009-04-03)[2009-10-01].http://www.farsight.com.cn/survey/report.htm.
[3]中華嵌入式人才庫.嵌入式企業(yè)研發(fā)人才需求報告[EB/OL].(2008-04-22)[2009-10-01].http://blog.mcuol.com/User/cesiu/Article/4607_1.htm.