国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ATSAM3X4E的uTenux 系統(tǒng)移植及驗(yàn)證

2015-12-06 06:31:16許冬霞
關(guān)鍵詞:微控制器緩沖區(qū)內(nèi)核

許冬霞

(安徽交通職業(yè)技術(shù)學(xué)院,合肥230051)

隨著物聯(lián)網(wǎng)建設(shè)的興起,國(guó)內(nèi)對(duì)基礎(chǔ)軟件平臺(tái)建設(shè)的投入也越來(lái)越多。面向微控制器的小型嵌入式操作系統(tǒng)引起了相關(guān)技術(shù)研究人員的關(guān)注,其中國(guó)內(nèi)開(kāi)源社區(qū)的uTenux操作系統(tǒng)逐漸被開(kāi)發(fā)人員所了解。uTenux系統(tǒng)包含小巧、開(kāi)源、免費(fèi)的實(shí)時(shí)操作系統(tǒng)內(nèi)核,支持ARM架構(gòu)平臺(tái)和較豐富的中間件資源,在微控制領(lǐng)域應(yīng)用具有一定的優(yōu)勢(shì)。Atmel公司的ATSAM3X4E芯片是以面向終端控制應(yīng)用為目的而設(shè)計(jì)的一款特色芯片,本文考慮將uTenux開(kāi)源嵌入式系統(tǒng)移植到ATSAM3X4E芯片上,將會(huì)在一定程度上豐富該控制芯片的應(yīng)用環(huán)境,同時(shí)也使國(guó)內(nèi)開(kāi)源系統(tǒng)在物聯(lián)網(wǎng)終端控制領(lǐng)域得到進(jìn)一步應(yīng)用。

1 uTenux系統(tǒng)介紹

uTenux系統(tǒng)是近年來(lái)起源于國(guó)內(nèi)uTenux開(kāi)源社區(qū)的一個(gè)小型操作系統(tǒng),因其代碼完全開(kāi)源和系統(tǒng)實(shí)時(shí)性的特點(diǎn),而被開(kāi)源社區(qū)愛(ài)好者所熟悉,逐漸在ARM微控制器上得到了應(yīng)用[1]。uTenux的發(fā)展方向從早期支持ARM7芯片架構(gòu),過(guò)渡到部分支持現(xiàn)在主流的Cortex-M架構(gòu)芯片。作為專用于微控制器的小微型操作系統(tǒng),uTenux有著非常小的資源占用量,僅占用大約10k左右的RAM和40k左右的ROM存儲(chǔ)資源。在中間件協(xié)議支持方面,uTenux也有豐富的精簡(jiǎn)型協(xié)議棧支持[2],例如圖形用戶庫(kù)emWin和FatFS文件系統(tǒng),以及面向工業(yè)控制的CAN協(xié)議和Modbus等。uTenux系統(tǒng)采用了清晰的分層結(jié)構(gòu)設(shè)計(jì),其中Board層包含硬件和驅(qū)動(dòng)層,uT/Kernel層是uTenux的實(shí)時(shí)內(nèi)核,uT/Lib是實(shí)時(shí)系統(tǒng)的函數(shù)庫(kù),uT/Subass層是uTenux的協(xié)議棧中間件。uTenux實(shí)時(shí)系統(tǒng)對(duì)豐富的資源具有較強(qiáng)的管理功能,使得在面對(duì)大多數(shù)應(yīng)用設(shè)計(jì)時(shí)游刃有余。表1列出了Kernel層包含的主要實(shí)時(shí)系統(tǒng)內(nèi)核資源對(duì)象。

表1 uTenux內(nèi)核資源

2 ATSAM3X4E芯片

ATSAM3X4E是Atmel公司的新一代ARM Cortex-M3芯片,是ATSAM3系列產(chǎn)品之一,具有豐富的外設(shè)接口和較低的功耗,可從軟件配置上選擇睡眠、等待和備份3種低功耗模式,在物聯(lián)網(wǎng)應(yīng)用控制中具有一定的節(jié)能優(yōu)勢(shì)。通過(guò)使用ARM公司提供的工具軟件和Cortex-M微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)庫(kù),可使得微控制應(yīng)用開(kāi)發(fā)比以往更加方便快捷。

ATSAM3X4E的內(nèi)核主頻高達(dá)84MHz,并內(nèi)建可嵌套的硬件中斷控制器NVIC,支持片上256kB的Flash和64kB的RAM存儲(chǔ)空間,在低成本和高存儲(chǔ)量之間做了較好的平衡,同時(shí)滿足uTenux開(kāi)源系統(tǒng)移植對(duì)存儲(chǔ)的要求。ATSAM3X4E芯片的優(yōu)點(diǎn)包括內(nèi)核支持Thumb-2指令集并內(nèi)建24位的systick定時(shí)器,使得uTenux移植時(shí)不借用外部定時(shí)器也可進(jìn)行系統(tǒng)時(shí)鐘的配置。芯片具有2個(gè)PLL單元,分別提供USB 2.0的高速設(shè)備時(shí)鐘源和其他外設(shè)的普通設(shè)備時(shí)鐘源。具有1個(gè)UART接口和4個(gè)USART接口,基本滿足了大部分場(chǎng)合的應(yīng)用通信要求。

因?yàn)锳tmel公司的芯片ATSAM3X4E定位于工業(yè)電機(jī)控制或汽車電子控制等應(yīng)用環(huán)境[3],這對(duì)運(yùn)行于其上的軟件實(shí)時(shí)系統(tǒng)的穩(wěn)定性提出了更高要求,同時(shí)也要求uTenux系統(tǒng)的移植結(jié)果必須得到驗(yàn)證。

3 uTenux系統(tǒng)移植過(guò)程

uTenux系統(tǒng)的移植過(guò)程包括對(duì)芯片系統(tǒng)時(shí)鐘的移植、存儲(chǔ)地址映射的配置、Flash存儲(chǔ)介質(zhì)的初始化配置和UART通信接口的移植等[4]。限于篇幅,本文僅介紹主要的系統(tǒng)時(shí)鐘和UART通信接口的移植要點(diǎn)。

3.1 系統(tǒng)時(shí)鐘的移植

uTenux的系統(tǒng)時(shí)鐘基于ATSAM3X4E微控制器的硬件時(shí)鐘單元而確定,實(shí)際操作是通過(guò)配置芯片的能耗管理控制器PMC(Power Management Controller)來(lái)調(diào)節(jié)微控制器的運(yùn)行頻率[5]。ATSAM3X4E有2個(gè)時(shí)鐘源:分別是12/8/4MHz片內(nèi)RC振蕩器和3~20MHz的片外晶體振蕩器。用戶可以根據(jù)具體應(yīng)用環(huán)境,選擇12/8/4MHz的片內(nèi)RC振蕩器,或者使用3~20MHz外部晶體振蕩器作為芯片主時(shí)鐘的時(shí)鐘源。系統(tǒng)移植時(shí)選擇主時(shí)鐘需進(jìn)行時(shí)鐘源的配置。

一般而言芯片通電啟動(dòng)時(shí)芯片內(nèi)部的RC振蕩器被選擇為MCU的默認(rèn)時(shí)鐘源,或者切換到等待模式時(shí)選用RC振蕩器為時(shí)鐘源。片上12/8/4MHz的內(nèi)部RC振蕩器由于切換迅速、等待時(shí)間短,而且其還具有配置簡(jiǎn)單的特點(diǎn),可在要求不高的場(chǎng)合下選用。如果MCU處于高性能工作狀態(tài),因RC振蕩器在高頻條件下的穩(wěn)定性和抗干擾能力弱于片外晶體振蕩器,3~20MHz的片外晶體振蕩器可滿足穩(wěn)定且更加精確的時(shí)鐘源,所以在移植過(guò)程中,uTenux系統(tǒng)上電啟動(dòng)時(shí)將會(huì)從片內(nèi)高速RC振蕩器切換到外部晶體振蕩器。主要配置可參見(jiàn)表2中的ATSAM3X4E芯片時(shí)鐘寄存器。

表2 ATSAM3X4E主要時(shí)鐘配置寄存器

實(shí)驗(yàn)在ATSAM3X4E上移植uTenux時(shí)主要配置如下:

在實(shí)際應(yīng)用中需要注意的是每次寫入響應(yīng)的配置寄存器后,需要進(jìn)行循環(huán)等待,直到時(shí)鐘發(fā)生器的狀態(tài)寄存器穩(wěn)定后,才可進(jìn)行下一步驟的時(shí)鐘配置。

3.2 移植UART

大量數(shù)據(jù)的傳輸可采用串行UART收發(fā)器用來(lái)進(jìn)行。異步模式工作下的UART,無(wú)需時(shí)鐘引腳,可設(shè)置為帶校驗(yàn)位的8位數(shù)據(jù)處理方式。UART模塊的組成包括數(shù)據(jù)發(fā)送器、數(shù)據(jù)接收器以及為UART提供時(shí)鐘源的波特率產(chǎn)生器。通過(guò)不斷對(duì)信號(hào)URXD采樣,UART接收器可發(fā)現(xiàn)接收字符的起始位(Start Bit),如果沒(méi)有發(fā)現(xiàn)則會(huì)循環(huán)檢測(cè),直到有效起始位出現(xiàn)。硬件設(shè)計(jì)中,當(dāng)連續(xù)大于7個(gè)以上時(shí)鐘周期信號(hào)URXD是低電平,則表明得到了有效起始位。把大于7/16的位周期空間當(dāng)做有效起始位,也就是設(shè)置波特率的16倍作為UART采樣時(shí)鐘頻率。等于或小于7/16的位周期空間會(huì)被省略,UART接收器會(huì)持續(xù)等待直到出現(xiàn)一個(gè)有效起始位。如果發(fā)現(xiàn)有效起始位,UART接收器會(huì)把采樣信號(hào)URXD當(dāng)做緊鄰起始位的數(shù)據(jù)位。

為了保證系統(tǒng)的優(yōu)先初始化任務(wù),uTenux系統(tǒng)通過(guò)芯片ATSAM3X4E的UART接口輸出移植過(guò)程調(diào)試信息時(shí),需要關(guān)閉硬件中斷和UART的FIFO模式。配置UART的帶寬為115kbps,數(shù)據(jù)規(guī)格為8位數(shù)據(jù)位和1位停止位。移植過(guò)程中通信速度設(shè)置為115 200bps,不使用FIFO模式,關(guān)閉中斷。數(shù)據(jù)格式采用8位數(shù)據(jù)位,1位停止位。UART基址為0x400E0600,偏移地址與相關(guān)寄存器見(jiàn)表3。

表3 ATSAM3X4E主要UART寄存器

試驗(yàn)在ATSAM3X4E上移植uTenux時(shí),對(duì)UART的主要配置如下:

4 驗(yàn)證移植結(jié)果

與人們?nèi)粘I钪惺褂玫耐ㄓ貌僮飨到y(tǒng)不同,ATSAM3X4E芯片更多地應(yīng)用于工業(yè)電機(jī)控制、汽車電子控制等對(duì)環(huán)境要求比較苛刻的領(lǐng)域。能夠連續(xù)無(wú)故障地進(jìn)行任務(wù)調(diào)度和通信工作[6],是驗(yàn)證uTenux系統(tǒng)在ATSAM3X4E芯片上可靠運(yùn)行的主要方式。

uTenux消息緩沖區(qū)通信機(jī)制的測(cè)試用例,可創(chuàng)建2個(gè)不同優(yōu)先級(jí)的任務(wù)在uTenux系統(tǒng)調(diào)度下交替運(yùn)行,每個(gè)任務(wù)均可向消息緩沖區(qū)發(fā)送和接收消息,在連續(xù)運(yùn)行48h后觀察任務(wù)調(diào)度和消息通信的狀態(tài),來(lái)評(píng)價(jià)此次系統(tǒng)移植的可靠性[7]。

創(chuàng)建消息緩沖區(qū)的函數(shù)ER MessbufSampleSample(void),此方法啟動(dòng)驗(yàn)證程序創(chuàng)建2個(gè)消息緩沖區(qū),消息緩沖區(qū)的ID分別是MbfID_1和MbfID_2,同時(shí)創(chuàng)建2個(gè)任務(wù),其中任務(wù)A的優(yōu)先級(jí)高于任務(wù)B。

任務(wù)A的函數(shù)void MessbufSampleTaskA(W stacd,VP exinf),該函數(shù)啟動(dòng)任務(wù)B后,由于任務(wù)B的優(yōu)先級(jí)低于任務(wù)A,所以直到任務(wù)A進(jìn)入等待狀態(tài),任務(wù)B才開(kāi)始運(yùn)行。在任務(wù)循環(huán)中首先等待控制臺(tái)輸入字符,如果是'e',退出任務(wù)循環(huán),否則繼續(xù)執(zhí)行。任務(wù)循環(huán)中向第1個(gè)消息緩沖區(qū)發(fā)送1條消息,從第2個(gè)消息緩沖區(qū)接收1條消息,由于第2個(gè)消息緩沖區(qū)內(nèi)還沒(méi)有消息,此時(shí)任務(wù)A進(jìn)入第2個(gè)消息緩沖區(qū)的等待接收隊(duì)列。任務(wù)循環(huán)退出后,終止和刪除任務(wù)B,刪除消息緩沖區(qū)1和2,退出和刪除任務(wù)A自己。

任務(wù)B的函數(shù)void MessbufSampleSample-TaskB(W stacd,VP exinf),任務(wù)B反復(fù)從消息緩沖區(qū)MbfID_1提取一條消息,向消息緩沖區(qū)MbfID_2發(fā)送一條消息。當(dāng)消息緩沖區(qū)MbfID_2中存在消息時(shí),被阻塞的任務(wù)A將被調(diào)度運(yùn)行。

任務(wù)A和任務(wù)B交互通信的運(yùn)行狀態(tài)如圖1所示。

圖1 消息緩沖區(qū)通信圖示

以下是驗(yàn)證uTenux系統(tǒng)在ATSAM3X4E芯片上正常運(yùn)行的算法,任務(wù)A的函數(shù)MbfSample-TaskA(W stacd,VP exinf)的主要算法,

運(yùn)行結(jié)果如圖2所示。

上圖為串口通信終端輸出的調(diào)試信息,在實(shí)驗(yàn)室經(jīng)過(guò)連續(xù)48h的不間斷運(yùn)行,觀察發(fā)現(xiàn)輸出的調(diào)試信息始終一致,無(wú)丟失及卡頓現(xiàn)象,表明了uTenux系統(tǒng)在ATSAM3X4E芯片上進(jìn)行任務(wù)調(diào)度切換和消息通信正常,運(yùn)行狀態(tài)良好,基本達(dá)到uTenux系統(tǒng)移植的要求。

圖2 消息緩沖區(qū)通信輸出

5 結(jié)語(yǔ)

在Atmel的工業(yè)級(jí)芯片ATSAM3X4E上移植uTenux實(shí)時(shí)系統(tǒng),需要對(duì)硬件平臺(tái)(微控制器芯片)和軟件平臺(tái)(實(shí)時(shí)操作系統(tǒng))都有一定的了解和把握。移植過(guò)程需要掌握芯片的構(gòu)造特點(diǎn),包括芯片的存儲(chǔ)映射關(guān)系、Flash存儲(chǔ)體的初始化、時(shí)鐘單元的配置和UART收發(fā)單元的配置等[8],才能保證uTenux系統(tǒng)的底層代碼能夠良好地驅(qū)動(dòng)硬件工作。應(yīng)當(dāng)看到,本文所試驗(yàn)的在經(jīng)過(guò)48h不間斷的系統(tǒng)運(yùn)行驗(yàn)證uTenux系統(tǒng)在ATSAM3X4E芯片上的正常運(yùn)行,也僅僅是個(gè)相對(duì)結(jié)論。如果應(yīng)用到實(shí)際工業(yè)生產(chǎn)中,還需要從加倍延長(zhǎng)測(cè)試時(shí)間,以及逐一測(cè)試uTenux所有內(nèi)核資源對(duì)象的運(yùn)行狀態(tài)等兩方面來(lái)提高uTenux系統(tǒng)在芯片ATSAM3X4E上移植成功的穩(wěn)定性。

[1]李紅霞.開(kāi)源實(shí)時(shí)操作系統(tǒng)uTenux在Cortex-M3平臺(tái)上的移植[D].大連:大連理工大學(xué),2012.

[2]王磊,吳海洋.lwIP在μTenux實(shí)時(shí)操作系統(tǒng)上的移植[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014,14(3):5-9.

[3]趙榮陽(yáng),楊祥,王斌.基于 AT91SAM9260的嵌入式Linux系統(tǒng)移植[J].桂林工學(xué)院學(xué)報(bào),2009,29(4):565-570.

[4]徐亮,姜波.基于Cortex-M3嵌入式操作系統(tǒng)eCos移植[J].工業(yè)控制計(jì)算機(jī),2009,22(9):29-31.

[5]Baynes K,Collins C,F(xiàn)iterman E,et al.The performance and energy consumption of embedded real-time operating systems[J].IEEE Transactions on Computers,2003,52(11):1454-1469.

[6]高凱.嵌入式實(shí)時(shí)操作系統(tǒng)性能測(cè)試方法的研究與應(yīng)用[D].青島:青島大學(xué),2010.

[7]付耀.嵌入式實(shí)時(shí)操作系統(tǒng)的進(jìn)程間通信[D].武漢:華中科技大學(xué),2008.

[8]逯玉蘭,燕振剛,李廣.uC/OS-Ⅲ內(nèi)核在STM32F103VET6芯片上 的移植研究[J].計(jì)算機(jī) 與現(xiàn)代 化,2014(9):132-136.

猜你喜歡
微控制器緩沖區(qū)內(nèi)核
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
Linux內(nèi)核mmap保護(hù)機(jī)制研究
物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
電子制作(2017年14期)2017-12-18 07:07:58
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
意法半導(dǎo)體(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器
黔西| 夹江县| 鞍山市| 漳州市| 太谷县| 台北县| 富顺县| 泗水县| 沧州市| 民权县| 汉中市| 西盟| 泰来县| 保康县| 鞍山市| 讷河市| 沂水县| 萨迦县| 新营市| 湖南省| 贵德县| 普兰县| 万盛区| 平阳县| 北川| 冕宁县| 泰宁县| 陵水| 明星| 桂阳县| 镶黄旗| 梁山县| 平昌县| 邵武市| 贡嘎县| 信丰县| 都安| 开化县| 瑞昌市| 寻乌县| 通榆县|