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