摘要:分析當(dāng)前高校電子類本科專業(yè)嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)中普遍存在的問(wèn)題,結(jié)合應(yīng)用領(lǐng)域?qū)η度胧轿⑻幚砥鞯男枨蠛蛯W(xué)生自身特點(diǎn),闡述如何改進(jìn)基于ARM Cortex-M核的嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)平臺(tái)設(shè)計(jì)方案,提出相應(yīng)的實(shí)驗(yàn)教學(xué)方法,為學(xué)生提供一種更有效和更系統(tǒng)地掌握嵌入式系統(tǒng)原理和設(shè)計(jì)方法的途徑。
關(guān)鍵詞:嵌入式系統(tǒng);實(shí)驗(yàn)教學(xué);實(shí)驗(yàn)平臺(tái);Cortex-M
0 引 言
電子類本科專業(yè)嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)的重點(diǎn)是培養(yǎng)學(xué)生掌握以嵌入式微處理器為控制核心的電子系統(tǒng)整機(jī)開發(fā)能力。學(xué)生不僅要掌握嵌入式處理器的工作原理和編程方法,更重要的是能夠全面地掌握模數(shù)混合、軟硬結(jié)合的嵌入式系統(tǒng)整體開發(fā)思路、開發(fā)方法和開發(fā)流程。這就要求嵌入式系統(tǒng)配套的實(shí)驗(yàn)內(nèi)容豐富、形式多樣,具有大量的基礎(chǔ)實(shí)驗(yàn)和相應(yīng)的工程實(shí)例,能夠?qū)⑶度胧介_發(fā)技術(shù)的各種技巧和方法融人實(shí)驗(yàn)過(guò)程中。通過(guò)實(shí)驗(yàn),學(xué)生不僅掌握了嵌入式系統(tǒng)開發(fā)的基本方法、技巧和手段,更著重培養(yǎng)了自主學(xué)習(xí)、獨(dú)立研究的習(xí)慣,從而具備創(chuàng)新性地開發(fā)嵌入式系統(tǒng)的能力。
1 現(xiàn)有實(shí)驗(yàn)環(huán)節(jié)中存在的問(wèn)題
隨著ARM處理器應(yīng)用的迅速發(fā)展,高校針對(duì)ARM體系結(jié)構(gòu)已經(jīng)積累了大量成熟的教學(xué)資源,包括硬件設(shè)計(jì)資料、教材、開源外設(shè)驅(qū)動(dòng)軟件庫(kù)、通訊協(xié)議棧、開源實(shí)時(shí)操作系統(tǒng)和開發(fā)環(huán)境等。以ARM Cortex-M為代表的嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)平臺(tái)已成為電子信息工程專業(yè)嵌入式系統(tǒng)教學(xué)的主流,逐步取代了傳統(tǒng)的51系列實(shí)驗(yàn)平臺(tái),但ARM Cortex-M芯片結(jié)構(gòu)比51系列復(fù)雜,軟件開發(fā)中涉及的內(nèi)容也較多,學(xué)生在有限的時(shí)間內(nèi)很難掌握其精髓。在完成實(shí)驗(yàn)環(huán)節(jié)后,教師通過(guò)對(duì)學(xué)生的調(diào)查發(fā)現(xiàn),大量學(xué)生在實(shí)驗(yàn)過(guò)程中只是驗(yàn)證了實(shí)驗(yàn)手冊(cè)上的原理和代碼,沒(méi)有深入理解處理器內(nèi)部模塊、外圍硬件電路和軟件編程之間的關(guān)聯(lián)性,沒(méi)有真正掌握嵌入式系統(tǒng)設(shè)計(jì)的方法,課程結(jié)束后無(wú)法進(jìn)行模數(shù)混合和軟硬結(jié)合的嵌入式系統(tǒng)整體開發(fā)。這種情況在硬件相關(guān)課程中普遍存在。文獻(xiàn)[2]中提到與過(guò)去學(xué)生不同的是,當(dāng)代學(xué)生普遍缺乏鉆研精神和耐心,過(guò)于依賴軟件。缺乏鉆研精神在嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)過(guò)程中體現(xiàn)在學(xué)生往往依賴實(shí)驗(yàn)手冊(cè),不愿意深入思考實(shí)驗(yàn)現(xiàn)象背后所蘊(yùn)藏的基本原理和相互之間的關(guān)聯(lián)性,無(wú)法做到舉一反三;缺乏耐心體現(xiàn)在學(xué)生總是希望通過(guò)簡(jiǎn)單的步驟就能看到結(jié)果,而嵌入式系統(tǒng)實(shí)驗(yàn)需要理解繁瑣的配置流程并閱讀枯燥的數(shù)據(jù)手冊(cè),學(xué)生往往會(huì)半途而廢;過(guò)度依賴軟件導(dǎo)致出現(xiàn)“軟件比硬件更加重要”的錯(cuò)誤認(rèn)識(shí),學(xué)生越來(lái)越不愿意“干粗活”,在實(shí)驗(yàn)過(guò)程中依賴集成開發(fā)界面和軟件仿真,忽略了示波器、萬(wàn)用表、焊臺(tái)等在嵌入式系統(tǒng)設(shè)計(jì)中的重要作用。
2 實(shí)驗(yàn)平臺(tái)沒(méi)計(jì)和改進(jìn)
目前基于ARM Cortex-M系列處理器的嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)平臺(tái)大部分都放棄了傳統(tǒng)實(shí)驗(yàn)箱模式,而使用集仿真器與目標(biāo)板于一體的開發(fā)板。開發(fā)板提供了ARM Cortex-M所有硬件資源、詳細(xì)的程序代碼和編程手冊(cè),對(duì)于教師教學(xué)和學(xué)生學(xué)習(xí)都非常方便;但開發(fā)板完善的設(shè)計(jì)也是造成上述問(wèn)題原因之一,學(xué)生使用開發(fā)板在實(shí)驗(yàn)過(guò)程中幾乎不會(huì)遇到問(wèn)題,也就不會(huì)想辦法解決各種問(wèn)題,而這與真正嵌入式系統(tǒng)設(shè)計(jì)過(guò)程正好相反。
針對(duì)上述問(wèn)題,在以ARM Cortex-M3為核心的嵌入式系統(tǒng)實(shí)驗(yàn)平臺(tái)設(shè)計(jì)中,我們既保留開發(fā)板的學(xué)習(xí)和驗(yàn)證功能讓學(xué)生能夠順利上手,又特意為學(xué)生制造了一些“障礙”,在部分實(shí)驗(yàn)中只有學(xué)生解決這些“障礙”才能達(dá)到實(shí)驗(yàn)?zāi)康摹?/p>
實(shí)驗(yàn)平臺(tái)將實(shí)驗(yàn)內(nèi)容分為驗(yàn)證部分和設(shè)計(jì)部分:驗(yàn)證部分的設(shè)計(jì)與普通開發(fā)板相同,電路功能完整,實(shí)驗(yàn)手冊(cè)中提供完整的實(shí)驗(yàn)流程和詳細(xì)代碼;設(shè)計(jì)部分引出了處理器的IO端口,各個(gè)外設(shè)模塊只提供了IO端口、VDD和GND信號(hào),且IO端口與外設(shè)模塊之間的地址線、數(shù)據(jù)線和控制信號(hào)線并沒(méi)有連接,實(shí)驗(yàn)手冊(cè)中只提供該外設(shè)模塊實(shí)驗(yàn)的設(shè)計(jì)思路和程序流程,學(xué)生需要根據(jù)實(shí)驗(yàn)要求自己動(dòng)手連接電路,并根據(jù)連接的電路編寫程序。顯然,學(xué)生要完成設(shè)計(jì)型實(shí)驗(yàn)必須對(duì)處理器內(nèi)部功能、外圍硬件電路和程序流程有充分的理解,如果學(xué)生選擇的硬件連接方式不同,其編寫的程序也就各不相同,但都能夠達(dá)到相同的實(shí)驗(yàn)?zāi)康?。?shí)驗(yàn)平臺(tái)的硬件結(jié)構(gòu)如圖1所示。
3 實(shí)驗(yàn)環(huán)節(jié)組織
文獻(xiàn)[5]中討論了嵌入式系統(tǒng)課程教學(xué)過(guò)程中教學(xué)內(nèi)容的安排,將一些容易掌握并能夠引發(fā)學(xué)生注意力、容易看到實(shí)驗(yàn)現(xiàn)象的章節(jié)安排在前面,以一種先易后難、先外后內(nèi)的方式編排教學(xué)內(nèi)容。我們?cè)诖嘶A(chǔ)上將驗(yàn)證型實(shí)驗(yàn)和設(shè)計(jì)型實(shí)驗(yàn)進(jìn)行穿插安排,驗(yàn)證型實(shí)驗(yàn)側(cè)重于加強(qiáng)學(xué)生對(duì)處理器功能模塊的理解和簡(jiǎn)單應(yīng)用,實(shí)驗(yàn)手冊(cè)給出了具體程序代碼并配有較詳細(xì)的注釋,學(xué)生在理解并完成驗(yàn)證型實(shí)驗(yàn)的基礎(chǔ)上進(jìn)行設(shè)計(jì)型實(shí)驗(yàn)。實(shí)驗(yàn)項(xiàng)目安排如表1所示。
在實(shí)驗(yàn)項(xiàng)目安排中,所有的設(shè)計(jì)型實(shí)驗(yàn)都和前一個(gè)驗(yàn)證型實(shí)驗(yàn)有所關(guān)聯(lián),但又加入了新的內(nèi)容。
(1)在實(shí)驗(yàn)3“ARM匯編語(yǔ)言實(shí)驗(yàn)”中,要求學(xué)生使用ARM匯編語(yǔ)言實(shí)現(xiàn)LED流水燈功能,而學(xué)生在實(shí)驗(yàn)2中已經(jīng)驗(yàn)證過(guò)使用C語(yǔ)言編寫的LED流水燈功能代碼,因此會(huì)緩解學(xué)生對(duì)編寫ARM匯編語(yǔ)言程序的畏難情緒。一部分學(xué)生會(huì)調(diào)出實(shí)驗(yàn)2中的C語(yǔ)言代碼觀察反匯編的結(jié)果,提取其中匯編語(yǔ)言部分,再補(bǔ)充匯編偽指令;也有一部分學(xué)生會(huì)依據(jù)C語(yǔ)言中的程序流程,根據(jù)自己的理解來(lái)編寫匯編代碼。
(2)在實(shí)驗(yàn)5“I2C實(shí)驗(yàn)”中,學(xué)生已經(jīng)通過(guò)實(shí)驗(yàn)4了解了串行通訊協(xié)議的思想。這個(gè)實(shí)驗(yàn)中處理器的IO引腳沒(méi)有和E2PROM芯片相連,學(xué)生在實(shí)驗(yàn)中可以選擇使用處理器的I2C引腳來(lái)連接,也可以選擇使用其他空閑GPIO端口來(lái)連接,然后模擬I2C協(xié)議。在實(shí)驗(yàn)過(guò)程中,學(xué)生需要使用示波器來(lái)觀察I2C引腳上的波形是否符合芯片通信所要求的I2C協(xié)議。該實(shí)驗(yàn)過(guò)程并不復(fù)雜,但有效地鍛煉了學(xué)生軟、硬件相結(jié)合的能力,即在示波器的指導(dǎo)下調(diào)試程序。由于各個(gè)學(xué)生選擇的信號(hào)線連接方式不同,學(xué)生最后提交的程序設(shè)計(jì)思路和代碼也不同,有效地避免了實(shí)驗(yàn)過(guò)程中相互抄襲的現(xiàn)象。
(3)課程設(shè)計(jì)內(nèi)容有較強(qiáng)的綜合性,要求學(xué)生以Cortex-M處理器為核心設(shè)計(jì)一個(gè)簡(jiǎn)單的音頻采集系統(tǒng):將從麥克風(fēng)采集的音頻通過(guò)揚(yáng)聲器回放。該實(shí)驗(yàn)要求學(xué)生使用面包板搭建兩個(gè)運(yùn)算放大電路,一個(gè)電路是麥克風(fēng)采集的聲音調(diào)整到Cortcx-M處理器ADC輸入所要求的范圍,另一個(gè)電路是將Cortex-M處理器DAC所輸出的信號(hào)調(diào)整到足以驅(qū)動(dòng)揚(yáng)聲器發(fā)出聲音。學(xué)生在該實(shí)驗(yàn)中需要用到前面8個(gè)實(shí)驗(yàn)中已經(jīng)學(xué)過(guò)的內(nèi)容,如編程驅(qū)動(dòng)Cortex-M處理器的定時(shí)器、DMA通道、ADC、DAC、串口通信等模塊,又需要匹配模擬電路和數(shù)字電路。學(xué)生在程序調(diào)試過(guò)程中需要使用信號(hào)發(fā)生器、示波器、萬(wàn)用表、焊接工具等作為輔助,有效地提升了學(xué)生對(duì)模數(shù)混合的嵌入式系統(tǒng)設(shè)汁的掌握,加深了學(xué)生對(duì)嵌入式系統(tǒng)整體開發(fā)思路、開發(fā)方法和開發(fā)流程的理解。部分能力較強(qiáng)學(xué)生能夠結(jié)合實(shí)時(shí)操作系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)采集進(jìn)程和音頻流輸出進(jìn)程之間的數(shù)據(jù)共享和同步,具有較強(qiáng)的實(shí)用價(jià)值。
學(xué)生的實(shí)驗(yàn)成績(jī)考核由老師現(xiàn)場(chǎng)檢查和實(shí)驗(yàn)報(bào)告兩部分組成。學(xué)生在實(shí)驗(yàn)前必須先預(yù)習(xí)實(shí)驗(yàn)手冊(cè)上的內(nèi)容并撰寫實(shí)驗(yàn)報(bào)告中硬件原理和程序流程分析。完成實(shí)驗(yàn)后老師現(xiàn)場(chǎng)檢查并提問(wèn),根據(jù)學(xué)生實(shí)驗(yàn)效果和問(wèn)題的吲答情況打分,分值占實(shí)驗(yàn)成績(jī)的60%。實(shí)驗(yàn)結(jié)束后學(xué)生再根據(jù)實(shí)驗(yàn)情況進(jìn)行分析和總結(jié),實(shí)驗(yàn)報(bào)告成績(jī)占40%實(shí)驗(yàn)報(bào)告的設(shè)計(jì)以考察學(xué)生對(duì)實(shí)驗(yàn)原理的理解及對(duì)問(wèn)題的思考為原則,盡量減少書寫工作,實(shí)驗(yàn)報(bào)告的結(jié)構(gòu)如圖2所示。
4 結(jié)語(yǔ)
嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)的最終目的是培養(yǎng)學(xué)生能夠根據(jù)應(yīng)用需求獨(dú)立完成嵌入式系統(tǒng)的軟、硬件設(shè)計(jì)和開發(fā)。中南民族大學(xué)的“嵌入式系統(tǒng)”實(shí)驗(yàn)教學(xué)按照以上體系運(yùn)作了兩年,取得了較好的效果,學(xué)生普遍反映在實(shí)驗(yàn)過(guò)程中學(xué)了“真本領(lǐng)”,為學(xué)生學(xué)習(xí)其他后續(xù)課程、參與創(chuàng)新活動(dòng)和學(xué)科競(jìng)賽奠定了良好的基礎(chǔ)。兩年來(lái)學(xué)生參與的以Cortex-M系列為處理器平臺(tái)的學(xué)科競(jìng)賽取得了較好的成績(jī):3人次獲湖北省大學(xué)生電子設(shè)計(jì)大賽湖北省一等獎(jiǎng);3人次獲得全國(guó)電子設(shè)計(jì)大賽一等獎(jiǎng)。在嵌入式系統(tǒng)飛速發(fā)展的大環(huán)境下,社會(huì)對(duì)學(xué)生的知識(shí)結(jié)構(gòu)和動(dòng)手能力的要求越來(lái)越高,我們?cè)诮窈蟮膶?shí)驗(yàn)教學(xué)中仍然要不斷總結(jié)經(jīng)驗(yàn),優(yōu)化實(shí)驗(yàn)平臺(tái)設(shè)計(jì)和實(shí)驗(yàn)內(nèi)容,提升實(shí)驗(yàn)教學(xué)質(zhì)量,進(jìn)一步提高學(xué)生在專業(yè)領(lǐng)域內(nèi)的就業(yè)競(jìng)爭(zhēng)力。
參考文獻(xiàn):
[2]Tsividis Y.Turning students on to the circuits[J].Circuits and System Magazine,2009,9(1):58-63.
[5]鄧春健,李文生,楊亮,等.“ARM嵌入式系統(tǒng)”課程教學(xué)方法研究[J].計(jì)算機(jī)教育,2010(3):94-96