自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RTOS 應(yīng)用程序開發(fā)人員面臨的三個(gè)常見(jiàn)挑戰(zhàn)

開發(fā) 前端
實(shí)時(shí)操作系統(tǒng) (RTOS) 現(xiàn)在包含在許多嵌入式應(yīng)用程序中,它們可以顯著簡(jiǎn)化系統(tǒng)中的時(shí)間和任務(wù)管理,并有助于提高可擴(kuò)展性和可維護(hù)性(如果應(yīng)用程序設(shè)計(jì)正確)。

RTOS 應(yīng)用程序嵌入式開發(fā)人員面臨著幾個(gè)共同的挑戰(zhàn)。讓我們檢查這些挑戰(zhàn)并討論一些潛在的解決方案。

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

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

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

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

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

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

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

  • 數(shù)據(jù)生產(chǎn)者
  • 數(shù)據(jù)消費(fèi)者
  • 數(shù)據(jù)傳輸機(jī)制
  • 存儲(chǔ)機(jī)制
  • 任務(wù)協(xié)調(diào)機(jī)制

擁有此數(shù)據(jù)流圖可以回答有關(guān)應(yīng)用程序設(shè)計(jì)的許多問(wèn)題,并避免將大量時(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)建。雖然乍一看這似乎沒(méi)問(wèn)題,但問(wèn)題是如果互斥鎖是獨(dú)立于數(shù)據(jù)結(jié)構(gòu)創(chuàng)建的,并且有人去使用該數(shù)據(jù)結(jié)構(gòu),他們可能不會(huì)意識(shí)到它是一個(gè)共享和受保護(hù)的資源。(是的,文檔、設(shè)計(jì)和許多其他東西應(yīng)該使這一點(diǎn)顯而易見(jiàn),但如果單獨(dú)聲明它很容易被忽視)。

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

typedef struct
{
uint16_t Humidity;
uint16_t Temperature;
uint16_t Current;
}SensorData_t;

同樣,單獨(dú)聲明的互斥鎖可能會(huì)使數(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í)行自動(dòng)完成等操作時(shí),都會(huì)提醒他們這是受保護(hù)的數(shù)據(jù)。當(dāng)他們看到它被保護(hù)時(shí),它應(yīng)該提醒他們?cè)谠L問(wèn)數(shù)據(jù)之前,他們需要獲取互斥鎖。

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

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


責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2021-11-30 17:37:14

ReactRedux

2013-06-05 10:16:53

2009-09-03 17:58:34

Android開發(fā)人員

2015-03-19 09:13:24

應(yīng)用程序開發(fā)云服務(wù)商亞馬遜

2018-05-11 10:49:27

區(qū)塊鏈應(yīng)用程序

2020-09-23 22:40:31

Python 開發(fā)編程語(yǔ)言

2022-01-29 00:02:32

嵌入式系統(tǒng)開發(fā)系統(tǒng)

2023-03-07 17:56:09

Docker容器開源

2023-02-08 08:32:58

2021-11-02 08:54:10

開發(fā)編程測(cè)試

2021-11-06 23:07:47

開發(fā)網(wǎng)站編程

2022-01-06 16:15:58

自測(cè)測(cè)試開發(fā)人員

2022-01-04 13:54:57

應(yīng)用程序IT監(jiān)測(cè)

2019-08-16 15:15:05

2019-08-16 10:30:57

物聯(lián)網(wǎng)應(yīng)用程序物聯(lián)網(wǎng)安全

2022-05-05 16:37:44

云原生網(wǎng)絡(luò)安全

2009-11-26 09:06:50

Android開發(fā)

2010-06-21 08:54:35

2010-02-24 13:45:40

Python開發(fā)人員

2013-12-23 15:46:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)