【摘 要】針對高職嵌入式Linux驅(qū)動程序開發(fā)課程難度大的特點,從如何引起學(xué)生的學(xué)習(xí)興趣,如何從并行的課程移植相似的項目,以及如何培養(yǎng)學(xué)生的創(chuàng)新精神和團隊協(xié)作精神等方面探討高職嵌入式Linux驅(qū)動程序開發(fā)教學(xué)改革。
【關(guān)鍵詞】高職 嵌入式Linux驅(qū)動
程序開發(fā) 教學(xué)改革
【中圖分類號】G【文獻標(biāo)識碼】A
【文章編號】0450-9889(2013)05C-
0154-02
ARM+Linux是目前構(gòu)成嵌入式產(chǎn)品的主流架構(gòu),分別構(gòu)成了嵌入式產(chǎn)品的硬件平臺和軟件平臺,一個完整的嵌入式產(chǎn)品開發(fā)團隊一般由應(yīng)用程序工程師、系統(tǒng)工程師、驅(qū)動工程師和硬件工程師組成。嵌入式Linux驅(qū)動程序開發(fā)課程教給學(xué)生一個完整的嵌入式項目的驅(qū)動程序部分的知識,是高職計算機應(yīng)用(嵌入式方向)專業(yè)的一門專業(yè)必修課。該課程是軟件和硬件銜接的部分,需要的前導(dǎo)課有C語言程序設(shè)計、嵌入式Linux操作系統(tǒng)、模擬電子、數(shù)字電子等課程,并且需要熟悉合適的硬件平臺,所以,學(xué)生學(xué)習(xí)起來一般難度較大。高職教育強調(diào)根據(jù)學(xué)生的學(xué)習(xí)特點進行教學(xué),特別強調(diào)教學(xué)內(nèi)容的實用性以及學(xué)生實踐技能的培養(yǎng),以便學(xué)生走出校門之后就能適應(yīng)工作崗位的需求。筆者在嵌入式Linux驅(qū)動程序開發(fā)課程的教學(xué)過程中進行了初步的探索和實踐,獲得較好的教學(xué)效果。
一、明確教學(xué)目標(biāo),模塊化整合教學(xué)內(nèi)容
嵌入式Linux驅(qū)動程序開發(fā)因為涉及軟件和硬件,并且使用的是一些編程的高級應(yīng)用技巧,鑒于高職學(xué)生的特點,這門課的教學(xué)目標(biāo)定為:能夠看懂設(shè)備的數(shù)據(jù)手冊,掌握Linux下設(shè)備驅(qū)動程序的基本原理和編程的步驟;注重基本理論,基本概念的掌握,以便學(xué)生在實習(xí)及面試工作時有一個基本概念;能夠模仿標(biāo)準(zhǔn)的驅(qū)動程序架構(gòu)編寫出自己的驅(qū)動程序,養(yǎng)成良好的分析問題的能力和編程習(xí)慣以及團隊協(xié)作精神。因而對全書的內(nèi)容進行了整合,分為幾大模塊。模塊一是編譯工具gcc和makefile的使用,模塊二是編寫驅(qū)動程序所需的Linux內(nèi)核基礎(chǔ),模塊三是字符設(shè)備驅(qū)動程序,模塊四是塊設(shè)備驅(qū)動程序,模塊五網(wǎng)絡(luò)設(shè)備驅(qū)動程序。
二、加強課程的橫向聯(lián)系,以引起學(xué)生的興趣
一般認(rèn)為,高職學(xué)生不大適應(yīng)系統(tǒng)性、理論性的學(xué)習(xí),對較抽象的理論學(xué)習(xí)普遍有困難,而且高職學(xué)生知識積累有限,獨立思考、自我學(xué)習(xí)和解決問題的能力相對而言較差,缺少學(xué)習(xí)的主動性和自覺性,業(yè)余活動豐富,自我約束能力不強,容易受短期目標(biāo)驅(qū)動,所以,為了激起他們對這門課的興趣,筆者主要進行了如下幾點的改革:
(一)上好第一堂課,讓學(xué)生對本課程有一個完整清晰的定位。在第一堂課中,如果能夠使學(xué)生聚精會神、興趣勃勃地聽講,那么教師講課的目標(biāo)也就達到了。在第一堂課中,筆者會講述該專業(yè)是如何通過開展企業(yè),行業(yè)調(diào)研而設(shè)立的,它與企業(yè)的哪些工作崗位對應(yīng),嵌入式開發(fā)團隊的組成,開發(fā)一個嵌入式產(chǎn)品所需要的知識體系;系部為同學(xué)們所制訂的培養(yǎng)方案中開設(shè)了哪些課程來對應(yīng)這些工作崗位,以及本課程在課程體系中所處的位置,它所需的前導(dǎo)課有哪些,需要哪些基礎(chǔ)知識,通過本課程的學(xué)習(xí),可以在一個完整的項目中完成哪些具體的工作,它面對工作崗位群中的哪一個具體的工作崗位,可以列舉一個具體的實例如mp4播放視頻功能或是手機攝像機的功能來講。另外,跟學(xué)生介紹本課程的教材、知識模塊、教學(xué)方式以及考核方式,讓學(xué)生對這門課有一個整體的認(rèn)識。
(二)引入可視化的圖形界面,以一個完整的項目呈現(xiàn)給學(xué)生,以增強學(xué)生的興趣。一個人對圖形的敏感度要比對數(shù)字或程序代碼的敏感度要高,圖形界面編程更容易引起學(xué)生的學(xué)習(xí)興趣,嵌入式Linux驅(qū)動程序開發(fā)屬于整個嵌入式開發(fā)團隊的一部分,僅對這一部分,它全部是字符界面,面對的是一些程序代碼和硬件的電路,涉及軟件和硬件方面的知識,所以學(xué)生通常覺得知識壓力大,枯燥無味,極易放棄。筆者在教學(xué)過程中,根據(jù)這一特點,及時補充linux下圖形界面編程的知識,把圖形界面編程和驅(qū)動程序開發(fā)結(jié)合起來,用圖形界面控制驅(qū)動,這樣學(xué)生會感到更直觀和更有趣,從而增加學(xué)生的積極性。而且,圖形界面編程也是嵌入式開發(fā)團隊不可缺少的部分,有直接對應(yīng)的工作,學(xué)生學(xué)習(xí)的動力就更大了。因此,把圖形界面編程和驅(qū)動程序開發(fā)有機地結(jié)合在一起,穿插講解,對學(xué)生掌握一個完整項目的過程是非常有好處的。
(三)和并行課程聯(lián)系,讓學(xué)生學(xué)習(xí)思維產(chǎn)生遷移,降低學(xué)習(xí)的難度。學(xué)生在學(xué)習(xí)嵌入式Linux設(shè)備驅(qū)動程序開發(fā)時,已經(jīng)學(xué)習(xí)了單片機技術(shù)這門課程,或是正在學(xué)習(xí)這門課程,在上課時,可以設(shè)置和單片機課程相似的實驗給學(xué)生,讓學(xué)生學(xué)習(xí)的思想產(chǎn)生遷移,模仿單片機課程中做實驗的思路來做本課程的實驗。單片機課程和本課程都是實踐性很強的課程,都包括硬件和軟件兩個方面,只是本課程是在Linux操作系統(tǒng)下編程驅(qū)動硬件,而前者是由軟件直接驅(qū)動硬件,所以本課程相對來說是更復(fù)雜一點,學(xué)生需要的前導(dǎo)課比較多,但如果抓緊這兩門課的對照關(guān)系,則讓學(xué)生相互對照著學(xué)習(xí),則學(xué)習(xí)的難度會大大下降。比如學(xué)生在單片機課程中學(xué)過LED燈、數(shù)碼管實驗,以及溫、濕度感應(yīng)實驗,在本程課的arm+linux的環(huán)境下,也可以設(shè)置實現(xiàn)同樣的功能的實驗,并且再加上圖形界面,可以實現(xiàn)在圖形界面下控制一些功能,從而引發(fā)學(xué)生的興趣,并在此基礎(chǔ)上擴展一些別的功能。
三、多種教學(xué)方法并用,改進實驗實訓(xùn)方法
本課程采用基于項目的教學(xué)方法,一個驅(qū)動程序就是一個小的項目,多個驅(qū)動程序組成一個大一點的項目,后續(xù)的嵌入綜合項目實訓(xùn)中,再去實現(xiàn)一個完整的嵌入式產(chǎn)品。一個小的項目又分成多個任務(wù),每個任務(wù)由多個教學(xué)環(huán)節(jié)組成。根據(jù)每個任務(wù)的大小,再安排到每次課中去,從而形成教學(xué)進度表。把知識模塊細分為小的知識點,再把每個知識點用程序代碼來實現(xiàn)講解。在程序代碼中講解嵌入式設(shè)備驅(qū)動的原理是教這門課的一個大的特色。例如在單片機課程中,并不是先把所有的指令講完后,再去講解程序,而是項目使用到哪些指令,就去講哪些指令,在本課程中,完成某個項目需要什么知識點就講解什么知識點,用到多少就講解多少,這樣學(xué)生帶著任務(wù),帶著目的來學(xué)習(xí),接受起來就比較快。
實驗實訓(xùn)是高職高專教育培養(yǎng)學(xué)生應(yīng)用技能非常重要的一個環(huán)節(jié),在傳統(tǒng)的實驗實訓(xùn)教學(xué)中,往往以ARM實驗箱為器材,開設(shè)一些實驗箱匹配的驗證性實驗,老師把匹配來的光盤上的實驗文檔發(fā)給學(xué)生,學(xué)生按照上面所講的步驟,一步一步完成相應(yīng)的內(nèi)容,在整個教學(xué)過程中,學(xué)生往往是被動的,而且與實際應(yīng)用不接軌,實踐教學(xué)沒有層次,階段不明確。在這一部分,筆者借用單片機課程的方法,先用虛擬軟件portues設(shè)計,仿真好電路圖后,焊接在萬能電路板上,再和ARM核心板連接起來,整個項目分為核心板和擴展板,因為擴展板可以設(shè)計的多種多樣,所以這樣可以制作多種多樣的應(yīng)用項目,從而增強學(xué)生自己動手的能力,使他們真實感受到軟件驅(qū)動硬件的過程,實現(xiàn)了“教學(xué)做”一體化的模式,培養(yǎng)了學(xué)生的創(chuàng)新精神。
四、改進考核方式,促進團隊協(xié)作精神
考核不僅是對教師教學(xué)效果的檢驗和學(xué)生水平的測試,同時也是對學(xué)生的學(xué)習(xí)習(xí)慣和學(xué)習(xí)方法的導(dǎo)向。嵌入式Linux驅(qū)動程序開發(fā)是一門實踐性很強的課程,傳統(tǒng)的卷面理論考試已經(jīng)不能全面反映學(xué)生對該課程的掌握程度,尤其是應(yīng)用能力、動手能力和創(chuàng)新能力很難從試卷上反映出來,常常會出現(xiàn)理論考試得高分,實驗和實訓(xùn)得低分的現(xiàn)象。因此,本課程注重過程考核,突出能力考核,考核內(nèi)容主要包括理論考核、實驗實訓(xùn)項目考核和平時成績考核三個方面。其中,基礎(chǔ)理論考核占20%,主要考核學(xué)生掌握所學(xué)課程的基本理論,基本知識和必備的常識;實驗、實訓(xùn)、動手能力考核占60%,主要考核學(xué)生對Linux下的外圍設(shè)備的驅(qū)動程序的編寫過程,運用編程軟件的能力,看懂硬件手冊的能力,運用所學(xué)的知識和技能進行專項實驗實訓(xùn)的能力;一般是把全班分為多個小組,3~4人一個團隊,讓他們互補技能,為了共同的業(yè)績目標(biāo),相互承擔(dān)責(zé)任,采取小組實驗成績代替?zhèn)€人成績的方法,每次實驗采取小組實驗結(jié)果和業(yè)績的方式進行考評,促使團隊成員相互提醒,協(xié)作。平時成績考核占20%,主要考核學(xué)生平時的學(xué)習(xí)態(tài)度及表現(xiàn),包括出勤情況、課堂表現(xiàn)及作業(yè)情況等。
這樣的考核比重也是與高職高專培養(yǎng)高端技能型人才的目標(biāo)是相吻合的。
五、編寫適合實訓(xùn)室現(xiàn)有硬件平臺的教材,申報網(wǎng)絡(luò)課程
現(xiàn)在從外面公司購買的實驗箱,一般只是配備一個光盤,沒有教材對應(yīng),而高職高專學(xué)校教材選用的原則是優(yōu)先選用教育部推薦的優(yōu)秀高職高專教材以及一些優(yōu)秀職業(yè)技能培訓(xùn)鑒定教材,所以往往教材和實驗器材是不對應(yīng)的,至少在實驗上通常是不對應(yīng)的。一本好的教材可以大大省去學(xué)生做筆記的時間,從而為學(xué)生降低學(xué)習(xí)的壓力,為此,我們針對實驗室的實驗箱和開發(fā)板,編寫了一本實驗手冊,里面有基本的實驗、擴展的實驗,教材上給出了程序的框架,具體做實驗時,再由學(xué)生補充完整。
學(xué)生上課學(xué)習(xí)的時間是很短的,大部分時間是在課余,因為該課程有一定的難度,所以,我們擬向?qū)W校申報一個網(wǎng)絡(luò)課程,在學(xué)校的網(wǎng)絡(luò)平臺上,申報一個空間,上傳一些學(xué)習(xí)視頻、電子書或是其他的學(xué)習(xí)資料,共享一些學(xué)習(xí)心得和行業(yè)動態(tài)等。而且這也是學(xué)生上交作業(yè)、交流討論和答疑的地方,這樣,讓學(xué)生在課余有興趣放在這門課上面。
【參考文獻】
[1]李秀忠.“單片機應(yīng)用技術(shù)”課程教學(xué)改革研究與實踐[J].中國電力教育,2010(4)
[2]王靜霞.單片機應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2011
[3]張光建,劉政.嵌入式Linux驅(qū)動程序開發(fā)實例教程[M].北京:清華大學(xué)出版社,2011
【作者簡介】龍 華(1973- ),男,江西奉新人,廣東理工職業(yè)學(xué)院計算機技術(shù)系教師,碩士,研究方向:人工智能,神經(jīng)網(wǎng)絡(luò),嵌入式系統(tǒng)。(責(zé)編 黎 原)