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

微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹

這篇具有很好參考價(jià)值的文章主要介紹了微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

0書籍簡(jiǎn)介

這本實(shí)踐指南將為你提供最重要的功能知識(shí),以使實(shí)時(shí)操作系統(tǒng)(RTOS)在微控制器(MCU)上啟動(dòng)和運(yùn)行。如果你有興趣學(xué)習(xí)如何通過(guò)使用實(shí)際硬件的實(shí)例來(lái)實(shí)現(xiàn)RTOS的應(yīng)用,并討論常見(jiàn)的性能與開(kāi)發(fā)時(shí)間的權(quán)衡,那么你就來(lái)對(duì)地方了!我們將使用自由RTOS來(lái)實(shí)現(xiàn)代碼!

我們將使用FreeRTOS內(nèi)核實(shí)現(xiàn)代碼,使用低成本的STM Nucleo開(kāi)發(fā)板與流行的STM32 ARM MCU一起工作,并使用SEGGER調(diào)試工具調(diào)試/分析代碼。 本書中使用的所有工具都是經(jīng)過(guò)挑選的,因?yàn)樗鼈儗?duì)于剛剛?cè)腴T的業(yè)余愛(ài)好者或?qū)I(yè)人士來(lái)說(shuō)很容易獲得,同時(shí)也因?yàn)樗鼈冊(cè)诂F(xiàn)實(shí)世界的專業(yè)團(tuán)隊(duì)中很受歡迎。你通過(guò)閱讀本書和通過(guò)實(shí)例獲得的知識(shí)和經(jīng)驗(yàn)將直接適用于專業(yè)環(huán)境中的實(shí)際開(kāi)發(fā)。

本書適用對(duì)象

RTOS編程不是初學(xué)者的話題,絕對(duì)不是學(xué)習(xí)嵌入式系統(tǒng)的正確起點(diǎn)。如果你對(duì)MCU或C語(yǔ)言完全陌生,那么你最好從基礎(chǔ)知識(shí)開(kāi)始,在進(jìn)入這個(gè)更高級(jí)的話題之前獲得一些實(shí)踐經(jīng)驗(yàn)。

那么,誰(shuí)能從本書中受益最多?

  • 專業(yè)程序員: 你總是在裸機(jī)上編程(沒(méi)有操作系統(tǒng)),并希望通過(guò)學(xué)習(xí)如何使用RTOS來(lái)滿足嚴(yán)格的定時(shí)要求、平衡并發(fā)操作和創(chuàng)建模塊化代碼來(lái)提高你的MCU編程技能。

  • 對(duì) "弄臟自己的手 "感興趣的學(xué)生: 你一直在學(xué)習(xí)理論知識(shí),聽(tīng)講座,并在實(shí)驗(yàn)室進(jìn)行編碼練習(xí),但現(xiàn)在你正在尋找完整的指南,幫助你開(kāi)始使用你可以實(shí)際觸摸和互動(dòng)的東西。

  • 創(chuàng)客們進(jìn)入了更高級(jí)的主題: 你已經(jīng)寫了一些草圖或腳本,但你正在尋找你的下一個(gè)挑戰(zhàn)。也許你想從頭開(kāi)始創(chuàng)建一個(gè)完整的基于MCU的系統(tǒng)--這里的信息將幫助你走上編程的軌道。你甚至?xí)玫揭恍┨崾?,了解為你的?xiàng)目選擇MCU時(shí)應(yīng)該注意什么。

本書的內(nèi)容

本書共包括17章,分布在四個(gè)部分。如果你對(duì)某些材料已經(jīng)很熟悉,就沒(méi)有必要直接閱讀本書。例如,如果你對(duì)基本的RTOS概念和實(shí)時(shí)系統(tǒng)已經(jīng)很熟悉,可以跳到第4章,選擇合適的MCU。以下是本書各章的簡(jiǎn)要說(shuō)明:

第1章,實(shí)時(shí)系統(tǒng)介紹,簡(jiǎn)單介紹了什么是RTOS以及何時(shí)和為何要使用RTOS。還討論了基于MCU的RTOS的硬件和軟件替代方案。

第2章,了解RTOS任務(wù),提供了超級(jí)循環(huán)和RTOS任務(wù)的比較,包括使用兩者實(shí)現(xiàn)并行操作的各種方式。

第3章,任務(wù)信號(hào)和通信機(jī)制,是對(duì)更多RTOS概念的簡(jiǎn)短介紹,其中有大量的圖表。 這一章和第2章 "理解RTOS任務(wù) "一起,如果你需要的話,應(yīng)該可以作為參考,快速?gòu)?fù)習(xí)一下這些概念和術(shù)語(yǔ)。

第4章,選擇合適的MCU,幫助你了解在選擇MCU時(shí)應(yīng)該考慮什么。在了解了硬件和固件之間的相互依存關(guān)系之后,我們來(lái)看看為什么硬件和固件工程師在系統(tǒng)設(shè)計(jì)中都有參與是如此重要。

第5章 "選擇IDE "介紹并討論了各種類型的集成開(kāi)發(fā)環(huán)境(IDE),包括為什么你可能決定選擇一種而不是另一種(或者根本不選擇)的原因。這里涵蓋了關(guān)于設(shè)置STM32CubeIDE和導(dǎo)入示例代碼的說(shuō)明。

第6章,實(shí)時(shí)系統(tǒng)的調(diào)試工具,涵蓋了調(diào)試嵌入式系統(tǒng)的工具,包括我們將在本書其余部分使用的調(diào)試工具--SEGGER Ozone和SEGGER SystemView可視化軟件。這里介紹了如何使用Ozone和SystemView的說(shuō)明。基于硬件的測(cè)試設(shè)備和一些其他有用的工具也包括在你的嵌入式系統(tǒng)開(kāi)發(fā)工作流程中。

第7章,F(xiàn)reeRTOS調(diào)度器,教你使用FreeRTOS創(chuàng)建任務(wù)的各種方法以及如何排除啟動(dòng)失敗的故障。你將獲得對(duì)任務(wù)狀態(tài)和優(yōu)化性能的不同方法的理解。

第8章,保護(hù)數(shù)據(jù)和同步任務(wù),包括使用信號(hào)的任務(wù)同步和使用互斥的數(shù)據(jù)保護(hù),以及如何避免競(jìng)賽條件和優(yōu)先級(jí)反轉(zhuǎn)。還涉及到軟件定時(shí)器。

第9章,任務(wù)內(nèi)通信,研究了任務(wù)間傳遞信息的不同方式,有使用隊(duì)列按值和參考傳遞信息的不同例子,討論了兩種方法的優(yōu)點(diǎn)和注意事項(xiàng)。我們還將了解一種輕量級(jí)的任務(wù)間通信機(jī)制--直接任務(wù)通知,包括任務(wù)通知和隊(duì)列的比較。

第10章,驅(qū)動(dòng)程序和ISRs,深入探討了幾個(gè)詳細(xì)的例子,說(shuō)明如何用各種FreeRTOS基元實(shí)現(xiàn)高效的驅(qū)動(dòng)程序,包括信號(hào)燈、隊(duì)列和流緩沖器。我們還將研究FreeRTOS如何與MCU硬件(如DMA)結(jié)合使用,以提供極其有效的CPU驅(qū)動(dòng)實(shí)現(xiàn)。這一章既可以直接使用MCU外圍寄存器,也可以使用STM32 HAL代碼。

第11章,跨任務(wù)共享硬件外設(shè),教你如何創(chuàng)建可以在多個(gè)任務(wù)中安全使用的驅(qū)動(dòng)程序,同時(shí)共享硬件資源。我們將對(duì)STM提供的USB CDC實(shí)現(xiàn)進(jìn)行調(diào)整,使其更加友好和高效,用一個(gè)突變器和隊(duì)列來(lái)包裝它,以便在多個(gè)任務(wù)中安全使用。

第12章,創(chuàng)建良好抽象架構(gòu)的技巧,涵蓋了代碼的可重用性、靈活性和硬件的可移植性,著眼于創(chuàng)建抽象,使你的工作更容易。還包括一些關(guān)于源代碼組織的建議,以幫助促進(jìn)重用。

第13章,用隊(duì)列創(chuàng)建松散耦合,是本書所有概念的高潮。它包括完整的松散耦合架構(gòu)的例子,用來(lái)創(chuàng)建適當(dāng)?shù)某橄蟮?、端到端的?yīng)用程序。我們將使用先前開(kāi)發(fā)的USB CDC虛擬通信端口以及LED抽象,使用命令隊(duì)列創(chuàng)建松散耦合的、完全可重用的LED排序器。這個(gè)嵌入式應(yīng)用可以用Python編寫的跨平臺(tái)用戶界面從PC上控制。

第14章,選擇一個(gè)RTOS API,繼續(xù)我們的高層架構(gòu)討論,看一下可用于訪問(wèn)FreeRTOS功能的三種不同的API:本地FreeRTOS API,ARM的CMSIS-RTOS,以及POSIX。討論的主題包括對(duì)可用功能的比較,以及為什么你會(huì)在不同的項(xiàng)目中選擇其中一個(gè)。

第16章,多處理器和多核系統(tǒng),告訴你多處理器和多核系統(tǒng)是如何用于各種原因的--了解它們是什么,以及如何讓系統(tǒng)的不同部分進(jìn)行通信。

第17章,故障排除提示和下一步,涵蓋了系統(tǒng)故障排除的提示,包括如何避免堆棧溢出的提示和如何對(duì)掛起的系統(tǒng)進(jìn)行故障排除。還包括對(duì)下一步工作的一些建議

參考資料

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

準(zhǔn)備

我們已經(jīng)盡一切努力使本書中的例子對(duì)廣大讀者來(lái)說(shuō)盡可能的簡(jiǎn)單。 為了最大限度地利用本書(通過(guò)實(shí)例工作),你將需要以下硬件:

  • 一臺(tái)可以上網(wǎng)的Windows、macOS或Linux電腦
  • 一塊STM32 Nucleo-F767ZI開(kāi)發(fā)板
  • 兩根Micro-USB電纜
  • 跳線--20至22 AWG(約0.65毫米)實(shí)心線

由于本書的目標(biāo)是為低級(jí)別的嵌入式系統(tǒng)編程,我們將使用C語(yǔ)言作為首選。假設(shè)有一些微控制器的知識(shí),以及閱讀數(shù)據(jù)手冊(cè)的能力。如果你對(duì)C語(yǔ)言(或C++)有很好的理解,那么你應(yīng)該可以輕松地閱讀本書--不需要以前的RTOS知識(shí)。由于我們將在嵌入式系統(tǒng)中使用MCU,所以在硬件方面也會(huì)有一些偶爾的討論,主要涉及到MCU和開(kāi)發(fā)板的特性。這些主題將涵蓋足夠的細(xì)節(jié),具有最低限度的硬件知識(shí)的人應(yīng)該能夠跟上,沒(méi)有太大困難。你應(yīng)該能夠自如地與開(kāi)發(fā)硬件進(jìn)行互動(dòng)和處理,盡管不需要任何實(shí)際組裝。

1實(shí)時(shí)系統(tǒng)介紹

實(shí)時(shí)系統(tǒng)有各種各樣的實(shí)現(xiàn)方式和使用情況。本書的重點(diǎn)是如何使用實(shí)時(shí)操作系統(tǒng)(RTOS)在微控制器單元(MCU)上創(chuàng)建實(shí)時(shí)應(yīng)用程序。

在這一章中,我們將首先概述什么是RTOS,并了解可能有實(shí)時(shí)要求的廣泛系統(tǒng)。從那里,我們將看看實(shí)現(xiàn)實(shí)時(shí)性能的一些不同方法,以及可能使用的系統(tǒng)類型(如硬件、固件和軟件)的概述。最后,我們將討論什么時(shí)候在MCU應(yīng)用中使用RTOS是明智的,什么時(shí)候可能完全沒(méi)有必要。

到底什么是實(shí)時(shí)性?

任何對(duì)特定事件有確定響應(yīng)的系統(tǒng)都可以被認(rèn)為是 "實(shí)時(shí) "的。如果一個(gè)系統(tǒng)在不符合時(shí)間要求時(shí)被認(rèn)為是失敗的,它一定是實(shí)時(shí)的。如何定義故障(以及故障系統(tǒng)的后果)可以有很大不同。認(rèn)識(shí)到實(shí)時(shí)性要求可以有很大的不同,這一點(diǎn)極其重要,既包括時(shí)間要求的速度,也包括如果沒(méi)有達(dá)到所要求的實(shí)時(shí)期限,后果的嚴(yán)重性。

時(shí)序要求的范圍

為了說(shuō)明可能遇到的定時(shí)要求的范圍,讓我們考慮從模數(shù)轉(zhuǎn)換器(ADC analog-to-digital converters)獲取讀數(shù)的幾個(gè)不同系統(tǒng)。

我們要看的第一個(gè)系統(tǒng)是一個(gè)控制系統(tǒng),它被設(shè)置為控制烙鐵的溫度(如下圖所示)。我們所關(guān)注的系統(tǒng)部分是MCU、ADC、傳感器和加熱器。

MCU負(fù)責(zé)以下工作:

  • 通過(guò)ADC從溫度傳感器獲取讀數(shù)
  • 運(yùn)行閉環(huán)控制算法(以保持烙鐵頭的溫度恒定)。
  • 根據(jù)需要調(diào)整加熱器的輸出
    微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹

由于焊頭的溫度變化不是非???,MCU可能只需要每秒獲取50個(gè)ADC樣本(50Hz)。負(fù)責(zé)調(diào)整加熱器的控制算法(以保持恒定的溫度)以更慢的速度運(yùn)行,5赫茲:

ADC將斷言硬件線路,表示轉(zhuǎn)換已經(jīng)完成,并準(zhǔn)備讓MCU將讀數(shù)轉(zhuǎn)移到其內(nèi)部存儲(chǔ)器。讀取ADC的MCU有多達(dá)20毫秒的時(shí)間將數(shù)據(jù)從ADC傳輸?shù)絻?nèi)部存儲(chǔ)器,然后才需要進(jìn)行新的讀取。MCU還需要運(yùn)行控制算法來(lái)計(jì)算加熱器輸出的更新值,頻率為5赫茲(200毫秒)。這兩種情況(雖然不是特別快)都是實(shí)時(shí)要求的例子:

現(xiàn)在,在ADC讀數(shù)的另一端,我們可能有高帶寬的網(wǎng)絡(luò)分析儀或示波器,它將以幾十GHz的速率讀取ADC!在這種情況下,ADC的原始讀數(shù)很可能是在幾百個(gè)小時(shí)內(nèi)完成!原始ADC讀數(shù)可能會(huì)被轉(zhuǎn)換成頻域,并在高分辨率前面板上以圖形方式顯示,每秒幾十次。像這樣的系統(tǒng)需要進(jìn)行大量的處理,必須遵守極其嚴(yán)格的時(shí)間要求,如果它要正常運(yùn)作的話。

在光譜的中間位置,你會(huì)發(fā)現(xiàn)諸如閉環(huán)運(yùn)動(dòng)控制器等系統(tǒng),它們通常需要在數(shù)百赫茲至數(shù)十千赫茲之間執(zhí)行其PID控制回路,以便在快速移動(dòng)的系統(tǒng)中提供穩(wěn)定性。那么,實(shí)時(shí)性有多快?嗯,僅從ADC的例子就可以看出,這取決于。

在前面的一些例子中,如示波器或電烙鐵,如果不能滿足計(jì)時(shí)要求,就會(huì)導(dǎo)致性能不佳或報(bào)告錯(cuò)誤的數(shù)據(jù)。在電烙鐵的情況下,這可能是溫度控制不佳(這可能導(dǎo)致組件損壞)。對(duì)于測(cè)試設(shè)備來(lái)說(shuō),錯(cuò)過(guò)最后期限可能導(dǎo)致錯(cuò)誤的讀數(shù),這就是失敗。這對(duì)一些人來(lái)說(shuō)可能不是什么大問(wèn)題,但對(duì)該設(shè)備的用戶來(lái)說(shuō),他們依賴所報(bào)告數(shù)據(jù)的準(zhǔn)確性,這可能是非常重要的。一些用于標(biāo)準(zhǔn)驗(yàn)證的實(shí)驗(yàn)室設(shè)備對(duì)產(chǎn)品的一致性進(jìn)行檢查。如果設(shè)備中存在未被發(fā)現(xiàn)的故障,導(dǎo)致測(cè)量不準(zhǔn)確,就可能報(bào)告出不正確的數(shù)值??赡苡锌赡苤匦逻M(jìn)行可疑的測(cè)試。然而,最終,如果重新測(cè)試的頻率過(guò)高,可靠的讀數(shù)不能指望,那么測(cè)試設(shè)備將開(kāi)始變得可疑,并被視為不可靠,銷售將下降--所有這些都是因?yàn)橐粋€(gè)實(shí)時(shí)要求沒(méi)有得到持續(xù)滿足。

在其他系統(tǒng)中,如無(wú)人機(jī)的飛行控制或工業(yè)過(guò)程控制中的運(yùn)動(dòng)控制,如果不能及時(shí)運(yùn)行控制算法,可能會(huì)導(dǎo)致更多的物理災(zāi)難,如崩潰。在這種情況下,其后果有可能危及生命。

值得慶幸的是,可以采取一些措施來(lái)避免所有這些故障情況的發(fā)生。

保證實(shí)時(shí)行為的方法

確保一個(gè)系統(tǒng)做它要做的事情的最簡(jiǎn)單的方法之一是確保它在滿足要求的同時(shí)盡可能的簡(jiǎn)單。這意味著要抵制將簡(jiǎn)單的任務(wù)過(guò)度復(fù)雜化的沖動(dòng)。如果烤面包機(jī)是用來(lái)烤面包的,就不要在上面加一個(gè)顯示屏,讓它也告訴你天氣情況;只要讓它在適當(dāng)?shù)臅r(shí)間內(nèi)打開(kāi)加熱元件即可。這個(gè)簡(jiǎn)單的任務(wù)已經(jīng)完成了多年,不需要任何代碼或可編程設(shè)備。

作為程序員,如果我們遇到一個(gè)問(wèn)題,我們傾向于立即伸手去拿最近的MCU并開(kāi)始編碼。然而,產(chǎn)品的一些功能(尤其是當(dāng)產(chǎn)品有電子機(jī)械部件時(shí))最好不用代碼來(lái)處理。車窗其實(shí)不需要帶輪詢循環(huán)的MCU來(lái)運(yùn)行,通過(guò)驅(qū)動(dòng)器打開(kāi)電機(jī),觀察傳感器的反饋來(lái)關(guān)閉它們。這項(xiàng)任務(wù)實(shí)際上可以由一些機(jī)械開(kāi)關(guān)和二極管來(lái)處理。如果給定的系統(tǒng)需要一個(gè)反饋報(bào)告機(jī)制--比如在窗口卡住的情況下需要斷言錯(cuò)誤--那么可能別無(wú)選擇,只能使用一個(gè)更復(fù)雜的解決方案。然而,作為工程師,我們的目標(biāo)應(yīng)該始終是相同的--盡可能簡(jiǎn)單地解決問(wèn)題,不增加額外的復(fù)雜性。

如果一個(gè)問(wèn)題可以單獨(dú)通過(guò)硬件來(lái)解決,那么在拿出MCU之前,先與團(tuán)隊(duì)一起探討這種可能性。如果問(wèn)題可以通過(guò)使用簡(jiǎn)單的while循環(huán)來(lái)執(zhí)行一些傳感器狀態(tài)的輪詢來(lái)處理,那么就簡(jiǎn)單地輪詢傳感器的狀態(tài);可能沒(méi)有必要開(kāi)始編碼中斷服務(wù)程序(ISRs)。如果設(shè)備的功能是單一用途的,那么在很多情況下,完整的實(shí)時(shí)操作系統(tǒng)可能會(huì)妨礙工作--所以不要使用它!

實(shí)時(shí)系統(tǒng)的類型

有許多不同的方法來(lái)實(shí)現(xiàn)實(shí)時(shí)行為。下面的部分是關(guān)于你可能遇到的各種類型的實(shí)時(shí)系統(tǒng)的討論。還要注意的是,有可能出現(xiàn)以下系統(tǒng)的組合,作為子系統(tǒng)一起工作。這些不同的子系統(tǒng)可以出現(xiàn)在產(chǎn)品、板卡、甚至是芯片層面(這種方法在第16章多處理器和多核系統(tǒng)中討論)

硬件

最初的實(shí)時(shí)系統(tǒng),即硬件,仍然是滿足極其嚴(yán)格的公差和/或快速定時(shí)要求的首選。它可以用離散數(shù)字邏輯、模擬組件、可編程邏輯或特定應(yīng)用集成組件(ASIC application-specific integrated component)來(lái)實(shí)現(xiàn)??删幊踢壿嬈骷≒LD Programmable logic devices)、復(fù)雜可編程邏輯器件(CPLD complex programmable logic devices)和域可編程門陣列(FPGA field-programmable gate arrays)是該解決方案中可編程邏輯器件部分的不同成員?;谟布膶?shí)時(shí)系統(tǒng)可以涵蓋從模擬濾波器、閉環(huán)控制和簡(jiǎn)單的狀態(tài)機(jī)到復(fù)雜的視頻編解碼器的任何東西。當(dāng)實(shí)施時(shí)考慮到省電,可以使ASIC比基于MCU的解決方案消耗更少的功率。一般來(lái)說(shuō),硬件的優(yōu)點(diǎn)是可以即時(shí)并行地進(jìn)行操作(當(dāng)然,這是過(guò)度簡(jiǎn)化),而單核MCU則只能給人以并行處理的假象。

實(shí)時(shí)硬件開(kāi)發(fā)的缺點(diǎn)一般包括以下幾點(diǎn):

  • 非可編程設(shè)備的不靈活性。
  • 所需的專業(yè)技術(shù)通常不如軟件/固件開(kāi)發(fā)人員那么普遍。
  • 全功能可編程器件的成本(例如,大型FPGA)。
  • 開(kāi)發(fā)定制ASIC的高成本。

裸機(jī)固件

裸機(jī)固件被認(rèn)為是(為我們的目的)不是建立在某種類型的預(yù)先存在的內(nèi)核/調(diào)度器之上的任何固件。一些工程師更進(jìn)一步,認(rèn)為真正的裸機(jī)固件不能使用任何預(yù)先存在的庫(kù)(如供應(yīng)商提供的硬件抽象庫(kù)),這種觀點(diǎn)也有一定的道理。裸機(jī)實(shí)現(xiàn)的好處是,用戶的代碼可以完全控制硬件的所有方面。主循環(huán)代碼執(zhí)行被打斷的唯一方法是中斷發(fā)生時(shí)。在這種情況下,其他東西控制CPU的唯一方法是讓現(xiàn)有的ISR完成,或讓另一個(gè)更優(yōu)先的中斷啟動(dòng)。

當(dāng)有少量相對(duì)簡(jiǎn)單的任務(wù)需要執(zhí)行時(shí),或者有單一的任務(wù)時(shí),裸機(jī)固件解決方案就很出色。如果固件保持專注并遵循最佳實(shí)踐,由于ISR(或在某些情況下,缺乏ISR)之間的相互作用相對(duì)較少,確定的性能通常容易測(cè)量和保證。在一些極端的情況下,對(duì)于高負(fù)載的MCU(或在ROM/RAM方面受到高度限制的MCU),裸機(jī)是唯一的選擇。

隨著裸機(jī)實(shí)現(xiàn)在異步處理事件時(shí)變得更加復(fù)雜,它們開(kāi)始與實(shí)時(shí)操作系統(tǒng)提供的功能重疊。要記住的一個(gè)重要考慮是,通過(guò)使用RTOS--而不是試圖推出你自己的線程安全系統(tǒng)--你會(huì)自動(dòng)受益于RTOS供應(yīng)商所做的所有測(cè)試。你也有機(jī)會(huì)使用具有事后分析能力的代碼--今天所有的RTOS都已經(jīng)存在了好幾年了。作者一直在調(diào)整和增加功能,以使它們?cè)诓煌膽?yīng)用中變得強(qiáng)大和靈活。

基于RTOS的固件

在MCU上運(yùn)行調(diào)度內(nèi)核的固件是基于RTOS的固件。調(diào)度器和一些RTOS原件的引入允許任務(wù)在它們自己擁有處理器的假象下運(yùn)行(在第2章,了解RTOS任務(wù)中詳細(xì)討論)。使用RTOS可以使系統(tǒng)在后臺(tái)執(zhí)行其他復(fù)雜任務(wù)的同時(shí)保持對(duì)最重要事件的響應(yīng)。

所有這些任務(wù)的運(yùn)行都有一些弊端。共享數(shù)據(jù)的任務(wù)之間可能會(huì)出現(xiàn)相互依賴的情況--如果處理不當(dāng),這種依賴性會(huì)導(dǎo)致任務(wù)意外地阻塞。雖然有處理這種情況的規(guī)定,但它確實(shí)增加了代碼的復(fù)雜性。中斷一般會(huì)使用任務(wù)信令來(lái)盡快處理中斷,并將盡可能多的處理推遲到任務(wù)中。如果處理得當(dāng),這種解決方案對(duì)于保持復(fù)雜系統(tǒng)的響應(yīng)是非常好的,盡管有許多復(fù)雜的互動(dòng)。然而,如果處理不當(dāng),這種設(shè)計(jì)范式會(huì)導(dǎo)致更多的時(shí)間抖動(dòng)和更少的確定性。

基于RTOS的軟件

運(yùn)行在包含內(nèi)存管理單元(MMU)和中央處理單元(CPU)的完整操作系統(tǒng)上的軟件被認(rèn)為是基于RTOS的軟件。用這種方法實(shí)現(xiàn)的應(yīng)用程序可能非常復(fù)雜,需要在各種內(nèi)部和外部系統(tǒng)之間進(jìn)行許多不同的交互。使用完整的操作系統(tǒng)的好處是伴隨著它的所有能力--包括硬件和軟件。

在硬件方面,通常有更多的CPU核心以更高的時(shí)鐘速率運(yùn)行??梢杂袛?shù)千兆字節(jié)的內(nèi)存和持久性存儲(chǔ)器。增加外圍硬件可以像增加一塊卡一樣簡(jiǎn)單(只要有預(yù)先存在的驅(qū)動(dòng)程序)。

在軟件方面,有大量用于網(wǎng)絡(luò)堆棧、用戶界面開(kāi)發(fā)、文件處理等的開(kāi)源和供應(yīng)商專有解決方案。在所有這些能力和選項(xiàng)之下,內(nèi)核仍然以這樣一種方式實(shí)現(xiàn),即關(guān)鍵任務(wù)不會(huì)被無(wú)限期地阻斷,這在傳統(tǒng)的操作系統(tǒng)中是可能的。正因?yàn)槿绱耍@得確定性的性能仍然是可以做到的,就像RTOS固件一樣。

精心制作的操作系統(tǒng)軟件

與基于RTOS的軟件類似,一個(gè)標(biāo)準(zhǔn)的操作系統(tǒng)擁有開(kāi)發(fā)者可以要求的所有庫(kù)和功能。然而,缺少的是對(duì)滿足時(shí)間要求的嚴(yán)格關(guān)注。一般來(lái)說(shuō),用傳統(tǒng)操作系統(tǒng)實(shí)現(xiàn)的系統(tǒng)會(huì)有更少的確定性行為(在安全關(guān)鍵的情況下,沒(méi)有一個(gè)可以真正指望的)。如果在沒(méi)有災(zāi)難性后果的情況下,有一個(gè)寬松的實(shí)時(shí)性要求,如果沒(méi)有按時(shí)完成一個(gè)躊躇滿志的最后期限,只要在選擇運(yùn)行什么軟件堆棧和控制它們的資源使用方面謹(jǐn)慎行事,標(biāo)準(zhǔn)的操作系統(tǒng)就可以發(fā)揮作用。帶有PREEMPT_RT補(bǔ)丁的Linux內(nèi)核是這種類型的實(shí)時(shí)系統(tǒng)的一個(gè)很好的例子。

所以,現(xiàn)在實(shí)現(xiàn)實(shí)時(shí)系統(tǒng)的所有選項(xiàng)都已被列出,現(xiàn)在是時(shí)候準(zhǔn)確定義我們說(shuō)的RTOS,特別是基于MCU的RTOS是什么意思。

定義實(shí)時(shí)操作系統(tǒng)

操作系統(tǒng)(如Windows、Linux和macOS)的創(chuàng)建是為了提供一個(gè)一致的編程環(huán)境,將底層硬件抽象化,使其更容易編寫和維護(hù)計(jì)算機(jī)程序。它們?yōu)閼?yīng)用程序員提供了許多不同的基元(如線程和互斥),可以用來(lái)創(chuàng)建更復(fù)雜的行為。例如,可以創(chuàng)建一個(gè)多線程程序,提供對(duì)共享數(shù)據(jù)的保護(hù)性訪問(wèn):
微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹

前面的應(yīng)用程序并沒(méi)有實(shí)現(xiàn)線程和互斥基元,它只是利用了它們。線程和互斥的實(shí)際實(shí)現(xiàn)是由操作系統(tǒng)處理的。這有幾個(gè)優(yōu)點(diǎn):

  • 應(yīng)用程序代碼不那么復(fù)雜。
  • 更容易理解--無(wú)論哪個(gè)程序員都使用相同的原語(yǔ),從而更容易理解由不同人創(chuàng)建的代碼。
  • 硬件可移植性更好--有了適當(dāng)?shù)念A(yù)防措施,代碼可以在操作系統(tǒng)支持的任何硬件上運(yùn)行而無(wú)需修改。

在前面的例子中,mutex被用來(lái)確保每次只有一個(gè)線程可以訪問(wèn)共享數(shù)據(jù)。在通用操作系統(tǒng)的情況下,每個(gè)線程都會(huì)很高興地等待突變體無(wú)限期地可用,然后再去訪問(wèn)共享數(shù)據(jù)。這是實(shí)時(shí)操作系統(tǒng)與通用操作系統(tǒng)不同的地方。在RTOS中,所有阻塞的系統(tǒng)調(diào)用都是有時(shí)間限制的。RTOS不允許無(wú)限期地等待mutex,而是允許指定一個(gè)最大延遲。例如,如果線程1試圖獲取Mutex,但在100毫秒(或1秒)后仍未得到它,它將繼續(xù)等待Mutex變得可用。

在RTOS的實(shí)現(xiàn)中,要指定等待Mutex變得可用的最大時(shí)間。如果線程1指定它必須在100毫秒內(nèi)獲取Mutex,并且在101毫秒后仍未收到Mutex,線程1將收到通知,說(shuō)Mutex沒(méi)有被及時(shí)獲取。指定這個(gè)超時(shí)是為了幫助創(chuàng)建確定性的系統(tǒng)。

任何提供執(zhí)行給定代碼的確定性方式的操作系統(tǒng)都可以被認(rèn)為是實(shí)時(shí)操作系統(tǒng)。這個(gè)實(shí)時(shí)操作系統(tǒng)的定義涵蓋了相當(dāng)多的系統(tǒng)。

有幾個(gè)特征傾向于將RTOS應(yīng)用與另一RTOS應(yīng)用區(qū)分開(kāi)來(lái):不滿足實(shí)時(shí)截止日期的頻率是可以接受的,以及不滿足實(shí)時(shí)截止日期的嚴(yán)重程度。不同范圍的RTOS應(yīng)用通常被歸納為三類--硬、固和軟實(shí)時(shí)系統(tǒng)。

不要太糾結(jié)于固和軟實(shí)時(shí)系統(tǒng)之間的區(qū)別。這些術(shù)語(yǔ)的定義在我們的行業(yè)內(nèi)甚至沒(méi)有一致的意見(jiàn)。重要的是,你要知道你的系統(tǒng)的要求,并設(shè)計(jì)一個(gè)解決方案來(lái)滿足這些要求!

如果故障會(huì)導(dǎo)致生命或重大財(cái)產(chǎn)的損失,那么故障的嚴(yán)重程度一般被認(rèn)為是安全關(guān)鍵型的。有一些硬實(shí)時(shí)系統(tǒng)與安全無(wú)關(guān)。

硬實(shí)時(shí)系統(tǒng)

硬實(shí)時(shí)系統(tǒng)必須在100%的時(shí)間內(nèi)滿足其最后期限。如果系統(tǒng)沒(méi)有達(dá)到最后期限,那么它就被認(rèn)為是失敗了。這并不一定意味著如果故障發(fā)生在硬實(shí)時(shí)系統(tǒng)中就會(huì)傷害到人,只是說(shuō)如果系統(tǒng)錯(cuò)過(guò)了一個(gè)截止日期,它就失敗了。

硬實(shí)時(shí)系統(tǒng)的一些例子可以在醫(yī)療設(shè)備中找到,如心臟起搏器和具有極其嚴(yán)格控制參數(shù)的控制系統(tǒng)。在心臟起搏器的情況下,如果心臟起搏器錯(cuò)過(guò)了在正確的時(shí)間點(diǎn)進(jìn)行電脈沖的最后期限,它可能會(huì)殺死病人(這就是為什么心臟起搏器被定義為安全關(guān)鍵型系統(tǒng))。

相反,如果計(jì)算機(jī)數(shù)控(CNC)銑床上的運(yùn)動(dòng)控制系統(tǒng)沒(méi)有及時(shí)對(duì)指令做出反應(yīng),它可能會(huì)將刀具插入正在加工的零件的錯(cuò)誤部位,從而毀掉它。在我們提到的這些案例中,故障造成了生命損失,而另一個(gè)則把一些金屬變成了廢品,但這兩個(gè)故障都是由錯(cuò)過(guò)的最后期限造成的。

固實(shí)時(shí)系統(tǒng)

與硬實(shí)時(shí)系統(tǒng)相比,固實(shí)時(shí)系統(tǒng)幾乎在所有時(shí)間都需要達(dá)到其最后期限。如果視頻和音頻瞬間失去同步,可能不會(huì)被認(rèn)為是系統(tǒng)故障,但可能會(huì)使視頻的消費(fèi)者感到不安。

在大多數(shù)控制系統(tǒng)中(類似于前一個(gè)例子中的烙鐵),稍微超出規(guī)定時(shí)間的幾個(gè)樣本的讀取不太可能完全破壞系統(tǒng)控制。如果控制系統(tǒng)有ADC,可以自動(dòng)獲取新的樣本,如果MCU沒(méi)有及時(shí)讀取新的樣本,它將被新的樣本覆蓋。這種情況可能偶爾發(fā)生,但如果發(fā)生得太頻繁或太頻繁,溫度穩(wěn)定性就會(huì)被破壞。在要求特別高的系統(tǒng)中,可能只需要錯(cuò)過(guò)幾個(gè)樣本,整個(gè)控制系統(tǒng)就會(huì)失靈。

軟實(shí)時(shí)系統(tǒng)

當(dāng)涉及到系統(tǒng)必須滿足其最后期限的頻率時(shí),軟實(shí)時(shí)系統(tǒng)是最寬松的。這些系統(tǒng)通常只提供一個(gè)遵守最后期限的最大努力的承諾。

汽車中的巡航控制是軟實(shí)時(shí)系統(tǒng)的很好的例子,因?yàn)閷?duì)它沒(méi)有硬性規(guī)定或期望。駕駛員通常不期望他們的速度能收斂到設(shè)定速度的+/- x mph/kph之內(nèi)。他們期望在合理的情況下,例如沒(méi)有大的坡度,控制系統(tǒng)最終會(huì)讓他們?cè)诖蠖鄶?shù)時(shí)間內(nèi)接近他們的理想速度。

實(shí)時(shí)操作系統(tǒng)的范圍

實(shí)時(shí)操作系統(tǒng)的功能各不相同,它們最適合的處理器架構(gòu)和尺寸也各不相同。在較小的方面,我們有較小的以8-32位MCU為重點(diǎn)的RTOS,如FreeRTOS、Keil RTX、Micrium μC、ThreadX,以及更多。 這類RTOS適合在微控制器上使用,并提供一個(gè)緊湊的實(shí)時(shí)內(nèi)核作為最基本的產(chǎn)品。當(dāng)從MCU轉(zhuǎn)向32位和64位應(yīng)用處理器時(shí),你會(huì)傾向于找到RTOS,如Wind River VxWorks和Wind River Linux、Green Hills的Integrity OS,甚至是帶有PREEMPT_RT內(nèi)核擴(kuò)展的Linux。這些完整的操作系統(tǒng)提供了大量的軟件選擇,為實(shí)時(shí)調(diào)度要求以及一般計(jì)算任務(wù)提供了解決方案。即使有了我們剛剛提到的操作系統(tǒng),我們也只是觸及了可用的表面。在所有級(jí)別的實(shí)時(shí)操作系統(tǒng)中,無(wú)論大小,都有免費(fèi)和付費(fèi)的解決方案(有些價(jià)格遠(yuǎn)遠(yuǎn)超過(guò)10000美元)。

那么,既然有免費(fèi)的解決方案,你為什么還要選擇付費(fèi)呢?免費(fèi)提供的RTOS解決方案和付費(fèi)解決方案之間的主要區(qū)別因素是安全批準(zhǔn)、中間件和客戶支持。 因?yàn)閷?shí)時(shí)操作系統(tǒng)提供了高度確定的執(zhí)行環(huán)境,它們經(jīng)常被用于復(fù)雜的安全關(guān)鍵型應(yīng)用。我們所說(shuō)的安全關(guān)鍵,一般是指一個(gè)系統(tǒng),其故障可能會(huì)傷害人或造成重大損失。這些系統(tǒng)需要確定性的操作,因?yàn)樗鼈儽仨氁恢币钥深A(yù)測(cè)的方式行事。保證代碼在固定的時(shí)間內(nèi)對(duì)事件做出反應(yīng)是確保它們行為一致的重要一步。這些安全關(guān)鍵型應(yīng)用中的大多數(shù)都受到監(jiān)管,并有自己的一套管理機(jī)構(gòu)和標(biāo)準(zhǔn),如飛機(jī)的DO-178B和DO-178C或工業(yè)應(yīng)用的IEC 61508 SIL 3和ISO 26262 ASILD。為了使安全關(guān)鍵型認(rèn)證更經(jīng)濟(jì)實(shí)惠,設(shè)計(jì)者通常會(huì)保持這些系統(tǒng)的代碼極其簡(jiǎn)單(因此有可能從數(shù)學(xué)上證明系統(tǒng)將穩(wěn)定運(yùn)行,不會(huì)出錯(cuò)),或者轉(zhuǎn)向已經(jīng)通過(guò)認(rèn)證的商業(yè)RTOS解決方案,作為一個(gè)起點(diǎn)。威騰斯丁公司的SafeRTOS是FreeRTOS的衍生產(chǎn)品,已獲得工業(yè)、醫(yī)療和汽車領(lǐng)域的認(rèn)證。

中間件也可以是復(fù)雜系統(tǒng)中的一個(gè)極其重要的組成部分。中間件是運(yùn)行在用戶代碼(你,應(yīng)用程序員編寫的代碼)和較低層,如RTOS或裸機(jī)(無(wú)RTOS)之間的代碼。付費(fèi)解決方案的另一個(gè)價(jià)值主張是,生態(tài)系統(tǒng)提供了一套預(yù)集成的高質(zhì)量中間件(如文件系統(tǒng)、網(wǎng)絡(luò)堆棧、GUI框架、工業(yè)協(xié)議等),最大限度地減少了開(kāi)發(fā),降低了整體項(xiàng)目風(fēng)險(xiǎn)。使用中間件而不是自己開(kāi)發(fā)的原因是為了減少內(nèi)部開(kāi)發(fā)團(tuán)隊(duì)編寫的原始代碼量。這既降低了風(fēng)險(xiǎn),也減少了團(tuán)隊(duì)花費(fèi)的總時(shí)間--因此,根據(jù)項(xiàng)目復(fù)雜性和進(jìn)度要求等因素,這可能是一項(xiàng)值得的投資。

付費(fèi)解決方案通常也會(huì)直接由固件供應(yīng)商提供某種程度的客戶支持。雇傭和保留工程師的成本很高。管理人員最害怕的莫過(guò)于走進(jìn)一個(gè)滿是工程師的房間,這些人正在為他們的工具而困惑,而不是為需要解決的真正問(wèn)題而工作。有了專家的幫助,只需一封電子郵件或一個(gè)電話,就可以大大提高團(tuán)隊(duì)的生產(chǎn)力,從而縮短周轉(zhuǎn)時(shí)間,使每個(gè)人的工作環(huán)境更加愉快。

FreeRTOS有付費(fèi)的支持和培訓(xùn)選項(xiàng),以及付費(fèi)的中間件解決方案,這些都可以被整合。然而,也有開(kāi)放源碼和/或免費(fèi)提供的中間件組件,其中一些將在本書中討論。

本書使用的RTOS

什么這本書只涉及一個(gè)MCU模型上的一個(gè)RTOS?有幾個(gè)原因,其中一個(gè)原因是我們要講的大部分概念幾乎適用于任何可用的RTOS,就像良好的編碼習(xí)慣超越了你碰巧要編碼的語(yǔ)言一樣。通過(guò)專注于一個(gè)RTOS和一個(gè)MCU的單一實(shí)現(xiàn),我們將能夠更深入地探討一些話題,而不是在嘗試討論所有的替代方案時(shí)才有可能。

FreeRTOS是最流行的用于MCU的RTOS實(shí)現(xiàn)之一,而且非常廣泛。它已經(jīng)存在了15年之久,并且已經(jīng)被移植到幾十個(gè)平臺(tái)。如果你曾經(jīng)與熟悉RTOS編程的真正的底層嵌入式系統(tǒng)工程師交談過(guò),他們肯定聽(tīng)說(shuō)過(guò)FreeRTOS,而且很可能至少使用過(guò)一次。通過(guò)把注意力集中在FreeRTOS上,你將有能力迅速地把你的FreeRTOS知識(shí)遷移到其他硬件上,或者在情況需要時(shí)過(guò)渡到其他RTOS。

我們使用FreeRTOS的另一個(gè)原因?嗯,它是免費(fèi)的! FreeRTOS是在MIT許可下發(fā)布的。關(guān)于許可和其他FreeRTOS衍生產(chǎn)品的更多細(xì)節(jié),如SAFERTOS和OpenRTOS,請(qǐng)參見(jiàn)https://www.freertos.org/a00114.html。

下面的圖表顯示了FreeRTOS在一個(gè)典型的ARM固件堆棧中的位置。堆棧指的是構(gòu)成系統(tǒng)的所有不同層的固件組件,以及它們是如何堆疊在一起的。這里的用戶是指使用FreeRTOS的程序員(而不是嵌入式系統(tǒng)的終端用戶):

微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹

一些值得注意的項(xiàng)目如下:

  • 用戶代碼能夠訪問(wèn)相同的FreeRTOS API,不管底層的硬件端口實(shí)現(xiàn)如何。
  • FreeRTOS并不阻止用戶代碼使用供應(yīng)商提供的驅(qū)動(dòng)程序、CMSIS或原始硬件寄存器。
  • 擁有一個(gè)在不同硬件間一致的標(biāo)準(zhǔn)化的API意味著代碼可以很容易地在硬件目標(biāo)之間遷移,而不需要不斷地重寫。讓代碼直接與硬件對(duì)話的能力也提供了必要時(shí)編寫極其有效的代碼的手段(以犧牲可移植性為代價(jià))。

何時(shí)使用實(shí)時(shí)操作系統(tǒng)

偶爾,當(dāng)有人第一次了解到實(shí)時(shí)操作系統(tǒng)這個(gè)術(shù)語(yǔ)時(shí),他們會(huì)錯(cuò)誤地認(rèn)為實(shí)時(shí)操作系統(tǒng)是在嵌入式系統(tǒng)中實(shí)現(xiàn)實(shí)時(shí)行為的唯一方法。這當(dāng)然是可以理解的(尤其是考慮到這個(gè)名字),但這與事實(shí)相去甚遠(yuǎn)。有時(shí),最好把RTOS看作是一種潛在的解決方案,而不是用于一切的解決方案。一般來(lái)說(shuō),對(duì)于一個(gè)基于MCU的RTOS來(lái)說(shuō),要成為一個(gè)特定問(wèn)題的理想解決方案,它需要有Goldilocks級(jí)別的復(fù)雜性--不要太簡(jiǎn)單,但也不要太復(fù)雜。

如果有一個(gè)極其簡(jiǎn)單的問(wèn)題,例如監(jiān)測(cè)兩個(gè)狀態(tài)并在它們同時(shí)出現(xiàn)時(shí)觸發(fā)警報(bào),那么解決方案可能是一個(gè)直接的硬件解決方案(例如一個(gè)AND門)。在這種情況下,可能沒(méi)有理由使事情進(jìn)一步復(fù)雜化,因?yàn)锳ND門的解決方案將是非??斓?,具有高度的確定性和極端的可靠性。它也將需要很少的開(kāi)發(fā)時(shí)間。

現(xiàn)在,考慮一下只有一兩個(gè)任務(wù)需要執(zhí)行的情況,如控制電機(jī)的速度和觀察編碼器以確保正確的距離被穿越。這當(dāng)然可以用離散的模擬和數(shù)字硬件來(lái)實(shí)現(xiàn),但有可配置的距離會(huì)增加一些復(fù)雜性。此外,調(diào)整控制環(huán)路的系數(shù)很可能需要調(diào)整電位器的設(shè)置(可能是針對(duì)每個(gè)單獨(dú)的板子),按照今天的制造標(biāo)準(zhǔn),這在某些或大多數(shù)情況下是不可取的。因此,在硬件解決方案方面,我們只能用CPLD或FPGA來(lái)實(shí)現(xiàn)運(yùn)動(dòng)控制算法和跟蹤行走的距離。這恰好是一個(gè)非常合適的選擇,因?yàn)樗锌赡苄〉娇梢匝b入CPLD,但在某些情況下,F(xiàn)PGA的成本可能是不可接受的。這個(gè)問(wèn)題也是由MCU經(jīng)常處理的。如果現(xiàn)有的內(nèi)部資源不具備硬件語(yǔ)言或工具鏈所需的專業(yè)知識(shí),那么裸機(jī)MCU固件解決方案可能是一個(gè)不錯(cuò)的選擇。

假設(shè)問(wèn)題更加復(fù)雜,例如控制幾個(gè)不同執(zhí)行器的設(shè)備,從傳感器中讀取數(shù)據(jù),并將這些值存儲(chǔ)在本地存儲(chǔ)器中。也許該設(shè)備還需要坐在某種網(wǎng)絡(luò)上,如以太網(wǎng)、Wi-Fi、控制器區(qū)域網(wǎng)絡(luò)(CAN),等等。一TOS可以很好地解決這種類型的問(wèn)題。事實(shí)上,有許多不同的任務(wù)需要完成,或多或少地相互異步,這使得我們很容易認(rèn)為RTOS帶來(lái)的額外復(fù)雜性將得到回報(bào)。實(shí)時(shí)操作系統(tǒng)幫助我們確保低優(yōu)先級(jí)的、更復(fù)雜的任務(wù),如網(wǎng)絡(luò)和文件系統(tǒng)堆棧,不會(huì)干擾時(shí)間更緊迫的任務(wù)(如控制執(zhí)行器和讀取傳感器)。在許多情況下,可能會(huì)有某種形式的控制系統(tǒng),通常會(huì)從在明確的時(shí)間間隔內(nèi)運(yùn)行中受益,這是實(shí)時(shí)操作系統(tǒng)的優(yōu)勢(shì)。

現(xiàn)在,考慮一個(gè)與前面類似的系統(tǒng),但現(xiàn)在有多種網(wǎng)絡(luò)要求,例如為網(wǎng)頁(yè)提供服務(wù),處理復(fù)雜的企業(yè)環(huán)境中的用戶認(rèn)證,以及將文件推送到需要基于不同網(wǎng)絡(luò)文件協(xié)議的各種共享目錄。這種復(fù)雜程度可以用RTOS來(lái)實(shí)現(xiàn),但同樣,根據(jù)可用的團(tuán)隊(duì)資源,這可能最好留給完整的操作系統(tǒng)來(lái)處理(無(wú)論是RTOS還是通用的),因?yàn)樵S多所需的復(fù)雜軟件堆棧已經(jīng)存在。有時(shí),可以采取多核方法,其中一個(gè)核心運(yùn)行RTOS,另一個(gè)運(yùn)行通用操作系統(tǒng)。

現(xiàn)在,可能很明顯,沒(méi)有確切的方法來(lái)確定哪種實(shí)時(shí)解決方案對(duì)所有情況都是正確的。每個(gè)項(xiàng)目和團(tuán)隊(duì)都有自己獨(dú)特的要求、背景、技能組合和背景,為這個(gè)決定提供了舞臺(tái)。選擇一個(gè)問(wèn)題的解決方案有很多因素;重要的是要保持開(kāi)放的心態(tài),選擇在那個(gè)時(shí)間點(diǎn)上最適合你的團(tuán)隊(duì)和項(xiàng)目的解決方案。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482242.html

到了這里,關(guān)于微控制器實(shí)時(shí)操作系統(tǒng)實(shí)踐1實(shí)時(shí)系統(tǒng)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 簡(jiǎn)單介紹STM32上的FreeRTOS實(shí)時(shí)操作系統(tǒng)

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

    2024年02月16日
    瀏覽(33)
  • 【Vxworks操作系統(tǒng)】實(shí)時(shí)多任務(wù)介紹-NO.2

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

    2024年02月14日
    瀏覽(17)
  • LabVIEW開(kāi)發(fā)微控制器控制的并行機(jī)器人的實(shí)時(shí)視覺(jué)圖像處理

    LabVIEW開(kāi)發(fā)微控制器控制的并行機(jī)器人的實(shí)時(shí)視覺(jué)圖像處理

    LabVIEW開(kāi)發(fā)微控制器控制的并行機(jī)器人的實(shí)時(shí)視覺(jué)圖像處理 ? ? ? ? 通過(guò)相機(jī)視覺(jué),以對(duì)目標(biāo)物體的不同顏色進(jìn)行分類,并與平行機(jī)器人一起拾取和放置物體。通過(guò)使用MATLAB?Simulink模擬合適的機(jī)器人工作空間來(lái)研究使用相機(jī)的效率和機(jī)器人的準(zhǔn)確性。機(jī)械臂以使用運(yùn)動(dòng)學(xué)計(jì)算

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

    FreeRTOS_從底層學(xué)習(xí)實(shí)時(shí)操作系統(tǒng)

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月11日
    瀏覽(27)
  • 嵌入式實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)(十)

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

    2024年02月07日
    瀏覽(27)
  • FreeRTOS實(shí)時(shí)操作系統(tǒng)(十五)Tickless低功耗模式

    FreeRTOS實(shí)時(shí)操作系統(tǒng)(十五)Tickless低功耗模式

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

    2024年02月16日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包