一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解FreeRTOS:嵌入式軟件系統(tǒng)架構(gòu)

jf_Vqngj70R ? 來(lái)源:美男子玩編程 ? 2023-05-04 16:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目前常見(jiàn)的嵌入式軟件系統(tǒng)架構(gòu)有三種可以分為:輪詢系統(tǒng)架構(gòu)、前后臺(tái)系統(tǒng)架構(gòu)和多任務(wù)系統(tǒng)架構(gòu)。

1輪詢系統(tǒng)架構(gòu)

輪詢系統(tǒng)架構(gòu)是最簡(jiǎn)單的一種軟件結(jié)構(gòu),主程序是一段無(wú)限循環(huán)的代碼,在循環(huán)中順序查詢各個(gè)條件,如果滿足就執(zhí)行相應(yīng)的操作。

這種方案的好處是實(shí)現(xiàn)簡(jiǎn)單,邏輯清晰,便于開(kāi)發(fā)人員掌握。但是每個(gè)事件的查詢和處理時(shí)間是不能確定的,假如前面的操作時(shí)間較長(zhǎng),那么后面的操作必然會(huì)被延遲。

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

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

示例偽代碼如下所示:

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

2前后臺(tái)系統(tǒng)架構(gòu)

相對(duì)輪詢系統(tǒng)架構(gòu),前后臺(tái)系統(tǒng)架構(gòu)對(duì)外部事件的處理做了優(yōu)化,前后臺(tái)系統(tǒng)架構(gòu)是由中斷驅(qū)動(dòng)的。

主程序依然是一段無(wú)限循環(huán)的代碼,稱為后臺(tái)程序,而事件的響應(yīng)則由中斷來(lái)完成,稱為前臺(tái)程序。

在后臺(tái)程序執(zhí)行時(shí),如果有外部事件發(fā)生,則前臺(tái)的中斷程序會(huì)打斷后臺(tái)程序。在完成必要的事件響應(yīng)之后,前臺(tái)中斷程序退出并通知后臺(tái)程序來(lái)繼續(xù)操作,由后臺(tái)程序完成事件的后繼處理。

從代碼功能上講,事件的響應(yīng)和處理分為了兩個(gè)部分。因?yàn)橹袛嘧陨碛袃?yōu)先級(jí)和嵌套的功能,所以優(yōu)先級(jí)高的事件能夠得到及時(shí)響應(yīng)。但后臺(tái)程序仍然需要按順序處理各個(gè)事件的后繼事務(wù)。

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

在中斷源之間有優(yōu)先級(jí)的概念,ISR會(huì)首先響應(yīng)事件,簡(jiǎn)單的事件可以在ISR中直接處理,復(fù)雜的情況下則記錄下必要數(shù)據(jù)和狀態(tài)標(biāo)記,等所有中斷處理結(jié)束后,將由后臺(tái)主函數(shù)按順序處理各個(gè)事件。也可以理解,事件的響應(yīng)是支持優(yōu)先級(jí)的,但事件的最終處理卻是順序的。

使用中斷來(lái)代替輪詢方案中事件的查詢操作,對(duì)事件的響應(yīng)能力有較大改善。

示例偽代碼如下所示:

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


void interrupt_event(void)
{
    statement_4;         //語(yǔ)句4
    return 0;
}

3多任務(wù)系統(tǒng)架構(gòu)

相對(duì)于前后臺(tái)系統(tǒng)架構(gòu),多任務(wù)系統(tǒng)架構(gòu)在響應(yīng)事件的時(shí)候,同樣是由多個(gè)中斷處理程序完成的。但是對(duì)于事件的后繼操作則是由多個(gè)任務(wù)來(lái)處理的,也就是說(shuō)每個(gè)任務(wù)處理它所負(fù)責(zé)的事件。

在基于優(yōu)先級(jí)的多任務(wù)系統(tǒng)架構(gòu)中,因?yàn)槿蝿?wù)間存在優(yōu)先級(jí)高、低的關(guān)系,優(yōu)先級(jí)高的任務(wù)可打斷低優(yōu)先級(jí)任務(wù)的運(yùn)行而取得CPU的優(yōu)先使用權(quán),這樣優(yōu)先級(jí)高的事件就能及時(shí)得到處理;在基于分時(shí)機(jī)制的多任務(wù)系統(tǒng)中,任務(wù)間則按比例輪流占用處理器。

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

因?yàn)槎嗳蝿?wù)系統(tǒng)架構(gòu)允許將具體的應(yīng)用系統(tǒng)分成若干個(gè)相對(duì)獨(dú)立的任務(wù)來(lái)管理,所以多任務(wù)操作系統(tǒng)的使用可以簡(jiǎn)化應(yīng)用程序的設(shè)計(jì),系統(tǒng)也變得簡(jiǎn)潔且便于維護(hù)和擴(kuò)展。對(duì)實(shí)時(shí)性要求嚴(yán)格的事件都能得到及時(shí)可靠的處理。不過(guò)多任務(wù)操作系統(tǒng)自身將消耗更多的處理器、存儲(chǔ)器等硬件資源,這是引入多任務(wù)機(jī)制的必要代價(jià)。

示例偽代碼如下所示:

int main(void)
{
    HwInit();                //初始化外設(shè)
    OS_Init();               //初始化系統(tǒng)
    OS_Start();              //運(yùn)行內(nèi)核調(diào)度
  while(1)
  {      
    ......
  }
  return 0;
}


//任務(wù)1
void task_1(void)
{
  task_statement_1;
  task_statement_2;
  task_statement_3;
  OS_delay();
}


//任務(wù)2
void task_2(void)
{
  task_statement_1;
  task_statement_2;
  task_statement_3;
  OS_delay();
}


//任務(wù)3
void task_3(void)
{
  task_statement_1;
  task_statement_2;
  task_statement_3;
  OS_delay();
}

4區(qū)別

最后,對(duì)比一下三種嵌入式軟件系統(tǒng)架構(gòu)的特點(diǎn)和區(qū)別,如下表所示:

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

本專欄將開(kāi)啟對(duì)FreeRTOS多任務(wù)操作系統(tǒng)的學(xué)習(xí),感興趣的小伙伴敬請(qǐng)期待~

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317623
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217112
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125597
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    245

    瀏覽量

    27336
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    493

    瀏覽量

    64361

原文標(biāo)題:詳解FreeRTOS:嵌入式軟件系統(tǒng)架構(gòu)(理論篇—1)

文章出處:【微信號(hào):美男子玩編程,微信公眾號(hào):美男子玩編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式系統(tǒng)軟件架構(gòu)設(shè)計(jì)!

    1. 前言嵌入式軟件設(shè)計(jì)領(lǐng)域的一個(gè)分支,它自身的諸多特點(diǎn)決定了系統(tǒng)架構(gòu)師的選擇,同時(shí)它的一些問(wèn)題又具有相當(dāng)?shù)耐ㄓ眯裕梢酝茝V到其他的領(lǐng)域。提起嵌入
    發(fā)表于 08-10 07:46

    嵌入式軟件開(kāi)發(fā)中的程序架構(gòu)

    嵌入式軟件開(kāi)發(fā),包括單片機(jī)開(kāi)發(fā)中,軟件架構(gòu)對(duì)于開(kāi)發(fā)人員是一個(gè)必須認(rèn)真考慮的問(wèn)題。軟件架構(gòu)對(duì)于
    發(fā)表于 02-02 06:58

    決定嵌入式系統(tǒng)軟件架構(gòu)的因素和架構(gòu)的影響

    嵌入式系統(tǒng)軟件架構(gòu)設(shè)計(jì)目錄1.前言42.決定架構(gòu)的因素和架構(gòu)的影響42.1.常見(jiàn)的誤解52.1.1.小型的
    發(fā)表于 11-08 06:54

    常見(jiàn)嵌入式開(kāi)發(fā)程序架構(gòu)是什么

    前言在嵌入式軟件開(kāi)發(fā),包括單片機(jī)開(kāi)發(fā)中,軟件架構(gòu)對(duì)于開(kāi)發(fā)人員是一個(gè)必須認(rèn)真考慮的問(wèn)題。軟件架構(gòu)對(duì)
    發(fā)表于 02-14 06:37

    嵌入式軟件架構(gòu)設(shè)計(jì)

    嵌入式軟件架構(gòu)的設(shè)計(jì),幫助我們建立合理,有效的軟件架構(gòu)。
    發(fā)表于 11-09 17:34 ?19次下載

    基于FreeRTOS嵌入式實(shí)時(shí)操作系統(tǒng)的原理和實(shí)現(xiàn)

    FreeRTOS是一個(gè)源碼公開(kāi)的免費(fèi)的嵌入式實(shí)時(shí)操作系統(tǒng),通過(guò)研究其內(nèi)核可以更好地理解嵌入式操作系統(tǒng)的實(shí)現(xiàn)原理.本文主要闡述
    發(fā)表于 11-18 03:34 ?7030次閱讀

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存如何管理和堆

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存管理和堆
    的頭像 發(fā)表于 01-10 15:17 ?5322次閱讀
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>FreeRTOS</b>內(nèi)存如何管理和堆

    嵌入式開(kāi)發(fā)中常用的軟件架構(gòu)

    嵌入式軟件開(kāi)發(fā),包括單片機(jī)開(kāi)發(fā)中,軟件架構(gòu)對(duì)于開(kāi)發(fā)人員是一個(gè)必須認(rèn)真考慮的問(wèn)題。軟件架構(gòu)對(duì)于
    的頭像 發(fā)表于 01-01 10:16 ?6008次閱讀
    <b class='flag-5'>嵌入式</b>開(kāi)發(fā)中常用的<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>

    基于FreeRTOS嵌入式云臺(tái)控制系統(tǒng)設(shè)計(jì)

    基于FreeRTOS嵌入式云臺(tái)控制系統(tǒng)設(shè)計(jì)(嵌入式開(kāi)發(fā)要學(xué)單片機(jī)嗎)-基于FreeRTOS嵌入式
    發(fā)表于 07-30 11:57 ?25次下載
    基于<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>嵌入式</b>云臺(tái)控制<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    嵌入式操作系統(tǒng)FREERTOS的移植.

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

    嵌入式操作系統(tǒng)FreeRTOS的原理實(shí)現(xiàn)

    嵌入式操作系統(tǒng)FreeRTOS的原理實(shí)現(xiàn)(嵌入式開(kāi)發(fā)工具使用實(shí)驗(yàn)報(bào)告)-嵌入式操作系統(tǒng)
    發(fā)表于 07-30 12:03 ?31次下載
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>FreeRTOS</b>的原理實(shí)現(xiàn)

    嵌入式詳解

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

    嵌入式軟件開(kāi)發(fā)三種程序架構(gòu)詳解

    嵌入式軟件開(kāi)發(fā),包括單片機(jī)開(kāi)發(fā)中,軟件架構(gòu)對(duì)于開(kāi)發(fā)人員是一個(gè)必須認(rèn)真考慮的問(wèn)題。 軟件架構(gòu)對(duì)于
    的頭像 發(fā)表于 09-05 09:53 ?4215次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開(kāi)發(fā)三種程序<b class='flag-5'>架構(gòu)</b><b class='flag-5'>詳解</b>

    嵌入式軟件架構(gòu)

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

    嵌入式系統(tǒng)軟件架構(gòu)設(shè)計(jì)

    嵌入式系統(tǒng)軟件架構(gòu)設(shè)計(jì)目錄1.前言42.決定架構(gòu)的因素和架構(gòu)的影響42.1.常見(jiàn)的誤解52.1.1.小型的
    發(fā)表于 11-03 18:21 ?30次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)軟件</b><b class='flag-5'>架構(gòu)</b>設(shè)計(jì)