苗晟+高皓
摘 要:為有效探討嵌入式系統(tǒng)的授課方式,針對其涉及內(nèi)容廣、授課難度大等問題,通過分析計(jì)算機(jī)類專業(yè)和電子信息類專業(yè)的特點(diǎn)及其與嵌入式系統(tǒng)課程的關(guān)聯(lián)性,提出針對不同專業(yè)的嵌入式系統(tǒng)課程模塊化教育方法并通過實(shí)踐教學(xué)對該方法進(jìn)行分析討論。
關(guān)鍵詞:嵌入式系統(tǒng);電子信息類;模塊化教學(xué);應(yīng)用型人才培養(yǎng)
文章編號:1672-5913(2017)07-0122-04
中圖分類號:G642
1 背 景
目前,本科計(jì)算機(jī)類專業(yè)有兩大學(xué)科方向:一是電子信息類專業(yè),主要以電路設(shè)計(jì)和信號處理為主,課程設(shè)置偏向硬件開發(fā);另一個(gè)是計(jì)算機(jī)類專業(yè),以軟件開發(fā)、操作系統(tǒng)和網(wǎng)絡(luò)技術(shù)為主,課程設(shè)置更加注重網(wǎng)絡(luò)建設(shè)和軟件編程。在這兩大計(jì)算機(jī)專業(yè)學(xué)科中,嵌入式系統(tǒng)被普遍認(rèn)為是比較難進(jìn)行教學(xué)和實(shí)驗(yàn)的一門課程,原因是其既有硬件設(shè)計(jì)和底層編程,又有操作系統(tǒng)移植及軟件開發(fā),課程涉及的知識跨度大、綜合應(yīng)用能力要求高、知識點(diǎn)繁雜且不容易掌握。于是,對計(jì)算機(jī)類專業(yè)的兩大學(xué)科方向來說,這門課程的教學(xué)都存在前導(dǎo)課程的不足。
對于電子信息類專業(yè)的學(xué)生來說,由于欠缺操作系統(tǒng)知識,系統(tǒng)編程能力有限,如果只講授純硬件編程,則課程成為單片機(jī)課程的延伸,不能體現(xiàn)嵌入式系統(tǒng)的核心和精髓,但在課程內(nèi)容中加入操作系統(tǒng)知識,不僅整個(gè)編程思想會發(fā)生大的變化,還需要補(bǔ)充講解很多知識點(diǎn)。對于計(jì)算機(jī)類專業(yè)的學(xué)生來說,他們學(xué)習(xí)這門課程時(shí)同樣存在短板。嵌入式系統(tǒng)的特點(diǎn)是軟硬件可裁剪,就是根據(jù)應(yīng)用來定制系統(tǒng)軟硬件,而不掌握電路分析和模電數(shù)電基礎(chǔ),學(xué)生可能連看原理圖都存在障礙,對各種接口的時(shí)序分析也會有障礙,導(dǎo)致在學(xué)習(xí)硬件架構(gòu)和驅(qū)動(dòng)開發(fā)部分時(shí)難以理解,因此嵌入式課程的教學(xué)方法值得深入探討和研究。
2 教學(xué)現(xiàn)狀分析
嵌入式系統(tǒng)在計(jì)算機(jī)體系中的重要性已毋庸置疑,文獻(xiàn)[1]從多種需求角度入手分析嵌入式系統(tǒng)的重要性;同時(shí)文章也指出,從廣義的角度來看,本門課程是一個(gè)非常龐大的學(xué)科體系,從硬件設(shè)計(jì)跨越到軟件開發(fā),涉及內(nèi)容廣泛,其很多分支,如編程語言、驅(qū)動(dòng)開發(fā)、嵌入式操作系統(tǒng)、APP 開發(fā)等,都可以作為一門課程或研究方向進(jìn)行深入研究。僅從嵌入式系統(tǒng)這門課程來看,由于受到篇幅、學(xué)時(shí)等限制,不可能一一對課程涉及的內(nèi)容展開介紹,而這個(gè)問題在業(yè)界也有過相關(guān)討論[2-3]。如何將軟硬件交叉設(shè)計(jì)的嵌入式系統(tǒng)課程教好,其教學(xué)方法和授課內(nèi)容是值得進(jìn)一步深入研究探討的。
2.1 教 材
現(xiàn)在市面上關(guān)于嵌入式系統(tǒng)的優(yōu)秀教材不少,大致可以分為3類。
一是詳細(xì)介紹系統(tǒng)架構(gòu)(如以ARM 架構(gòu)的某一種平臺或某一款芯片為例)、匯編語言及硬件接口的教材[4]。這類教材專注于介紹底層寄存器和匯編語言,經(jīng)常有大段 C 語言和匯編語言代碼,對每種接口總線都講得比較詳細(xì)并給出例程,因此,這類教材可以看作單片機(jī)課程的擴(kuò)展和延深,雖然底層講得細(xì),但是基本不涉及操作系統(tǒng)。
二是詳細(xì)介紹某一種嵌入式操作系統(tǒng)的教材,如Linux、uCOS或Vxworks等。這類書一般專門針對一種操作系統(tǒng),從其下載移植、內(nèi)核結(jié)構(gòu)到系統(tǒng)編程都作深入講解,這對于學(xué)習(xí)應(yīng)用某一類操作系統(tǒng)來說是很好的參考書和學(xué)習(xí)教材,但是這類書籍很少涉及硬件架構(gòu)和匯編語言[5]。
三是上升到應(yīng)用程序開發(fā)的教材且主要以 Android系統(tǒng)開發(fā)為主,iOS 相關(guān)書籍也不少。簡單地說,就是做手機(jī) APP 開發(fā),這類書籍基本完全脫離硬件,直接講授軟件編程[6]。
3類書籍各有側(cè)重,對于打算深入學(xué)習(xí)嵌入式系統(tǒng)的學(xué)生來說,如果他們能認(rèn)真學(xué)習(xí)這3類書籍,收獲會很大,但是從教師選擇教材的角度來看,上述3種教材多少都有些“顧此失彼”。
2.2 課 時(shí)
以課程設(shè)置64學(xué)時(shí)(32學(xué)時(shí)理論+32學(xué)時(shí)實(shí)驗(yàn))為例,如果課程中只介紹ARM架構(gòu)、匯編語言和接口設(shè)計(jì),實(shí)驗(yàn)僅開展不帶操作系統(tǒng)的“底層編程”,那么,在講得比較充分的前提下,課時(shí)可能還會略顯富余。如果加入嵌入式操作系統(tǒng)移植和驅(qū)動(dòng)開發(fā)的相關(guān)知識,課時(shí)立即就會顯得很緊張,而且這還是在要求學(xué)生有一定操作系統(tǒng)知識的前提下,如學(xué)習(xí)過Linux系統(tǒng),基本掌握 Shell 命令。
由于各個(gè)學(xué)校課時(shí)設(shè)置不一,有以 60學(xué)時(shí)或80學(xué)時(shí)設(shè)置的,也有以48學(xué)時(shí)或64學(xué)時(shí)設(shè)置的,甚至同一學(xué)校不同專業(yè)的課時(shí)設(shè)置也不一樣,因此想要有效開展教學(xué),教師須備有靈活可變的教學(xué)方案并根據(jù)學(xué)生的前導(dǎo)課程進(jìn)行適當(dāng)調(diào)整,這樣才能做到“有的放矢”。
3 模塊化教學(xué)
在嵌入式系統(tǒng)的教學(xué)中,教師很有必要為學(xué)生講解嵌入式系統(tǒng)移植和系統(tǒng)編程知識,因?yàn)檫@不僅能讓學(xué)生全面系統(tǒng)地了解嵌入式系統(tǒng)設(shè)計(jì)的核心,還能為學(xué)生未來就業(yè)打下良好基礎(chǔ),更符合高校應(yīng)用轉(zhuǎn)型的思想和要求。我們以ARM架構(gòu)+Linux內(nèi)核+Android系統(tǒng)組合為例,介紹如何使用模塊化方法對課程進(jìn)行設(shè)置。
3.1 內(nèi)容分析
首先可將課程內(nèi)容作初步劃分,明確課程涉及的內(nèi)容。嵌入式系統(tǒng)課程內(nèi)容可以粗分為底層硬件級、系統(tǒng)級和應(yīng)用層級,其涉及的知識點(diǎn)、開發(fā)工具或編程語言見表1。由于涉及編程環(huán)境和具體開發(fā)方式過多,表1僅列出常用語言或軟件供參考。陰影部分是嵌入式系統(tǒng)課程主要講授的內(nèi)容,可以看出,嵌入式系統(tǒng)課程銜接硬件部分和應(yīng)用層開發(fā),應(yīng)該起到“橋梁”作用,讓學(xué)生明白系統(tǒng)移植的優(yōu)勢和開發(fā)流程,而不僅僅停留在單片機(jī)系統(tǒng)編程的水平。
嵌入式系統(tǒng)的教學(xué)定位以系統(tǒng)級為核心,略微偏硬件架構(gòu)和寄存器,指令系統(tǒng)也是不可或缺的內(nèi)容,應(yīng)用級開發(fā)則主要是另外一門課程的任務(wù),如在智能終端開發(fā)課程中再詳細(xì)介紹手機(jī)APP的開發(fā)研究;本課程中可以簡單作一點(diǎn)前導(dǎo)介紹,以這些內(nèi)容為基礎(chǔ),教師在實(shí)際教學(xué)中再根據(jù)不同學(xué)科進(jìn)行適當(dāng)取舍。
3.2 教學(xué)方法
將嵌入式系統(tǒng)課程分為幾個(gè)主要模塊,其中每個(gè)模塊又包含小的模塊,各個(gè)模塊針對大綱要求和實(shí)際應(yīng)用情況分為精講、詳細(xì)、略講和可選幾個(gè)層次,見表 2。
表2中概括了嵌入式系統(tǒng)課程的三大部分:基礎(chǔ)、系統(tǒng)和應(yīng)用。這3塊都是本門課程必不可少的內(nèi)容,基礎(chǔ)部分學(xué)生學(xué)習(xí)起來可能枯燥乏味,但是該部分是系統(tǒng)開發(fā)的基礎(chǔ);系統(tǒng)部分是課程的精髓,包括介紹操作系統(tǒng)的內(nèi)核、編譯和移植,這些都是本門課程的重點(diǎn);在嵌入式操作系統(tǒng)基礎(chǔ)上開發(fā)和編程就是應(yīng)用模塊,從課程設(shè)置上來說,這部分的講授重點(diǎn)不應(yīng)該在本門課 程上,但是這部分內(nèi)容卻是最貼近實(shí)際工作的內(nèi)容,也是學(xué)生比較感興趣的部分,具體講授到什么程度需要教師根據(jù)實(shí)際情況進(jìn)行規(guī)劃。上述各部分的講授,教師應(yīng)根據(jù)學(xué)生專業(yè)前導(dǎo)課程作適當(dāng)調(diào)整,對比電子信息工程和物聯(lián)網(wǎng)工程兩個(gè)專業(yè)調(diào)整課程內(nèi)容,見表3。
針對不同專業(yè)相關(guān)前導(dǎo)課程的設(shè)置可以看出,電子信息類專業(yè)對電路部分比較偏重,學(xué)生對外圍電路結(jié)構(gòu)、接口部分和底層編程基礎(chǔ)的掌握情況還不錯(cuò),但是對于系統(tǒng)架構(gòu)、網(wǎng)絡(luò)結(jié)構(gòu)以及系統(tǒng)編程則存在短板。物聯(lián)網(wǎng)工程專業(yè)的學(xué)生剛好相反,具備Linux 系統(tǒng)知識,也熟悉網(wǎng)絡(luò)協(xié)議等內(nèi)容,但是對電路基礎(chǔ)和信號處理則相對薄弱?;谶@種情況,在嵌入式系統(tǒng)課程中分別為兩個(gè)專業(yè)設(shè)置側(cè)重不同的講授模塊,見表 4。
開展嵌入式系統(tǒng)課程的教學(xué),教師應(yīng)當(dāng)把握3方面:一是大的原則,即本門課程哪些內(nèi)容是應(yīng)該講到和涉及的,因?yàn)楦鱾€(gè)學(xué)校教學(xué)大綱不一,也不可能一概而論;二是注意和各專業(yè)的前導(dǎo)課程設(shè)置結(jié)合,根據(jù)專業(yè)特點(diǎn)進(jìn)行適當(dāng)調(diào)控,這樣既節(jié)約課時(shí),又能提高授課效率;三是和實(shí)用性以及市場需求結(jié)合,這一點(diǎn)也十分重要,嵌入式系統(tǒng)應(yīng)用性強(qiáng)、發(fā)展迅猛且新技術(shù)和新方法層出不窮,如現(xiàn)在ARM架構(gòu)以Cortex系列為主,而市面上教材大多還在介紹ARM9(并不是說ARM9不好,只是建議教師應(yīng)該在上課的同時(shí)加入一些新的知識),還有如調(diào)試方法,以前嵌入式系統(tǒng)調(diào)試以仿真器為主,但是現(xiàn)在有很多其他方式調(diào)試代碼,雖然實(shí)驗(yàn)課可能受到一定限制,不能全面演示,但是教師可以在授課時(shí)將相關(guān)方法告知學(xué)生,讓感興趣的學(xué)生自學(xué)。
采用模塊化的嵌入式系統(tǒng)課程教學(xué)方法有以下幾個(gè)優(yōu)點(diǎn):
(1)各模塊相對獨(dú)立,除了一些聯(lián)系比較緊密的部分,對單一模塊進(jìn)行修改或增減,不會對其他模塊的教學(xué)造成太大影響;
(2) 針對不同模塊內(nèi)容如匯編語言、系統(tǒng)移植、系統(tǒng)編程、Android 開發(fā)等,可以設(shè)置針對性較強(qiáng)的實(shí)驗(yàn),便于理清教學(xué)思路;
(3)有利于針對不同專業(yè)學(xué)生有的放矢地進(jìn)行教學(xué),避免通篇一律的講課方法,提高學(xué)生聽課的積極性。
4 結(jié) 語
嵌入式系統(tǒng)課程模塊化教學(xué)方法的總原則:針對不同專業(yè)和層次的學(xué)生進(jìn)行教學(xué),需要作適當(dāng)調(diào)整,以避免在課程教學(xué)中由于涉及面過大,導(dǎo)致學(xué)生因?qū)I(yè)前導(dǎo)課程不足而聽不懂、學(xué)不會。采用模塊化教學(xué)基本流程如下:
(1)根據(jù)本學(xué)院或本校學(xué)生的專業(yè)情況和總體水平,將嵌入式系統(tǒng)課程劃分為幾個(gè)大的模塊,大的模塊下又可根據(jù)情況分為若干小的模塊;
(2)對于某一具體專業(yè)的教學(xué),根據(jù)其前導(dǎo)課程和專業(yè)側(cè)重情況,對模塊進(jìn)行取舍,挑選出需要介紹的模塊內(nèi)容;
(3)根據(jù)實(shí)際情況進(jìn)一步將模塊中的內(nèi)容分為精講、詳細(xì)和介紹3個(gè)層次,同時(shí)作統(tǒng)籌調(diào)整,使講授內(nèi)容基本符合整體課時(shí)要求;
(4)在講授過程中,教師可以根據(jù)學(xué)生反饋?zhàn)鬟M(jìn)一步微調(diào)。最終,通過2~3輪的課程教學(xué),找出結(jié)合本校實(shí)際情況的具體授課和操作方法??偠灾度胧较到y(tǒng)是一門跨度大、交叉應(yīng)用性強(qiáng)的學(xué)科,其課程無論是內(nèi)容設(shè)置還是講授難度都相對較大,但是如果教學(xué)方法得當(dāng),教學(xué)效果好,那么對于學(xué)生今后的就業(yè)會有相當(dāng)大的幫助,這也符合本科應(yīng)用型人才培養(yǎng)的基本思想和理念。
參考文獻(xiàn):
[1] Regehr J.Why take an embedded systems course [J]. Embedded in Academia, 2010(6): 195.
[2] 耿鵬. 嵌入式系統(tǒng)課程教學(xué)體系研究[J]. 江蘇科技信息, 2012(6): 42-43.
[3] 劉光徽, 李耀, 章磊. 應(yīng)用型嵌入式系統(tǒng)課程教學(xué)研究[J]. 中國科教創(chuàng)新導(dǎo)刊, 2010(19): 30.
[4] 符意德. 嵌入式系統(tǒng)設(shè)計(jì)原理及應(yīng)用[M]. 2 版. 北京: 清華大學(xué)出版社, 2010: 81.
[5] 弓雷. ARM 嵌入式 Linux 系統(tǒng)開發(fā)詳解[M]. 2 版. 北京: 清華大學(xué)出版社, 2014: 2-9.
[6] 施威銘. Android APP開發(fā)入門[M]. 北京: 機(jī)械工業(yè)出版社, 2016: 3-7.
(編輯:宋文婷)