色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解FreeRTOS:嵌入式軟件系統架構

jf_Vqngj70R ? 來源:美男子玩編程 ? 2023-05-04 16:40 ? 次閱讀

目前常見的嵌入式軟件系統架構有三種可以分為:輪詢系統架構、前后臺系統架構和多任務系統架構。

1輪詢系統架構

輪詢系統架構是最簡單的一種軟件結構,主程序是一段無限循環的代碼,在循環中順序查詢各個條件,如果滿足就執行相應的操作。

這種方案的好處是實現簡單,邏輯清晰,便于開發人員掌握。但是每個事件的查詢和處理時間是不能確定的,假如前面的操作時間較長,那么后面的操作必然會被延遲。

如下圖所示,假如步驟1操作需要很久,那么步驟2必然得不到及時處理,如果步驟2的工作很重要或者很緊急,那么系統的性能和響應能力就很差了。

442c09ea-e689-11ed-ab56-dac502259ad0.png

示例偽代碼如下所示:

int main(void)
{
    HwInit();                //初始化外設
  while(1)
  {
    statement_1;         //語句1
    statement_2;         //語句2 
    statement_3;         //語句3
    ......
  }
  return 0;
}

2前后臺系統架構

相對輪詢系統架構,前后臺系統架構對外部事件的處理做了優化,前后臺系統架構是由中斷驅動的。

主程序依然是一段無限循環的代碼,稱為后臺程序,而事件的響應則由中斷來完成,稱為前臺程序。

在后臺程序執行時,如果有外部事件發生,則前臺的中斷程序會打斷后臺程序。在完成必要的事件響應之后,前臺中斷程序退出并通知后臺程序來繼續操作,由后臺程序完成事件的后繼處理。

從代碼功能上講,事件的響應和處理分為了兩個部分。因為中斷自身有優先級和嵌套的功能,所以優先級高的事件能夠得到及時響應。但后臺程序仍然需要按順序處理各個事件的后繼事務。

445a6f9c-e689-11ed-ab56-dac502259ad0.png

在中斷源之間有優先級的概念,ISR會首先響應事件,簡單的事件可以在ISR中直接處理,復雜的情況下則記錄下必要數據和狀態標記,等所有中斷處理結束后,將由后臺主函數按順序處理各個事件。也可以理解,事件的響應是支持優先級的,但事件的最終處理卻是順序的。

使用中斷來代替輪詢方案中事件的查詢操作,對事件的響應能力有較大改善。

示例偽代碼如下所示:

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多任務系統架構

相對于前后臺系統架構,多任務系統架構在響應事件的時候,同樣是由多個中斷處理程序完成的。但是對于事件的后繼操作則是由多個任務來處理的,也就是說每個任務處理它所負責的事件。

在基于優先級的多任務系統架構中,因為任務間存在優先級高、低的關系,優先級高的任務可打斷低優先級任務的運行而取得CPU的優先使用權,這樣優先級高的事件就能及時得到處理;在基于分時機制的多任務系統中,任務間則按比例輪流占用處理器

4477a3b4-e689-11ed-ab56-dac502259ad0.png

因為多任務系統架構允許將具體的應用系統分成若干個相對獨立的任務來管理,所以多任務操作系統的使用可以簡化應用程序的設計,系統也變得簡潔且便于維護和擴展。對實時性要求嚴格的事件都能得到及時可靠的處理。不過多任務操作系統自身將消耗更多的處理器、存儲器等硬件資源,這是引入多任務機制的必要代價。

示例偽代碼如下所示:

int main(void)
{
    HwInit();                //初始化外設
    OS_Init();               //初始化系統
    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區別

最后,對比一下三種嵌入式軟件系統架構的特點和區別,如下表所示:

449bcfe6-e689-11ed-ab56-dac502259ad0.png

本專欄將開啟對FreeRTOS多任務操作系統的學習,感興趣的小伙伴敬請期待~

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5083

    文章

    19131

    瀏覽量

    305459
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10870

    瀏覽量

    211874
  • 操作系統
    +關注

    關注

    37

    文章

    6834

    瀏覽量

    123342
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26650
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62195

原文標題:詳解FreeRTOS:嵌入式軟件系統架構(理論篇—1)

文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式系統軟件架構設計!

    1. 前言嵌入式軟件設計領域的一個分支,它自身的諸多特點決定了系統架構師的選擇,同時它的一些問題又具有相當的通用性,可以推廣到其他的領域。提起嵌入
    發表于 08-10 07:46

    嵌入式軟件開發中的程序架構

    嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于
    發表于 02-02 06:58

    決定嵌入式系統軟件架構的因素和架構的影響

    嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的
    發表于 11-08 06:54

    常見嵌入式開發程序架構是什么

    前言在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構
    發表于 02-14 06:37

    嵌入式軟件架構設計

    嵌入式軟件架構的設計,幫助我們建立合理,有效的軟件架構
    發表于 11-09 17:34 ?19次下載

    基于FreeRTOS嵌入式實時操作系統的原理和實現

    FreeRTOS是一個源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式操作系統的實現原理.本文主要闡述
    發表于 11-18 03:34 ?6686次閱讀

    嵌入式操作系統FreeRTOS內存如何管理和堆

    嵌入式操作系統FreeRTOS內存管理和堆
    的頭像 發表于 01-10 15:17 ?4734次閱讀
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統</b><b class='flag-5'>FreeRTOS</b>內存如何管理和堆

    嵌入式開發中常用的軟件架構

    嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于
    的頭像 發表于 01-01 10:16 ?5594次閱讀
    <b class='flag-5'>嵌入式</b>開發中常用的<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>

    基于FreeRTOS嵌入式云臺控制系統設計

    基于FreeRTOS嵌入式云臺控制系統設計(嵌入式開發要學單片機嗎)-基于FreeRTOS嵌入式
    發表于 07-30 11:57 ?19次下載
    基于<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>嵌入式</b>云臺控制<b class='flag-5'>系統</b>設計

    嵌入式操作系統FREERTOS的移植.

    嵌入式操作系統FREERTOS的移植.(濟南嵌入式開發招聘)-嵌入式操作系統
    發表于 07-30 12:01 ?15次下載
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統</b><b class='flag-5'>FREERTOS</b>的移植.

    嵌入式操作系統FreeRTOS的原理實現

    嵌入式操作系統FreeRTOS的原理實現(嵌入式開發工具使用實驗報告)-嵌入式操作系統
    發表于 07-30 12:03 ?31次下載
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統</b><b class='flag-5'>FreeRTOS</b>的原理實現

    嵌入式詳解

    嵌入式詳解(stm32嵌入式開發實例)-嵌入式詳解,有需要的可以參考!
    發表于 07-30 16:07 ?64次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>詳解</b>

    嵌入式軟件開發三種程序架構詳解

    嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。 軟件架構對于
    的頭像 發表于 09-05 09:53 ?3794次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發三種程序<b class='flag-5'>架構</b><b class='flag-5'>詳解</b>

    嵌入式軟件架構

    嵌入式軟件架構
    發表于 10-20 20:51 ?20次下載
    <b class='flag-5'>嵌入式</b>系<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>

    嵌入式系統軟件架構設計

    嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的
    發表于 11-03 18:21 ?30次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統軟件</b><b class='flag-5'>架構</b>設計
    主站蜘蛛池模板: 久青草国产在线视频亚瑟影视| 国产精品视频国产永久视频| 成 人 色综合| 久久99免费视频| 吻嘴胸全身好爽床大全| 宝贝好紧好爽再搔一点试視頻 | 欧美大香线蕉线伊人久久| 在线 国产 欧美 亚洲 天堂| 九九视频在线观看视频6| 亚洲日韩乱码人人爽人人澡人| 国产精品…在线观看| 涩涩999| 国产3级在线观看| 天天干夜夜曰| 国产欧美一区二区三区视频| 亚洲 日韩 在线 国产 视频| 国模孕妇模特季玥之粉红| 亚洲精品无码专区在线播放| 寂寞少妇直播| 69丰满少妇AV无码区| 免费在线视频a| TUBE69CHINESE学生| 日日摸夜夜添夜夜爽出水| 国产成人精品自线拍| 性夜影院爽黄A爽免费动漫| 狠狠国产欧美在线视频| 中文字幕一区二区三区在线播放| 麻婆豆腐传媒视频免费| SM双性精跪趴灌憋尿调教H| 三级成年网站在线观看| 国产啪精品视频网免费| 亚洲视频不卡| 免费毛片在线播放| 纲手裸乳被爆白浆| 亚洲精品第一页中文字幕| 久久午夜伦理| 成 人 动漫3d 在线看| 亚洲国产成人私人影院| 美女张开腿让男人桶爽无弹窗| 大屁股妇女流出白浆| 亚洲日本va中文字幕久久|