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

?

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

2015-08-15 06:28黃強(qiáng)白永斌黃麒睿周笑萌
關(guān)鍵詞:信號(hào)量寄存器列表

黃強(qiáng),白永斌,黃麒睿,周笑萌

(深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院,深圳518060)

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

黃強(qiáng),白永斌,黃麒睿,周笑萌

(深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院,深圳518060)

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

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

引言

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

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

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

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

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

1 技術(shù)方案

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

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

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

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

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

實(shí)現(xiàn)搶占式調(diào)度器要抓住3個(gè)關(guān)鍵點(diǎn):

①當(dāng)一個(gè)任務(wù)提交信號(hào)量,發(fā)送消息給一個(gè)高優(yōu)先級(jí)的任務(wù)時(shí),當(dāng)前的任務(wù)就會(huì)被停止,去執(zhí)行高優(yōu)先級(jí)的任務(wù);

②每個(gè)時(shí)鐘節(jié)拍中斷,如果有高優(yōu)先級(jí)的任務(wù)就緒,則高優(yōu)先級(jí)任務(wù)會(huì)搶占低優(yōu)先級(jí)的任務(wù);

③當(dāng)ISR提交信號(hào)量或發(fā)送消息給一個(gè)更高優(yōu)先級(jí)的任務(wù),中斷返回時(shí),不會(huì)返回到當(dāng)前任務(wù),而是返回到高優(yōu)先級(jí)任務(wù)。

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

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

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

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

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

1.2 任務(wù)管理

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

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

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

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

Task_REG3=0; //設(shè)置任務(wù)0

Task_REG2=0xffff; //將任務(wù)掛起

②任務(wù)恢復(fù),也就是將任務(wù)加到就緒列表中

Task_REG3=0; //設(shè)置任務(wù)0

Task_REG2=0; //任務(wù)恢復(fù)

1.3 信號(hào)量

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

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

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

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

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

1.4 消息郵箱

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

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

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

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

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

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

1.5 消息隊(duì)列

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

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

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

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

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

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

1.6 事件標(biāo)志組

在實(shí)際的應(yīng)用中,常常需要根據(jù)多個(gè)信號(hào)量組合作用的結(jié)果來決定任務(wù)的運(yùn)行方式,為此提供了事件標(biāo)志組。寄存器描述略——編者注。

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

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

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

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

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

1.7 互斥信號(hào)量

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

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

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

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

void OSMutexPend(uint16_t uiMutexID,uint16_t uiMutexTime,uint16_t ucPendTaskID); //此函數(shù)用于請(qǐng)求信號(hào)量

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

2 技術(shù)實(shí)施方式

系統(tǒng)硬件平臺(tái)選用的是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支持多種存儲(chǔ)器的連接,比如SRAM、NAND Flash、NOR Flash和PSRAM,其與FPGA的通信采用類似SRAM的通信時(shí)序。

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

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

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

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

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

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

2.4 任務(wù)程序設(shè)計(jì)、任務(wù)間同步和通信程序設(shè)計(jì)

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

static void AppTaskLEDb(void*p_arg){

while(1){

_Task_1();

OSTaskSw(0,300);

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

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

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

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

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

OS_SemPost(SemID);

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

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

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

結(jié)語

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

表1 5種RTOS測試結(jié)果

編者注:本文為期刊縮略版,全文見本刊網(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]侯覓.基于硬件的實(shí)時(shí)任務(wù)管理器的研究[D].上海:上海交通大學(xué),2007:20-35.

[7]王傳福,周學(xué)海.提高硬件多線程處理器性能的方法[J].計(jì)算機(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)

深圳市科技基礎(chǔ)研究項(xiàng)目JCYJ20120613112757342。

猜你喜歡
信號(hào)量寄存器列表
STM32和51單片機(jī)寄存器映射原理異同分析
學(xué)習(xí)運(yùn)用列表法
擴(kuò)列吧
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測試
linux下多值信號(hào)量的操作探討
列表畫樹狀圖各有所長
μC/OS- -III對(duì)信號(hào)量的改進(jìn)
Linux操作系統(tǒng)信號(hào)量機(jī)制的實(shí)時(shí)化改造
2011年《小說月刊》轉(zhuǎn)載列表