苗晟+高皓



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