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

        ?

        帶內(nèi)存保護(hù)的FreeRTOS在TMS570上的移植※

        2015-07-03 03:33:50胡麗輝張建泉李楠席隆
        關(guān)鍵詞:堆棧任務(wù)調(diào)度內(nèi)核

        胡麗輝,張建泉,李楠,席隆

        (1.中國科學(xué)院空間應(yīng)用工程與技術(shù)中心,北京100094;2.中國科學(xué)院大學(xué))

        引 言

        本文以不帶內(nèi)存保護(hù)的嵌入式實時操作系統(tǒng)FreeRTOS為研究對象,在TMS570處理器平臺上移植了帶內(nèi)存保護(hù)功能的操作系統(tǒng)FreeRTOS-MPU,不僅可以保護(hù)RTOS內(nèi)核代碼不被任務(wù)破壞并防止內(nèi)核數(shù)據(jù)崩潰,也可以保護(hù)系統(tǒng)外設(shè)不被任務(wù)無意地修改,確保檢測出任務(wù)堆棧溢出[2],從而提高系統(tǒng)的可靠性。

        1 FreeRTOS-MPU簡介

        1.1 FreeRTOS簡介

        FreeRTOS操作系統(tǒng)是一個開源、輕型、簡單、可移植、可裁減的免費實時操作系統(tǒng),能夠很好地移植到各種體系結(jié)構(gòu)的微型處理器[3]。FreeRTOS僅僅包含了任務(wù)調(diào)度、任務(wù)管理、時間管理、內(nèi)存管理和任務(wù)間的通信和同步等基本功能[4],不提供輸入/輸出管理、文件系統(tǒng)、網(wǎng)絡(luò)等額外的服務(wù),用戶可根據(jù)需要自行實現(xiàn)。

        1.2 MPU概覽

        MPU(Memory Protection Unit,內(nèi)存保護(hù)單元)是Cortex-R4F內(nèi)核的一個組件,可以用來捕獲非法或者危險的內(nèi)存訪問。通過MPU可以設(shè)置保護(hù)區(qū)域的屬性和訪問權(quán)限,當(dāng)處理器訪問內(nèi)存的一個區(qū)域時,MPU比較該區(qū)域的訪問權(quán)限和當(dāng)時的處理器模式。如果請求符合區(qū)域訪問標(biāo)準(zhǔn),則MPU允許內(nèi)核讀/寫主存;否則,MPU產(chǎn)生一個異常信號。

        MPU在執(zhí)行其功能時,是以region為單位的。一個region其實就是一段連續(xù)的地址,只是它們的位置和范圍都要滿足一些限制(對齊方式,最小容量等)。Cortex-R4的MPU共支持8個regions,還允許把每個region進(jìn)一步劃分成更小的子region。此外,還允許啟用一個背景region(即沒有MPU時的全部地址空間),不過它只能由特權(quán)級享用。在啟用MPU后,就不得再訪問定義之外的地址區(qū)間,也不得訪問未經(jīng)授權(quán)的region。否則,將以“訪問違例”處理,觸發(fā)MPU錯誤。MPU定義的regions可以相互交迭。如果某塊內(nèi)存落在多個region中,則訪問屬性和權(quán)限將由編號最大的region來決定[5]。

        MPU可以通過下列方法提高系統(tǒng)的可靠性[6]:

        ◆阻止應(yīng)用程序破壞操作系統(tǒng)使用的代碼和數(shù)據(jù);

        ◆阻止一個任務(wù)訪問其他任務(wù)的數(shù)據(jù)區(qū),從而把任務(wù)隔開;

        ◆可以把關(guān)鍵數(shù)據(jù)區(qū)設(shè)置為只讀,從根本上消除了被破壞的可能;

        ◆檢測意外的存儲訪問,如堆棧溢出、數(shù)組越界等。

        1.3 FreeRTOS-MPU簡介

        FreeRTOS-MPU操作系統(tǒng)是在FreeRTOS操作系統(tǒng)的基礎(chǔ)上加入內(nèi)存保護(hù)模塊而來的,其特點如下[2]:

        ①可以創(chuàng)建任務(wù)運行在特權(quán)模式下或者用戶模式下,用戶模式下的任務(wù)只能訪問它們自己的堆棧和最多3個用戶自定義的內(nèi)存區(qū)域,在任務(wù)被創(chuàng)建時用戶自定義的內(nèi)存區(qū)域被指定給任務(wù),但是在運行時可以重新配置;

        ②用戶模式下的任務(wù)不能共享數(shù)據(jù)存儲,但是用戶模式下的任務(wù)可以使用標(biāo)準(zhǔn)隊列和信號量機制來傳遞信息;

        ③特權(quán)模式下的任務(wù)可以自己進(jìn)入用戶模式,但是一旦進(jìn)入用戶模式,它就不能再回到特權(quán)模式;

        ④位于Flash區(qū)域的FreeRTOS API只有在進(jìn)入特權(quán)模式下才能訪問;

        ⑤位于RAM區(qū)域的RTOS內(nèi)核維護(hù)的數(shù)據(jù)只有在進(jìn)入特權(quán)模式下才能訪問;

        ⑥系統(tǒng)外設(shè)只有在處理器進(jìn)入特權(quán)模式下才能訪問,標(biāo)準(zhǔn)外設(shè)可以被任何代碼訪問,也可通過一個用戶自定義的內(nèi)存區(qū)域來顯式地保護(hù)。

        與沒有內(nèi)存保護(hù)模塊的標(biāo)準(zhǔn)FreeRTOS操作系統(tǒng)相比,F(xiàn)reeRTOS-MPU可以用來保護(hù)RTOS內(nèi)核代碼不被任務(wù)破壞并防止內(nèi)核數(shù)據(jù)崩潰,也可以保護(hù)系統(tǒng)外設(shè)不被任務(wù)無意地修改,確保檢測出任務(wù)堆棧溢出,從而提高了軟件的可靠性。當(dāng)然,不足之處是引入內(nèi)存保護(hù)模塊后,操作系統(tǒng)運行需要的RAM、ROM資源會增加,上下文切換時還需要進(jìn)行MPU相關(guān)的設(shè)置,因此任務(wù)切換時間增加。

        2 TMS570硬件架構(gòu)簡介

        TMS570LS系列是TI公司推出的基于ARM Cortex-R4F處理器的鎖步雙內(nèi)核微處理器。本系統(tǒng)使用的TMS570LS20216最高運行頻率達(dá)到160 MHz,配置2 MB帶ECC的內(nèi)置Flash和160 KB帶ECC的RAM,帶有TI核心安全策略,其可提供雙核鎖步CPU架構(gòu)、硬件PBIST、MPU和片上時鐘及電壓監(jiān)控等一些關(guān)鍵功能的安全特性來滿足汽車電子、鐵路和航天應(yīng)用的需求[7]。

        3 FreeRTOS-MPU操作系統(tǒng)的移植過程

        本移植針對TMS570LS系列芯片,使用的編譯軟件是Code Composer Studio v5.3.0,操作系統(tǒng)版本是 V7.4.0,由于FreeRTOS官方提供的demo中沒有在TMS570上實現(xiàn)MPU功能,因此本文移植主要參考的是針對ARM Cortex-M3實現(xiàn)的FreeRTOS-MPU,移植的主要內(nèi)容集中在3個文件:portmacro.h,port.c,portasm.asm。

        其中,portmacro.h文件主要是關(guān)于編譯器相關(guān)的數(shù)據(jù)類型的定義、CPU架構(gòu)相關(guān)的定義、臨界區(qū)管理函數(shù)的宏定義和函數(shù)聲明等。port.c文件中包含了與移植有關(guān)的C函數(shù),包括堆棧初始化函數(shù)、任務(wù)調(diào)度器啟動函數(shù)、設(shè)置默認(rèn)MPU函數(shù)等。portasm.asm文件主要實現(xiàn)內(nèi)核任務(wù)切換處理,包括上下文保存和恢復(fù)、啟動第一個任務(wù)等。以下主要針對關(guān)鍵模塊的移植實現(xiàn)做詳細(xì)的分析與說明。

        3.1 堆棧初始化

        堆棧的初始化是嵌入式操作系統(tǒng)移植的關(guān)鍵,是針對硬件結(jié)構(gòu)以及堆棧保存特點進(jìn)行的設(shè)置。堆棧初始化函數(shù)主要作用是初始化任務(wù)的堆棧結(jié)構(gòu),定義堆棧的上下文內(nèi)容,將所有的寄存器值保存到堆棧中,使其看起來像剛剛發(fā)生過中斷一樣。堆棧保存格式如圖1所示。

        圖1 任務(wù)堆棧結(jié)構(gòu)

        在堆棧的結(jié)構(gòu)中,第一個入棧的是任務(wù)函數(shù)的起始地址,SP保存的是任務(wù)堆棧棧頂,然后預(yù)留一定空間給寄存器R12~R1,R0則保存?zhèn)鬟f給任務(wù)的參數(shù),最后設(shè)置CPSR和ul UsingFPU標(biāo)志位。

        3.2 任務(wù)調(diào)度器的啟動

        在創(chuàng)建任務(wù)之后將進(jìn)行任務(wù)調(diào)度,首先配置MPU,然后設(shè)置并啟動系統(tǒng)的時鐘節(jié)拍,初始化臨界區(qū)嵌套次數(shù)為0,最后啟動優(yōu)先級最高的就緒任務(wù)。具體程序如下:

        3.3 設(shè)置默認(rèn)的MPU

        FreeRTOS-MPU操作系統(tǒng)在任務(wù)調(diào)度器啟動時默認(rèn)配置了5個區(qū)域,配置的流程圖如圖2所示,配置完成后內(nèi)存區(qū)域分布如表1所列。

        圖2 MPU默認(rèn)配置流程圖

        3.4 初始化TCB中xMPUSettings成員

        在任務(wù)創(chuàng)建時,x Task CreateRestricted()會調(diào)用vPortStore Task MPUSettings()對 TCB的結(jié)構(gòu)體成員x MPU_SETTINGS x MPUSettings進(jìn)行初始化,初始化的結(jié)果根據(jù)創(chuàng)建任務(wù)時提供的參數(shù)不同而不同。如果創(chuàng)建任務(wù)時定義了區(qū)域,那么此函數(shù)的作用是初始化如下3個區(qū)域:區(qū)域4是任務(wù)堆棧區(qū)、5和6是用戶自定義區(qū)域。這3個區(qū)域只能被當(dāng)前任務(wù)訪問,見表2。

        表1 默認(rèn)配置的MPU區(qū)域

        表2 任務(wù)堆棧和用戶自定義區(qū)域

        如果創(chuàng)建任務(wù)時沒有定義區(qū)域,那么任務(wù)的MPU配置見表3,區(qū)域4是整個RAM區(qū),區(qū)域5是用戶堆棧區(qū),區(qū)域6無效。

        表3 無自定義區(qū)時MPU配置

        3.5 保存任務(wù)上下文

        此上下文的保存是按照進(jìn)入ISR中斷來編寫的,入棧順序是返回地址、用戶模式下的LR、R13-R0、SPSR,然后根據(jù)ulFPUContextConst的值確定任務(wù)是否維護(hù)FPU上下文。由于在初始化堆棧時默認(rèn)不使用FPU,所以無需保存FPU上下文,最后把新的任務(wù)棧頂賦值給任務(wù)TCB結(jié)構(gòu)體的第一個成員。保存任務(wù)上下文核心代碼如下:

        3.6 恢復(fù)任務(wù)上下文

        根據(jù)TCB中任務(wù)的MPU設(shè)置來設(shè)置內(nèi)存區(qū)域4、5和6,然后判斷FPU標(biāo)志位,由于沒有保存FPU上下文,所以不需要恢復(fù),再次把SPSR、R0-R14出棧,最后修正LR的值,程序返回?;謴?fù)任務(wù)上下文流程圖如圖3所示。

        圖3 恢復(fù)任務(wù)上下文流程圖

        任務(wù)代碼略——編者注。

        3.7 啟動第一個任務(wù)

        首先把CPU工作模式變?yōu)楣芾砟J?,然后修?fù)之前在pxPortInitialiseStack函數(shù)中入棧的寄存器值,程序自動跳到第一個任務(wù)去執(zhí)行。

        4 移植測試

        由于本文移植的是FreeRTOS-MPU操作系統(tǒng),要想驗證是否移植成功,需要進(jìn)行兩方面的測試:首先測試任務(wù)之間能否正確地調(diào)度與切換,然后測試MPU能否實現(xiàn)對地址空間的保護(hù)。硬件測試平臺選用的是Keil公司生產(chǎn)的MCBTMS570開發(fā)板。

        4.1 任務(wù)調(diào)度測試

        程序運行的結(jié)果是兩個LED燈不斷的閃爍,時間間隔是500 ms,因此任務(wù)能正常調(diào)度。

        4.2 MPU測試

        在main函數(shù)中用x TaskCreateRestricted()創(chuàng)建兩個用戶模式下的任務(wù),這兩個任務(wù)各定義一個region,在任務(wù)函數(shù)中分別訪問內(nèi)核數(shù)據(jù)、內(nèi)核代碼、另一個任務(wù)自定義的region和另一個任務(wù)堆棧。

        實驗結(jié)果表明MPU可阻止應(yīng)用程序破壞操作系統(tǒng)使用的代碼和數(shù)據(jù)、阻止一個任務(wù)訪問其他任務(wù)的數(shù)據(jù)區(qū)、阻止用戶模式任務(wù)訪問系統(tǒng)外設(shè)、阻止任務(wù)訪問未定義區(qū)域。由此可見,用戶模式下的任務(wù)僅僅只能訪問它們自己的堆棧和用戶自定義的內(nèi)存區(qū)域。

        綜合上述兩個測試,表明FreeRTOS-MPU操作系統(tǒng)移植成功。

        結(jié) 語

        FreeRTOS-MPU操作系統(tǒng)利用內(nèi)部的內(nèi)存保護(hù)模塊能有效地保護(hù)內(nèi)核代碼和數(shù)據(jù),實現(xiàn)任務(wù)之間的隔離與保護(hù),提高了系統(tǒng)可靠性,因此本移植可以應(yīng)用在對可靠性要求高的行業(yè)(如航天領(lǐng)域等)。

        編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

        [1]程勝,蔡銘.航天高可靠嵌入式實時操作系統(tǒng)原理與技術(shù)[M].北京:中國宇航出版社,2012:195.

        [2]Memory Protection Unit Support[EB/OL].[2014-08].http://www.freertos.org/FreeRTOS-MPU-memory-protection-unit.html.

        [3]The FreeRTOS Project[EB/OL].[2014-08].http://www.freertos.org.

        [4]USING THE FREERTOS REAL TIME KERNEL[EB/OL].[2014-08].http://www.docin.com/p-673371875.html.

        [5]ARM Limited.Cortex-R4 and Cortex-R4F Technical Reference Maunal[EB/OL].[2014-08].http://www.arm.com.

        [6]Joseph Yiu.Cortex-M3權(quán)威指南[M].宋巖,譯.北京:北京航空航天大學(xué)出版社,2009:187-204.

        [7]Overview for TMS570 ARM Cortex-R[EB/OL].[2014-08].http://www.ti.com/lsds/ti/microcontroller/safety_mcu/tms570_arm_cortex-r4/overview.page.

        [8]ARM Limited.ARM Architecture Reference Manual ARM V7-A and ARM V7-R edition[EB/OL].[2014-08].http://www.arm.com.

        猜你喜歡
        堆棧任務(wù)調(diào)度內(nèi)核
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于改進(jìn)NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護(hù)機制研究
        基于時間負(fù)載均衡蟻群算法的云任務(wù)調(diào)度優(yōu)化
        嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計*
        基于堆棧自編碼降維的武器裝備體系效能預(yù)測
        云計算環(huán)境中任務(wù)調(diào)度策略
        云計算中基于進(jìn)化算法的任務(wù)調(diào)度策略
        亚洲av丰满熟妇在线播放| 久久婷婷国产精品香蕉| 国产丝袜高跟美腿一区在线| 亚洲第一区二区精品三区在线| 天天夜碰日日摸日日澡性色av| 亚洲av综合色区无码一二三区 | 羞涩色进入亚洲一区二区av| 亚洲国产色一区二区三区| 天天天天躁天天爱天天碰2018 | 国产三级视频在线观看视主播| 大香蕉青青草视频在线| 国产麻豆精品精东影业av网站| 亚洲日韩精品欧美一区二区| 亚洲av影院一区二区三区四区| 精品国产av一区二区三区| 无码乱肉视频免费大全合集| 亚洲欧美日韩精品久久亚洲区| 久久青草亚洲AV无码麻豆| 国家一级内射高清视频| 偷看农村妇女牲交| 免费男人下部进女人下部视频| 欧美精品一本久久男人的天堂| 成人一区二区三区国产| 人人妻人人狠人人爽| 国产高潮刺激叫喊视频| 亚洲一区二区国产精品视频| 成人大片免费观看视频| 亚洲熟女一区二区三区| 在线观看av手机网址| 国产又湿又爽又猛的视频 | 91精品国产91久久久无码95| 北岛玲亚洲一区二区三区| 精品亚洲成a人在线观看| 亚洲国产精品久久亚洲精品| 色婷婷精品综合久久狠狠| 成人大片免费在线观看视频| 精品免费久久久久久久| 久久久久久久中文字幕| 一区二区三区成人av| 中国妇女做爰视频| 亚洲国产精品尤物yw在线观看|