吳雪琴 黃琨
摘要:嵌入式系統(tǒng)應用與開發(fā)是計算機應用嵌入式方向?qū)I(yè)學生的專業(yè)核心課程,作者從市場和行業(yè)需求出發(fā),探討了該課程的重要性,同時也對本人的教學實踐進行了總結,包括教學過程中的思考,遇到的問題及采用的對策,在充分挖掘?qū)W生已有基礎的前提下加強學生的專業(yè)技能培養(yǎng)。
關鍵詞:嵌入式系統(tǒng)應用與開發(fā)課程;知識處理;難點突破;專業(yè)技能
中圖分類號:TP313 文獻標識碼:A 文章編號:1009-3044(2014)07-1452-02
1 概述
21世紀,科技發(fā)展日新月異。在全球新一輪汽車、通信、消費類電子、工業(yè)、醫(yī)療、軍事等行業(yè)的巨大智能化裝備市場需求下,全球嵌入式產(chǎn)業(yè)得到了快速發(fā)展;無論是生活中常用的mp3、手機、語言復讀機、PDA、機頂盒、智能電視、智能冰箱,還是工業(yè)生產(chǎn)、娛樂中的機器人,以及國防系統(tǒng)無不采用嵌入式技術。因此嵌入式技術已經(jīng)成為后PC時代IT技術的主力軍。
正是巨大的市場需求,使得嵌入式行業(yè)對人才的需求極度旺盛,因此各高校紛紛開設了《嵌入式系統(tǒng)應用與開發(fā)》課程,該文以該課程為背景,探討了學生如何才能學好該課程,使得在畢業(yè)時能找到理想從事該行業(yè)的工作。因為實際情況是每年各公司及國內(nèi)家電公司如INTEL、TI、SONY、三星、TCL、聯(lián)想和康佳等企業(yè)紛紛出高薪聘請嵌入式人才,但依然處于企業(yè)找不到合適人才,學生畢業(yè)找不到合適工作的尷尬局面,這也一直是作為教師的我所思考的問題。
當然形成這種局面的原因很多,如嵌入式技術對人才的專業(yè)水平、實際操作能力及技術產(chǎn)品化的要求較高。未經(jīng)過有針對性的實踐操作,未參與或獨立完成一件嵌入式成品就不能說掌握了嵌入式技術,而成品是否能被社會認可更是企業(yè)選擇人才的關鍵。所以企業(yè)需要一個平臺來選擇真正實用的人才;學生需要一個平臺來實踐和展示自我;學校需要一個平臺來驗證教學體系是否完善,通過平臺取彼之長。在實際教學中我們采用的是ARM9的實驗平臺,該平臺能讓學生動手自己開發(fā)由易到難的程序。
2 明確嵌入式系統(tǒng)應用與開發(fā)的重要性
作為嵌入式教學的開始,教師有必要向?qū)W生介紹該課程的特點及作用范圍,培養(yǎng)學生學習你該課程及該方向的興趣。同時需要了解學生在學習嵌入式初期所遇到的常見問題,使他們不至于一開始就對該課程的學習產(chǎn)生畏難情緒。因此,需要在如下幾個方面做好對學生的引導工作。
1)學了它在實際中有沒有用?
現(xiàn)在在校學生最關注所學課程有沒有用?尤其是高職高專學生更注重實際能力的培養(yǎng)?那怎樣在實際應用中進行使用呢?由于該課程是計算機相關專業(yè)學生的核心課程,所以一定要很肯定地告訴學生學了這門課程非常有用??梢詮奈覀兩磉叺膶嶋H例子出發(fā)進行舉例,如現(xiàn)代生活中玩具、家用電器,嵌入式的應用無處不在,大到工業(yè)控制、航空領域等都離不開嵌入式。
2)我是否能夠?qū)W好該課程?
由于該課程是專業(yè)核心課程,它需要前期所學的大量專業(yè)基礎課作為鋪墊。同時該課程系統(tǒng)性較強,需要“兩條腿”走路。一條是對硬件有一定的了解,至少能看懂原理圖及相關符號。另一條是要有編程基礎,這里的編程主要采用的是C語言程序設計。要能靈活使用模塊化設計方法進行程序設計,也要能使用指針方便地訪問各硬件模塊。當然不僅要有這些理論知識作為基礎,這門課程也需要實際動手,只有多動手了,才會有更濃的興趣進行深入學習。因此要學好該課程,需要自己多動手在開發(fā)板上進行編程控制。例如,可以從簡單的LED燈開始,一開始讓LED燈全熄滅,間隔一段時間后,又修改程序使其全部點亮,最后跑馬燈程序等,由易到難,逐步增加模塊實現(xiàn)功能,這樣學好是沒有問題的。
3)考試要怎么考?
如何考試是在校大學生最關注的問題之一,因此在每學期剛開始上課時,就應該明確告知學生該門課程要如何考以及最終成績的構成方式,讓學生做到心中有數(shù),有的放矢。同時還應告知學生考試不是目的,只是檢驗知識的一種手段,特別是綜合性較強的學科,考試考好了,不一定能力就好。大學的學習不像中學,應多鼓勵學生看不同作者所寫教材,有的知識點在一本教材里沒看懂,但在其它教材里可能講述得非常清楚,因為每個方向不同的專業(yè)老師所編同一門教材的側(cè)重點不同。若是對程序不懂之處,那就更應該多動手編程,然后下載到開發(fā)板上進行調(diào)試觀察,這樣知識與能力才能不斷地得到提高。
4)今后在實際工作中能否用到?
對??茖W校的學生,一般要到大二第二學期才開設該課程,很多高校在開設該課程時都有專門的實驗室,這些實驗室里有的平臺就是ARM+Linux。學生在平臺上既要移植操作系統(tǒng)內(nèi)核,又要在系統(tǒng)上編程實現(xiàn)操作??梢詫⒂械墓镜膶嶋H系統(tǒng)先演示給學生看,讓他們了解所要學的知識與公司所做項目的聯(lián)系,通過這樣的引導,讓他們知道所學課程在今后的工作中的重要性。當然在平臺上真正做了東西的學生,對今后工作是很有幫助的
3 注重與其它課程的相關性
該課程系統(tǒng)性較強,需要前期的很多專業(yè)課鋪墊,若沒有前期的這些專業(yè)課,要學好該課程是不容易的。該課程所需要的前期課程如下:
《數(shù)字電子技術》課程使學生對硬件邏輯有直觀的了解?!峨姽W》讓學生能更好地理解電路?!段C原理》課程中的指令及指令地址等知識為后續(xù)課程打下基礎。《Protel2004制圖》讓學生能根據(jù)要求自制原理圖及PCB板?!禖語言程序設計》課程使得學生學習后能靈活地進行編程控制?!禠inux操作系統(tǒng)》課程使得學生學完基本命令后,能夠較好地移植內(nèi)核到所需要的平臺上。因此嵌入式系統(tǒng)應用與開發(fā)不是孤立地一門課程,是綜合性非常強地一門課程。
4 教學的知識處理
我們所選教材是北京航空航天大學出版社的“十二五高等院校規(guī)劃教材”本科教材,該教材對ARM體系結構、ARM系統(tǒng)硬件設計做了重點講解,同時還編寫了大量的有關S3C2410的硬件模塊工作原理及編程實現(xiàn)。但對于高職高專層次的學生來說,不需要太多的理論基礎,重在應用。所以,必須對教材內(nèi)容有選擇地加以處理。且本課程的主要目標是讓學生掌握以ARM處理器為核心的嵌入式系統(tǒng)的開發(fā)流程與編程方法,為以后從事嵌入式相關工作打下良好的編程基礎。當教學目標確定后,才能根據(jù)以上目標制定教學重點。因此本課程的教學重點為:掌握ARM處理器的基本指令及編程方法,能夠親自動手編寫小程序控制實驗箱上的各小模塊。對于ARM的體系結構,ARM處理器所支持的數(shù)據(jù)類型、工作模式、寄存器組織及其尋址方式與ARM的32位指令集就成了必須掌握的知識點。而對于其中使用頻率低、難度較大的MMU(存儲器管理單元)、Cache、TAG RAM(物理地址)、總線接口單元、C語言與匯編語言的混合編程應遵循的規(guī)則等部分內(nèi)容,只需弱化處理,即只讓學生了解這些內(nèi)容就行。還有混編規(guī)則也只需要在使用時能夠通過查找資料來注意寄存器、堆棧與參數(shù)的使用規(guī)則,在使用過程中再去理解這些規(guī)則的含義,通過這種方式來加深理解。
此外,為了更好地與實際接軌,我不再使用ADS作為ARM的開發(fā)環(huán)境,而改用Real View MDK作為開發(fā)工具,因為該工具除了能實現(xiàn)ADS所能實現(xiàn)的功能外,還能自動生成完善的啟動代碼并提供圖形化的窗口,從而提高開發(fā)效率及能大大縮短開發(fā)周期的軟件模擬器。
5 教學的難點突破
嵌入式系統(tǒng)應用與開發(fā)是一門難度較大的課程,不僅因為其綜合性較強,還需要學生有一定的電路知識及硬件知識作為背景,如果沒有電路知識基礎,那就談不上要學好該課程。在教學過程中,其難點主要表現(xiàn)在如下方面:
首先,該課程是以ARM2410實驗箱為硬件基礎結構(作為高職高專的學生省去了使用Protel設計原理圖并制版過程),所以第一要務就是要使實驗箱能工作,這就牽涉到基于ARM硬件啟動程序的設計工作。由于是與硬件打交道,因此首先得使用ARM的匯編語言來分配中斷向量表,初始化存儲系統(tǒng)、堆棧、有特殊要求的硬件模塊和應用程序的執(zhí)行環(huán)境,并改變處理器的工作模式。該內(nèi)容是整個嵌入式開發(fā)的第一大難點,由于學生對指令和硬件結構不熟悉,所以對這部分的工作顯得力不從心。我采用的方法是逐個解決的辦法,先初始化將要使用到的模塊,盡量使用簡單易懂的指令實現(xiàn)。比如初始化應用程序的運行環(huán)境,并未像教材那樣將ROM與RAM區(qū)域進行分開初始化,只需要初始化一個總的運行環(huán)境就可。
其次,上層應用就是通過編寫C程序?qū)崿F(xiàn),這需要學生對C語言中的算法、三大程序設計方法、函數(shù)與指針內(nèi)容比較熟悉。因為功能實現(xiàn)基本是通過一個一個的函數(shù)模塊來完成,同時,對于訪問硬件的具體部分時需要由指針來實現(xiàn)。如對于發(fā)光二極管的控制,首先要能根據(jù)硬件電路原理圖,找出二極管對應連接處理器的哪個I/O口,而對I/O口的操作是通過對相關各個寄存器的讀/寫實現(xiàn),該部分內(nèi)容要由指針來實現(xiàn),最后設置I/O口的功能為輸出功能。在功能的實現(xiàn)上采用“累加法”,這就牽涉到C語言中的函數(shù)及函數(shù)調(diào)用的使用。先使用一個函數(shù)模塊通過對數(shù)據(jù)寄存器的訪問來實現(xiàn)一個功能,然后逐步添加模塊來實現(xiàn)新增功能。這樣既提高了代碼的可讀性、執(zhí)行效率和學生編程興趣,又提高了學生編寫程序的能力。
6 結束語
嵌入式系統(tǒng)應用與開發(fā)是計算機應用嵌入式專業(yè)方向?qū)W生的專業(yè)核心課程,作為一門綜合性的課程,我們在總結自己的一些教學經(jīng)驗的基礎上,試圖將與此相關的課程融入到整個專業(yè)體系中。讓學生從興趣出發(fā),從實際動手編程調(diào)試出發(fā),從而更好地為自己的專業(yè)能力打下良好的基礎,以便能更好地服務社會。
參考文獻:
[1] 陳玉仙.關于C語言教學幾個問題的探討[J].電腦知識與技術,2013(13):3111-3113.
[2] 徐英慧.ARM9嵌入式系統(tǒng)設計[M].北京航空航天大學出版社,2010.
[3] 周立功.S3C2410嵌入式Linux系統(tǒng)教程[M].廣州致遠電子有限公司,2010.