亚洲a中文字幕_官网99热精品_91美女片黄在线观看游戏_久久96国产精品久久99软件

寧波市鄞州首南恒宇激光雕刻廠

嵌入式操作系統FreeRTOS的原理與實現
分享到:


在嵌入式領域中,嵌入式實時操作系統正得到越來越廣泛的應用。采用嵌入式實時操作系統(rtos)可以更合理、更有效地利用cpu的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。由于rtos需占用一定的系統資源(尤其是ram資源),只有μc/os-ii、embos、salvo、freertos等少數實時操作系統能在小ram單片機上運行。相對于c/os-ii、embos等商業操作系統,freertos操作系統是完全免費的操作系統,具有源碼公開、可移植、可裁減、調度策略靈活的特點,可以方便地移植到各種單片機上運行,其最新版本為2.6版。

1 freertos操作系統功能

作為一個輕量級的操作系統,freertos提供的功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。freertos內核支持優先級調度算法,每個任務可根據重要程度的不同被賦予一定的優先級,cpu總是讓處于就緒態的、優先級最高的任務先運行。freert0s內核同時支持輪換調度算法,系統允許不同的任務使用相同的優先級,在沒有更高優先級任務就緒的情況下,同一優先級的任務共享cpu的使用時間。

freertos的內核可根據用戶需要設置為可剝奪型內核或不可剝奪型內核。當freertos被設置為可剝奪型內核時,處于就緒態的高優先級任務能剝奪低優先級任務的cpu使用權,這樣可保證系統滿足實時性的要求;當freertos被設置為不可剝奪型內核時,處于就緒態的高優先級任務只有等當前運行任務主動釋放cpu的使用權后才能獲得運行,這樣可提高cpu的運行效率。

2 freertos操作系統的原理與實現

2. 1任務調度機制的實現

任務調度機制是嵌入式實時操作系統的一個重要概念,也是其核心技術。對于可剝奪型內核,優先級高的任務一旦就緒就能剝奪優先級較低任務的cpu使用權,提高了系統的實時響應能力。不同于μc/os-ii,freertos對系統任務的數量沒有限制,既支持優先級調度算法也支持輪換調度算法,因此freertos采用雙向鏈表而不是采用查任務就緒表的方法來進行任務調度。系統定義的鏈表和鏈表節點數據結構如下所示:

typedef struct xlist{ //定義鏈表結構
unsigned portshorpt usnumberofitems;

//usnumberofitems為鏈表的長度,為0表示鏈表為空

volatile xlistitem * pxhead;//pxhead為鏈表的頭指針

volatile xlistitem * pxindex; //pxindex指向鏈表當前結點的指針

volatile xlistitem xlistend; //xlistend為鏈表尾結點

}xlist;

struct xlist_item { //定義鏈表結點的結構

port tick type xitem value;

//xitem value的值用于實現時間管理

//port tick type為時針節拍數據類型,

//可根據需要選擇為16位或32位

volatile struct xlist_item * pxnext;

//指向鏈表的前一個結點

void * pvowner;//指向此鏈表結點所在的任務控制塊

void * pvcontainer;//指向此鏈表結點所在的鏈表};

freertos中每個任務對應于一個任務控制塊(tcb),其定義如下所示:

typedef struct tsktaskcontrolblock {

portstack_type * pxtopofstack;

//指向任務堆棧結束處

portstack_type * pxstack;

//指向任務堆棧起始處

unsigned portshort usstackdepth; //定義堆棧深度

signed portchar pctaskname[tskmax_task_name_len];//任務名稱

unsigned portchar ucpriority; //任務優先級

xlistitem xgenericlistitem;

//用于把tcb插入就緒鏈表或等待鏈表

xlistitem xeventlistitem;

//用于把tcb插入事件鏈表(如消息隊列)

unsigned portchar uctcbnumber; //用于記錄功能

}tsktcb;

freertos定義就緒任務鏈表數組為xlist pxready—taskslists[portmax_priorities]。其中portmax_priorities為系統定義的最大優先級。若想使優先級為n的任務進入就緒態,需要把此任務對應的tcb中的結點xgenericlistltem插入到鏈表pxreadytaskslists[n]中,還要把xgenericlistitem中的pvcontainer指向pxreadytaskslists[n]方可實現。

當進行任務調度時,調度算法首先實現優先級調度。系統按照優先級從高到低的順序從就緒任務鏈表數組中尋找usnumberofitems第一個不為0的優先級,此優先級即為當前最高就緒優先級,據此實現優先級調度。若此優先級下只有一個就緒任務,則此就緒任務進入運行態;若此優先級下有多個就緒任務,則需采用輪換調度算法實現多任務輪流執行。

若在優先級n下執行輪換調度算法,系統先通過執行(pxreadytaskslists[n])→pxindex=(pxreadytasks-lists[n])→pxlndex→pxnext語句得到當前結點所指向的下一個結點,再通過此結點的pvowner指針得到對應的任務控制塊,最后使此任務控制塊對應的任務進入運行態。由此可見,在freertos中,相同優先級任務之間的切換時間為一個時鐘節拍周期。

以圖l為例,設系統的最大任務數為pottmax_priorities,在某一時刻進行任務調度時,得到pxreadytaskslists[i].usnumberofitems=o(i=2...portmax_priorities)以及pxreadytaskslists[1]。usnumberofitems=3。由此內核可知當前最高就緒優先級為l,且此優先級下已有三個任務已進入就緒態.由于最高就緒優先級下有多個就緒任務,系統需執行輪換調度算法實現任務切換;通過指針pxlndex可知任務l為當前任務,而任務l的pxnext結點指向任務2,因此系統把pxindex指向任務2并執行任務2來實現任務調度。當下一個時鐘節拍到來時,若最高就緒優先級仍為1,由圖l可見,系統會把pxindex指向任務3并執行任務3。

為了加快任務調度的速度,frecrtos通過變量uctopreadypriotity跟蹤當前就緒的最高優先級。當把一個任務加入就緒鏈表時,如果此任務的優先級高于uctopreadypriority,則把這個任務的優先級賦予uctopreadypriority。這樣當進行優先級調度時,調度算法不是從portmax_priorities而是從uctopready-priority開始搜索。這就加快了搜索的速度,同時縮短了內核關斷時間。

2.2 任務管理的實現

實現多個任務的有效管理是操作系統的主要功能。freertos下可實現創建任務、刪除任務、掛起任務、恢復任務、設定任務優先級、獲得任務相關信息等功能。下面主要討論freertos下任務創建和任務刪除的實現。當調用staskcreate()函數創建一個新的任務時,freertos首先為新任務分配所需的內存。若內存分配成功,則初始化任務控制塊的任務名稱、堆棧深度和任務優先級,然后根據堆棧的增長方向初始化任務控制塊的堆棧。接著,freertos把當前創建的任務加入到就緒任務鏈表。若當前此任務的優先級為最高,則把此優先級賦值給變量uctopreadypriorlty(其作用見2.1節)。若任務調度程序已經運行且當前創建的任務優先級為最高,則進行任務切換.

聯系我們

地址: 浙江省.寧波市鄞州區寧姜公路(九曲小區二期旁)

郵編: 315040

聯系人: 盛立峰

電話: 0574-87139378

傳真: 0574-87139378

手機: 13867861670

郵箱: 85400329@qq.com

聯系我們
亚洲a中文字幕_官网99热精品_91美女片黄在线观看游戏_久久96国产精品久久99软件
精品一区二区日本| 国产经典久久久| 官网99热精品| 欧美成人精品一区二区| 欧美亚洲国产免费| 久久久久久中文字幕| 在线精品亚洲一区二区| 国产一级特黄a大片99| 久久久av网站| 欧美日韩一区在线观看视频| 日韩一区二区欧美| 欧美中文字幕在线观看视频| 日韩视频在线免费| 欧美在线免费视频| 久久久黄色av| 免费在线精品视频| 国产精品美女久久久久久免费| 欧美中日韩一区二区三区| 日韩中文字幕第一页| 欧美专区福利在线| 国产成人精品一区二区三区| 日本不卡一二三区| 久久久久久美女| 欧美精品一区二区三区三州 | 九九久久精品一区| 国产伦精品一区二区三区高清 | 色老头一区二区三区| 日韩久久久久久久久久久久久| 久久久久久久久久久免费视频| 日本中文字幕不卡免费| 日韩在线视频观看正片免费网站| 青青草原一区二区| 国产精品久久久亚洲| 蜜臀精品一区二区| 国产aaa精品| 91精品国产免费久久久久久| 日本欧美在线视频| 国产成人无码a区在线观看视频| 国模视频一区二区三区| 久精品免费视频| 91干在线观看| 欧美精品一区在线| 欧美激情第三页| 国产精品1区2区在线观看| 日本免费高清一区| 国产精品日韩在线一区| 国产欧美日韩专区发布| 亚洲国产精品www| 日韩在线免费视频观看| 国产欧美日韩中文字幕| 日韩影院一区| 国产精品国色综合久久| 高清视频一区| 日本精品一区二区三区高清 久久| 精品国产欧美一区二区五十路 | 美女福利视频一区| 91精品综合久久久久久五月天| 日本天堂免费a| 精品九九九九| 国产精品99久久久久久人| 欧美交换配乱吟粗大25p| 欧美成人中文字幕在线| 国产激情在线看| 国产一区二区视频在线观看| 午夜啪啪免费视频| 国产精品免费成人| 91精品国产高清久久久久久91 | 日韩最新免费不卡| 国产精品夜夜夜一区二区三区尤| 日韩精品―中文字幕| 中文字幕一区二区三区四区五区六区| 久久久久久噜噜噜久久久精品| 国产女女做受ⅹxx高潮| 日本10禁啪啪无遮挡免费一区二区| 免费99精品国产自在在线| 久久久久久久久久久视频| 古典武侠综合av第一页| 欧美国产日韩在线播放| 水蜜桃亚洲一二三四在线| 欧美xxxx18性欧美| 视频直播国产精品| 91精品久久久久久久久久久久久久| 美女精品国产| 青青草国产精品| 亚洲欧洲日夜超级视频| 欧美另类在线播放| 国产精品无码专区在线观看| 久久精品午夜一区二区福利| 91免费版网站在线观看| 91精品国产免费久久久久久| 久久久久亚洲精品国产| 波多野结衣精品久久| 国产淫片免费看| 亚洲中文字幕无码中文字| 国产精品日韩高清| 国产精品久久久久久免费观看 | 97精品久久久| 国产综合av在线| 欧美精品国产精品久久久| 少妇性饥渴无码a区免费| 久久久久久成人| 欧美成人亚洲成人| 国产精品久久久久久久天堂第1集| 国产福利一区视频| 91麻豆桃色免费看| av动漫在线播放| 高清一区二区三区日本久| 精品无人乱码一区二区三区的优势| 日韩欧美一区二| 日本国产一区二区三区| 日本天堂免费a| 欧美一级片在线播放| 亚洲va男人天堂| 亚洲一区二区三区视频播放| 欧美激情视频在线免费观看 欧美视频免费一 | 国产一区在线免费| 免费一区二区三区| 激情五月亚洲色图| 精品欧美一区免费观看α√| 欧美日韩精品免费观看视一区二区| 色狠狠久久av五月综合| 欧美一区二区视频17c| 无码av天堂一区二区三区| 天天综合五月天| 视频一区免费观看| 日本电影一区二区三区| 日本a视频在线观看| 日韩免费在线观看av| 日本www在线视频| 欧洲精品久久久| 欧美乱大交xxxxx潮喷l头像 | 国产美女三级视频| 丰满人妻中伦妇伦精品app| 国产美女在线精品免费观看| 成人免费aaa| 久久久伊人日本| 久久久久久亚洲精品中文字幕| 精品国产美女在线| 国产精品二区三区| 一区二区欧美日韩| 色大师av一区二区三区| 欧美中文字幕在线播放| 欧美连裤袜在线视频| 国产亚洲情侣一区二区无| 产国精品偷在线| 久久99精品国产一区二区三区| 国产精品视频一区二区三区四区五区 | 欧美成年人视频网站| 伊人久久婷婷色综合98网| 亚洲.欧美.日本.国产综合在线| 无码人妻精品一区二区蜜桃百度 | 国产精品99久久久久久久久| 久久这里只有精品18| 国产成人久久久精品一区| 国产精品久久久久77777| 在线一区高清| 欧洲精品在线视频| 国产欧美久久久久| 久久精品一区二| 国产精品精品视频| 中文字幕一区二区中文字幕| 日韩欧美精品免费| 麻豆av一区二区三区久久| 97免费在线视频| 国产精品网址在线| 一卡二卡3卡四卡高清精品视频| 日韩av高清在线看片| 黄色一级大片免费| 99精品在线直播| 久久深夜福利免费观看| 中文字幕在线亚洲三区| 奇米888一区二区三区| 蜜桃网站成人| 久久久精品有限公司| 国产精品高潮在线| 日本a级片在线观看| 国产精品永久免费观看| 久久精品久久久久久| 亚洲精品在线免费看| 欧美日韩亚洲一二三| 国产精品10p综合二区| 久久中文字幕视频| 欧洲在线视频一区| 99久热re在线精品视频| 国产精品流白浆视频| 色阁综合av| 粉嫩高清一区二区三区精品视频| 色噜噜亚洲精品中文字幕| 亚洲伊人久久综合| 好吊色欧美一区二区三区视频| 久久免费少妇高潮久久精品99| 久久婷婷国产麻豆91天堂| 日本视频精品一区| 97精品视频在线观看| 久久婷婷国产麻豆91天堂| 日韩精品一区二区三区不卡 | 奇米影视首页 狠狠色丁香婷婷久久综合| 国产一区视频观看| 日韩中文字幕在线视频播放 | 国产日韩精品一区观看|