上海理工大學機械工程學院 張會林
本文分析了嵌入式系統(tǒng)課程教學內容的內涵,闡述了在Cortex-M3嵌入式系統(tǒng)課程教學中開展理論與實驗結合的必然性。從Cortex-M3的處理器結構、片內外設接口與編程、C/OS-II的移植到自平衡小車實例開發(fā)角度,分析了Cortex-M3嵌入式系統(tǒng)教學的難點。對電氣類本科專業(yè),開展嵌入式系統(tǒng)課程理論與實驗教學,在實驗過程中進行多種實踐方法探討。從教學效果來看,本文方法對嵌入式系統(tǒng)課程的理論教學、實驗開發(fā)的實踐方法及實驗任務安排都有很好的指導意義。
ARM芯片是英國ARM公司開發(fā)的RISC結構微處理器,它有高性能、高代碼密度、小硅片面積等優(yōu)點,在嵌入式系統(tǒng)領域得到了廣泛的應用。Cortex系列是ARM公司在ARM架構之后推出的新型ARM處理器,有A、R、M三個系列。Cortex-M3內核是ARM公司于2004年推出的的Cortex-M系列微控制器,是ARM V7體系結構,可用于低成本微處理器、汽車電子、消費電子和無線技術等領域。Cortex-M3內核的處理器本身資源不復雜,特別適合高等院校本科生對ARM的體系結構學習,同時可移植小型開源操作系統(tǒng)C/OS-II,能加深學生對嵌入式操作系統(tǒng)認識。
Cortex-M3嵌入式系統(tǒng)課程是電氣工程及其自動化專業(yè)的重要基礎課,該課程的主要任務是:通過本課程的學習,使學生對嵌入式系統(tǒng)原理與技術有系統(tǒng)的、全面的了解;掌握Cortex-M3的概念、組成和體系結構特點;通過對C/OS-II詳細剖析,掌握RTOS實時操作的原理,對其內核結構、任務調度等有深入的了解,培養(yǎng)嵌入式系統(tǒng)的設計和開發(fā)應用能力。
通過學習本課程后,應達到下列基本要求:(1)熟悉Cortex-M3微處理器的體系結構及應用特點;(2)熟悉UART、Timer、I2C、A/D等常用片內外設所對應寄存器的配置,為實際應用開發(fā)打下基礎;(3)熟悉C/OS-II內核及如何進行C/OS-II的應用編程等技術點。
學習Cortex-M3嵌入式系統(tǒng)課程的重點和難點關鍵在片內外設的寄存器配置及C/OS-II應用開發(fā),如果沒有掌握片內外設,筆者認為很難把握一個嵌入式系統(tǒng)。雖然在Cortex-M3嵌入式的開發(fā)過程中,應用層編程幾乎可以不熟悉片內外設也可以開發(fā),但那是浮于表面,很難深入和提高自己的層次。選擇C/OS-II這樣的操作系統(tǒng)開發(fā),對本科教學最為合適。
本課程教學的難點在于以下幾點:
(1)Cortex-M3指令集
ARM7、ARM9內核都支持有ARM指令集和Thumb指令集,而Cortex-M3內核是Thumb-2指令集。了解Thumb-2指令集,可以更深層次的理解Cortex-M3的啟動過程。
(2)片內外設的寄存器配置與接口技術
Cortex-M3系列微處理器有眾多的片內外設,不同的需求要有不同的配置,它的寄存器配置是學習中的重點與難點。
(3)μC/OS-II操作系統(tǒng)的原理及應用
μC/OS-II是一個有64個優(yōu)先級的搶占式微內核實時操作系統(tǒng),它的代碼固定,便于移植,編譯后只有幾kB,系統(tǒng)代碼可裁剪,已在超過40種不同架構的8位到64位的微處理器上運行,在控制領域有著廣泛應用。μC/OS-II的主要特點有:它有一個占先式的內核,也就是已就緒的高優(yōu)先級任務可以剝奪正在運行的低優(yōu)先級任務的CPU使用權;56個用戶任務的優(yōu)先級可以動態(tài)調整;操作系統(tǒng)運行時,可以通過信號量、郵箱和消息隊列實現(xiàn)在不同任務間同步以及交換數(shù)據(jù);操作系統(tǒng)大小可裁剪,便于選擇適合系統(tǒng)的ROM和RAM的容量。
(4)兩輪自平衡小車系統(tǒng)原理及軟硬件設計
兩輪自平衡小車是利用自身動力使小車保持相對平衡,是一個動態(tài)平衡的過程。維持小車平衡的動力來自車輪的運動,它由兩個步進電機共同驅動。對小車的控制可以分解為三個任務:控制小車車輪正反轉,使小車保持直立平衡;控制小車的傾角,實現(xiàn)小車前后運動和速度的控制,實質是通過控制電機的轉速實現(xiàn);控制小車兩個電機之間的轉速差,實現(xiàn)轉向控制。兩輪自平衡小車的控制分解為三個任務后,系統(tǒng)的軟件編程更加結構化。
小車的硬件分為三個模塊,分別是主控模塊、小車姿態(tài)獲取模塊以及電機驅動模塊。主控模塊采用Cortex-M3的最小系統(tǒng),開發(fā)非常方便。通過加速度計和陀螺儀獲取小車姿態(tài),理論上只需要一個兩軸加速度計和一個單軸陀螺儀。兩軸加速度計可以測量出小車的傾角,但是加速度計的瞬時誤差較大;陀螺儀通過角度積分可以獲得小車角度,經過積分會產生累計誤差,并且會越來越大。所以,采用卡爾滋曼濾波算法對系統(tǒng)的陀螺儀和加速度計獲得的角度進行數(shù)據(jù)融合,計算出小車實際的傾斜角。芯片MPU6050集成了三軸加速度計和三軸陀螺儀,能得到小車的角度和角速度。小車姿態(tài)獲取模塊中,使用芯片MPU6050來獲取數(shù)據(jù),以I2C通信的方式向Cortex-M3傳遞數(shù)據(jù)。兩個電機的PWM用Cortex-M3的定時器的8個通道輸出,兩組H橋驅動電路分別控制2個直流電機。小車的軟件開發(fā),在MDK5.4開發(fā)環(huán)境上編程以及Jlink在線調試完成。
首先,必須合理安排嵌入式系統(tǒng)課程的教學任務。因為當前的本科專業(yè)需要學習的課程門類已大為增加,每門專業(yè)課的學時都不多,突出要點才可以更加有效。建議這門課可安排48學時理論課,另加16學時實驗課。這就要求理論教學應與基礎實驗結合來講解,例如嵌入式系統(tǒng)課程的理論教學就不能像匯編語言那樣每條指令語句講解,而是應結合具體基礎實驗講解寄存器配置與片內外設接口技術。
其次,注重理論教學的實踐性。本課程中有很多的實踐環(huán)節(jié),針對性實驗應是理論教學的重要補充。先熟悉開發(fā)環(huán)境,可以給后續(xù)開發(fā)帶來便利。因為意法半導體公司對Cortex-M3的支持,開發(fā)工具中有很多庫函數(shù),開發(fā)者熟悉后,上手快。特別適合如全國大學生電子設計競賽(時間短,編程量大),避免復雜程序結構讓參賽者陷入困境,選擇Cortex-M3的系統(tǒng)可以加快開發(fā)。因此,嵌入式系統(tǒng)課程的實驗,讓學生先完成基礎性項目,然后在拓展實驗中完成一些傳統(tǒng)8位單片機不能實現(xiàn)的功能,突出Cortex-M3系統(tǒng)設計的優(yōu)勢。例如TFT LCD顯示+觸摸屏,重點在人機界面;UART、無線或有線通信模塊接口,關注通信協(xié)議與寄存器配置;μC/OS-II應用突出了實時操作系統(tǒng)的多任務操作實現(xiàn)等。通過這些實踐,讓學生明白諸如ISP下載方式、ARM指令與寄存器配置等只是提高動手能力,而高質量完成實驗開發(fā)項目、提高設計能動性與創(chuàng)造性最為重要,從而能夠有效提高自身工程實踐能力的教學效果。
再次,安排多種實驗項目進行多層次的實踐教學。理論教學活動中,在課本內容之外,安排基礎實驗教學,便于學生熟悉實驗系統(tǒng)。設置的實驗項目需要給出實驗目的、實驗原理、思考題和實驗報告的具體要求,同時還應包含以下3類實驗項目:(1)與接口相關的基礎實驗項目,對于該類實驗,學生只須將DEMO板提供的程序導入到工程,按要求編譯通過,并在實驗系統(tǒng)上能觀察到現(xiàn)象即可;(2)功能性實驗項目,在基礎實驗上進一步發(fā)揮;(3)系統(tǒng)開發(fā)實驗項目,屬于自主設計或創(chuàng)新的實驗項目。這樣安排使學生可以循序漸進,提高綜合實踐能力。
最后,課程實踐與電氣工程專業(yè)特點結合。一般認為嵌入式系統(tǒng)技術難點在于片內外設的寄存器配置。對此,根據(jù)電氣類專業(yè)的特點,教師需改進現(xiàn)行的嵌入式系統(tǒng)教學模式,以Cortex-M3體系結構為基點,在基礎實驗講解中引出片內外設的寄存器配置,用少數(shù)幾個典型的實例將寄存器配置中最關鍵的內容解釋清楚,使學生短時間內就能有效把握片上外設寄存器的配置與接口技術之間關系,而不必用花大量的時間去學習ARM指令與接口技術。要求教師合理分配實驗時間,提高學生的實踐能力,促進他們的學習積極性。
結束語:在嵌入式系統(tǒng)課程教學中進行實踐教學方法探索,有利于培養(yǎng)電氣工程專業(yè)“寬口徑、復合型”人才。保持嵌入式系統(tǒng)教學內容的系統(tǒng)性和完整性,使學生通過大量寄存器配置及工程實踐,掌握嵌入式系統(tǒng)理論與實驗開發(fā)結合的方法,該模式取得了良好的效果,主要表現(xiàn)為:(1)理論課重點分析Cortex-M3處理器內部結構、Cortex-M3的最小系統(tǒng)、I/O及中斷編程、定時器原理及應用、μC/OS-II內核和移植、自平衡小車系統(tǒng)原理及軟硬件設計的6個主題內容,讓學生明確學習任務。(2)通過接口實驗,初步掌握Cortex-M3系統(tǒng)最重要的應用基礎。(3)通過8個典型示例的設計練習,使學生能迅速學會使用Cortex-M3庫文件的編程方法和利用μC/OS-II完成多任務應用程序開發(fā),達到創(chuàng)新型人才能力培養(yǎng)目標。