亚洲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| 久久天天躁狠狠躁夜夜av| 日本一区二区视频| 亚洲综合五月天| 国产精品久久一| 国产成人无码a区在线观看视频| 成人免费视频a| 国产乱人伦精品一区二区三区 | 欧美成人一区二区在线观看| 日本午夜人人精品| 日韩少妇中文字幕| 日韩欧美猛交xxxxx无码| 欧美一级爱爱| 精品一区二区三区无码视频| 国产一区不卡在线观看| 高清欧美性猛交xxxx| 91国产精品电影| 国产成人精品日本亚洲| www国产91| 日本黄网免费一区二区精品| 激情小说综合网| 国产欧美久久久久久| 91久久国产婷婷一区二区| 国产成人福利网站| 国产精品女主播| 在线视频不卡国产| 日韩精品久久一区二区| 国产一区视频在线播放| 91精品视频大全| 日韩视频在线一区| 九九精品在线播放| 懂色av粉嫩av蜜臀av| 人人妻人人澡人人爽欧美一区| 精品一区二区日本| 91精品久久久久久久久久另类| 精品国产欧美一区二区三区成人| 久久99精品国产99久久6尤物| 午夜精品在线观看| 国内精品国产三级国产在线专| 91精品国产自产在线| 国产精品天天av精麻传媒| 亚洲专区国产精品| 欧美激情专区| 国产精品88久久久久久妇女| 国产精品久久久久久亚洲调教| 亚洲一区二区三区精品在线观看 | 国产免费xxx| 国产成人亚洲综合91精品| 国产精品欧美久久久| 亚洲成人一区二区三区| 激情久久av| 久久人人爽国产| 欧美精品免费播放| 青草成人免费视频| 97碰在线视频| 国产精品国产福利国产秒拍| 日本一级黄视频| 成人91免费视频| 国产精品美女视频网站| 天堂精品一区二区三区| 国产欧美中文字幕| 国产精品久久久亚洲| 日韩免费毛片| 久久久久高清| 亚洲自拍另类欧美丝袜| 国产综合色一区二区三区| 国产不卡视频在线| 亚洲永久一区二区三区在线| 国精产品一区一区三区有限在线 | 亚洲国产欧美日韩| 国产免费久久av| 国产精品视频精品| 无码人妻丰满熟妇区96| 国产伦精品一区二区三区照片| 国产精品啪啪啪视频| 日本不卡高字幕在线2019| 99热国产免费| 欧美精品久久久久久久| 国产综合视频在线观看| 国产精品美女999| 欧美 国产 精品| 久久天天躁狠狠躁夜夜躁| 青青青在线观看视频| 久久久久久久影院| 日本一区二区高清视频| 国产mv久久久| 日韩久久久久久久久久久久久| 国产精品av一区| 亚洲欧洲日韩精品| av一区观看| 亚洲精品视频一区二区三区| aaa免费在线观看| 亚洲精品一区二区三区av| 97人人模人人爽人人少妇| 中文字幕在线中文| 97精品视频在线| 亚洲国产欧美一区二区三区不卡| 91av国产在线| 日韩欧美一级在线| 国产精品视频一区二区三区四区五区| 欧美性受xxx| 国产精品久久久久av| 黄色网址在线免费看| 国产精品久久久久久久久久 | 国产精品免费入口| 精品人妻大屁股白浆无码| 久久精视频免费在线久久完整在线看 | 国产精品成熟老女人| 国产一区二区三区精彩视频| 欧美精品在线免费| 国产老熟妇精品观看| 亚洲在线色站| 91九色视频在线观看| 日本免费久久高清视频| 国产精品视频一二三四区| 国产午夜伦鲁鲁| 一级特黄妇女高潮| 久久人人爽人人爽人人片av高清| 日韩精品―中文字幕| 国产精品久久久一区二区三区| 国产精品稀缺呦系列在线| 日韩在线视频在线| 国产精品区一区| av一区二区三区免费| 日韩精品一区二区三区丰满| 国产精品精品视频| 91久久久久久久久| 日本中文不卡| 久久天天躁夜夜躁狠狠躁2022| 99久re热视频这里只有精品6| 人妻夜夜添夜夜无码av| 欧美日本国产在线| 国产h视频在线播放| 国产日韩在线一区| 欧美一级片免费播放| 国产精品美女久久久免费| 97精品国产97久久久久久粉红| 青青草影院在线观看| 在线观看一区欧美| 国产成人无码a区在线观看视频 | 欧美精品在线一区| 亚洲国产精品久久久久久女王| 北条麻妃一区二区三区中文字幕| 国产精品自产拍在线观看| 日韩av一区二区三区在线| 欧美精品在线观看| 色伦专区97中文字幕| 99久久精品无码一区二区毛片| 狠狠久久综合婷婷不卡| 欧美一区二区激情| 九九热精品视频在线播放| 播播国产欧美激情| 国产高清精品在线观看| 国产一区精品在线| 欧洲久久久久久| 亚洲欧美久久久久一区二区三区| 国产精品久久久久久网站| 久久精品国产sm调教网站演员| 国产色一区二区三区| 欧美中文在线视频| 春日野结衣av| 欧美日韩国产123| 国产精品免费区二区三区观看| 国产成人精品福利一区二区三区| 国产精品一区二区你懂得| 免费在线观看亚洲视频| 日韩精品久久久免费观看| 五月天婷亚洲天综合网鲁鲁鲁| 精品麻豆av| 国产精品青青草| 国产成人无码精品久久久性色| 国产suv精品一区二区| 久久久人成影片一区二区三区观看| 国产伦精品一区二区三区四区免费 | 黄色一级片av| 欧美在线视频观看免费网站| 日本精品免费视频| 日本精品在线视频| 日韩av免费在线播放| 电影午夜精品一区二区三区| 亚洲午夜久久久影院伊人| 国产99久久精品一区二区 | 日韩视频免费观看| 日韩在线免费视频观看| 国产z一区二区三区| 久久一区二区三区欧美亚洲| 68精品久久久久久欧美| 69精品小视频| 久久久亚洲精品视频| 91精品国产91久久久久久久久| 91精品成人久久| 高清视频一区| 不卡视频一区二区| 成人精品一二区| 99热亚洲精品| 久久久中精品2020中文| 九色综合日本| 久久久国产成人精品| 国产精品美女999| 色综合视频网站|