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

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

嵌入式操作系統(tǒng)FreeRTOS的原理與實現(xiàn)
分享到:


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

1 freertos操作系統(tǒng)功能

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

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

2 freertos操作系統(tǒng)的原理與實現(xiàn)

2. 1任務調(diào)度機制的實現(xiàn)

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

typedef struct xlist{ //定義鏈表結(jié)構(gòu)
unsigned portshorpt usnumberofitems;

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

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

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

volatile xlistitem xlistend; //xlistend為鏈表尾結(jié)點

}xlist;

struct xlist_item { //定義鏈表結(jié)點的結(jié)構(gòu)

port tick type xitem value;

//xitem value的值用于實現(xiàn)時間管理

//port tick type為時針節(jié)拍數(shù)據(jù)類型,

//可根據(jù)需要選擇為16位或32位

volatile struct xlist_item * pxnext;

//指向鏈表的前一個結(jié)點

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

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

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

typedef struct tsktaskcontrolblock {

portstack_type * pxtopofstack;

//指向任務堆棧結(jié)束處

portstack_type * pxstack;

//指向任務堆棧起始處

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

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

unsigned portchar ucpriority; //任務優(yōu)先級

xlistitem xgenericlistitem;

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

xlistitem xeventlistitem;

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

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

}tsktcb;

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

當進行任務調(diào)度時,調(diào)度算法首先實現(xiàn)優(yōu)先級調(diào)度。系統(tǒng)按照優(yōu)先級從高到低的順序從就緒任務鏈表數(shù)組中尋找usnumberofitems第一個不為0的優(yōu)先級,此優(yōu)先級即為當前最高就緒優(yōu)先級,據(jù)此實現(xiàn)優(yōu)先級調(diào)度。若此優(yōu)先級下只有一個就緒任務,則此就緒任務進入運行態(tài);若此優(yōu)先級下有多個就緒任務,則需采用輪換調(diào)度算法實現(xiàn)多任務輪流執(zhí)行。

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

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

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

2.2 任務管理的實現(xiàn)

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

聯(lián)系我們

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

郵編: 315040

聯(lián)系人: 盛立峰

電話: 0574-87139378

傳真: 0574-87139378

手機: 13867861670

郵箱: 85400329@qq.com

聯(lián)系我們
亚洲a中文字幕_官网99热精品_91美女片黄在线观看游戏_久久96国产精品久久99软件
国产黑人绿帽在线第一区| 九九热久久66| 日韩欧美亚洲精品| 在线国产精品网| 国产精品动漫网站| 国产精品久久久久av福利动漫| 日韩一区在线视频| 视频在线观看99| 色偷偷88888欧美精品久久久| 国产成人精品久久二区二区 | 日韩av123| 手机看片福利永久国产日韩| 欧美激情日韩图片| 中文字幕av导航| 伊人久久av导航| 欧美一区二区三区……| 日产精品久久久一区二区福利| 日韩av黄色网址| 人禽交欧美网站免费| 欧美一区二区视频在线播放| 欧美夜福利tv在线| 国产真实乱子伦| 国产毛片视频网站| 超碰97人人人人人蜜桃| 91精品国产91久久久久久最新| 久久亚洲精品欧美| 久久久国产视频91| 国产精品久久久久久久久久久久冷 | 午夜一区二区三视频在线观看| 亚洲精品一区国产精品| 日本在线成人一区二区| 欧美连裤袜在线视频| 国产伦理久久久| 久久综合九色综合久99| 久久久精品影院| 欧美黄网免费在线观看| 少妇性饥渴无码a区免费| 亚洲 日韩 国产第一区| 日韩欧美精品一区二区 | 人妻精品无码一区二区三区| 免费一区二区三区| 99三级在线| 日韩中文字幕久久| 麻豆乱码国产一区二区三区 | 成人久久18免费网站图片| 国产精品av免费在线观看| 日韩天堂在线视频| 欧美成人精品一区| 日本国产一区二区三区| 国产欧美日韩中文字幕在线| 国产成人精品免费看在线播放| 久久亚洲精品一区二区| 日本一区二区在线视频| 国产日韩欧美在线| 久久er99热精品一区二区三区| 国产精品九九九| 少妇人妻在线视频| 国产偷久久久精品专区| 久久免费一级片| 精品福利影视| 青草网在线观看| 97国产精品免费视频| 久久久久这里只有精品| 久久久久久国产精品| 日韩免费黄色av| av免费观看国产| 国产精品美女久久久久av超清 | 久久久99国产精品免费| 国产精品高潮呻吟视频| 日韩av不卡在线| 国产欧美日韩高清| 国产精品免费一区二区三区观看| 日韩av在线第一页| 国产麻豆一区二区三区在线观看| 丝袜亚洲欧美日韩综合| 亚洲a级在线观看| 国产拍精品一二三| 国产精品高潮在线| 欧美韩国日本在线| 国产成人精品视频在线观看| 日韩不卡av| 国产成人精品日本亚洲| 午夜精品一区二区在线观看| yellow视频在线观看一区二区 | 蜜桃视频成人| 久久精品视频16| 亚洲激情一区二区| 国产欧美日韩亚洲精品| 久久在精品线影院精品国产| 蜜桃视频日韩| 欧美大肥婆大肥bbbbb| 国产伊人精品在线| 国产精品三区在线| 黄色一级二级三级| 国产精品狠色婷| 国产美女被下药99| 一区二区三区免费看| 成人av播放| 欧美一区二区三区四区在线 | 国产精品少妇在线视频| 欧美一级黑人aaaaaaa做受| 色噜噜狠狠色综合网图区| 欧美一级片免费观看| 九色自拍视频在线观看| 欧美亚洲免费高清在线观看| 久久精品视频99| 国产在线视频在线| 一区一区视频| 91干在线观看| 日韩激情免费视频| 国产精品久久久久久久久免费 | 久久久久久久久久av| 青青在线免费观看| 91久久精品国产| 日韩精品免费播放| 国产精品黄页免费高清在线观看| 国产精品自产拍在线观看| 久久国产精品久久久| 88国产精品欧美一区二区三区| 午夜精品理论片| 久久久久久久9| 国产精品免费在线| www黄色在线| 欧日韩一区二区三区| 国产精品二区在线| 国产精品999视频| 极品美女扒开粉嫩小泬| 亚洲综合日韩中文字幕v在线| 久久久久国产精品视频| 欧美国产亚洲一区| 一本久道高清无码视频| 日韩一区二区三区国产| 美乳视频一区二区| 三区精品视频| 国产精品传媒毛片三区| 久久久午夜视频| 国产综合视频在线观看| 欧美一区二区三区在线播放| 久久亚洲国产精品| 久久国产精品网| 国内少妇毛片视频| 日韩av电影在线免费播放| 久久综合色88| 日韩在线视频国产| 91精品国产自产在线老师啪| 蜜桃传媒一区二区| 奇米精品一区二区三区| 久操成人在线视频| 久久九九全国免费精品观看| 777午夜精品福利在线观看| 精品少妇人妻av免费久久洗澡| 日韩成人av电影在线| 亚洲一区三区在线观看| 国产精品国产三级国产专区51 | 热久久免费国产视频| 中文字幕一区二区三区有限公司| 久久综合伊人77777尤物| 久热国产精品视频一区二区三区| 欧美日韩亚洲综合一区二区三区激情在线 | 久久成人av网站| 日韩在线观看高清| 久久婷婷国产精品| 97碰在线视频| 国产精品午夜一区二区欲梦| 国产在线青青草| 狠狠久久综合婷婷不卡| 欧洲精品亚洲精品| 日韩亚洲欧美精品| 日韩电影天堂视频一区二区| 亚洲国产一区二区在线| 永久免费看av| 国产精品久久久久久久久久直播 | 久久精品人人做人人爽电影| 国产精品一区视频网站| 国产熟女高潮视频| 毛片一区二区三区四区| 国外色69视频在线观看| 欧美在线视频网站| 欧美性资源免费| 精品日产一区2区三区黄免费| 日韩毛片在线免费看| 日本a在线免费观看| 日本一区免费观看| 日本不卡视频在线播放| 日本阿v视频在线观看| 日韩电影天堂视频一区二区| 日本最新高清不卡中文字幕| 岛国视频一区| 欧美一级免费播放| 日本精品久久久久影院| 日本高清不卡三区| 欧美中在线观看| 激情小说网站亚洲综合网| 欧美 日韩 国产 高清| 国语对白做受xxxxx在线中国| 国内精品国产三级国产在线专 | 91免费在线视频| 久久综合给合久久狠狠色| 国产成+人+综合+亚洲欧洲| 色偷偷888欧美精品久久久|