亚洲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软件
国产日韩第一页| 日韩精品国内| 亚洲综合一区二区不卡| 日本黄网站色大片免费观看| 国产日韩一区二区在线| av久久久久久| 国产精品久久久久久久久免费看 | 日本久久91av| 欧美在线一区二区视频| av网站在线观看不卡| 久久精品视频在线播放| 日韩av大片免费看| 波多野结衣精品久久| 久久久久久久久久久99| 欧美人成在线视频| 热久久视久久精品18亚洲精品| 国产日韩二区| 国产精品久久久久免费| 亚洲伊人婷婷| 国产美女高潮久久白浆| 国产精品久久久久久av福利软件| 日韩视频一二三| 久久亚洲精品欧美| 中文字幕久精品免| 黄www在线观看| 久久久www成人免费精品张筱雨| 天天人人精品| 97精品视频在线| 精品综合久久久久久97| 日本精品一区二区三区不卡无字幕 | 在线视频不卡一区二区| 国内精品久久久久久久果冻传媒 | 精品久久免费观看| 精品一区二区三区自拍图片区| 久久久久高清| 日韩一级特黄毛片| 高清一区二区三区视频| 在线观看欧美一区| av片在线免费| 欧美精品日韩www.p站| 激情六月丁香婷婷| 国产成人啪精品视频免费网| 日本亚洲欧美成人| 91免费黄视频| 熟妇人妻va精品中文字幕| 国产精品99一区| 日韩在线综合网| 国产福利视频在线播放 | 国产免费一区视频观看免费| 欧美成aaa人片免费看| 免费国产成人av| 久久国产精品偷| 国产精品香蕉视屏| 亚洲中文字幕无码一区二区三区 | 久久综合久久久| 日本人妻伦在线中文字幕| 久久黄色免费看| 欧美在线欧美在线| 国产精品成人久久久久| 成人免费毛片网| 亚洲伊人久久大香线蕉av| 91国偷自产一区二区三区的观看方式| 一区二区精品国产| 国产精品12| 欧美自拍资源在线| 精品久久蜜桃| 69**夜色精品国产69乱| 日本高清不卡在线| 久久精品视频免费播放| 国内成人精品视频| 中文字幕一区二区三区最新| 131美女爱做视频| 日韩中文字幕组| 国产精品视频免费观看| 97精品国产97久久久久久| 欧美日韩亚洲一二三| 亚洲中文字幕无码不卡电影| 久久精品国产美女| 国产精品直播网红| 极品美女扒开粉嫩小泬| 日本一区高清在线视频| 欧美激情精品久久久| 精品国产依人香蕉在线精品| 91国产精品91| 国产久一道中文一区| 日韩精品欧美专区| 午夜精品久久久久久久无码| 欧美久久精品一级黑人c片| 日韩中文字幕视频在线| 久久久亚洲综合网站| 国产女同一区二区| 韩日精品中文字幕| 日本在线高清视频一区| 亚洲综合日韩中文字幕v在线| 国产精品美女999| 久久久久久国产三级电影| 91九色对白| 成人在线观看毛片| 国产综合久久久久| 欧美牲交a欧美牲交aⅴ免费真| 欧美一区二区三区四区在线| 久久久久国产精品免费网站| 欧美精品一二区| 国产精品久久久久9999爆乳| 久久久成人精品视频| 久久久久欧美| 国产成人亚洲综合| 97久久国产亚洲精品超碰热| 国产免费一区二区三区在线观看| 国自在线精品视频| 免费在线观看亚洲视频| 欧美在线视频一二三| 日韩av免费在线播放| 亚洲a∨一区二区三区| 亚洲激情一区二区三区| 亚洲a成v人在线观看| 亚洲国产精品一区在线观看不卡| 一区二区视频在线免费| 中文字幕一区综合| 亚洲天堂av免费在线观看| 亚洲欧美一区二区原创| 亚洲精品国产精品国自产| 亚洲伊人婷婷| 亚洲国产激情一区二区三区| 亚洲欧美日韩国产成人综合一二三区 | 国产成人精品视| 久久久久免费精品国产| 久久这里只有精品8| 久久精品网站视频| 久久久久久久久久久91| 久久精品国产一区二区电影| 久久久999成人| 国产精品久久久久久久久借妻| 国产精品天天狠天天看| 国产精品精品视频一区二区三区| 国产精品美女免费看| 国产精品福利小视频| 欧美激情精品久久久久久变态| 永久久久久久| 亚洲人成无码www久久久| 日韩一级特黄毛片| 日韩成人av电影在线| 日韩欧美精品一区二区三区经典| 欧美一级黑人aaaaaaa做受 | 久久久久久久久久久网站| 久久精品久久久久久国产 免费| 久久精品国产亚洲7777| 国产精品电影网| 在线不卡视频一区二区| 五码日韩精品一区二区三区视频 | 亚洲在线不卡| 日本成人黄色| 国产又粗又爽又黄的视频| 99视频免费观看蜜桃视频| 国产福利视频在线播放| 国产精品美女网站| 中文字幕人成一区| 日产国产精品精品a∨| 欧美福利一区二区三区| 福利视频一二区| 69久久夜色精品国产69乱青草| www.日韩免费| 一区二区精品在线观看| 日韩欧美视频网站| 国产内射老熟女aaaa| 久久久999免费视频| 国产精品看片资源| 亚洲国产另类久久久精品极度| 欧美亚洲第一页| www国产亚洲精品| 久久好看免费视频| 亚洲一区二区三区四区在线播放| 欧美一区观看| 99热在线播放| 国产精品视频成人| 色综合天天狠天天透天天伊人| 日本久久久久久久久久久| 国产亚洲欧美在线视频| 国产黄色特级片| 欧美激情视频一区| 欧美精品一区二区三区免费播放| 豆国产97在线| 国产精品免费电影| 午夜精品美女久久久久av福利| 蜜桃传媒一区二区三区| 国产成人亚洲综合| 一区二区在线高清视频| 黄色一级视频播放| 国产成人avxxxxx在线看| 久久久久久国产精品美女| 日韩国产在线一区| 91精品国产综合久久久久久丝袜| 国产精品户外野外| 视频一区免费观看| 国产精品亚洲综合天堂夜夜| 国产成人久久精品| 日韩资源av在线| 9a蜜桃久久久久久免费| 欧美成人在线网站| 欧美亚洲国产精品|