999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式系統(tǒng)裸機的任務調(diào)度應用設計*

2018-06-15 07:56:06,,,
關(guān)鍵詞:嵌入式系統(tǒng)

,,,

(1.齊魯工業(yè)大學(山東省科學院),濟南 250353;2.山東省科學院自動化研究所;3.山東省汽車電子技術(shù)重點實驗室)

引 言

在嵌入式系統(tǒng)的軟件設計中,要根據(jù)具體應用要求和系統(tǒng)資源大小,選擇合適的嵌入式操作系統(tǒng),根據(jù)應用邏輯劃分任務,然后利用操作系統(tǒng)提供的一系列API建立任務隊列,以消息或事件的形式進行任務間通信,實現(xiàn)任務調(diào)度[1],這種方式可以讓開發(fā)人員將精力集中在應用邏輯的開發(fā)上,不僅可以實現(xiàn)軟件的模塊化,還可以靈活地進行修改和維護。

在這種方式下,MCU上電初始化時首先建立任務隊列,為每個任務設定合適的優(yōu)先級,并分配一定的堆棧用于存儲任務上下文。在系統(tǒng)運行階段,系統(tǒng)滴答、發(fā)送消息或事件、各種系統(tǒng)中斷都會觸發(fā)任務調(diào)度。執(zhí)行任務切換時,首先將當前任務的上下文數(shù)據(jù)保存到任務堆棧中,然后將新任務堆?;謴偷組CU各類寄存器和系統(tǒng)棧中[2],根據(jù)新的PC(程序計數(shù)器)指針執(zhí)行新任務。每個任務堆棧都會消耗寶貴的RAM資源,而且系統(tǒng)運行階段存在大量頻繁的中斷時,上下文的存儲和恢復會極大消耗MCU的計算資源,因此,只有在RAM資源豐富、主頻高的高端MCU中才選擇使用操作系統(tǒng)。在那些由于成本限制只能選擇RAM資源較小、主頻較低的中低端MCU的嵌入式系統(tǒng)的軟件設計中,只能采用不加操作系統(tǒng)的裸機方式。

1 方案設計

在不帶操作系統(tǒng)的裸機嵌入式系統(tǒng)中,軟件系統(tǒng)在一個主循環(huán)體中運行。MCU循環(huán)調(diào)用由各種軟件模塊組成的主循環(huán)體,各個軟件模塊不存在各自的任務堆棧,共享一個系統(tǒng)棧。執(zhí)行中斷處理程序或調(diào)用子函數(shù)時,MCU將一些局部變量、中間計算結(jié)果和寄存器存入系統(tǒng)棧,執(zhí)行完中斷處理程序或子函數(shù)后恢復系統(tǒng)棧。在這種方式下,一般以大量的全局變量和標志位實現(xiàn)各個軟件模塊的交互,造成各個軟件模塊之間耦合性強,修改和維護不靈活。

本文借鑒操作系統(tǒng)的任務調(diào)度思想,提出一種裸機嵌入式系統(tǒng)的任務調(diào)度方法[3]。在裸機開發(fā)方式中,設計一種不帶任務堆棧的邏輯任務,按照具體應用劃分若干邏輯任務,這些邏輯任務共享一個系統(tǒng)棧,每個邏輯任務都有自己的事件隊列和任務處理程序,任務之間通過發(fā)送事件的形式進行通信。這種方法實現(xiàn)了類似于操作系統(tǒng)的任務調(diào)度機制,能夠清晰反映應用實現(xiàn)邏輯,同時提高了軟件模塊的內(nèi)聚性,降低了軟件模塊之間的耦合性[4]。

2 軟件設計

2.1 邏輯任務設計

為了清晰地反映應用的實現(xiàn)邏輯,以邏輯任務的形式實現(xiàn)各個軟件模塊,每個邏輯任務都有相應的任務處理函數(shù)和事件隊列,任務之間通過事件的形式進行通信,發(fā)送的事件填充到任務的事件隊列中,任務處理函數(shù)根據(jù)任務事件隊列中的事件執(zhí)行相關(guān)操作。

為了便于管理,以結(jié)構(gòu)體的形式描述邏輯任務,結(jié)構(gòu)體成員變量包括任務ID、事件隊列、事件產(chǎn)生索引、事件消費索引。邏輯任務結(jié)構(gòu)體如下所示:

typedef struct{

e_Event event[DEFAULT_EVENTQ_SIZE];

e_TaskId task_id;

uint8_ttick_idx;

uint8_ttalk_idx;

}s_Task;

以能夠反映任務具體功能的枚舉類型定義任務ID,以ID查找對應的邏輯任務結(jié)構(gòu)體。同時,以任務ID作為任務優(yōu)先級,ID值越大,優(yōu)先級越高。筆者為某汽車廠開發(fā)的BCM的任務包括輸入信號檢測、RKE、CAN通信、LIN通信、網(wǎng)絡管理、門鎖控制、車燈控制、雨刮控制、車窗防盜報警、車身防盜報警、故障診斷、發(fā)動機防盜、定時器管理[2],定義任務ID枚舉類型如下:

typedef enum{

MIN_TASK_PRIO,

INPUT_DETECT_TASK_PRIO = MIN_TASK_PRIO,

RKE_TASK_PRIO,

CAN_TASK_PRIO,

LIN_TASK_PRIO,

NM_TASK_PRIO,

LOCK_CTRL_TASK_PRIO,

LGT_CTRL_TASK_PRIO,

WIPER_CTRL_TASK_PRIO,

WDW_CTRL_TASK_PRIO,

ALARMSTATE_TASK_PRIO,

SYS_MONITOR_TASK_PRIO,

IMMO_TASK_PRIO,

TIMER_TASK_PRIO,

MAX_TASK_PRIO = TIMER_TASK_PRIO,

}e_TaskId;

事件隊列從邏輯上來說是一個環(huán)形隊列,從實現(xiàn)上來說是一個枚舉類型的數(shù)組,包括兩個索引:事件產(chǎn)生索引和事件消費索引,事件產(chǎn)生索引以tick_idx表示,事件消費索引以talk_idx表示。事件隊列的大小根據(jù)實際應用而定。

2.2 任務調(diào)度

MCU上電初始化時,按照任務優(yōu)先級從低到高的順序?qū)⒏鱾€邏輯任務結(jié)構(gòu)體的事件隊列數(shù)組成員初始化為0,事件產(chǎn)生索引和事件消費索引初始化為0,然后進入主循環(huán)體。進入主循環(huán)體,在主循環(huán)體中執(zhí)行任務調(diào)度程序,按照邏輯任務優(yōu)先級從高到低的順序依次調(diào)用每個邏輯任務的任務處理程序,直至當前邏輯任務的優(yōu)先級為最低時,退出任務調(diào)度程序,返回進入主循環(huán)體。任務調(diào)度流程如圖1所示。

圖1 任務調(diào)度流程圖

2.3 任務處理程序設計

當中斷處理程序或任務處理程序向某個任務發(fā)送事件時,向該任務結(jié)構(gòu)體中的事件隊列中填充事件,將事件賦值給以該任務結(jié)構(gòu)體的事件產(chǎn)生索引為下標的事件隊列數(shù)組成員,然后將事件產(chǎn)生索引加1,如果索引值等于事件隊列數(shù)組的長度,將事件產(chǎn)生索引置0。

執(zhí)行任務處理程序時,如果事件產(chǎn)生索引和事件消費索引兩者相等,說明事件隊列中不存在未被處理的事件,如果不相等,說明存在未被處理的事件,讀取以該任務結(jié)構(gòu)體的事件消費索引為下標的事件隊列數(shù)組成員,根據(jù)具體事件執(zhí)行相關(guān)操作,然后將事件消費索引加1,如果索引值等于事件隊列數(shù)組的長度,將事件消費索引置0。再次判斷事件產(chǎn)生索引和事件消費索引是否相等,循環(huán)處理,直到事件隊列中不再存在未被處理的事件。任務處理程序流程如圖2所示。

圖2 任務處理程序流程圖

結(jié) 語

[1] 常華利,尹震宇.基于MicroBlaze的μC/OS-II操作系統(tǒng)移植[J].計算機系統(tǒng)應用,2017(5):239-246.

[2] 陳發(fā)堂,主父文剛,童慶.Nucleus PLUS操作系統(tǒng)在TMS320C81 68上的移植及TD-LTE中的應用[J].廣東通信技術(shù),2016(2):22-25,33.

[3] 山東省科學院自動化研究所.一種嵌入式軟件的任務調(diào)度方法及裝置:中國,201810128162.1[P].2018-2-8.

[4] 張智慧.C語言嵌入式系統(tǒng)編程軟件設計架構(gòu)研究[J].單片機與嵌入式系統(tǒng)應用,2018(1):3-5,10.

[5] 馬建輝,王知學,李研強.車身控制系統(tǒng)BCM的設計與實現(xiàn)[J].中國科技成果,2011(13):49-51.

猜你喜歡
嵌入式系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術(shù)的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發(fā)平臺
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
主站蜘蛛池模板: 日韩毛片视频| 国产尹人香蕉综合在线电影| 欧美在线一二区| 国产亚洲高清视频| 毛片在线播放网址| 天天摸夜夜操| 亚洲精品手机在线| 免费看一级毛片波多结衣| 国内精品久久久久久久久久影视| 98精品全国免费观看视频| 国产亚洲精品va在线| 日韩区欧美国产区在线观看| 国产精品lululu在线观看| 在线精品自拍| 国产成人高清在线精品| 国产91高清视频| 欧洲av毛片| 国产日韩丝袜一二三区| 毛片在线区| 国产午夜精品一区二区三区软件| 日本精品视频一区二区| 亚洲另类色| 婷婷五月在线| 超碰精品无码一区二区| 欧洲在线免费视频| 欧美日韩国产一级| 中文字幕首页系列人妻| 色综合久久久久8天国| 国产日本一区二区三区| 99在线视频精品| 91小视频在线播放| 美女一级毛片无遮挡内谢| 日本午夜视频在线观看| 久草青青在线视频| 国产成人一区在线播放| 亚欧成人无码AV在线播放| 日韩黄色大片免费看| 乱人伦视频中文字幕在线| 欧美在线黄| 天天色综网| 2020亚洲精品无码| 国产美女主播一级成人毛片| 91精品国产91久久久久久三级| 久久精品66| 久久国产V一级毛多内射| 久久久久国色AV免费观看性色| 欧美亚洲中文精品三区| 日韩第九页| 亚洲精品男人天堂| 日韩中文字幕亚洲无线码| 国产偷倩视频| 国产美女无遮挡免费视频| 久久综合九色综合97婷婷| 欧美日韩在线国产| 国产成人AV大片大片在线播放 | 亚洲成年人片| 91无码网站| 蜜桃视频一区| 综合色在线| 欧美另类视频一区二区三区| 日本午夜三级| 亚洲久悠悠色悠在线播放| 亚洲色婷婷一区二区| 国产精品视频系列专区| 国产美女精品人人做人人爽| 亚亚洲乱码一二三四区| 99久视频| 国内熟女少妇一线天| 日韩国产黄色网站| 午夜无码一区二区三区| 伊人91视频| 波多野结衣AV无码久久一区| 国产三级视频网站| 国产v精品成人免费视频71pao| 91美女视频在线| 欧美综合一区二区三区| 日日碰狠狠添天天爽| 国产成a人片在线播放| 国产视频 第一页| 东京热av无码电影一区二区| 国产AV无码专区亚洲A∨毛片| 久久亚洲国产一区二区|