1. gzyueqian
      13352868059

      嵌入式開發(fā):5個(gè)RTOS設(shè)計(jì)最佳實(shí)踐

      更新時(shí)間: 2022-04-15 09:44:10來源: 粵嵌教育瀏覽量:10666

        RTOS 設(shè)計(jì)已成為許多嵌入式應(yīng)用的關(guān)鍵,RTOS 用于超過 50% 的嵌入式應(yīng)用程序,并且隨著如此多的設(shè)備開始連接并開始使用機(jī)器學(xué)習(xí),這些數(shù)字只會(huì)增加。嵌入式開發(fā)人員在設(shè)計(jì)基于 RTOS 的應(yīng)用程序時(shí),有許多注意事項(xiàng),在今天的文章中,我們探討5個(gè)RTOS 設(shè)計(jì)最佳實(shí)踐。

        1. 數(shù)據(jù)決定設(shè)計(jì)

        好的軟件設(shè)計(jì)是由數(shù)據(jù)驅(qū)動(dòng)的,換句話說,數(shù)據(jù)決定設(shè)計(jì)。大多數(shù)系統(tǒng)是事件生成數(shù)據(jù)的實(shí)時(shí)系統(tǒng),反過來,這些數(shù)據(jù)必須以各種方式流經(jīng)應(yīng)用程序,進(jìn)行處理,然后存儲(chǔ)或輸出。

        在開始 RTOS 設(shè)計(jì),甚至任何嵌入式應(yīng)用程序設(shè)計(jì)時(shí),首先要識(shí)別應(yīng)用程序中的所有數(shù)據(jù)源。首先創(chuàng)建一個(gè)列表;接下來,在圖表中繪制塊并標(biāo)記數(shù)據(jù)源;最后,將數(shù)據(jù)源映射到它們的最終目的地,標(biāo)記數(shù)據(jù)如何轉(zhuǎn)換、如何處理以及哪些應(yīng)用程序區(qū)域使用數(shù)據(jù)。當(dāng)完成時(shí),任務(wù)、數(shù)據(jù)存儲(chǔ)、同步機(jī)制等自然會(huì)從數(shù)據(jù)流中出來。



        2. 使用 RMS 驗(yàn)證你的設(shè)計(jì)

        RMS,最著名的是速率單調(diào)調(diào)度,是一種分析技術(shù),設(shè)計(jì)人員可以使用它來測(cè)試他們關(guān)于系統(tǒng)中的任務(wù)是否可以成功調(diào)度的假設(shè)。RMS 存在多種模型,最基本的模型假設(shè):

        任務(wù)是周期性的

        任務(wù)是獨(dú)立的

        使用搶占式調(diào)度

        每個(gè)任務(wù)都有一個(gè)恒定的最壞情況執(zhí)行時(shí)間

        所有任務(wù)都同樣重要

        非周期性任務(wù)僅限于啟動(dòng)和故障恢復(fù)

        乍一看,其中一些假設(shè)對(duì)于現(xiàn)實(shí)世界似乎非常不切實(shí)際,但是,大多數(shù)設(shè)計(jì)都可以使用它們進(jìn)行分解和驗(yàn)證。(更復(fù)雜的模型改進(jìn)了這些假設(shè))。示例分析如下:

        3. 任務(wù)分解從外向內(nèi)開始

        將應(yīng)用程序分解為任務(wù)可能具有挑戰(zhàn)性,嵌入式開發(fā)人員經(jīng)常發(fā)現(xiàn)自己會(huì)提出以下問題:

        我的任務(wù)太多了嗎?

        我沒有足夠的任務(wù)嗎?

        可以安排所有這些任務(wù)嗎?

        這些任務(wù)應(yīng)該合并還是分開?

        開始分解應(yīng)用程序時(shí),最好的方法是從外向內(nèi)。首先查看硬件設(shè)備以及系統(tǒng)的輸入和輸出,查看數(shù)據(jù)和生成數(shù)據(jù)的速率,輸入/輸出和硬件及其數(shù)據(jù)流將有助于識(shí)別系統(tǒng)中的主要任務(wù),例如,你最終可能會(huì)得到一個(gè)簡單的圖表,如下所示:

        上圖標(biāo)識(shí)了五個(gè)主要任務(wù),然后是一個(gè)可以進(jìn)一步分解的應(yīng)用程序塊。



        4. 使用 OSAL 解耦 RTOS

        很多公司圍繞他們的 RTOS 構(gòu)建他們的整個(gè)應(yīng)用程序,RTOS 應(yīng)該是應(yīng)用程序中的一個(gè)組件,而不是應(yīng)用程序的基礎(chǔ)。問題是開發(fā)人員無法控制 RTOS,如果 RTOS 發(fā)生更改,則應(yīng)用程序無法免受這些更改的影響,如果 RTOS 突然不再可用或被某人購買,更改為不同的 RTOS 可能與重寫大部分應(yīng)用程序一樣痛苦。

        這里的最佳實(shí)踐是使用操作系統(tǒng)抽象層 (OSAL)。它可以非常優(yōu)雅地融入軟件架構(gòu),如下圖所示:

        請(qǐng)注意,RTOS 只是應(yīng)用程序堆棧中間的另一個(gè)組件。如果我們想換出新的 RTOS,我們需要做的就是將 OSAL 映射更改為新的 RTOS。應(yīng)用程序?qū)⒉恢腊l(fā)生了什么變化!

        OSAL 本質(zhì)上充當(dāng)依賴屏障,并將使用通用操作系統(tǒng)調(diào)用。例如,每個(gè) RTOS 都有一個(gè)信號(hào)量、互斥量等。OSAL 為常見的 RTOS 功能提供了通用 API。如果需要一些特定于操作系統(tǒng)的功能,這些功能不在像 CMSIS-RTOS2 這樣的通用 OSAL 中,那么嵌入式開發(fā)人員應(yīng)該為 OSAL 編寫自己的擴(kuò)展。這將繼續(xù)限制應(yīng)用程序?qū)?RTOS 的耦合和依賴。畢竟,你永遠(yuǎn)不知道它什么時(shí)候會(huì)改變。

        5. 不要將信號(hào)量用作互斥體

        互斥量和信號(hào)量是為不同的目的而設(shè)計(jì)的。互斥鎖旨在提供對(duì)資源的互斥訪問。信號(hào)量是為任務(wù)通知和協(xié)調(diào)而設(shè)計(jì)的。

        設(shè)計(jì)人員和開發(fā)人員經(jīng)常使用二進(jìn)制信號(hào)量作為互斥體。互斥鎖可以鎖定/解鎖資源。可以給出或獲取二進(jìn)制信號(hào)量,從而導(dǎo)致看起來很像鎖定/解鎖的狀態(tài)。但是,這兩者之間有一個(gè)重要的區(qū)別。互斥體有一個(gè)稱為優(yōu)先級(jí)繼承的特性。在優(yōu)先級(jí)倒置的情況下,優(yōu)先級(jí)繼承可以提升任務(wù)的優(yōu)先級(jí),將優(yōu)先級(jí)倒置的影響降到最低。

        信號(hào)量不支持優(yōu)先級(jí)繼承,因此當(dāng)用作互斥體時(shí)會(huì)導(dǎo)致優(yōu)先級(jí)反轉(zhuǎn)和其他設(shè)計(jì)問題。確保你了解這些差異,并且永遠(yuǎn)不要使用信號(hào)量來保護(hù)數(shù)據(jù)訪問。使用正確的工具,即互斥鎖。

        結(jié)論

        RTOS 設(shè)計(jì)正在成為或已經(jīng)成為嵌入式開發(fā)人員需要執(zhí)行的一項(xiàng)常見活動(dòng),很多困難可以通過我們剛剛研究的5個(gè)RTOS設(shè)計(jì)最佳實(shí)踐來緩解。仔細(xì)研究這些方法,你可以避免很多煩惱。


      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日日夜夜一区二区一区二区 | 色婷婷综合和线在线 | 亚卅日韩久久影视观看 | 香蕉网在线日韩直播 | 亚洲色欧美色国产综合色 | 中文字幕一本在线无卡 |