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

        ?

        一種基于Cortex-M3的任務(wù)核心機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)

        2020-12-28 02:10:22方敏
        電腦知識與技術(shù) 2020年33期

        摘要:嵌入式實(shí)時(shí)操作系統(tǒng)是整個(gè)嵌入式實(shí)時(shí)系統(tǒng)的核心,采用嵌入式實(shí)時(shí)操作系統(tǒng)( RTOS)可以更合理、更有效地利用CPU資源,簡化應(yīng)用軟件設(shè)計(jì),縮短系統(tǒng)開發(fā)時(shí)間。該文基于Cortex-M3芯片內(nèi)核,設(shè)計(jì)并實(shí)現(xiàn)了一種針對RTOS的任務(wù)核心機(jī)制,包括任務(wù)切換、任務(wù)時(shí)間片切換、任務(wù)延時(shí)接口實(shí)現(xiàn)、臨界區(qū)保護(hù)、多優(yōu)先級任務(wù)等功能,從而高效率實(shí)現(xiàn)了基于RTOS任務(wù)管理,提高了系統(tǒng)的實(shí)時(shí)性和可靠性。

        關(guān)鍵詞:Cortex-M3:RTOS;任務(wù)機(jī)制;切換;多優(yōu)先級

        中圖分類號:TP316 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2020)33-0074-02

        開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

        1 背景

        在后PC時(shí)代,嵌入式的發(fā)展逐漸取代PC成為時(shí)代主流,嵌入式實(shí)系統(tǒng)的應(yīng)用日益廣泛[1]。嵌入式實(shí)時(shí)操作系統(tǒng)( RTOS)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)[2]為基礎(chǔ),軟硬可裁剪[3],適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性[4]、成本、體積、功耗等嚴(yán)格要求,當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理[5]。其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應(yīng)[6],調(diào)度一切可利用的資源完成實(shí)時(shí)任務(wù),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的操作系統(tǒng)。

        RTOS系統(tǒng)如果要有更好的事件實(shí)時(shí)處理機(jī)制,需要對任務(wù)機(jī)制進(jìn)行設(shè)計(jì),讓其對任務(wù)進(jìn)行較好的管理,設(shè)計(jì)任務(wù)的切換,任務(wù)時(shí)間片設(shè)計(jì)、任務(wù)延時(shí)接口處理、臨界區(qū)及調(diào)度鎖的保護(hù)、多優(yōu)先級任務(wù)等。

        2 Cortex-M3芯片內(nèi)核

        Cortex-M3是ARM公司開發(fā)的CPU內(nèi)核。Cortex-M3是一個(gè)32位處理器內(nèi)核,內(nèi)部的數(shù)據(jù)路徑是32位,寄存器是32位,存儲器接口是32位。Cortex-M3采用哈佛架構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,取指與數(shù)據(jù)訪問可以同時(shí)進(jìn)行。

        Cortex-M3支持小端模式、大端模式。Cortex-M3內(nèi)核通過接口總線的形式掛載了儲存器、外設(shè)、中斷等組成一個(gè)MCU,如圖1所示:

        Cortex-M3預(yù)先定義了“粗線條的”存儲器映射。通過把片上外設(shè)的寄存器映射到外設(shè)區(qū),就可以簡單地以訪問內(nèi)存的方式來訪問這些外設(shè)的寄存器,從而控制外設(shè)的工作。各個(gè)分區(qū)存儲器映射如圖2所示:

        3 任務(wù)核心機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)

        3.1任務(wù)切換

        任務(wù)切換又叫上下文切換,當(dāng)操作系統(tǒng)需要運(yùn)行其他任務(wù)時(shí),操作系統(tǒng)首先會保存和當(dāng)前任務(wù)相關(guān)的寄存器的內(nèi)容到當(dāng)前任務(wù)的棧中,然后從將要加載的任務(wù)的棧中取出之前保存的全部寄存器的內(nèi)容并加載到相關(guān)的寄存器中,從而繼續(xù)運(yùn)行被加載的任務(wù)[7]。

        構(gòu)建一個(gè)最小的兩個(gè)任務(wù)切換運(yùn)行的小系統(tǒng),目的是理解RTOS任務(wù)切換的核心原理[8]。有兩個(gè)任務(wù),分別執(zhí)行taskIEn-try和task2Entry。功能是分別對相應(yīng)的變量進(jìn)行周期性置0置1,每次完成從1->0的切換后,自動切換至另一個(gè)任務(wù)中運(yùn)行。這樣便實(shí)現(xiàn)了兩個(gè)任務(wù)交替性地使用一段時(shí)間CPU,對相應(yīng)變量值修改。仿真結(jié)果如圖3所示:

        3.2 任務(wù)時(shí)間片的實(shí)現(xiàn)

        構(gòu)建一個(gè)最小的基于時(shí)間片切換的任務(wù)系統(tǒng),目的是理解RTOS時(shí)間片切換的核心原理。在上個(gè)任務(wù)切換實(shí)現(xiàn)的基礎(chǔ)上中,改用SysTick定時(shí)器來使taskl和task2均等的占用CPU,即配置其多久切換一次。配置SysTick定時(shí)器:

        void tSetSysTickPeriod(uint32_t ms)

        SysTick->LOAD= ms*SystemCoreClock/1000 -1;

        NVIC_SetPriority

        (SysTick_IRQn,

        (1《_NVIU1RIO_BITS) -1);

        SysTick->VAL=0;

        SysTick->CTRL= SysTick_CTRL_CLKSOURCE_Msk l

        SysTick_CTRL_TICKINT_Msk f

        SYsTick_CTRL_ENABLE_Msk;

        }

        3.3臨界區(qū)和保護(hù)鎖的保護(hù)

        3.3.1臨界區(qū)的保護(hù)

        使用關(guān)中斷保護(hù)臨界區(qū),由于共享資源的訪問存在于任務(wù)與任務(wù),任務(wù)與中斷ISR之間,那么只需要防止任務(wù)在訪問共享資源時(shí)切換到其它任務(wù)或防止中斷發(fā)生。

        uint32_t tTaskEnterCritical (void)//進(jìn)入臨界區(qū) 返回進(jìn)入之前的臨界區(qū)狀態(tài)值

        {

        uint32_t primask= _get_PRIMASKO;

        _disable_irq0;

        //CPSID I

        return primask;

        //退出臨界區(qū),恢復(fù)之前的臨界區(qū)狀態(tài)status進(jìn)入臨界區(qū)之前的CPU返回進(jìn)入臨界區(qū)之前的臨界區(qū)狀態(tài)值

        void tTaskExitCritical (uint32_t status){

        一set_PRIMASK(status);

        3.3.2 調(diào)度鎖保護(hù)

        調(diào)度鎖保護(hù)能在多個(gè)任務(wù)共享資源時(shí)進(jìn)行保護(hù),其工作原理是上鎖時(shí),禁止任務(wù)切換。無論何種情況,即使時(shí)間片用完了,仍運(yùn)行原任務(wù),直至解鎖時(shí),才允許任務(wù)切換。

        1)初始化調(diào)度鎖計(jì)數(shù)器:

        schedLockCount=0:

        2)禁止任務(wù)調(diào)度(調(diào)度器上鎖):

        uint32_t status= tTaskEnterCritical0;

        if (schedLockCount< 255)

        schedLockCount++;

        tTaskExitCritical(status);

        3)允許任務(wù)調(diào)度(調(diào)度器解鎖):

        uint32_t status= tTaskEnterCritical0;

        if (schedLockCount>01

        if (--schedLockCount==01

        ‘TaskSched0;

        tTaskExitCritical(status);

        3.4 多優(yōu)先級任務(wù)

        任務(wù)數(shù)量無限,而資源有限。當(dāng)多個(gè)任務(wù)在等待同一資源或事件時(shí),如果資源或事件不能在任務(wù)間共享,應(yīng)該由哪個(gè)任務(wù)來處理?根據(jù)實(shí)際應(yīng)用特點(diǎn),為任務(wù)指定優(yōu)先級。優(yōu)先級更高的任務(wù),具備對CPU、事件和資源的優(yōu)先處理權(quán)和占有權(quán)。

        RTOS維護(hù)一個(gè)就緒表,指明哪些優(yōu)先級的任務(wù)等待占用CPU運(yùn)行,每個(gè)表項(xiàng)對應(yīng)一個(gè)任務(wù),對應(yīng)一種優(yōu)先級。為了便于快速找到優(yōu)先級更高的任務(wù),使用了就緒位圖,如圖4所示:

        3.5 任務(wù)的實(shí)現(xiàn)

        為使系統(tǒng)完整,加入任務(wù)掛起與喚醒、任務(wù)刪除和任務(wù)狀態(tài)查詢等接口實(shí)現(xiàn)。未創(chuàng)建:只定義了任務(wù)代碼,未調(diào)用tTas-klnit0初始化。就緒:任務(wù)已經(jīng)創(chuàng)建,且等待機(jī)會占用CPU運(yùn)行。運(yùn)行:任務(wù)正在占用CPU運(yùn)行代碼。延時(shí):任務(wù)調(diào)用了tTaskDelay0延時(shí)。掛起:暫停任務(wù)運(yùn)行。

        進(jìn)入臨界區(qū):

        uint32_t status= tTaskEnterCritical0;

        不允許對已經(jīng)進(jìn)入延時(shí)狀態(tài)的任務(wù)掛起:iff! (task->state&TINYOS_TASK—STATE_DELAYED)

        增加掛起計(jì)數(shù),僅當(dāng)該任務(wù)被執(zhí)行第一次掛起操作時(shí),才考慮是否要執(zhí)行任務(wù)切換操作:

        if (++task->suspendCount<=1)

        task->state l= TINYOS_TASK—STATE_SUSPEND;

        tTaskSchedUnRdy(task);

        if (task==currentTask)

        tTaskSched0;

        4 結(jié)束語

        本文的解決方案和實(shí)施過程成功開發(fā)了一個(gè)小型的嵌入式實(shí)時(shí)操作系統(tǒng),解決了RTOS任務(wù)核心機(jī)制。經(jīng)測試,實(shí)現(xiàn)了任務(wù)管理的高可用性。

        RTOS系統(tǒng)具有更好的事件實(shí)時(shí)處理機(jī)制,當(dāng)事件發(fā)生時(shí),或有更高優(yōu)先級的任務(wù)需要運(yùn)行時(shí),均能快速切換過去,做更重要更緊急的事情,解決了前后臺實(shí)時(shí)性不能保證的缺點(diǎn);有通用的任務(wù)管理框架,開發(fā)不同項(xiàng)目時(shí)可重復(fù)利用,簡化了開發(fā)難度,更加接近于人處理問題的思考方式,解決了前后臺系統(tǒng)強(qiáng)迫人按照機(jī)器的工作順序方式思考編碼的缺陷。

        參考文獻(xiàn):

        [1]王穎潔,周寬久,李明楚.實(shí)時(shí)嵌入式系統(tǒng)的WCET分析與預(yù)測研究綜述[J].計(jì)算機(jī)科學(xué),2019,46(S1):16-22.

        [2]孫濤,楊建勛,羅軍,等.通用操作系統(tǒng)安全保護(hù)技術(shù)研究與實(shí)現(xiàn)[J].信息系統(tǒng)工程,2020(5):59-61,63.

        [3]楊鴻珍,王云燁,吳建偉,等?;谌斯ぶ悄艿母呖尚徘度胧讲僮飨到y(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2020,43(16):153-155,158.

        [4]丁如藝,張激,李嘉偉.嵌入式系統(tǒng)平臺抽象層設(shè)計(jì)與接口實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2020,29(3):108-113.

        [5]吳利生.基于ARM Cortex-A9 MPCore嵌入式多核操作系統(tǒng)內(nèi)核研究與實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2020(3):134-135.

        [6]黃忠建,代紅兵,王蕾.嵌入式Forth操作系統(tǒng)實(shí)時(shí)調(diào)度算法研究[J].計(jì)算機(jī)應(yīng)用研究,2019,36(9):2700-2703,2721.

        [7]劉進(jìn)英,董濤.基于嵌入式操作系統(tǒng)RTX-51的單片機(jī)多任務(wù)編程[J].電子技術(shù)與軟件工程,2019(23):235-236.

        [8]代紅兵,周永錄,安紅萍,等.嵌入式Forth虛擬機(jī)架構(gòu)的多任務(wù)調(diào)度算法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2019,36(2):472-475,485.

        【通聯(lián)編輯:謝媛媛】

        作者簡介:方敏(1981-),女,四川眉山人,講師,碩士,研究方向?yàn)檐浖こ獭?/p>

        av是男人的天堂免费| 午夜三级a三级三点在线观看| 亚洲av无码成人精品国产| 中文字幕丰满伦子无码 | 国产精品18禁久久久久久久久| 淫妇日韩中文字幕在线| 一区二区三区亚洲视频| 中文字幕乱码高清完整版| 国产农村妇女高潮大叫| 一区二区三无码| 久久亚洲中文字幕伊人久久大| 亚洲中文字幕无码天然素人在线| 亚洲 欧美 激情 小说 另类| 999久久久免费精品国产牛牛| 国产极品大秀在线性色| 免费无码精品黄av电影| 丰满五十六十老熟女hd| 无码无在线观看| 亚洲国产一区二区三区精品| 最爽无遮挡行房视频| 性导航app精品视频| 国产精品一区一区三区| 免费无码专区毛片高潮喷水 | 毛片av中文字幕一区二区| 在线a亚洲视频播放在线播放| 欧美精品v国产精品v日韩精品| 中国大陆一级毛片| 一区=区三区国产视频| 丰满熟妇乱又伦精品| 男人进去女人爽免费视频| 中文字幕亚洲无线码在一区| 一级做a爱视频在线播放| 中文字幕成人乱码熟女精品国50| 日韩精品专区av无码| 一本色综合亚洲精品蜜桃冫| 蜜桃一区二区免费视频观看| 福利视频一区二区三区| 色婷婷亚洲一区二区三区| 成人欧美一区二区三区白人| 中文字幕久久熟女人妻av免费| 成人av毛片免费大全|