亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ARM Cortex-M微控制器的教學(xué)平臺(tái)建設(shè)

        2014-07-02 08:42:54李寧庫少平付國江
        關(guān)鍵詞:匯編語言外設(shè)微控制器

        李寧,庫少平,付國江

        (武漢理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢430070)

        引 言

        自從2006年ARM公司推出第一款基于ARMv7體系結(jié)構(gòu)的32位微控制器內(nèi)核Cortex-M3以來,各半導(dǎo)體廠商陸續(xù)采用該內(nèi)核設(shè)計(jì)生產(chǎn)自己的MCU。之后,ARM公司2009年又推出了Cortex-M0和Cortex-M4內(nèi)核,2012年則推出了Cortex-M0+內(nèi)核。至2012年,基于Cortex-M的芯片出貨量就已經(jīng)達(dá)到22億片。經(jīng)過8年的發(fā)展,32位的Cortex-M處理器已經(jīng)開始主導(dǎo)嵌入式領(lǐng)域中的微控制器市場[1]。

        為適應(yīng)技術(shù)和市場的需求,國內(nèi)各高校在近幾年也開始逐漸將Cortex-M微控制器引入到本科生教學(xué)中。本文將介紹筆者所在教學(xué)團(tuán)隊(duì)進(jìn)行Cortex-M微控制器教學(xué)的一些實(shí)際經(jīng)驗(yàn)。

        1 與8051單片機(jī)教學(xué)重點(diǎn)的差異

        8位的單片機(jī)8051由Intel公司開發(fā)設(shè)計(jì),后來各大半導(dǎo)體廠商都生產(chǎn)了各式各樣的51內(nèi)核單片機(jī),使得8051一度成為MCU領(lǐng)域中的王者,至今仍占有著重要的地位。國內(nèi)高校的MCU教學(xué)曾經(jīng)絕大多數(shù)以8051為對(duì)象進(jìn)行講解。由于Cortex-M微控制器是32位的,其硬件和軟件的復(fù)雜程度都高于8051單片機(jī),因此在教學(xué)重點(diǎn)上也有所差異。

        1.1 硬件教學(xué)差異

        由于8051單片機(jī)出現(xiàn)于1980年,那時(shí)候相當(dāng)多的51內(nèi)核單片機(jī)采用雙列直插封裝形式,至今市場上仍有大量雙列直插封裝的51內(nèi)核單片機(jī)。通過面包板和PCB萬能板,擴(kuò)展上拉電阻、電容、LED燈、按鍵等幾個(gè)簡單器件,每個(gè)學(xué)生都可非常方便地搭建起8051的最小系統(tǒng),并作為教學(xué)實(shí)驗(yàn)平臺(tái),如圖1(a)所示。目前,各半導(dǎo)體廠商生產(chǎn)的Cortex-M微控制器多數(shù)采用QFN、LQFP、BGA等封裝形式,幾乎見不到雙列直插封裝形式,Cortex-M微控制器的用戶也不會(huì)考慮使用雙列直插封裝形式。因此,讓學(xué)生自己動(dòng)手做出一個(gè)Cortex-M微控制器的最小系統(tǒng)非常困難,對(duì)于很多專業(yè)的學(xué)生而言,甚至幾乎不可能。

        由于Cortex-M內(nèi)核計(jì)算能力強(qiáng)大,很多廠商開發(fā)的Cortex-M微控制器又提供了豐富的外圍接口,使得有大量的外設(shè)可以被輕松接入。因此,筆者在教學(xué)中采用集成了仿真器,并帶有Arduino接口的Cortex-M微控制器學(xué)習(xí)板,學(xué)生可以自由地?cái)U(kuò)展各種外設(shè)板,如圖1(b)所示。

        1.2 軟件教學(xué)差異

        由于Cortex-M微控制器的計(jì)算能力、存儲(chǔ)空間都遠(yuǎn)大于8051單片機(jī),因此在軟件上有了更大的擴(kuò)展空間,在軟件的教學(xué)上應(yīng)當(dāng)也有所調(diào)整。

        圖1 8051教學(xué)平臺(tái)與Cortex-M微控制器教學(xué)平臺(tái)

        (1)弱化匯編語言,強(qiáng)化C語言

        無論是8051還是Cortex-M微控制器的匯編語言指令集都不是太復(fù)雜,尤其是Cortex-M0內(nèi)核僅有56條Thumb指令,學(xué)習(xí)和掌握其匯編語言指令集的難度并不大。

        在早期的8051教學(xué)中,匯編語言是其中的重要內(nèi)容,甚至整個(gè)教學(xué)過程均采用匯編語言來講解,也有很多工程師一直采用匯編語言來對(duì)8051進(jìn)行編程。其理由是C語言編譯后的代碼密度比匯編語言的低,執(zhí)行效率也低。早期的8051單片機(jī)的計(jì)算能力和存儲(chǔ)空間都非常有限,導(dǎo)致某些工程師甚至在編程時(shí)對(duì)每個(gè)字節(jié)都“斤斤計(jì)較”,這是匯編語言曾在MCU領(lǐng)域被廣泛使用的重要原因。

        Cortex-M微控制器的計(jì)算能力已經(jīng)非常強(qiáng)大,其存儲(chǔ)空間也足夠大,價(jià)格也很便宜;同時(shí)編譯系統(tǒng)的能力也有顯著提高,即使是采用GCC編譯器也可以獲得很好的代碼密度和執(zhí)行效率。此外,使用C語言進(jìn)行開發(fā),開發(fā)速度更快,更適合開發(fā)復(fù)雜的軟件,例如帶有RTOS的系統(tǒng),相比匯編語言,軟件越復(fù)雜,C語言的開發(fā)效率越高。因此,當(dāng)前絕大多數(shù)工程師已經(jīng)開始使用C語言作為MCU的開發(fā)語言,而基本不再使用匯編語言。

        基于以上情況,在教學(xué)實(shí)踐中可適當(dāng)弱化匯編語言編程的要求,不要求學(xué)生用匯編語言完成較為復(fù)雜的程序。

        (2)弱化寄存器操作,強(qiáng)化使用API

        對(duì)MCU的各種外設(shè)接口的控制,都是通過對(duì)寄存器的操作來實(shí)現(xiàn)的。因此,過去在以8051為對(duì)象的單片機(jī)課程教學(xué)和以8086 CPU為對(duì)象的微機(jī)原理課程教學(xué)中,都花費(fèi)了大量時(shí)間介紹各外設(shè)接口的數(shù)據(jù)寄存器、控制寄存器和狀態(tài)寄存器含義,以及相應(yīng)的操作方法。Cortex-M微控制器中所帶有的外設(shè)越來越多,越來越復(fù)雜,如果逐一介紹各外設(shè)接口的寄存器組,其內(nèi)容將非常多,而且枯燥乏味。

        目前,各個(gè)MCU廠商為了幫助使用其產(chǎn)品的工程師能進(jìn)行快速開發(fā),均提供了完善的外設(shè)驅(qū)動(dòng)庫。在每個(gè)外設(shè)驅(qū)動(dòng)庫中,均定義了相應(yīng)外設(shè)的數(shù)據(jù)結(jié)構(gòu)和一組API函數(shù),這一組API函數(shù)覆蓋了該外設(shè)的所有功能。而且,這些外設(shè)驅(qū)動(dòng)庫的文件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、函數(shù)名和參數(shù)名都進(jìn)行了標(biāo)準(zhǔn)化。

        基于以上情況,在教學(xué)實(shí)踐中通常可以僅介紹1~2個(gè)簡單外設(shè)的寄存器組,例如GPIO的寄存器組,讓學(xué)生了解如何通過操作寄存器來實(shí)現(xiàn)對(duì)外設(shè)接口的控制即可。同時(shí),應(yīng)增加對(duì)外設(shè)驅(qū)動(dòng)庫的介紹,包括外設(shè)驅(qū)動(dòng)庫的文件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、函數(shù)名和參數(shù)名定義的規(guī)范。讓學(xué)生掌握查閱處理器數(shù)據(jù)手冊和API函數(shù)手冊進(jìn)行編程的能力。

        (3)引入RTOS,中斷與OS任務(wù)調(diào)度并重

        8051的計(jì)算能力有限,存儲(chǔ)空間很小,因此在實(shí)際應(yīng)用中基本不會(huì)使用RTOS,通常是直接進(jìn)行裸機(jī)編程。對(duì)于多任務(wù)的處理,通常是用中斷來實(shí)現(xiàn),因此中斷處理是MCU教學(xué)的重點(diǎn)。

        Cortex-M微控制器的計(jì)算能力和存儲(chǔ)空間的大幅提高,使得MCU能適用于更加復(fù)雜的應(yīng)用。對(duì)于功能復(fù)雜的應(yīng)用,如果使用裸機(jī)編程的方法進(jìn)行開發(fā),則必然會(huì)遇到編程復(fù)雜、調(diào)試?yán)щy、代碼耦合性高、移植困難等諸多問題,因此,越來越多的Cortex-M微控制器應(yīng)用開始引入RTOS?;赗TOS的應(yīng)用程序開發(fā),會(huì)大大降低應(yīng)用程序的復(fù)雜性和代碼的耦合度,應(yīng)用的移植也變得簡單。當(dāng)然,仍有大量的Cortex-M微控制器應(yīng)用本身就比較簡單,無需引入RTOS。

        基于以上情況,在教學(xué)實(shí)踐中可引入RTOS的知識(shí),同時(shí)也仍保持對(duì)中斷的重點(diǎn)介紹。對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生而言,RTOS的知識(shí)是易于理解和掌握的,但是對(duì)于自動(dòng)化和電子專業(yè)的學(xué)生而言,則會(huì)存在著一些困難?;谶@種情況,可將RTOS介紹的重點(diǎn)放在任務(wù)調(diào)度的概念上,讓學(xué)生理解RTOS可以幫助編程者實(shí)現(xiàn)多任務(wù)的切換和調(diào)度即可。

        2 教學(xué)平臺(tái)建設(shè)

        2.1 硬件平臺(tái)

        由于常見Cortex-M微控制器的封裝形式不方便讓學(xué)生自己搭建起最小系統(tǒng),因此筆者在教學(xué)中采用集成了仿真器、并帶有Arduino接口的Cortex-M學(xué)習(xí)板,使用Cortex-M0處理器,如圖1(b)所示。同時(shí)還提供多種Arduino接口擴(kuò)展板,例如三色LED燈、矩陣鍵盤、步進(jìn)電機(jī)、溫度傳感器、光敏傳感器、重力加速度傳感器、ZigBee模塊等,便于搭建各種應(yīng)用系統(tǒng)。這樣既方便完成單一功能的驗(yàn)證實(shí)驗(yàn),又適于進(jìn)行較為復(fù)雜的課程設(shè)計(jì),還能用于學(xué)生自主創(chuàng)新項(xiàng)目。這樣的教學(xué)平臺(tái)體積小、靈活性高、方便攜帶,學(xué)生甚至不必在實(shí)驗(yàn)室就可以進(jìn)行實(shí)驗(yàn)或者自主創(chuàng)新開發(fā)。

        2.2 軟件平臺(tái)

        筆者使用Coocox工具作為教學(xué)實(shí)踐的軟件平臺(tái)。Coocox工具包含一套完整的ARM MCU工具鏈,包含集成開發(fā)環(huán)境CoIDE、燒寫工具CoFlash、實(shí)時(shí)操作系統(tǒng)CoOS以及快速代碼生成工具CoSmart,而且完全免費(fèi)[2]。更重要的是,其基于組件化的編程思想和分享功能非常便于實(shí)踐教學(xué)的開展。

        (1)組件化編程

        圖2 CoIDE工程組件樹

        在集成開發(fā)環(huán)境CoIDE中,外設(shè)驅(qū)動(dòng)、算法、通信協(xié)議棧、RTOS等均被包裝為組件(Component)。開發(fā)者只要通過鼠標(biāo)選擇相應(yīng)的組件,即可將組件添加到自己的應(yīng)用程序中。在組件樹窗口中可以清楚地顯示應(yīng)用程序所使用的外設(shè)、通信協(xié)議、RTOS等,如圖2所示。相比于文件樹而言,組件樹的結(jié)構(gòu)更清晰明確,而且還可以和文件樹相互參照。這種模塊化的編程方式,讓編程者非常易于理解應(yīng)用程序的結(jié)構(gòu),也大大加快了編程的進(jìn)度,減少了添加驅(qū)動(dòng)函數(shù)庫、RTOS等過程中可能出現(xiàn)的錯(cuò)誤。同時(shí),每個(gè)組件均有基本例程可以參考,只需選擇相應(yīng)例程即可自動(dòng)將相關(guān)代碼加入到自己的應(yīng)用程序中去。學(xué)生無需編程,就可完成第一個(gè)入門實(shí)驗(yàn),實(shí)踐教學(xué)的難度明顯降低,大大減少了學(xué)生對(duì)于MCU實(shí)踐教學(xué)的畏難心理。

        (2)分享功能

        CoIDE還具有基于Internet的分享功能,開發(fā)者可以將自己開發(fā)的組件、例程上傳到服務(wù)器上與其他開發(fā)者分享,這個(gè)功能也方便了教師對(duì)學(xué)生實(shí)踐教學(xué)的檢查和評(píng)分。學(xué)生可將自己的實(shí)驗(yàn)程序作為例子上傳,教師則可以非常方便地下載、查看并運(yùn)行學(xué)生的實(shí)驗(yàn)代碼,從而進(jìn)行評(píng)分,而不必當(dāng)場逐一檢查實(shí)驗(yàn)結(jié)果。這樣,老師和學(xué)生在實(shí)驗(yàn)場地和實(shí)驗(yàn)時(shí)間的安排上都變得非常靈活,學(xué)生甚至可以在寢室完成實(shí)驗(yàn),老師也可以根據(jù)自己的時(shí)間來進(jìn)行實(shí)驗(yàn)成績評(píng)分。

        同時(shí),CoIDE也具有其他商用集成開發(fā)環(huán)境的各項(xiàng)功能,可以用于各種復(fù)雜的ARM MCU應(yīng)用的開發(fā)。近年來,Coocox工具鏈也逐漸成為一些歐美大學(xué)的MCU教學(xué)的軟件教學(xué)平臺(tái)。

        3 與物聯(lián)網(wǎng)、Android教學(xué)的結(jié)合

        3.1 與物聯(lián)網(wǎng)教學(xué)結(jié)合

        隨著物聯(lián)網(wǎng)的快速發(fā)展,許多高校都開設(shè)了物聯(lián)網(wǎng)專業(yè),計(jì)算機(jī)、電子、自動(dòng)化等專業(yè)也開設(shè)了物聯(lián)網(wǎng)的相關(guān)課程。物聯(lián)網(wǎng)感知層中的各種傳感器節(jié)點(diǎn),其實(shí)就是MCU加上相關(guān)傳感器,如果能將MCU的教學(xué)與物聯(lián)網(wǎng)教學(xué)進(jìn)行結(jié)合,會(huì)有助于學(xué)生建立完整的物聯(lián)網(wǎng)系統(tǒng)概念。

        在實(shí)踐教學(xué)中,在Arduino學(xué)習(xí)板上擴(kuò)展ZigBee模塊和傳感器模塊,可實(shí)現(xiàn)一個(gè)傳感器節(jié)點(diǎn);或者擴(kuò)展ZigBee模塊和一個(gè)步進(jìn)電機(jī)模塊,實(shí)現(xiàn)一個(gè)控制節(jié)點(diǎn)。一組學(xué)生即可構(gòu)建一個(gè)小的物聯(lián)網(wǎng),例如實(shí)現(xiàn)簡單的智能家居系統(tǒng)原型。

        3.2 與Android教學(xué)結(jié)合

        移動(dòng)終端、可穿戴設(shè)備的迅速普及,使得Android應(yīng)用開發(fā)成為了計(jì)算機(jī)專業(yè)學(xué)生的熱門選修課程。在Android應(yīng)用開發(fā)實(shí)踐教學(xué)中,也可以與MCU教學(xué)相結(jié)合。將MCU實(shí)踐教學(xué)與其他相關(guān)課程的實(shí)踐教學(xué)進(jìn)行有機(jī)的結(jié)合,不僅可以幫助學(xué)生建立各知識(shí)領(lǐng)域之間的聯(lián)系,還可以提高學(xué)生的興趣,也有利于鼓勵(lì)學(xué)生進(jìn)行自主創(chuàng)新開發(fā)。

        結(jié) 語

        在筆者的MCU教學(xué)實(shí)踐中也遇到如下一些問題和困難:

        ①缺乏合適教材。很多關(guān)于Cortex-M微控制器的書籍都是為MCU廠商做市場推廣而寫作的,更適合作為編程參考手冊,而不適合作為教材。由于ARM MCU比8051復(fù)雜,涉及的軟硬件內(nèi)容更豐富,已有的一些Cortex-M微控制器教材很難兼顧。各個(gè)專業(yè)的MCU教學(xué)需求也有所偏重,市面也缺乏根據(jù)專業(yè)特點(diǎn)來編寫合適的教材。

        ②學(xué)時(shí)少,內(nèi)容多,尤其實(shí)踐學(xué)時(shí)太少。對(duì)于這一問題,通過鼓勵(lì)學(xué)生將學(xué)習(xí)板帶回寢室學(xué)習(xí),得以適當(dāng)緩解。

        ③軟硬件知識(shí)如何平衡。對(duì)于不同專業(yè)的學(xué)生,需求是不同的。計(jì)算機(jī)專業(yè)的學(xué)生,偏向于軟件方面;電子專業(yè)的學(xué)生,偏向硬件方面;自動(dòng)化專業(yè)的學(xué)生,則更偏向于接口控制與通信方面。

        ④如何與其他相關(guān)課程的實(shí)踐課相互有機(jī)結(jié)合,在有限的學(xué)時(shí)中做到相互促進(jìn)、相互兼顧,并能完成相關(guān)知識(shí)點(diǎn)全覆蓋。

        [1]ARM Limited.Cortex-M 系列[EB/OL].[2014-06].http://www.arm.com/zh/markets/embedded/mcu.php.

        [2]Free/Open Cortex-M微控制器 Development Tools[EB/OL].[2014-06].http://www.coocox.org.

        猜你喜歡
        匯編語言外設(shè)微控制器
        高等學(xué)校計(jì)算機(jī)專業(yè)課程教學(xué)改革實(shí)踐——以匯編語言與接口技術(shù)課程為例
        匯編語言與C語言的混合程序設(shè)計(jì)技術(shù)研究
        電子制作(2019年10期)2019-06-17 11:45:16
        提高《匯編語言程序設(shè)計(jì)》教學(xué)效率的思考與實(shí)踐
        物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
        電子制作(2017年14期)2017-12-18 07:07:58
        Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
        最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
        意法半導(dǎo)體(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器
        Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
        貼身呵護(hù) 必不可少的PSP外設(shè)
        外設(shè)天地行情
        成人特黄特色毛片免费看| 国产成人福利av一区二区三区| 国产女同一区二区在线| 国产特黄1区2区3区4区| 三级国产高清在线观看| av男人的天堂亚洲综合网| 深夜放纵内射少妇| 精品人妻av区乱码| 毛片大全真人在线| 亚洲VA中文字幕欧美VA丝袜| 色欧美与xxxxx| av男人操美女一区二区三区| 国产av三级精品车模| 亚洲天码一区二区三区| 日本午夜精品一区二区三区| 成人一区二区人妻少妇| 国产精品毛片无遮挡| 99精品一区二区三区无码吞精| 欧美久久久久中文字幕 | 婷婷四虎东京热无码群交双飞视频| 午夜福利理论片高清在线观看| 国产精品亚洲日韩欧美色窝窝色欲| 久久综合亚洲色社区| 91在线视频视频在线| 色噜噜色哟哟一区二区三区| 日韩av在线亚洲女同| 国产av无码专区亚洲精品| 俺去俺来也在线www色官网| 女女女女bbbbbb毛片在线| 无码中文字幕av免费放| 国产一区二区亚洲一区| 亚洲av永久无码精品网站| 成av免费大片黄在线观看| 国产中文字幕乱码在线| 久久丁香花综合狼人| 久久九九精品国产不卡一区| 麻豆国产精品久久人妻| 色八区人妻在线视频免费| 99riav精品国产| 久久狼人国产综合精品| 国产一级二级三级在线观看av|