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

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

3天內不再提示

分享幾點RTOS相比裸機的優勢

jf_EksNQtU6 ? 來源:strongerHuang ? 2024-01-24 18:23 ? 次閱讀

嵌入式系統中,有很多方式實現任務調度。功能有限的小系統中,無限循環足夠實現小系統的功能。當軟件設計變得龐大且復雜時,開發者應該考慮使用實時操作系統RTOS。

28ad0592-baa1-11ee-8b88-92fbcf53809c.png

下面給大家分享幾點RTOS相比裸機的優勢:

1.硬實時響應

基于優先級搶占的RTOS,根據任務的實時需求,執行優先調度。有嚴格時序限制的任務可以優先執行,提高應用程序對時間關鍵事件的響應。

2.系統性能最大化

針對大型的、復雜的嵌入式應用,使用一個事件驅動的RTOS,來替代基于輪詢的超循環結構,可以生成一個更有效的設計,更小的存儲占用,應用可以獲得更多的處理器時間。

3.降低復雜度

RTOS允許應用劃分為一個個小的自主運行的任務。任務執行自己的上下文中,不依賴其它任務或調度器。

4.高峰負載管理

RTOS提供了為管理系統高峰活動提供了一個有效的方法。更高的優先級分配給執行峰值負載活動的任務,確保他們在臨界時間內訪問處理器,在此期間,較低優先級的任務被延遲。

5.緊密集成的中間件

RTOS的模塊化設計使得它可以很容易的增加中間件。中間件組件以任務和驅動的方式增加。他們使用RTOS提供的資源與其它任務通信?;谙鄳氖录籖TOS調度。

6.更大的開發團隊

每個任務可以被認為是一個項目。通過RTOS提供的資源(隊列、信號量等)來定義輸入輸出。將系統定義為一個個的任務,可以更容易的部署更多開發人員到一個項目。

7.易于調試和驗證

系統劃分為功能明確的任務,不依賴其它任務。在整個系統集成之前,可以很容易的調試和驗證每個任務。

8.代碼重用

RTOS系統中的模塊化設計,鼓勵將軟件功能創建為獨立的、驗證過的任務。其獨立性使得在其它設計中重用這些模塊變得很簡單。

現在MCU資源相比以前更多了,很多場景都適合跑RTOS,當然,也有少部分場景跑裸機就夠了。

01

邏輯系統

裸機系統通常分成輪詢系統和前后臺系統。

1、輪詢系統

輪詢系統即是在裸機編程的時候,先初始化好相關的硬件,然后讓主程序在一個死循環里面不斷循環,順序地做各種事情,大概的偽代碼具體如代碼清單所示:

intmain(void)
{
/* 硬件相關初始化 */
HardWareInit();

/* 無限循環 */
for(;;) {
 /* 處理事情 1 */
 DoSomething1();

 /* 處理事情 2 */
 DoSomethingg2();

 /* 處理事情 3 */
 DoSomethingg3();
}
}

輪詢系統是一種非常簡單的軟件結構,通常只適用于那些只需要順序執行代碼且不需要外部事件來驅動的就能完成的事情。在代碼清單 1-1 中,如果只是實現 LED 翻轉,串口輸出,液晶顯示等這些操作,那么使用輪詢系統將會非常完美。但是,如果加入了按鍵操作等需要檢測外部信號的事件,用來模擬緊急報警,那么整個系統的實時響應能力就不會那么好了。

假設DoSomethingg3 是按鍵掃描,當外部按鍵被按下,相當于一個警報,這個時候,需要立馬響 應 , 并 做 緊 急 處 理 , 而 這 個 時 候 程 序 剛 好 執 行 到 DoSomethingg1 , 要 命 的 是DoSomethingg1 需要執行的時間比較久,久到按鍵釋放之后都沒有執行完畢,那么當執行到 DoSomethingg3 的時候就會丟失掉一次事件。足見,輪詢系統只適合順序執行的功能代碼,當有外部事件驅動時,實時性就會降低。

2、前后臺系統

相比輪詢系統,前后臺系統是在輪詢系統的基礎上加入了中斷。外部事件的響應在中斷里面完成,事件的處理還是回到輪詢系統中完成,中斷在這里我們稱為前臺, main 函數里面的無限循環我們稱為后臺,大概的偽代碼見代碼清單所示:

intflag1 =0;
intflag2 =0;
intflag3 =0;

intmain(void)
{
/* 硬件相關初始化 */
HardWareInit();

/* 無限循環 */
for(;;) {
if(flag1) {
/* 處理事情 1 */
DoSomething1();
}

if(flag2) {
/* 處理事情 2 */
DoSomethingg2();
}

if(flag3) {
/* 處理事情 3 */
DoSomethingg3();
}
}
}

voidISR1(void)
{
/* 置位標志位 */
flag1 =1;
/* 如果事件處理時間很短,則在中斷里面處理
如果事件處理時間比較長,在回到后臺處理 */
DoSomething1();
}

voidISR2(void)
{
/* 置位標志位 */
flag2 =2;

/* 如果事件處理時間很短,則在中斷里面處理
如果事件處理時間比較長,在回到后臺處理 */
DoSomething2();
}

voidISR3(void)
{
/* 置位標志位 */
flag3 =1;
/* 如果事件處理時間很短,則在中斷里面處理
如果事件處理時間比較長,在回到后臺處理 */
DoSomething3();
}

在順序執行后臺程序的時候,如果有中斷來臨,那么中斷會打斷后臺程序的正常執行流,轉而去執行中斷服務程序,在中斷服務程序里面標記事件,如果事件要處理的事情很簡短,則可在中斷服務程序里面處理,如果事件要處理的事情比較多,則返回到后臺程序里面處理。

雖然事件的響應和處理是分開了,但是事件的處理還是在后臺里面順序執行的,但相比輪詢系統,前后臺系統確保了事件不會丟失,再加上中斷具有可嵌套的功能,這可以大大的提高程序的實時響應能力。在大多數的中小型項目中,前后臺系統運用的好,堪稱有操作系統的效果。

02

多線程系統

相比前后臺系統,多線程系統的事件響應也是在中斷中完成的,但是事件的處理是在線程中完成的。在多線程系統中,線程跟中斷一樣,也具有優先級,優先級高的線程會被優先執行。

當一個緊急的事件在中斷被標記之后,如果事件對應的線程的優先級足夠高,就會立馬得到響應。相比前后臺系統,多線程系統的實時性又被提高了。

多線程系統大概的偽代碼具體見代碼清單所示:

intflag1 =0;
intflag2 =0;
intflag3 =0;

intmain(void)
{
/* 硬件相關初始化 */
HardWareInit();

/* OS 初始化 */
RTOSInit();

/* OS 啟動,開始多線程調度,不再返回 */
RTOSStart();
}

voidISR1(void)
{
/* 置位標志位 */
flag1 =1;
}

voidISR2(void)
{
/* 置位標志位 */
flag2 =2;
}

voidISR3(void)
{
/* 置位標志位 */
flag3 =1;
}

voidDoSomething1(void)
{
/* 無限循環,不能返回 */
for(;;) {
 /* 線程實體 */
 if(flag1) {

 }
}
}

voidDoSomething2(void)
{
/* 無限循環,不能返回 */
for(;;) {
 /* 線程實體 */
 if(flag2) {

 }
}
}

voidDoSomething3(void)
{
/* 無限循環,不能返回 */
for(;;) {
 /* 線程實體 */
 if(flag3) {

 }
}
}

相比前后臺系統中后臺順序執行的程序主體,在多線程系統中,根據程序的功能,我們把這個程序主體分割成一個個獨立的,無限循環且不能返回的小程序,這個小程序我們稱之為線程。

每個線程都是獨立的,互不干擾的,且具備自身的優先級,它由操作系統調度管理。加入操作系統后,我們在編程的時候不需要精心地去設計程序的執行流,不用擔心每個功能模塊之間是否存在干擾。

加入了操作系統,我們的編程反而變得簡單了。整個系統隨之帶來的額外開銷就是操作系統占據的那一丁點的 FLASH 和 RAM?,F如今,單片機的 FLASH 和 RAM 是越來越大,完全足以抵擋 RTOS 那點開銷。

輪詢、前后臺和多線程系統軟件模型區別:

28c71608-baa1-11ee-8b88-92fbcf53809c.jpg





審核編輯:劉清

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

    關注

    68

    文章

    18561

    瀏覽量

    224021
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16142

    瀏覽量

    345058
  • 嵌入式系統
    +關注

    關注

    40

    文章

    3450

    瀏覽量

    128444
  • RTOS
    +關注

    關注

    20

    文章

    781

    瀏覽量

    118901
  • 裸機
    +關注

    關注

    0

    文章

    37

    瀏覽量

    6190

原文標題:MCU跑RTOS相比裸機的優勢

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CCS中如何創建裸機、RTOS工程實例?

    剛剛學習DSP,請問裸機項目、帶RTOS的項目是如何創建的?直接CCS新建的項目是裸機的還是RTOS的項目?
    發表于 06-03 17:31

    我的項目要不要跑RTOS?

    給大家分享幾點RTOS相比裸機優勢:1.硬實時響應基于優先級搶占的RTOS,根據任務的實時需求
    發表于 06-17 06:30

    怎樣從裸機編程轉到RTOS編程呢

    學完uCOS-II和FreeRTOS后,想從裸機編程轉到RTOS編程,但是想從裸機編程轉到RTOS編程確實有點困難呀!以下是向ba:向kinsno: 討教如何設計某個儀表上的4個數碼管
    發表于 02-28 13:54

    裸機系統和RTOS該怎么選擇呢

    玩過單片機的同學都清楚,采用裸機系統開發,在很多場景下完全可以滿足需求。但我們也注意到,隨著物聯網的興起,各種物聯網RTOS雨后春筍般冒了出來,那么裸機系統和RTOS該怎么選擇呢?
    發表于 03-02 07:17

    低功耗應用是用RTOS還是裸機,哪個省電?

    低功耗應用是用RTOS還是裸機,哪個省電?
    發表于 09-20 07:43

    RTOS會比裸機實時性好嗎?

    RTOS會比裸機實時性好么
    發表于 10-13 07:17

    實時操作系統RTOS相比裸機優勢有哪些?

    足等。 ? 針對這部分朋友,今天分享幾點相關內容: ?嵌入式系統中,有很多方式實現任務調度。功能有限的小系統中,無限循環足夠實現小系統的功能。當軟件設計變得龐大且復雜時,開發者應該考慮使用實時操作系統RTOS。 下面給大家分享幾點
    的頭像 發表于 12-25 15:48 ?6359次閱讀

    為什么我們需要從裸機RTOS?

    很多單片機初學者都是從裸機開始的,裸機確實也能開發出好的產品,但作為一個嵌入式軟件工程師,如果只能用裸機開發產品,那肯定是不夠的。 要從裸機的思維轉變到
    的頭像 發表于 04-25 16:39 ?1889次閱讀

    裸機RTOS的理解和并發帶來的問題

    1 裸機RTOS的理解 首先這里只針對單核CPU架構的芯片展開討論,大部分是MCU吧,而多核CPU的討論相對比較復雜,暫不涉及~玩RTOS的朋友都知道,裸機與OS的最大區別就是實現多
    的頭像 發表于 06-13 15:13 ?3948次閱讀

    RTOS是什么,裸機開發的詳細介紹

    本課是在聽了韋東山老師的裸機RTOS開發模式課程后,才簡單了解裸機開發與RTOS開發的區別。更多的是對現在自己編程方式有一個認知,希望在這里與大家分享。 什么是
    發表于 03-07 14:16 ?6878次閱讀
    <b class='flag-5'>RTOS</b>是什么,<b class='flag-5'>裸機</b>開發的詳細介紹

    裸機調度過渡到RTOS的7個小技巧

    實時操作系統已經成為許多嵌入式系統中的關鍵組件,從裸機調度過渡到RTOS可能是一件棘手的事情。這里有七個小技巧可以幫助嵌入式開發人員更輕松地完成過渡。
    的頭像 發表于 11-29 11:09 ?920次閱讀

    使用裸機云的優勢有哪些?

    裸機云和虛擬化云模型都提供類似的功能和優勢。它們都有助于基于需求和基于 DevOps 的配置和按需付費預算。但是,裸機云還有一些額外的好處,包括硬件控制、可擴展性和性能優化。 如前所述,引入管理程序
    的頭像 發表于 03-02 12:27 ?354次閱讀

    使用裸機云的優勢有哪些?

    裸機云和虛擬化云模型都提供類似的功能和優勢。它們都有助于基于需求和基于 DevOps 的配置和按需付費預算。但是,裸機云還有一些額外的好處,包括硬件控制、可擴展性和性能優化。 如前所述,引入管理程序
    的頭像 發表于 07-13 14:08 ?257次閱讀

    RTOS相比裸機有什么優點?RTOS相比裸機更方便嗎?

    RTOS相比裸機有什么優點?RTOS相比裸機更方便嗎? RT
    的頭像 發表于 10-29 16:33 ?1144次閱讀

    幾點RTOS相比裸機優勢分享

    相比前后臺系統中后臺順序執行的程序主體,在多線程系統中,根據程序的功能,我們把這個程序主體分割成一個個獨立的,無限循環且不能返回的小程序,這個小程序我們稱之為線程。
    發表于 01-24 18:21 ?402次閱讀
    <b class='flag-5'>幾點</b><b class='flag-5'>RTOS</b><b class='flag-5'>相比</b><b class='flag-5'>裸機</b>的<b class='flag-5'>優勢</b>分享
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>