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

        ?

        基于ARM+FPGA平臺的硬件實時操作系統(tǒng)※*

        2015-08-15 06:28:24黃強白永斌黃麒睿周笑萌
        關鍵詞:信號量列表寄存器

        黃強,白永斌,黃麒睿,周笑萌

        (深圳大學計算機與軟件學院,深圳518060)

        基于ARM+FPGA平臺的硬件實時操作系統(tǒng)※*

        黃強,白永斌,黃麒睿,周笑萌

        (深圳大學計算機與軟件學院,深圳518060)

        目前嵌入式操作系統(tǒng)的應用越來越廣泛,不僅增強了系統(tǒng)的可靠性,而且提高了開發(fā)效率。但是,在對實時性要求較高的應用中,對于基于軟件實現(xiàn)的RTOS,單純依靠改進算法已不能使其實時性得到更大的提高。而硬件電路獨立于處理器運行,不占用處理器的處理時間,所節(jié)省的時間可用于執(zhí)行任務程序,所以基于硬件實現(xiàn)的操作系統(tǒng)可以使它的實時性和可靠性顯著提高。

        時間觸發(fā)/事件觸發(fā);抖動;硬件調(diào)度器;HWOS

        引言

        從20世紀80年代,國際已經(jīng)有一些IT組織和公司開始進行商用嵌入式實時操作系統(tǒng)和專業(yè)實時操作系統(tǒng)的研究。軟件實現(xiàn)的實時操作系統(tǒng),國外有 VxWorks、LynxOS、嵌入式Linux、TRON和μC/OS-II。

        國外的研究目前主要集中在硬件操作系統(tǒng)的局部模塊,基于整體的硬件實時操作系統(tǒng)設計和實現(xiàn)方面的研究比較少,而實時操作系統(tǒng)的各個模塊之間有著復雜的信息交互和聯(lián)系。因此,實時操作系統(tǒng)的最優(yōu)軟硬件劃分以及實現(xiàn)一個硬件實時操作系統(tǒng)IP核值得深入研究。

        國內(nèi)的軟件實時操作系統(tǒng)主要有兩類:一類是中國自主研發(fā)的實時操作系統(tǒng),比如開源的RT-Thread、電子科大和科銀公司開發(fā)的Delta OS等;另一類是基于國外操作系統(tǒng)二次開發(fā),比如中科紅旗Linux、深圳藍點Linux。

        但是國內(nèi)目前的研究集中在任務調(diào)度和中斷處理的硬件化上面,任務間的通信和同步還有待研究。

        鑒于國內(nèi)和國外的研究現(xiàn)狀,硬件實時操作系統(tǒng)只是實現(xiàn)了實時操作系統(tǒng)的一部分,這里設計的硬件實時操作系統(tǒng),可以替代傳統(tǒng)的小型嵌入式實時操作系統(tǒng),比如μC/OS、RTX、FreeRTOS等。

        1 技術方案

        硬件實時操作系統(tǒng)是在ARM+FPGA的平臺上實現(xiàn)的,利用ARM的FSMC總線接口實現(xiàn)ARM和FPGA的連接,可以認為FPGA就是掛在總線上的一個外設,用寄存器的方式配置硬件實時操作系統(tǒng):在FPGA上實現(xiàn)搶占式調(diào)度器,以及基于此調(diào)度器的任務管理、信號量、消息郵箱、消息隊列、互斥信號量、事件標志組。在ARM上配置寄存器,執(zhí)行任務以及實現(xiàn)任務的上下文切換。這樣基本已經(jīng)完成一個小型嵌入式實時操作系統(tǒng)所需的所有組件。

        硬件實時操作系統(tǒng)的基本配置是:同時支持創(chuàng)建8個任務、8個信號量、8個消息郵箱、8個消息隊列、8個互斥信號量、8個事件標志組,而想要支持更多的組件和任務,只需在FPGA上做擴展。圖1是硬件實時操作系統(tǒng)的狀態(tài)切換圖,圖2是硬件實時操作系統(tǒng)的主體框圖。

        圖1 硬件實時操作系統(tǒng)狀態(tài)切換圖

        圖2 硬件實時操作系統(tǒng)主體框圖

        1.1 搶占式調(diào)度器

        實現(xiàn)搶占式調(diào)度器要抓住3個關鍵點:

        ①當一個任務提交信號量,發(fā)送消息給一個高優(yōu)先級的任務時,當前的任務就會被停止,去執(zhí)行高優(yōu)先級的任務;

        ②每個時鐘節(jié)拍中斷,如果有高優(yōu)先級的任務就緒,則高優(yōu)先級任務會搶占低優(yōu)先級的任務;

        ③當ISR提交信號量或發(fā)送消息給一個更高優(yōu)先級的任務,中斷返回時,不會返回到當前任務,而是返回到高優(yōu)先級任務。

        FPGA實現(xiàn)搶占式調(diào)度器的一個核心工作就是快速從任務就緒列表里查找到需要執(zhí)行的最高優(yōu)先級任務,這里采用優(yōu)先級編碼器來實現(xiàn),方法略——編者注。

        這里要特別注意一點,空閑任務是永遠就緒的,其優(yōu)先級最低,沒有其他任務執(zhí)行時,就執(zhí)行空閑任務。

        針對此硬件實時操作系統(tǒng),ARM上只需做好以下兩點:

        ①任務級任務切換,主要是實現(xiàn)高優(yōu)先級向低優(yōu)先級的任務切換;

        ②中斷級任務切換,在中斷退出的時候判斷是否有更高優(yōu)先級的任務就緒,如果有,就切換到高優(yōu)先級任務。

        1.2 任務管理

        任務管理部分主要實現(xiàn)任務的延時時間設置、任務掛起、任務恢復3個功能。對寄存器的描述略——編者注。

        在FPGA部分通過設置Task_REG8=1可啟動任務管理,這里每個任務在FPGA上的實現(xiàn)都是一個單獨的進程,有助于充分發(fā)揮硬件實時操作系統(tǒng)的性能,而不是將所有的任務放到一個進程里實現(xiàn)。

        ARM部分只需簡單地設置寄存器,就可完成對任務的設置。配置了任務寄存器以后,F(xiàn)PGA上相應的任務管理就會按照配置方式執(zhí)行,ARM端讀取HW_REG3寄存器就可以得到當前需要執(zhí)行的最高優(yōu)先級任務。

        ①任務掛起,也就是將任務從就緒列表中刪除

        Task_REG3=0; //設置任務0

        Task_REG2=0xffff; //將任務掛起

        ②任務恢復,也就是將任務加到就緒列表中

        Task_REG3=0; //設置任務0

        Task_REG2=0; //任務恢復

        1.3 信號量

        信號量是為了給共享資源建立一個標志,該標志表示該信號量共享資源的占用情況。寄存器描述略——編者注。

        在FPGA信號量的實現(xiàn)中,硬件實時操作系統(tǒng)除了提供信號量所需的調(diào)度功能外,還提供信號量等待列表中最高優(yōu)先級任務的查找,采用優(yōu)先級編碼器實現(xiàn),ARM端讀取寄存器Sem_REG4得到等待列表中需要執(zhí)行的最高優(yōu)先級任務。

        ARM部分主要提供以下3個函數(shù),用于信號量寄存器的初始化和實現(xiàn):

        void OSSemCreate(uint16_t ucSemID,uint16_t uiSemCnt);//此函數(shù)用于初始化信號量

        void OSSemPost(uint16_t ucSemID);//此函數(shù)用于釋放信號量

        1.4 消息郵箱

        消息郵箱主要用于兩個任務間消息的傳遞。寄存器描述略——編者注。

        在FPGA部分消息郵箱的實現(xiàn)中,硬件實時系統(tǒng)除了提供消息郵箱所需的調(diào)度功能外,還提供消息郵箱等待列表中最高優(yōu)先級任務的查找,采用優(yōu)先級編碼器實現(xiàn),ARM端讀取寄存器Mbox_REG7得到等待列表中需要執(zhí)行的最高優(yōu)先級任務。

        ARM部分主要提供以下3個函數(shù),用于消息郵箱寄存器的初始化和實現(xiàn):

        void OSMboxCreate(uint16_t ucMboxID);//此函數(shù)用于初始化信號量,用于創(chuàng)建消息郵箱

        void*OSMboxPend(uint16_t uiMboxID,uint16_t uiMboxTime,uint16_t uiPendTaskID); //此函數(shù)用于請求消息郵箱

        OSMboxPost(uint16_t uiMboxID,void*Pmsg);//此函數(shù)用于發(fā)送消息

        1.5 消息隊列

        消息隊列的實現(xiàn)方法類似于消息郵箱,只不過對于消息隊列需要做一個環(huán)形隊列,用于消息的FIFO或LIFO,這里的環(huán)形隊列沒有在FPGA上實現(xiàn),用軟件實現(xiàn)會更加靈活一些,寄存器描述略——編者注。

        在FPGA部分消息隊列的實現(xiàn)中,硬件實時系統(tǒng)除了提供消息隊列所需的調(diào)度功能外,還提供消息隊列等待列表中最高優(yōu)先級任務的查找,采用優(yōu)先級編碼器實現(xiàn),ARM端讀取寄存器Q_REG6得到等待列表中需要執(zhí)行的最高優(yōu)先級任務。

        ARM部分主要提供以下3個函數(shù),用于消息隊列寄存器的初始化和實現(xiàn):

        void OSQCreate(void**start,uint16_t uiSize,uint16_t uiQueueID); //用于創(chuàng)建消息隊列

        void*OSQPend(uint16_t uiQID,uint16_t uiQTime,uint16_t uiPendTaskID); //用于請求消息隊列

        uint8_t OSQPost(uint16_t uiQID,void*Pmsg);//用于發(fā)送消息

        1.6 事件標志組

        在實際的應用中,常常需要根據(jù)多個信號量組合作用的結果來決定任務的運行方式,為此提供了事件標志組。寄存器描述略——編者注。

        在FPGA部分事件標志組的實現(xiàn)中,硬件實時系統(tǒng)除了提供事件標志組所需的調(diào)度功能外,還提供事件標志組等待列表中最高優(yōu)先級任務的查找,采用優(yōu)先級編碼器實現(xiàn),ARM端讀取寄存器Flag_REG1得到等待列表中需要執(zhí)行的最高優(yōu)先級任務。

        ARM部分主要提供以下3個函數(shù),用于事件標志組寄存器的初始化和實現(xiàn):

        void OSFlagCreate(uint16_t ucFlagID);//此函數(shù)用于初始化事件標志組

        void OSFlagPend(uint16_t uiFlagID,uint16_t uiFlagTime,uint16_t uiPendTaskID,uint16_t uiFlag); //此函數(shù)用于請求事件標志

        void OSFlagPost(uint16_t uiFlagID,uint16_t uiFlag);//此函數(shù)用于發(fā)送事件標志

        1.7 互斥信號量

        當?shù)蛢?yōu)先級的任務占有互斥信號量時,恰好此時高優(yōu)先級的任務要使用這個資源,那么硬件實時操作系統(tǒng)會提升低優(yōu)先級任務的優(yōu)先級,防止發(fā)生優(yōu)先級翻轉。寄存器描述略——編者注。

        在FPGA部分互斥信號量的實現(xiàn)中,硬件實時系統(tǒng)除了提供互斥信號量所需的調(diào)度功能外,還提供互斥信號量等待列表中最高優(yōu)先級任務的查找,采用優(yōu)先級編碼器實現(xiàn),ARM端讀取寄存器Mutex_REG8得到等待列表中需要執(zhí)行的最高優(yōu)先級任務。

        ARM部分主要提供以下3個函數(shù),用于互斥信號量寄存器的初始化和實現(xiàn):

        void OSMutexCreate(uint16_t uiMutexID,uint8_t uNewPrioty);//此函數(shù)用于初始化互斥信號量

        void OSMutexPend(uint16_t uiMutexID,uint16_t uiMutexTime,uint16_t ucPendTaskID); //此函數(shù)用于請求信號量

        void OSMutexPost(uint16_t uiMutexID);//此函數(shù)用于釋放信號量

        2 技術實施方式

        系統(tǒng)硬件平臺選用的是ARM+FPGA的方案,ARM采用的是ST公司STM32F103VET6,F(xiàn)PGA采用的是Altera公司的EP4CE6E22C8。

        2.1 ARM和FPGA的FSMC通信

        ARM和FPGA的硬件連接采用FSMC(Flexible Static Memory Controller)總線,如圖3所示。

        圖3 FPGA和ARM硬件連接圖

        FSMC支持多種存儲器的連接,比如SRAM、NAND Flash、NOR Flash和PSRAM,其與FPGA的通信采用類似SRAM的通信時序。

        FPGA讀和寫操作程序略——編者注。

        結合STM32手冊中寫操作的時序圖,F(xiàn)PGA端在片選信號NEx為低電平,讀信號NOE和寫信號NWE也是低電平的情況下完成對FPGA中數(shù)據(jù)的讀操作。這里采用類似串行通信的方法,設置每個ID號可以訪問8個16位的數(shù)據(jù)空間。舉例說明略——編者注。

        2.2 系統(tǒng)時鐘節(jié)拍中斷

        調(diào)度器的時鐘節(jié)拍是由FPGA產(chǎn)生的,每ms產(chǎn)生一次,ARM接收到FPGA發(fā)出的外部中斷信號以后,從外部中斷服務程序中讀取當前需要執(zhí)行的最高優(yōu)先級任務。

        2.3 硬件實時操作系統(tǒng)初始化和配置

        系統(tǒng)開始多任務以前,配置好每個任務的優(yōu)先級和堆??臻g,并配置好啟動任務。開始執(zhí)行任務寄存器初始化、信號量寄存器初始化、郵箱寄存器初始化、消息隊列寄存器初始化,過程略——編者注。

        2.4 任務程序設計、任務間同步和通信程序設計

        ①任務的程序設計與小型嵌入式實時操作系統(tǒng)是一樣的,需要設計成死循環(huán),在合適的地方加入任務的切換,防止阻塞低優(yōu)先級任務的執(zhí)行。

        static void AppTaskLEDb(void*p_arg){

        while(1){

        _Task_1();

        OSTaskSw(0,300);

        //延時300ms,并切換到別的任務執(zhí)行

        中斷級的任務切換在Cortex-M3內(nèi)核上同任務級的任務切換函數(shù)是一樣的。

        ②任務間的同步和通信機制在使用上與普通的小型嵌入式實時操作系統(tǒng)相同,以信號量為例:

        OSSemCreate(8,1); //創(chuàng)建二值信號量

        OS_SemPend(SemID,0xffff,Task_ID); //添加用戶程序

        OS_SemPost(SemID);

        3 硬件實時操作系統(tǒng)性能測試

        為了說明此硬件實時操作系統(tǒng)的性能,這里與μC/ OS-II、μC/OS-III、FreeRTOS、RTX以及embOS五個小型嵌入式實時操作系統(tǒng)做了對比,測試條件如下:①STM32F103VET6,Cortex-M3內(nèi)核,72 MHz;②軟件用MDK4.54,1級優(yōu)化,運行相同的任務;③大部分測試都是測10 000次,2 ms測試一次,然后求平均值。

        鑒于這些RTOS在使用上還是有些詫異的,不可能統(tǒng)一測試條件,這里盡量保證在同一條件下測試。測試結果如表1所列。

        結語

        通過測試,可以發(fā)現(xiàn)HWOS在某些方面相對于其他的RTOS表現(xiàn)不錯,但有些方面還有待改進。測試時曾用這個硬件實時操作系統(tǒng)提供的內(nèi)核服務,成功運行了UCGUI的多任務,說明HWOS具有較高的實用價值。

        表1 5種RTOS測試結果

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

        [1]Mooney III V,Lee J,Daleby A,et al.A Comparison of RTU Hardware RTOS with a Hardware/Software RTOS[C]//Design Automation Conferece(ASP_DAC'03),2003:683-688.

        [2]Mooney III V,Blough D M.A Hardware-Software Real-time Operating System Framework for SoCs[J].IEEE Design and Test of Computers Magazine,2002,19(6):44-52.

        [3]Melissa Vetromille,Luciano Ost,Cesara A.M.Marcon,et al. RTOS Scheduler Implemention in Hardare and Software for Real-time Application[C]//Proceedings of the Senventeenth IEEE International Workshop on Rapid System Protoryping (RSP 06),2006:163-168.

        [4]Nakano T,Andy U,Itabashi M,et al.Hardware Implemention of a Real-time Operating System[J].Proceedings of the Twelfth TRON Project International Symposium IEEE Computer Society Press,1995(11):34-32.

        [5]Nakano T,Andy U,Itabsshi M,et al.VLSI Implementation of a Real-time Operating System[J].Proceedings of the ASPDAC'97 Asia and South Pacific,1997(1):679-680.

        [6]侯覓.基于硬件的實時任務管理器的研究[D].上海:上海交通大學,2007:20-35.

        [7]王傳福,周學海.提高硬件多線程處理器性能的方法[J].計算機工程,2007,33(4):239-241.

        [8]Chen Tianshou,Wu Xinglian,Hu Wei.Research on OS-Aware Embedded Power-saving Architectre[C]//The 2rd Joint Conference on Harmonious Human Machine Environment,2006:52-59.

        Hardware Real-time Operating System Based on ARM and FPGA※

        Huang Qiang,Bai Yongbin,Huang Qirui,Zhou Xiaomeng

        (College of Computer Science and Software Engineering,Shenzhen University,Shenzhen 518060,China)

        Embedded operating system is used more and more widely,which not only improves the reliability of the system but also improves the development efficiency.The RTOS based on software is used for the applications that demand higher real-time,however the improved algorithm can not increase the real-time greatly.Because the hardware circuit is independent of the processor,and do not take up the processing time,so the saved time can execute the task program.The operating system based hardware implementation can make real-time and reliability improved significantly.

        time trigger/event trigger;jitter;hardware scheduler;HWOS

        TP368.2

        A

        薛士然

        2014-11-01)

        深圳市科技基礎研究項目JCYJ20120613112757342。

        猜你喜歡
        信號量列表寄存器
        巧用列表來推理
        基于STM32的mbedOS信號量調(diào)度機制剖析
        學習運用列表法
        擴列吧
        Lite寄存器模型的設計與實現(xiàn)
        計算機應用(2020年5期)2020-06-07 07:06:44
        Nucleus PLUS操作系統(tǒng)信號量機制的研究與測試
        測控技術(2018年8期)2018-11-25 07:42:12
        分簇結構向量寄存器分配策略研究*
        不含3-圈的1-平面圖的列表邊染色與列表全染色
        μC/OS- -III對信號量的改進
        Linux操作系統(tǒng)信號量機制的實時化改造
        手机av在线观看视频| 日本丰满熟妇bbxbbxhd| 激情另类小说区图片区视频区| 国产精品成人av电影不卡| 精品国产一区二区三区av新片| 五月色丁香婷婷网蜜臀av| 少妇做爰免费视频网站| 综合色天天久久| 日本熟妇免费一区二区三区| 国产禁区一区二区三区| 无码不卡av东京热毛片| 久久久久中文字幕无码少妇| 在线看片免费人成视久网不卡| 风韵丰满熟妇啪啪区99杏| 亚洲精品无码国产| 亚洲男人精品| 中文字幕国产精品专区| 精品福利一区二区三区蜜桃| 特级无码毛片免费视频尤物| 一本久到久久亚洲综合| 国产黄色一级到三级视频| 欧美激情视频一区二区三区免费 | 国产人在线成免费视频| 国产精品亚洲综合天堂夜夜| 99久久婷婷国产精品网| 国产a国产片国产| 999国产一区在线观看| 成人影院免费观看在线播放视频 | 亚洲色偷偷综合亚洲av伊人| 亚欧视频无码在线观看| 国产成人自拍视频播放| 小鲜肉自慰网站| jjzz日本护士| 白色白色白色在线观看视频| 国产69久久精品成人看| 国产精品亚洲综合一区在线观看 | 成人在线激情网| 玩弄丝袜美腿超短裙校花| 国产精品天天看天天狠| 在线观看国产成人av片| 97无码人妻一区二区三区蜜臀|