国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

這篇具有很好參考價值的文章主要介紹了微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

3任務(wù)信令和通信機制

在本章中,將簡要介紹任務(wù)信號和任務(wù)間通信的核心機制。這些基元是事件驅(qū)動的并行編程的基礎(chǔ),它是基于RTOS的應(yīng)用程序良好實現(xiàn)的基礎(chǔ)。

與其直接進入FreeRTOS的API,不如將每個基元與一些圖形例子和一些關(guān)于每個機制可被使用的建議一起介紹。不要擔心:在后面的章節(jié)中,我們將進入使用API的細枝末節(jié)。現(xiàn)在,讓我們把注意力集中在基本原理上。

實時操作系統(tǒng)隊列

隊列的概念相當簡單,但它們也非常強大和靈活,特別是如果你傳統(tǒng)上用C語言在裸機上編程的話。 在其核心,隊列只是一個循環(huán)緩沖區(qū)。然而,這個緩沖區(qū)包含一些非常特殊的屬性,比如原生的多線程安全,每個隊列可以靈活地容納任何類型的數(shù)據(jù),以及喚醒正在等待隊列中出現(xiàn)的項目的其他任務(wù)。默認情況下,數(shù)據(jù)存儲在隊列中使用先進先出(FIFO)排序--第一個被放入隊列的項目就是第一個被從隊列中移除的項目。

我們將首先看看當隊列處于不同狀態(tài)和以不同方式使用時的一些簡單行為(發(fā)送與接收),然后繼續(xù)討論如何用隊列在任務(wù)之間傳遞信息。

簡單的隊列發(fā)送

第一個隊列例子是簡單地將一個項目添加(也被稱為發(fā)送)到有空位的隊列中:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

當項目被添加到有可用空間的隊列中時,添加立即發(fā)生。因為隊列中的空間是可用的,所以將項目發(fā)送到隊列的任務(wù)繼續(xù)運行,除非有另優(yōu)先級更高的任務(wù)在等待隊列中出現(xiàn)的項目。

盡管與隊列的交互通常發(fā)生在任務(wù)內(nèi)部,但這并不總是這樣的。在一些特殊情況下,隊列也可以從ISR中訪問(但這種行為有不同的規(guī)則)。在本章的例子中,我們將假設(shè)任務(wù)從隊列中發(fā)送和接收項目。

簡單的隊列接收

在下圖中,任務(wù)被顯從隊列中接收一個項目:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

當任務(wù)準備從隊列中接收項目時,默認情況下,它將獲得最老的項目。在這個例子中,由于隊列中至少有一個項目,所以接收被立即處理,任務(wù)繼續(xù)運行。

滿隊列發(fā)送

當隊列已滿時,沒有信息被丟棄。相反,試圖將項目發(fā)送到隊列的任務(wù)將等待隊列中的可用空間,最長時間為預(yù)先確定的數(shù)量:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

當隊列已滿時,試圖向隊列發(fā)送項目的任務(wù)將等待,直到隊列中的空間變得可用,但只到指定的超時值。

在這個例子中,如果任務(wù)試圖向滿的隊列發(fā)送,并且它的超時值是10毫秒--它將只等待10毫秒的隊列中的空間變得可用。超時結(jié)束后,調(diào)用將返回并通知調(diào)用代碼發(fā)送失敗。如何處理這個失敗是由設(shè)置調(diào)用代碼的程序員決定的,并將根據(jù)使用情況而變化。極大的超時值可以用于真正的非關(guān)鍵性功能。只是要注意,這將導(dǎo)致發(fā)送任務(wù)有效地永遠等待隊列中的空位(這顯然不再是實時的了)

你的代碼通常會被結(jié)構(gòu)化,以便嘗試向隊列中發(fā)送不會超時。作為程序員,你應(yīng)該根據(jù)具體情況來決定什么是可接受的時間量。你也有責任確定超時的嚴重性和糾正措施,如果真的發(fā)生超時。潛在的糾正措施可以從什么都不做(想想視頻通話中的丟幀)到緊急關(guān)機。

接收空隊列

訪問隊列可能導(dǎo)致任務(wù)阻塞的另一種情況是接收空隊列:
微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

與等待空間的發(fā)送類似,從隊列中接收的任務(wù)也有可能被延遲。在空隊列的情況下,試圖從隊列中接收的任務(wù)將被阻塞,直到隊列中出現(xiàn)項目。如果在超時之前沒有項目出現(xiàn),調(diào)用代碼將被通知失敗。同樣,要采取的確切行動方案也是不同的。

有時,會使用無限期的等待。你經(jīng)常會遇到一些隊列的等待時間非常長,這些隊列正在接收來自外部接口的輸入,如串行端口,它們可能不會不斷地發(fā)送數(shù)據(jù)。如果串口另一端的人類用戶在很長一段時間內(nèi)沒有發(fā)送數(shù)據(jù),那就完全沒有問題。

另一方面,接收超時也可以用來確保你有一個最低可接受的數(shù)據(jù)量來處理。讓我們使用一個旨在以10赫茲(每秒10個讀數(shù))提供新讀數(shù)的傳感器。如果你正在實現(xiàn)一個依賴于這個傳感器的新鮮讀數(shù)的算法,一個略大于100毫秒的超時可以用來觸發(fā)一個錯誤。這個超時將保證該算法總是在新鮮的傳感器讀數(shù)上行動。在這種情況下,擊中超時可用于觸發(fā)某種類型的糾正措施或通知,說明傳感器沒有按照預(yù)期執(zhí)行。

任務(wù)間通信的隊列

既然已經(jīng)介紹了隊列的簡單行為,我們就來看看如何利用它們在任務(wù)之間移動數(shù)據(jù)。隊列的非常常見的用例是讓一個任務(wù)填充隊列,而另一個任務(wù)則從同一隊列中讀取數(shù)據(jù)。這通常是直截了當?shù)?,但可能有一些細微的差別,這取決于系統(tǒng)是如何設(shè)置的:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

在前面的例子中,任務(wù)1和任務(wù)2都在與同一個隊列進行交互。任務(wù)1將向隊列發(fā)送一個項目。只要任務(wù)2的優(yōu)先級比任務(wù)1高,它就會立即收到該項目。

讓我們考慮另一個實例,在實踐中,當多個任務(wù)與隊列進行交互時,經(jīng)常會出現(xiàn)這種情況。由于搶占式調(diào)度器總是運行具有最高優(yōu)先級的任務(wù),如果該任務(wù)總是有數(shù)據(jù)要寫入隊列,那么在另一個任務(wù)有機會從隊列中讀取數(shù)據(jù)之前,隊列就會充滿。下面是一個例子,說明這可能會發(fā)生的情況:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

下面的數(shù)字與時間軸上的索引相對應(yīng):

  • 任務(wù)2試圖從空隊列中接收一個項目。沒有項目可用,所以任務(wù)2阻塞。
  • 任務(wù)1向隊列添加項目。由于它是系統(tǒng)中優(yōu)先級最高的任務(wù),任務(wù)1向隊列中添加項目,直到它沒有更多的項目可以添加,或者直到隊列已滿。
  • 隊列被填滿了,所以任務(wù)1被阻塞了。
  • 任務(wù)2被調(diào)度器賦予上下文,因為它現(xiàn)在是可能運行的最高優(yōu)先級任務(wù)。
  • 一旦有項目從隊列中移出,任務(wù)1就會再次被賦予上下文(這是系統(tǒng)中優(yōu)先級最高的任務(wù),它現(xiàn)在可以運行了,因為它在等待隊列中的空間時被阻塞了)。在添加一個項目后,隊列已經(jīng)滿了,任務(wù)1被阻塞了。
  • 任務(wù)2被賦予上下文并從隊列中接收一個項目:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

隊列的另一個極其常見的用例是讓隊列接受來自許多不同來源的輸入。這對于像調(diào)試串口或日志文件這樣的東西特別有用。許多不同的任務(wù)可以寫入隊列,由一個任務(wù)負責從隊列中接收數(shù)據(jù)并將其推送到共享資源上。

參考資料

  • 軟件測試精品書籍文檔下載持續(xù)更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
  • 本文涉及的python測試開發(fā)庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
  • python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md

實時操作系統(tǒng)的信號

Semaphores是另一種非常直接的,但卻很強大的結(jié)構(gòu)。semaphore這個詞起源于希臘語--近似的英語翻譯是sign-bearer,這是一種非常直觀的思考方式。信號燈被用來表示某些事情已經(jīng)發(fā)生;它們是事件的信號。一些信號燈的使用案例包括以下內(nèi)容:

  • ISR完成了對外圍設(shè)備的服務(wù)。它可以給出信號,為任務(wù)提供信號,表明數(shù)據(jù)已經(jīng)準備好進一步處理。
  • 任務(wù)到達了關(guān)口,它需要等待系統(tǒng)中的其他任務(wù)跟上,然后再繼續(xù)前進。在這種情況下,可以用semaphore來同步任務(wù)。
    限制受限資源的同時使用者的數(shù)量。
  • 使用RTOS的方便之處在于信號燈的預(yù)先存在。它們被包含在每RTOS的實現(xiàn)中,因為它們的功能是如此的基本(和關(guān)鍵)。有兩種不同類型的信號燈可供選擇:計數(shù)信號燈和二進制信號燈。

計數(shù)信號

Counting semaphores最常被用來管理對同時使用的用戶數(shù)量有限制的共享資源。在創(chuàng)建時,它們可以被配置為持有最大值,稱為上限。通常給出的計算semaphores的例子是數(shù)據(jù)庫中的讀者...... 好吧,我們在這里談?wù)摰氖腔贛CU的嵌入式系統(tǒng),所以讓我們保持我們的例子的相關(guān)性。如果你對數(shù)據(jù)庫感興趣,你可能最好用通用的操作系統(tǒng)! 對于我們的例子,假設(shè)你正在實現(xiàn)基于套接字的通信驅(qū)動,而你的系統(tǒng)只有足夠的內(nèi)存來滿足有限數(shù)量的同時套接字連接。

在下圖中,我們有一個共享網(wǎng)絡(luò)資源,可以容納兩個同時進行的套接字連接。然而,有三個任務(wù)需要訪問。計數(shù)信號被用來限制同時進行的套接字連接的數(shù)量。每當任務(wù)使用完共享資源(即它的套接字關(guān)閉),它必須交出它的信號,以便另一任務(wù)能夠獲得對網(wǎng)絡(luò)的訪問。如果任務(wù)碰巧給了已經(jīng)達到最大計數(shù)的信號燈,這個計數(shù)將保持不變:
微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

前面的圖演繹了一個共享資源只能同時為兩個任務(wù)服務(wù)的例子(盡管系統(tǒng)中有三個任務(wù)需要使用該資源)。如果任務(wù)要使用套接字,而這個套接字受到計數(shù)信號的保護,它必須首先從池中獲取一個信號。如果沒有semaphore,那么該任務(wù)必須等待,直到有semaphore可用:

  • 最初,semaphore被創(chuàng)建,最大(上限)為2,初始計數(shù)為0。
  • 當任務(wù)A和任務(wù)B試圖獲取semaphore時,他們立即成功。這時,他們可以各自打開套接字,通過網(wǎng)絡(luò)進行通信。
  • TaskC稍后,所以它需要等待,直到semaphores的計數(shù)小于2,這時網(wǎng)絡(luò)套接字就可以自由使用了。
  • 在TaskB完成了通過其套接字的通信后,它將返回semaphore。
  • 現(xiàn)在有了semaphore,TaskC完成了它的取舍,并被允許訪問網(wǎng)絡(luò)。
  • 在TaskC獲得訪問權(quán)后不久,TaskB有另一條消息要發(fā)送,所以它試圖獲取信號燈,但需要等待可用的信號燈,所以它被置于睡眠狀態(tài)。
  • 當TaskC在網(wǎng)絡(luò)上進行通信時,TaskA完成并返回它的semaphore。
  • 任務(wù)B被喚醒并完成了它的任務(wù),這使得它能夠開始通過網(wǎng)絡(luò)進行通信。
  • 在TaskB得到它的信號后,TaskC完成了它的事務(wù)并歸還了它的信號。

等待信號是RTOS與其他大多數(shù)信號實現(xiàn)不同的地方--任務(wù)在等待信號時可以超時。如果任務(wù)未能及時獲得信號,它就不能訪問共享資源。相反,它必須采取另一種行動。這個替代行動可以是任何數(shù)量的行動,從嚴重到觸發(fā)緊急關(guān)機程序的故障,到僅僅在日志文件中提及或推送到調(diào)試串口供以后分析的良性事件。作為一個程序員,應(yīng)該由你來決定什么是適當?shù)男袆臃桨?,這有時會促使你與其他學科進行一些困難的討論。

二進制信號

二進制信號燈實際上就是最大計數(shù)為1的計數(shù)信號燈,它們最常用于同步。當任務(wù)需要在事件上進行同步時,它將嘗試使用信號鏈,阻塞直到信號鏈變得可用或直到指定的超時時間結(jié)束。系統(tǒng)的另異步部分(無論是任務(wù)還是ISR)將給出信號燈。二進制semaphores可以被多次給出,那段代碼沒有必要返回它們。在下面的例子中,任務(wù)A只給出信號,而任務(wù)B只接受信號:
微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

任務(wù)B被設(shè)置為在繼續(xù)履行其職責之前等待信號(信號):

  • 最初,TaskB試圖接受信號,但它并不存在,所以TaskB進入了睡眠狀態(tài)。
  • 過了一段時間,任務(wù)A發(fā)出了信號。
  • 任務(wù)B被喚醒(由調(diào)度器喚醒;這發(fā)生在后臺),現(xiàn)在有了信號燈。它將進行它所需要的工作,直到完成。然而,請注意,任務(wù)B不需要歸還二進制信號。相反,它只是再次等待它。
  • 任務(wù)B再次被阻塞,因為信號燈不可用(就像第一次一樣),所以它進入睡眠狀態(tài),直到有信號燈可用。
    周而復(fù)始。

如果任務(wù)B "交還 "二進制信號,它將立即再次運行,而不會收到來自任務(wù)A的指令。其結(jié)果只是全速運行的循環(huán),而不是在任務(wù)A發(fā)出信號的條件下被提示。

實時操作系統(tǒng)的互斥

術(shù)語mutex是相互排斥的簡寫。在共享資源和任務(wù)的上下文中,互斥意味著,如果一個任務(wù)正在使用共享資源,那么該任務(wù)是唯一被允許使用該資源的任務(wù)--所有其他任務(wù)都需要等待。

如果這一切聽起來很像二進制信號燈,那是因為它就是。然而,它還有一個額外的功能,我們很快就會介紹。首先,讓我們來看看使用二進制信號燈來提供相互排斥的問題。

優(yōu)先級倒置

讓我們來看看在試圖使用二進制信號提供互斥功能時發(fā)生的常見問題。
考慮三個任務(wù),A、B和C,其中A的優(yōu)先級最高,B的優(yōu)先級居中,而C的優(yōu)先級最低。任務(wù)A和C依靠信號燈來訪問它們之間共享的資源。由于任務(wù)A是系統(tǒng)中優(yōu)先級最高的任務(wù),它應(yīng)該總是在其他任務(wù)之前運行。然而,由于任務(wù)A和任務(wù)C都依賴于它們之間共享的資源(由二進制信號燈守護),這里有意外的依賴關(guān)系:

微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

讓我們一步一步地通過這個例子來看看這種情況是如何發(fā)生的:

  • 任務(wù)C(系統(tǒng)中優(yōu)先級最低的任務(wù))獲得了二進制信號,開始做一些工作。
  • 在任務(wù)C完成工作之前,任務(wù)A(最高優(yōu)先級的任務(wù))中斷并試圖獲得相同的信號,但由于任務(wù)C已經(jīng)獲得了信號而被迫等待。
  • 任務(wù)B也搶占了任務(wù)C,因為任務(wù)B的優(yōu)先級比任務(wù)C高。
  • 任務(wù)C用共享資源完成了剩余的工作,這時它把信號燈還給了任務(wù)C。
  • 任務(wù)A終于可以運行了。

任務(wù)A最終能夠運行,但要等到兩個低優(yōu)先級的任務(wù)都運行完了才行。任務(wù)C用共享資源完成它的工作是不可避免的(除非在設(shè)計上做出改變,以防止它與任務(wù)A訪問相同的共享資源)。然而,任務(wù)B也有機會運行到完成,盡管任務(wù)A在旁邊等待,并且有更高的優(yōu)先級!這就是優(yōu)先級倒置--更高的優(yōu)先級是指任務(wù)A在完成工作時,他的任務(wù)也在完成!這就是優(yōu)先級倒置--系統(tǒng)中優(yōu)先級較高的任務(wù)正在等待運行,但它被迫等待,而另一個優(yōu)先級較低的任務(wù)正在運行--在這種情況下,這兩個任務(wù)的優(yōu)先級實際上是倒置的。

互斥器使優(yōu)先級倒置最小化

早些時候,我們曾說過,在FreeRTOS中,突變體是二進制信號,有一個重要的附加功能。這個重要的特性就是優(yōu)先級繼承--互斥器有能力暫時改變一個任務(wù)的優(yōu)先級,以避免在系統(tǒng)中造成重大延誤。當調(diào)度員發(fā)現(xiàn)一個高優(yōu)先級的任務(wù)試圖獲取一個已經(jīng)被低優(yōu)先級的任務(wù)所持有的突變時,就會出現(xiàn)這種情況。在這種特定情況下,調(diào)度器將暫時提高低級任務(wù)的優(yōu)先級,直到它釋放突變。在這一點上,低級任務(wù)的優(yōu)先級將被設(shè)置回它在優(yōu)先級繼承之前的狀態(tài)。讓我們來看看上圖中使用互斥(而不是二進制信號)實現(xiàn)的完全相同的例子:
微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制

讓我們一步一步地通過這個例子來看看這種情況是如何發(fā)生的:

  • 任務(wù)A仍然在等待任務(wù)C返回互斥。
  • 任務(wù)C的優(yōu)先級被提高到與更高優(yōu)先級的任務(wù)A相同。任務(wù)C運行到完成,因為它持有mutex,是一個高優(yōu)先級的任務(wù)。
  • 任務(wù)C返回突變,它的優(yōu)先級被降到了它持有突變之前的水平,因為突變耽誤了高優(yōu)先級任務(wù)。
  • 任務(wù)A拿著mutex并完成了它的工作。
  • 任務(wù)B被允許運行。

根據(jù)任務(wù)C在共享資源上花費的時間,以及任務(wù)A的時間敏感性,這可能是一個主要的問題,也可能不是什么大問題??梢赃M行時間分析,以確保任務(wù)A仍然符合最后期限,但跟蹤所有可能的優(yōu)先級倒置和其他高優(yōu)先級異步事件的原因可能被證明是具有挑戰(zhàn)性的。至少,用戶應(yīng)該利用為獲取突變提供的內(nèi)置超時,并在突變未能及時獲取的情況下執(zhí)行適當?shù)奶娲袆?。關(guān)于如何實現(xiàn)這一目標的更多細節(jié)可以在第9章 "任務(wù)間通信 "中找到。

Mutexes和semaphores是任務(wù)間信號傳遞的相當標準的機制。它們在不同的RTOS之間是非常標準的,并且提供了很好的靈活性。文章來源地址http://www.zghlxwxcb.cn/news/detail-482245.html

到了這里,關(guān)于微控制器實時操作系統(tǒng)實踐3任務(wù)信令和通信機制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vxworks操作系統(tǒng)】實時多任務(wù)介紹-NO.2

    目錄 ? ?實時多任務(wù) 1.1? 任務(wù)生命周期管理 ?1.2? 任務(wù)狀態(tài)控制 1.3? 任務(wù)調(diào)度 1.4? ?用戶接口 結(jié)語: ? ? ? ?實時操作系統(tǒng)是基于 多任務(wù) 和 任務(wù)間通信 的概念的操作系統(tǒng),多任務(wù)環(huán)境允許一個實時應(yīng)用由一組各自獨立的任務(wù)組成,每個任務(wù)擁有自己的執(zhí)行線程和一組系統(tǒng)

    2024年02月14日
    瀏覽(17)
  • STM32初學者入門FreeRTOS操作系統(tǒng),多任務(wù)實時系統(tǒng)

    STM32初學者入門FreeRTOS操作系統(tǒng),多任務(wù)實時系統(tǒng)

    ? ? ? ? FreeRTOS(Free Real-Time Operating System)是一個開源的嵌入式實時操作系統(tǒng),它專門設(shè)計用于在資源有限的嵌入式系統(tǒng)中運行。FreeRTOS提供了一些用于任務(wù)管理、調(diào)度、同步和通信的功能,使開發(fā)者能夠輕松地創(chuàng)建可靠的嵌入式系統(tǒng)。 以下是FreeRTOS的一些特點和功能: 輕量

    2024年02月11日
    瀏覽(27)
  • 【小黑嵌入式系統(tǒng)第十課】μC/OS-III概況——實時操作系統(tǒng)的特點、基本概念(內(nèi)核&任務(wù)&中斷)、與硬件的關(guān)系&實現(xiàn)

    【小黑嵌入式系統(tǒng)第十課】μC/OS-III概況——實時操作系統(tǒng)的特點、基本概念(內(nèi)核&任務(wù)&中斷)、與硬件的關(guān)系&實現(xiàn)

    上一課: 【小黑嵌入式系統(tǒng)第九課】PSoC 5LP第一個實驗——LED、字符型LCD顯示實驗 下一課: 【小黑嵌入式系統(tǒng)第十一課】μC/OS-III程序設(shè)計基礎(chǔ)(一)——任務(wù)設(shè)計、任務(wù)管理(創(chuàng)建基本狀態(tài)內(nèi)部任務(wù))、任務(wù)調(diào)度、系統(tǒng)函數(shù) 一. 凡從事嵌入式系統(tǒng)開發(fā)工作的人,必須對嵌入

    2024年02月05日
    瀏覽(25)
  • LabVIEW開發(fā)微控制器控制的并行機器人的實時視覺圖像處理

    LabVIEW開發(fā)微控制器控制的并行機器人的實時視覺圖像處理

    LabVIEW開發(fā)微控制器控制的并行機器人的實時視覺圖像處理 ? ? ? ? 通過相機視覺,以對目標物體的不同顏色進行分類,并與平行機器人一起拾取和放置物體。通過使用MATLAB?Simulink模擬合適的機器人工作空間來研究使用相機的效率和機器人的準確性。機械臂以使用運動學計算

    2024年02月09日
    瀏覽(25)
  • FreeRTOS_從底層學習實時操作系統(tǒng)

    FreeRTOS_從底層學習實時操作系統(tǒng)

    目錄 1. 裸機系統(tǒng)和多任務(wù)系統(tǒng) 2. 任務(wù)的定任務(wù)切換的實現(xiàn) 2.1 什么是任務(wù)? 2.2 調(diào)度器 2.3 臨界段 3. 空閑任務(wù)和阻塞延遲 4. 時間片 裸機系統(tǒng): ? ? ? ? 裸機系統(tǒng) 分為 輪詢系統(tǒng) 和 前后臺系統(tǒng) ;(51單片機就屬于裸機系統(tǒng)) ? ? ? ? 輪詢系統(tǒng) 是在裸機編程的時候,先初始化

    2024年02月07日
    瀏覽(13)
  • 嵌入式實時操作系統(tǒng)的設(shè)計與開發(fā)

    嵌入式實時操作系統(tǒng)的設(shè)計與開發(fā)

    在RTOS中,時鐘具有非常重要的作用,通過時鐘可實現(xiàn)延時任務(wù)、周期性觸發(fā)任務(wù)執(zhí)行、任務(wù)有限等待的計時。 大多數(shù)嵌入式系統(tǒng)有兩種時鐘源,分別為實時時鐘RTC(Real-Time Clock)和定時器/計數(shù)器。 實時時鐘一般是靠電池供電,即使系統(tǒng)斷電,也可以維持日期和時間。由于實

    2024年02月11日
    瀏覽(23)
  • FreeRTOS實時操作系統(tǒng)(六)列表與列表項

    FreeRTOS實時操作系統(tǒng)(六)列表與列表項

    FreeRTOS實時操作系統(tǒng)(一)RTOS的基本概念 FreeRTOS實時操作系統(tǒng)(二)任務(wù)創(chuàng)建與任務(wù)刪除(HAL庫) FreeRTOS實時操作系統(tǒng)(三)任務(wù)掛起與恢復(fù) FreeRTOS實時操作系統(tǒng)(四)中斷任務(wù)管理 FreeRTOS實時操作系統(tǒng)(五)進入臨界區(qū)、任務(wù)調(diào)度器掛起與恢復(fù) FreeRTOS實時操作系統(tǒng)(六)列

    2024年02月10日
    瀏覽(20)
  • 物聯(lián)網(wǎng)實時操作系統(tǒng)1RTOS簡介(上)

    物聯(lián)網(wǎng)實時操作系統(tǒng)1RTOS簡介(上)

    在大型計算機的世界里,操作系統(tǒng)(OS operating systems)已經(jīng)存在了相當長的一段時間。最基本的操作系統(tǒng)可以追溯到20世紀50年代。到20世紀70年代中期,操作系統(tǒng)的概念、結(jié)構(gòu)、功能和界面已經(jīng)非常成熟。 微型系統(tǒng)大約在 1970年出現(xiàn)。在基于微處理器的設(shè)備中迅速應(yīng)用操作系統(tǒng)

    2024年02月16日
    瀏覽(60)
  • 嵌入式實時操作系統(tǒng)的設(shè)計與開發(fā)(十)

    RTOS的引導(dǎo)是指將操作系統(tǒng)裝入內(nèi)存并開始執(zhí)行的過程。在嵌入式系統(tǒng)的實際應(yīng)用中,針對不同應(yīng)用環(huán)境,對時間效率和空間效率有不同的要求。因此,操作系統(tǒng)啟動時應(yīng)充分考慮這兩種限制。 時間限制主要包括兩種情況:系統(tǒng)要求快速啟動和系統(tǒng)啟動后要求程序能實時運行

    2024年02月07日
    瀏覽(27)
  • 簡單介紹STM32上的FreeRTOS實時操作系統(tǒng)

    FreeRTOS是一款廣泛使用的開源實時操作系統(tǒng)(RTOS),它為嵌入式系統(tǒng)提供了可靠的任務(wù)調(diào)度和并發(fā)管理。在嵌入式領(lǐng)域中,STM32微控制器廣受歡迎,并且與FreeRTOS的結(jié)合使用可以提供強大的功能和靈活性。在本篇博客中,我們將深入探究STM32上的FreeRTOS,并了解其核心概念、任

    2024年02月16日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包