1. gzyueqian
      13352868059

      嵌入式開發(fā):RTOS 應(yīng)用程序開發(fā)人員面臨的3個常見挑戰(zhàn)

      更新時間: 2022-02-25 07:10:00來源: 粵嵌教育瀏覽量:11435

        實(shí)時操作系統(tǒng) (RTOS) 現(xiàn)在包含在許多嵌入式應(yīng)用程序中,它們可以顯著簡化系統(tǒng)中的時間和任務(wù)管理,并有助于提高可擴(kuò)展性和可維護(hù)性(如果應(yīng)用程序設(shè)計正確)。RTOS 應(yīng)用程序嵌入式開發(fā)人員面臨著幾個共同的挑戰(zhàn)。讓我們檢查這些挑戰(zhàn)并討論一些潛在的解決方案。


        挑戰(zhàn) #1 – 選擇任務(wù)優(yōu)先級


        事實(shí)證明,有幾種不同的方法來選擇任務(wù)優(yōu)先級。首先,有最短的響應(yīng)時間。在這種方法中,開發(fā)人員檢查每個任務(wù)的響應(yīng)時間要求,并將最高優(yōu)先級分配給具有最短響應(yīng)時間要求的任務(wù)。


        其次,有最短作業(yè)優(yōu)先方法。在這種方法中,開發(fā)人員檢查任務(wù)的執(zhí)行時間,執(zhí)行時間最短的任務(wù)是最高優(yōu)先級(顯然其次是下一個最高優(yōu)先級,依此類推)。


        最后,還有一種在實(shí)時嵌入式系統(tǒng)中最常用的方法,即最短周期優(yōu)先或更常用的“速率單調(diào)調(diào)度(RMS)”。在這種方法中,周期最短的任務(wù)優(yōu)先級最高。


        遵循 RMS 將使你完成 95% 的任務(wù),然后通常會有一個奇怪的任務(wù),或者是非周期性的,需要優(yōu)先級分配。這些非周期性任務(wù)可以分配一個最壞情況周期,也可以根據(jù)它們的重要性、執(zhí)行時間或是否需要在另一個可能需要其數(shù)據(jù)的任務(wù)之前運(yùn)行來分配它們。(請記住,任務(wù)優(yōu)先級沒有正確或錯誤的答案,只有可能比其他系統(tǒng)運(yùn)行得更好或更高效的系統(tǒng))。


        挑戰(zhàn)#2 — 用數(shù)據(jù)流圖看大圖


        嵌入式開發(fā)人員在實(shí)施他們的 RTOS 應(yīng)用程序時并沒有真正了解數(shù)據(jù)是從哪里產(chǎn)生的、去往何處以及如何到達(dá)那里的,這會導(dǎo)致軟件有點(diǎn)像糟亂的代碼,并且隨著更多應(yīng)用程序的部署,經(jīng)常需要不斷地返工。盡量減少這種返工并了解整個應(yīng)用程序的方法是開發(fā)一個簡單的數(shù)據(jù)流圖。該圖包含幾個關(guān)鍵組件:


        數(shù)據(jù)生產(chǎn)者

        數(shù)據(jù)消費(fèi)者

        數(shù)據(jù)傳輸機(jī)制

        存儲機(jī)制

        任務(wù)協(xié)調(diào)機(jī)制


        擁有此數(shù)據(jù)流圖可以回答有關(guān)應(yīng)用程序設(shè)計的許多問題,并避免將大量時間浪費(fèi)在返工或調(diào)試上。



        挑戰(zhàn) #3 – 正確保護(hù)共享內(nèi)存


        互斥鎖用于保護(hù)共享內(nèi)存資源,但在實(shí)現(xiàn)中,經(jīng)常有嵌入式開發(fā)人員將互斥鎖與受保護(hù)的數(shù)據(jù)分開創(chuàng)建。雖然乍一看這似乎沒問題,但問題是如果互斥鎖是獨(dú)立于數(shù)據(jù)結(jié)構(gòu)創(chuàng)建的,并且有人去使用該數(shù)據(jù)結(jié)構(gòu),他們可能不會意識到它是一個共享和受保護(hù)的資源。(是的,文檔、設(shè)計和許多其他東西應(yīng)該使這一點(diǎn)顯而易見,但如果單獨(dú)聲明它很容易被忽視)。


        解決方案是將共享內(nèi)存視為一個對象,并將互斥鎖作為共享內(nèi)存數(shù)據(jù)結(jié)構(gòu)的一部分。例如,共享內(nèi)存可能有來自濕度、溫度和電流傳感器的數(shù)據(jù)。我們通常可以如下聲明數(shù)據(jù)的結(jié)構(gòu):


        typedef struct

        {

        uint16_t Humidity;

        uint16_t Temperature;

        uint16_t Current;

        }SensorData_t;


        同樣,單獨(dú)聲明的互斥鎖可能會使數(shù)據(jù)共享變得不那么明顯。相反,我們可以定義如下結(jié)構(gòu):


        typedef struct

        {

        mutex_t SensorDataMutex;

        uint16_t Humidity;

        uint16_t Temperature;

        uint16_t Current;

        }SensorData_t


        現(xiàn)在,每當(dāng)開發(fā)人員查看數(shù)據(jù)結(jié)構(gòu)、嘗試執(zhí)行自動完成等操作時,都會提醒他們這是受保護(hù)的數(shù)據(jù)。當(dāng)他們看到它被保護(hù)時,它應(yīng)該提醒他們在訪問數(shù)據(jù)之前,他們需要獲取互斥鎖。


        開發(fā)人員經(jīng)常忘記,僅僅因?yàn)閯?chuàng)建互斥鎖是為了保護(hù)數(shù)據(jù),并不能保證互斥鎖將用于訪問數(shù)據(jù)。(這也是為什么將數(shù)據(jù)結(jié)構(gòu)視為一個對象并創(chuàng)建限制對數(shù)據(jù)資源的訪問和控制的函數(shù)很有用,這些數(shù)據(jù)資源在應(yīng)用程序級別抽象出互斥鎖)。


        實(shí)時操作系統(tǒng)可以簡化嵌入式系統(tǒng)的時間和資源管理。但是,RTOS 確實(shí)增加了系統(tǒng)的復(fù)雜性,可能會產(chǎn)生影響開發(fā)計劃和代碼質(zhì)量的意想不到的挑戰(zhàn)。在今天的文章中,我們研究了嵌入式開發(fā)人員經(jīng)常遇到的幾個常見挑戰(zhàn),通過遵循一些最佳實(shí)踐可以很容易地克服這些挑戰(zhàn)。

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

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

      
      

      1. 日本一区二区三区精品无卡 | 亚洲少妇毛多水多视频 | 婷婷中文色字幕 | 亚洲丁香婷婷综合久久 | 日韩国产欧美另类综合 | 中文字制服丝袜字幕在线 |