目前常見的嵌入式軟件系統(tǒng)架構有三種可以分為:輪詢系統(tǒng)架構、前后臺系統(tǒng)架構和多任務系統(tǒng)架構。
1輪詢系統(tǒng)架構
輪詢系統(tǒng)架構是最簡單的一種軟件結構,主程序是一段無限循環(huán)的代碼,在循環(huán)中順序查詢各個條件,如果滿足就執(zhí)行相應的操作。
這種方案的好處是實現簡單,邏輯清晰,便于開發(fā)人員掌握。但是每個事件的查詢和處理時間是不能確定的,假如前面的操作時間較長,那么后面的操作必然會被延遲。
如下圖所示,假如步驟1操作需要很久,那么步驟2必然得不到及時處理,如果步驟2的工作很重要或者很緊急,那么系統(tǒng)的性能和響應能力就很差了。

示例偽代碼如下所示:
int main(void)
{
HwInit(); //初始化外設
while(1)
{
statement_1; //語句1
statement_2; //語句2
statement_3; //語句3
......
}
return 0;
}
2前后臺系統(tǒng)架構
相對輪詢系統(tǒng)架構,前后臺系統(tǒng)架構對外部事件的處理做了優(yōu)化,前后臺系統(tǒng)架構是由中斷驅動的。
主程序依然是一段無限循環(huán)的代碼,稱為后臺程序,而事件的響應則由中斷來完成,稱為前臺程序。
在后臺程序執(zhí)行時,如果有外部事件發(fā)生,則前臺的中斷程序會打斷后臺程序。在完成必要的事件響應之后,前臺中斷程序退出并通知后臺程序來繼續(xù)操作,由后臺程序完成事件的后繼處理。
從代碼功能上講,事件的響應和處理分為了兩個部分。因為中斷自身有優(yōu)先級和嵌套的功能,所以優(yōu)先級高的事件能夠得到及時響應。但后臺程序仍然需要按順序處理各個事件的后繼事務。

在中斷源之間有優(yōu)先級的概念,ISR會首先響應事件,簡單的事件可以在ISR中直接處理,復雜的情況下則記錄下必要數據和狀態(tài)標記,等所有中斷處理結束后,將由后臺主函數按順序處理各個事件。也可以理解,事件的響應是支持優(yōu)先級的,但事件的最終處理卻是順序的。
使用中斷來代替輪詢方案中事件的查詢操作,對事件的響應能力有較大改善。
示例偽代碼如下所示:
int main(void)
{
HwInit(); //初始化外設
while(1)
{
statement_1; //語句1
statement_2; //語句2
statement_3; //語句3
......
}
return 0;
}
void interrupt_event(void)
{
statement_4; //語句4
return 0;
}
3多任務系統(tǒng)架構
相對于前后臺系統(tǒng)架構,多任務系統(tǒng)架構在響應事件的時候,同樣是由多個中斷處理程序完成的。但是對于事件的后繼操作則是由多個任務來處理的,也就是說每個任務處理它所負責的事件。
在基于優(yōu)先級的多任務系統(tǒng)架構中,因為任務間存在優(yōu)先級高、低的關系,優(yōu)先級高的任務可打斷低優(yōu)先級任務的運行而取得CPU的優(yōu)先使用權,這樣優(yōu)先級高的事件就能及時得到處理;在基于分時機制的多任務系統(tǒng)中,任務間則按比例輪流占用處理器。

因為多任務系統(tǒng)架構允許將具體的應用系統(tǒng)分成若干個相對獨立的任務來管理,所以多任務操作系統(tǒng)的使用可以簡化應用程序的設計,系統(tǒng)也變得簡潔且便于維護和擴展。對實時性要求嚴格的事件都能得到及時可靠的處理。不過多任務操作系統(tǒng)自身將消耗更多的處理器、存儲器等硬件資源,這是引入多任務機制的必要代價。
示例偽代碼如下所示:
int main(void)
{
HwInit(); //初始化外設
OS_Init(); //初始化系統(tǒng)
OS_Start(); //運行內核調度
while(1)
{
......
}
return 0;
}
//任務1
void task_1(void)
{
task_statement_1;
task_statement_2;
task_statement_3;
OS_delay();
}
//任務2
void task_2(void)
{
task_statement_1;
task_statement_2;
task_statement_3;
OS_delay();
}
//任務3
void task_3(void)
{
task_statement_1;
task_statement_2;
task_statement_3;
OS_delay();
}
4區(qū)別
最后,對比一下三種嵌入式軟件系統(tǒng)架構的特點和區(qū)別,如下表所示:

本專欄將開啟對FreeRTOS多任務操作系統(tǒng)的學習,感興趣的小伙伴敬請期待~
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5198文章
20449瀏覽量
334125 -
cpu
+關注
關注
68文章
11279瀏覽量
225032 -
操作系統(tǒng)
+關注
關注
37文章
7402瀏覽量
129325 -
嵌入式軟件
+關注
關注
4文章
250瀏覽量
28061 -
FreeRTOS
+關注
關注
14文章
499瀏覽量
66947
原文標題:詳解FreeRTOS:嵌入式軟件系統(tǒng)架構(理論篇—1)
文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
嵌入式系統(tǒng)軟件架構通常劃分
嵌入式系統(tǒng)的軟件架構設計!
決定嵌入式系統(tǒng)軟件架構的因素和架構的影響
基于FreeRTOS的嵌入式實時操作系統(tǒng)的原理和實現
基于FreeRTOS的嵌入式云臺控制系統(tǒng)設計
嵌入式操作系統(tǒng)FREERTOS的移植.
嵌入式操作系統(tǒng)FreeRTOS的原理實現
嵌入式操作系統(tǒng)FreeRTOS的原理與移植實現
詳解FreeRTOS:嵌入式軟件系統(tǒng)架構
評論