楊繼森,張 靜,朱 革,鄭方燕
(重慶理工大學(xué) 機(jī)械檢測(cè)技術(shù)與裝備教育部工程研究中心,重慶 400050)
信息時(shí)代、數(shù)字時(shí)代使嵌入式技術(shù)得到了巨大的發(fā)展機(jī)遇,國(guó)內(nèi)很多高校的電子、計(jì)算機(jī)、信息技術(shù)專(zhuān)業(yè)相繼開(kāi)設(shè)了嵌入式系統(tǒng)課程[1-3]。重慶理工大學(xué)在原有C51單片機(jī)課程的基礎(chǔ)之上,開(kāi)設(shè)了以NXP公司的ARM7微控制器LPC21XX系列為基礎(chǔ)的嵌入式系統(tǒng)應(yīng)用相關(guān)課程,每學(xué)年都有超過(guò)10個(gè)班的學(xué)生選擇嵌入式系統(tǒng)課程,課程教學(xué)效果顯著。
隨著嵌入式技術(shù)的飛速發(fā)展,嵌入式微控制器的行業(yè)領(lǐng)先者ARM(Advanced RISC Machines)公司陸續(xù)推出了ARM7系列、ARM9系列、ARM9E系列、ARM10E系列和ARM11系列嵌入式微控制器[4]。許多高校的嵌入式系統(tǒng)課程都以這幾個(gè)系列的微控制器作為講授對(duì)象。ARM公司于2005年推出ARMv7架構(gòu)的Cortex-M系列微控制器產(chǎn)品采用了Thumb-2技術(shù),它是在ARM原有Thumb代碼壓縮技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的,并且保持了對(duì)現(xiàn)存ARM解決方案的完整的代碼兼容性。Thumb-2技術(shù)比純32位代碼少使用31%的內(nèi)存,但能夠提供比基于Thumb技術(shù)的解決方案高出38%的性能[5-6]。
目前,基于全新ARMv7架構(gòu)的Cortex-M系列微控制器已經(jīng)成為行業(yè)的主流選擇[7-10]。為了更好地跟隨市場(chǎng)變化,培養(yǎng)出滿(mǎn)足社會(huì)需要的優(yōu)秀嵌入式技術(shù)人才,重慶理工大學(xué)已經(jīng)開(kāi)始將嵌入式系統(tǒng)課程從舊的ARM7平臺(tái)遷移到全新的Cortex-M平臺(tái),并設(shè)計(jì)開(kāi)發(fā)了一套虛擬實(shí)驗(yàn)平臺(tái)。該平臺(tái)既方便教師將實(shí)驗(yàn)項(xiàng)目帶入課堂,在課堂上利用虛擬實(shí)驗(yàn)平臺(tái)進(jìn)行現(xiàn)場(chǎng)操作和演示,使理論知識(shí)更加形象、生動(dòng),也解決了實(shí)驗(yàn)學(xué)時(shí)不能滿(mǎn)足學(xué)生實(shí)驗(yàn)的難題,使嵌入式系統(tǒng)課程的學(xué)習(xí)不再局限于理論課堂和實(shí)驗(yàn)室,在教學(xué)時(shí)間與教學(xué)空間上拓展了學(xué)生對(duì)嵌入式系統(tǒng)課程的學(xué)習(xí)范圍。
仿真軟件Proteus非常適合ARM嵌入式技術(shù)的設(shè)計(jì)、仿真與開(kāi)發(fā)[11-12],因此虛擬實(shí)驗(yàn)平臺(tái)采用Proteus作為主要開(kāi)發(fā)平臺(tái),微控制器采用美國(guó)TI(Texas Instruments)公司的基于Cortex-M3的LM3S300系列微控制器。結(jié)合我校嵌入式系統(tǒng)課程教學(xué)大綱的要求,為了讓學(xué)生掌握嵌入式系統(tǒng)的基本知識(shí)和設(shè)計(jì)方法,加強(qiáng)工程實(shí)踐能力的培養(yǎng),實(shí)驗(yàn)平臺(tái)采用分層次的結(jié)構(gòu)、遞進(jìn)式的教學(xué)方式,由淺入深、循序漸進(jìn),以適合不同知識(shí)基礎(chǔ)的學(xué)生。它體現(xiàn)簡(jiǎn)單易用、前后連貫的總體設(shè)計(jì)思路,真正引導(dǎo)學(xué)生進(jìn)入嵌入式系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)的大門(mén)。虛擬實(shí)驗(yàn)平臺(tái)分為基礎(chǔ)型平臺(tái)、綜合型平臺(tái)和設(shè)計(jì)型平臺(tái)。
基礎(chǔ)型實(shí)驗(yàn)平臺(tái)主要注重于基礎(chǔ)知識(shí)的深入理解與掌握。秉承“少而精”的原則,該平臺(tái)只開(kāi)展了4個(gè)基礎(chǔ)型實(shí)驗(yàn)項(xiàng)目,其中只包含3個(gè)最基礎(chǔ)而常用的片上外部設(shè)備實(shí)驗(yàn)(GPIO、UART、TIMER)。
(1) 虛擬實(shí)驗(yàn)平臺(tái)最小系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)。主要側(cè)重于對(duì)虛擬仿真平臺(tái)軟件和操作步驟的熟悉,以及與編程軟件平臺(tái)的連接。
(2) GPIO基本輸入與輸出實(shí)驗(yàn)。采用端口引腳PA2作為輸出,驅(qū)動(dòng)一個(gè)LED發(fā)光二極管,PA3作為端口輸入,外接按鍵輸入。實(shí)驗(yàn)?zāi)康氖亲寣W(xué)生仔細(xì)體會(huì)并熟練掌握GPIO模塊輸入與輸出功能的配置以及庫(kù)函數(shù)的調(diào)用方法。
(3) UART配置與數(shù)據(jù)傳送實(shí)驗(yàn)。針對(duì)標(biāo)準(zhǔn)的串行接口,將PA0復(fù)用為串行接口的接收端口Rx0,將PA1復(fù)用為串行接口的發(fā)送端口Tx0,采用虛擬仿真平臺(tái)的虛擬終端作為控制臺(tái),可以接收并顯示串行接口的輸出數(shù)據(jù),同時(shí)具有通過(guò)鍵盤(pán)輸入數(shù)據(jù)的功能。通過(guò)該實(shí)驗(yàn),學(xué)生可以體會(huì)標(biāo)準(zhǔn)串行接口的配置方式以及參數(shù)對(duì)數(shù)據(jù)傳輸過(guò)程的影響。
(4) 基于定時(shí)器的方波信號(hào)輸出實(shí)驗(yàn)。采用PC5作為定時(shí)器Timer0的信號(hào)輸出引腳,引腳外接一個(gè)四通道虛擬示波器,可以定時(shí)改變引腳的輸出狀態(tài),利用示波器觀察信號(hào)波形,可以準(zhǔn)確判斷定時(shí)器的定時(shí)效果。
基礎(chǔ)型虛擬實(shí)驗(yàn)平臺(tái)如圖1所示。
圖1 基礎(chǔ)型虛擬實(shí)驗(yàn)平臺(tái)
在學(xué)生已經(jīng)熟練掌握基礎(chǔ)知識(shí)的基礎(chǔ)之上,綜合型虛擬實(shí)驗(yàn)平臺(tái)可以進(jìn)一步拓展學(xué)生的知識(shí)面,加強(qiáng)對(duì)學(xué)生工程實(shí)踐能力的培養(yǎng)。平臺(tái)涵蓋了LM3S300系列的所有外設(shè),共包含了8個(gè)實(shí)驗(yàn)項(xiàng)目。某些外設(shè)是在基礎(chǔ)型實(shí)驗(yàn)平臺(tái)的基礎(chǔ)之上的進(jìn)一步拓展,以增加工程的實(shí)踐性。
(1) 4×4行列式鍵盤(pán)設(shè)計(jì)實(shí)驗(yàn)。該實(shí)驗(yàn)是對(duì)GPIO的輸入與輸出功能進(jìn)行擴(kuò)展,采用PB端口構(gòu)建4×4的行列式鍵盤(pán),PB0—PB3作為行掃描線(xiàn),PB4—PB7作為列掃描線(xiàn),主要培養(yǎng)學(xué)生對(duì)GPIO功能的綜合應(yīng)用能力。經(jīng)過(guò)掃描獲得的按鍵值可采用格式化的字符串,通過(guò)基礎(chǔ)型實(shí)驗(yàn)平臺(tái)的串行接口數(shù)據(jù)輸出功能在虛擬終端上輸出顯示。
(2) 基于外部中斷的行列式鍵盤(pán)設(shè)計(jì)實(shí)驗(yàn)。該實(shí)驗(yàn)是在“4×4行列式鍵盤(pán)設(shè)計(jì)”實(shí)驗(yàn)的基礎(chǔ)之上,利用GPIO端口的外部中斷功能,將4×4行列式鍵盤(pán)的行掃描線(xiàn)PB0—PB3通過(guò)74LS08的2個(gè)二輸入與門(mén)相“與”之后,作為按鍵中斷信號(hào)KEY_INT連接到端口PC0。當(dāng)有按鍵按下時(shí),產(chǎn)生下降沿的中斷信號(hào),可以在中斷服務(wù)程序中調(diào)用按鍵掃描程序獲得鍵值,避免了普通行列式鍵盤(pán)需要不斷進(jìn)行按鍵掃描而浪費(fèi)處理器資源的問(wèn)題。
(3) UART的數(shù)據(jù)輸入與輸出實(shí)驗(yàn)。該實(shí)驗(yàn)是在基礎(chǔ)型實(shí)驗(yàn)“UART配置與數(shù)據(jù)傳送”的基礎(chǔ)之上,加入了虛擬串行接口器件COMPIM,可以將仿真平臺(tái)的數(shù)據(jù)通過(guò)計(jì)算機(jī)的物理串行接口向外輸出到其他的實(shí)驗(yàn)平臺(tái)進(jìn)行聯(lián)合仿真實(shí)驗(yàn),也可以通過(guò)專(zhuān)用的虛擬串行接口軟件,將仿真平臺(tái)的數(shù)據(jù)傳輸?shù)狡渌摂M仿真平臺(tái)(Matlab、LabVIEW、VC++等),進(jìn)行跨平臺(tái)聯(lián)合虛擬仿真。
(4) 基于SPI接口的數(shù)碼顯示實(shí)驗(yàn)。該實(shí)驗(yàn)是SPI接口實(shí)驗(yàn),為了增加實(shí)驗(yàn)的實(shí)用性,采用具有SPI接口的數(shù)碼管驅(qū)動(dòng)芯片MAX7219。MAX7219驅(qū)動(dòng)一個(gè)6位的八段數(shù)碼管,LM3S328通過(guò)SSI接口與MAX7219連接,將PA2復(fù)用為SPI接口的時(shí)鐘信號(hào)CLK,PA5復(fù)用為SPI接口的數(shù)據(jù)輸入信號(hào)DIN,PA3作為SPI的片選信號(hào)CS。該實(shí)驗(yàn)項(xiàng)目可以作為整個(gè)實(shí)驗(yàn)平臺(tái)的數(shù)字化顯示窗口。
(5) 基于I2C接口存儲(chǔ)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)。該實(shí)驗(yàn)基于I2C接口的存儲(chǔ)器系統(tǒng)設(shè)計(jì),存儲(chǔ)單元選擇常用的具有I2C接口的存儲(chǔ)器芯片24C02C。微控制器的PB2復(fù)用為I2C接口的串行時(shí)鐘信號(hào)線(xiàn)SCL,PB3復(fù)用為I2C接口的串行數(shù)據(jù)信號(hào)線(xiàn)SDA。芯片存儲(chǔ)容量為256字節(jié),可以存儲(chǔ)開(kāi)機(jī)密碼、網(wǎng)絡(luò)端口號(hào)等非易失性數(shù)據(jù)信息。
(6) 高速ADC數(shù)據(jù)采集設(shè)計(jì)實(shí)驗(yàn)。微控制器的ADC具有8個(gè)數(shù)據(jù)采集通道,將輸入信號(hào)ADC0連接到通道0,輸入信號(hào)的幅值可以通過(guò)可調(diào)電阻RV1進(jìn)行調(diào)整。這里選用虛擬仿真平臺(tái)自帶的虛擬信號(hào)發(fā)生器,可以產(chǎn)生正弦信號(hào)、音頻信號(hào)、調(diào)制信號(hào)等,ADC采集的數(shù)據(jù)可以通過(guò)虛擬串行接口傳輸?shù)狡渌抡嫫脚_(tái),實(shí)現(xiàn)聯(lián)合仿真。
(7) PWM波形控制與驅(qū)動(dòng)設(shè)計(jì)實(shí)驗(yàn)。利用微控制器的脈沖寬度調(diào)制功能(PWM),設(shè)計(jì)了2路PWM信號(hào)輸出:第一路連接端口PB5,第二路連接端口PC5,2路PWM信號(hào)各自與一路LED驅(qū)動(dòng)電路相連接。另外配備了2個(gè)單獨(dú)的按鍵電路:一個(gè)按鍵連接到PWM_KEY1,另外一個(gè)連接到PWM_KEY2。實(shí)驗(yàn)時(shí),第一路PWM輸出占空比為100%的方波信號(hào),通過(guò)按鍵“UP”和“DOWN”調(diào)整第二路PWM驅(qū)動(dòng)信號(hào)的占空比。不同的占空比將導(dǎo)致2個(gè)LED的明暗程度顯著不同,可以更加形象地理解PWM的功能與作用。
(8) 定時(shí)器捕獲與比較設(shè)計(jì)實(shí)驗(yàn)。該實(shí)驗(yàn)是在基礎(chǔ)型實(shí)驗(yàn)的基礎(chǔ)之上,進(jìn)一步理解定時(shí)器比較與捕獲功能。通過(guò)電阻R6連接了一路虛擬波形發(fā)生器,向系統(tǒng)提供各種占空比的方波信號(hào),可以利用定時(shí)器的捕獲功能測(cè)量輸入方波信號(hào)的周期或者頻率。另外還提供了一個(gè)單獨(dú)的按鍵,可以通過(guò)對(duì)按鍵計(jì)數(shù)實(shí)現(xiàn)定時(shí)器比較功能。
綜合型虛擬實(shí)驗(yàn)平臺(tái)見(jiàn)圖2。
設(shè)計(jì)型實(shí)驗(yàn)平臺(tái)主要培養(yǎng)學(xué)生對(duì)所學(xué)知識(shí)的綜合應(yīng)用能力,采用項(xiàng)目驅(qū)動(dòng)的方式,以項(xiàng)目為主線(xiàn)。學(xué)生可以根據(jù)自己的興趣和特長(zhǎng),以組合項(xiàng)目小組的形式完成實(shí)驗(yàn)項(xiàng)目[13-15]。整個(gè)實(shí)驗(yàn)平臺(tái)提供了6個(gè)設(shè)計(jì)型綜合實(shí)驗(yàn)項(xiàng)目,實(shí)驗(yàn)項(xiàng)目如表1所示。部分項(xiàng)目來(lái)源于教師的科研項(xiàng)目,具有一定的工程應(yīng)用價(jià)值。每個(gè)實(shí)驗(yàn)項(xiàng)目不再提供具體的實(shí)驗(yàn)電路,教師可以提供一定的技術(shù)指導(dǎo),學(xué)生需自行查閱資料,提出科學(xué)、合理的系統(tǒng)設(shè)計(jì)方案,并在虛擬開(kāi)發(fā)平臺(tái)上完成。
表1 設(shè)計(jì)型虛擬實(shí)驗(yàn)平臺(tái)項(xiàng)目
圖2 綜合型虛擬實(shí)驗(yàn)平臺(tái)
軟件開(kāi)發(fā)采用Keil MDK(版本4.23)平臺(tái)和ARM公司研發(fā)的編譯器,編譯速度快、效率高,平臺(tái)工作界面友好、簡(jiǎn)單易用、程序調(diào)試方便、仿真功能強(qiáng)。
美國(guó)TI公司為L(zhǎng)M3S300系列微控制器的開(kāi)發(fā)設(shè)計(jì)提供了2種方式,即直接訪(fǎng)問(wèn)寄存器的開(kāi)發(fā)方式和采用芯片制造商提供的庫(kù)函數(shù)訪(fǎng)問(wèn)方式。采用庫(kù)函數(shù)訪(fǎng)問(wèn)的開(kāi)發(fā)方式能夠提高代碼的復(fù)用率,大大提高工作效率,是今后嵌入式系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)的一個(gè)趨勢(shì)。本文以常用的串行接口為例,演示一個(gè)完整的實(shí)驗(yàn)項(xiàng)目工程的建立過(guò)程。
(1) 新建工程。打開(kāi)Keil MDK,新建一個(gè)工程,微控制器選擇TI公司的LM3S328,并允許加入系統(tǒng)提供的匯編啟動(dòng)代碼文件Startup.s。
(2) 加入TI公司提供的系統(tǒng)庫(kù)函數(shù)??梢栽赥I公司的主頁(yè)下載最新庫(kù)函數(shù)版本,也可以使用Keil MDK平臺(tái)自帶的LM3S系列庫(kù)函數(shù)。自帶的庫(kù)函數(shù)存放在Keil MDK開(kāi)發(fā)軟件的默認(rèn)安裝目錄C:KeilARMRV31LIBLuminary下。該目錄下的Driverlib.lib文件是已經(jīng)編譯好的系統(tǒng)庫(kù)函數(shù)的靜態(tài)庫(kù)文件,文件夾Driverlib下是系統(tǒng)庫(kù)函數(shù)的原始實(shí)現(xiàn)文件與頭文件,包含了所有庫(kù)函數(shù)的實(shí)現(xiàn)過(guò)程。在初學(xué)階段,建議直接使用庫(kù)函數(shù)原始文件,便于深入學(xué)習(xí)與理解系統(tǒng)庫(kù)函數(shù)的實(shí)現(xiàn)過(guò)程??梢詫riverlib文件夾整體拷貝到已經(jīng)建立的工程文件夾下面,然后在項(xiàng)目工程中加入所需要的庫(kù)函數(shù)文件。
(3) 建立用戶(hù)文件。新建用戶(hù)文件main.c,并將其加入到項(xiàng)目工程中,新建串行接口功能函數(shù)實(shí)現(xiàn)文件Uart0.c及頭文件Uart0.h,并將其加入項(xiàng)目工程。
(4) 編譯工程。對(duì)工程進(jìn)行編譯,生成二進(jìn)制結(jié)果文件,將二進(jìn)制文件加載到綜合型虛擬實(shí)驗(yàn)平臺(tái)的微控制器LM3S328。利用虛擬串行接口工具,配置一對(duì)虛擬串行接口COM3與COM4:配置虛擬實(shí)驗(yàn)平臺(tái)的串行接口部件使用物理端口COM3,串口調(diào)試助手軟件打開(kāi)物理端口COM4??梢詫⑻摂M實(shí)驗(yàn)平臺(tái)的數(shù)據(jù)發(fā)送到串口調(diào)試助手等其他平臺(tái)進(jìn)行跨平臺(tái)聯(lián)合仿真,運(yùn)行效果如圖3所示。
圖3 串行接口數(shù)據(jù)發(fā)送
嵌入式系統(tǒng)技術(shù)更新速度快,只有緊跟行業(yè)的發(fā)展才能真正體現(xiàn)它的價(jià)值。Cortex-M平臺(tái)已逐漸成為嵌入式微控制器行業(yè)的主流,在實(shí)驗(yàn)教學(xué)中將嵌入式系統(tǒng)課程遷移到Cortex-M3平臺(tái)是非常有必要的。作為一個(gè)全新的平臺(tái)、一門(mén)全新講授對(duì)象的課程,課程建設(shè)是艱難的,需要學(xué)校和教師在工作中敢于實(shí)踐,實(shí)時(shí)吸收新思想,不斷完善教學(xué)方法和手段,為國(guó)家和社會(huì)培養(yǎng)出更多工程實(shí)踐能力強(qiáng)、富有創(chuàng)新意識(shí)的嵌入式系統(tǒng)優(yōu)秀人才。
[1] 潘登,陳啟軍.面向卓越人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)改革[J].計(jì)算機(jī)教育,2013(13):1-5.
[2] 扶慧娟,辛勇.推行“卓越工程師計(jì)劃”培養(yǎng)實(shí)踐型工程人才[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(11):155-158.
[3] 于延,王建華,王明華.嵌入式系統(tǒng)專(zhuān)業(yè)培養(yǎng)模式的實(shí)踐與探索[J].計(jì)算機(jī)教育,2013(6):42-45.
[4] 何立民.嵌入式系統(tǒng)的定義與發(fā)展歷史[M].北京:北京航空航天大學(xué)出版社,2005.
[5] 馬忠梅.ARM Cortex微控制器教程[M].北京:北京航空航天大學(xué)出版社,2010.
[6] 周媛,苗耀鋒,孫姜燕.基于企業(yè)崗位需求的“嵌入式”課程教學(xué)改革[J].教育與職業(yè),2013(14):128-129.
[7] 白艷茹,王旭,王小寧.卓越計(jì)劃背景下創(chuàng)新人才培養(yǎng)模式的改革[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(3):222-224.
[8] 許童羽,陳春玲,孫國(guó)凱.面向卓越工程師培養(yǎng)目標(biāo)的嵌入式系統(tǒng)課程實(shí)踐教學(xué)改革[J].高等農(nóng)業(yè)教育,2013(4):74-76.
[9] 陳佳聞.嵌入式實(shí)驗(yàn)教學(xué)系統(tǒng)開(kāi)發(fā)與應(yīng)用[J].山東農(nóng)業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2011,42(3):448-450.
[10] 鄭世玨,盧強(qiáng).基于嵌入式的移動(dòng)學(xué)習(xí)教學(xué)實(shí)驗(yàn)箱設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(12):51-54.
[11] 周潤(rùn)景,張麗娜,劉印群.PROTEUS入門(mén)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2007.
[12] 高強(qiáng),倪維晨,谷海青.基于Proteus設(shè)計(jì)電子臺(tái)歷的單片機(jī)教學(xué)[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(7):88-90.
[13] 趙國(guó)安,郁斌.以學(xué)生團(tuán)隊(duì)學(xué)習(xí)和課題開(kāi)發(fā)模式改革嵌入式課程[J].現(xiàn)代教育技術(shù),2009,19(6):136-138.
[14] 權(quán)寧一,權(quán)曉林.嵌入式系統(tǒng)專(zhuān)業(yè)實(shí)驗(yàn)教學(xué)改革的探索與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(3):146-147.
[15] 王瓊,盛德策,陳雪梅.項(xiàng)目驅(qū)動(dòng)下的大學(xué)生創(chuàng)新創(chuàng)業(yè)教育[J].實(shí)驗(yàn)技術(shù)與管理,2013,30(6):99-101.