999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM+FPGA平臺的硬件實時操作系統※*

2015-08-15 06:28:24黃強白永斌黃麒睿周笑萌
單片機與嵌入式系統應用 2015年4期

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

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

基于ARM+FPGA平臺的硬件實時操作系統※*

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

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

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

時間觸發/事件觸發;抖動;硬件調度器;HWOS

引言

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

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

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

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

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

1 技術方案

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

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

圖1 硬件實時操作系統狀態切換圖

圖2 硬件實時操作系統主體框圖

1.1 搶占式調度器

實現搶占式調度器要抓住3個關鍵點:

①當一個任務提交信號量,發送消息給一個高優先級的任務時,當前的任務就會被停止,去執行高優先級的任務;

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

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

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

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

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

①任務級任務切換,主要是實現高優先級向低優先級的任務切換;

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

1.2 任務管理

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

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

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

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

Task_REG3=0; //設置任務0

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

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

Task_REG3=0; //設置任務0

Task_REG2=0; //任務恢復

1.3 信號量

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

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

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

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

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

1.4 消息郵箱

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

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

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

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

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

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

1.5 消息隊列

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

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

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

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

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

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

1.6 事件標志組

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

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

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

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

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

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

1.7 互斥信號量

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

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

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

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

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

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

2 技術實施方式

系統硬件平臺選用的是ARM+FPGA的方案,ARM采用的是ST公司STM32F103VET6,FPGA采用的是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手冊中寫操作的時序圖,FPGA端在片選信號NEx為低電平,讀信號NOE和寫信號NWE也是低電平的情況下完成對FPGA中數據的讀操作。這里采用類似串行通信的方法,設置每個ID號可以訪問8個16位的數據空間。舉例說明略——編者注。

2.2 系統時鐘節拍中斷

調度器的時鐘節拍是由FPGA產生的,每ms產生一次,ARM接收到FPGA發出的外部中斷信號以后,從外部中斷服務程序中讀取當前需要執行的最高優先級任務。

2.3 硬件實時操作系統初始化和配置

系統開始多任務以前,配置好每個任務的優先級和堆棧空間,并配置好啟動任務。開始執行任務寄存器初始化、信號量寄存器初始化、郵箱寄存器初始化、消息隊列寄存器初始化,過程略——編者注。

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

①任務的程序設計與小型嵌入式實時操作系統是一樣的,需要設計成死循環,在合適的地方加入任務的切換,防止阻塞低優先級任務的執行。

static void AppTaskLEDb(void*p_arg){

while(1){

_Task_1();

OSTaskSw(0,300);

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

中斷級的任務切換在Cortex-M3內核上同任務級的任務切換函數是一樣的。

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

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

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

OS_SemPost(SemID);

3 硬件實時操作系統性能測試

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

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

結語

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

表1 5種RTOS測試結果

編者注:本文為期刊縮略版,全文見本刊網站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。

主站蜘蛛池模板: 亚洲AV人人澡人人双人| 日本爱爱精品一区二区| 亚洲有无码中文网| 国产手机在线观看| 免费一级成人毛片| 国产噜噜噜视频在线观看| 好吊色妇女免费视频免费| 久热99这里只有精品视频6| 日韩视频免费| 日韩午夜福利在线观看| 婷婷六月色| 成年人久久黄色网站| 久久精品人人做人人爽电影蜜月| 亚洲一区网站| 国产欧美日韩资源在线观看| 国产精品区网红主播在线观看| 996免费视频国产在线播放| 国产成人亚洲毛片| 无码内射在线| 亚洲首页在线观看| 欧美一道本| 精品久久久无码专区中文字幕| 久久婷婷色综合老司机| 国产一区二区三区精品久久呦| 真人免费一级毛片一区二区| 亚洲天堂在线免费| 国产成人高清在线精品| 青青草国产在线视频| 在线观看国产小视频| 毛片免费试看| 91小视频在线| 成人在线观看不卡| 人妻丝袜无码视频| 亚洲无线国产观看| 一级毛片中文字幕| 日韩欧美国产成人| 91香蕉视频下载网站| 欧美成人综合视频| 国产第一页亚洲| 国产白浆在线| 国产成人精品一区二区三区| a级毛片免费播放| 亚洲国产成人自拍| 欧美一区二区精品久久久| 国产成人资源| 精品久久久久久成人AV| 精品一區二區久久久久久久網站| 国产91小视频在线观看| 午夜一区二区三区| 99在线观看免费视频| 精品少妇人妻无码久久| 婷婷色婷婷| 在线看片国产| 国产精品女人呻吟在线观看| 婷婷午夜影院| 亚洲aⅴ天堂| 亚洲福利片无码最新在线播放| 亚洲人精品亚洲人成在线| 538国产在线| 日韩 欧美 小说 综合网 另类| 免费人成网站在线观看欧美| 日韩无码一二三区| 国产99久久亚洲综合精品西瓜tv| 91精品国产一区| 青青草a国产免费观看| 日韩精品一区二区三区大桥未久 | 久操线在视频在线观看| 久久成人18免费| 伊人AV天堂| 国产精品微拍| 国产高清自拍视频| 久久精品人人做人人综合试看| 精品三级网站| 麻豆精品国产自产在线| 午夜人性色福利无码视频在线观看| 亚洲一区二区在线无码| 欧美日韩久久综合| 永久免费精品视频| 亚洲精品中文字幕无乱码| 国产va免费精品| 色天天综合久久久久综合片| 国产尤物在线播放|