<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式開(kāi)發(fā):RTOS或裸機——為什么很多人選擇RTOS

嵌入式開(kāi)發(fā):RTOS或裸機——為什么很多人選擇RTOS

作者: 時(shí)間:2022-10-17 來(lái)源:學(xué)習嵌入式 收藏

  使用或裸機調度程序是開(kāi)發(fā)人員爭論的熱門(mén)話(huà)題。在裸機方面,開(kāi)發(fā)人員認為他們可以結合使用基于優(yōu)先級的中斷和計時(shí)器來(lái)獲得具有更好性能和內存占用的等效行為。方面認為對于初學(xué)者來(lái)說(shuō)易于調度和集成。無(wú)論人們站在哪一邊,這里有七個(gè)原因使開(kāi)發(fā)人員可能決定從開(kāi)始而不是裸機調度程序。

本文引用地址:http://dyxdggzs.com/article/202210/439151.htm

原因1–并發(fā)性

  基于微控制器的通常只有一個(gè)處理核心,但需要執行多個(gè)任務(wù)。在任務(wù)需要同時(shí)或并發(fā)執行的應用程序中,使用RTOS是有意義的。RTOS可以在內存中同時(shí)擁有多個(gè)任務(wù),并且可以根據事件和優(yōu)先級在任務(wù)之間切換??梢允褂寐銠C調度程序,但是裸機系統中的任務(wù)通常一次執行一個(gè),而不是同時(shí)執行。

原因2–搶占

  搶占是操作系統暫停一個(gè)任務(wù)以執行更高優(yōu)先級任務(wù)的能力。如果正在開(kāi)發(fā)的軟件需要區分任務(wù)的優(yōu)先級并中斷當前正在運行的任務(wù),那么RTOS就是最好的操作系統。大多數RTOS系統的本質(zhì)是根據任務(wù)的優(yōu)先級和系統條件來(lái)確定在任何給定的時(shí)間應該執行哪些任務(wù)??梢蚤_(kāi)發(fā)裸機調度程序,使用基于優(yōu)先級的中斷來(lái)模擬這種類(lèi)型的行為,但是使用RTOS更適合這種情況。

原因3–可用內存

  微控制器上可用RAM的數量是嵌入式開(kāi)發(fā)人員決定使用RTOS還是裸機調度器的一個(gè)重要因素。由于每個(gè)任務(wù)都有自己的任務(wù)控制塊和堆棧,所以RAM少于4千字節的資源受限系統可能很難適應內存。另一方面,裸機系統通常只有一個(gè)堆棧,不需要額外的開(kāi)銷(xiāo)來(lái)跟蹤每個(gè)系統任務(wù)的狀態(tài)。在使用RTOS解決方案之前,基于微控制器的系統至少應該有4千字節的RAM(最好是8千字節)。

原因4–可用閃存

  由于開(kāi)發(fā)人員在決定使用RTOS之前應該查看系統上有多少可用內存,所以開(kāi)發(fā)人員還應該查看有多少可用閃存空間。RTOS系統不會(huì )占用太多的閃存空間,通常在8到10千字節的數量級,但如果微控制器只有16千字節的閃存空間,就沒(méi)有多少空間留給應用程序代碼了。如果微控制器具有至少32千字節的閃存空間,則該系統是使用RTOS的良好候選。如果做得不夠,可能是時(shí)候清理裸機調度程序或升級硬件了。

原因5–同步工具

  使用裸機調度程序的一個(gè)問(wèn)題是,它缺少默認包含在RTOS中的同步工具。例如,RTOS具有可用于保護共享資源的互斥體、可用于發(fā)送信號和同步任務(wù)的信號量以及在任務(wù)間傳輸數據的消息隊列。正確地設計和實(shí)現這些核心軟件功能并不簡(jiǎn)單,從頭開(kāi)始將它們添加到裸機調度程序中無(wú)疑會(huì )引入錯誤。如果一個(gè)系統有多個(gè)任務(wù)和受保護的資源需要同步,那么使用RTOS是明智的決定。

原因6–第三方軟件

  當今許多嵌入式開(kāi)發(fā)人員面臨的一個(gè)問(wèn)題是如何將第三方軟件棧和工具集成到他們的嵌入式系統中。很少有開(kāi)發(fā)者想寫(xiě)TCP/IP或者USB棧。市場(chǎng)上提供的許多第三方堆棧和工具都與各種RTOS兼容。RTOS的使用使得這些組件在軟件中即插即用,并且可以極大地加速軟件開(kāi)發(fā)。使用第三方軟件的決定可能是應該使用RTOS而不是裸機調度程序的一個(gè)主要指標。

原因7–易于使用

  幾乎每個(gè)微控制器和幾乎所有可以想象的應用都可以使用RTOS系統。無(wú)論開(kāi)發(fā)人員只是想創(chuàng )建一個(gè)快速原型還是構建一個(gè)健壯的安全關(guān)鍵系統,RTOS都是存在的,開(kāi)發(fā)人員可以利用它并快速啟動(dòng)和運行。創(chuàng )建任務(wù)和利用RTOS工具很容易,而且非常強大,但是開(kāi)發(fā)者需要注意,他們正確地分析了他們的任務(wù),并考慮了他們的系統設計。RTOS是一個(gè)強大的工具,但使用不當會(huì )導致悲劇性的后果。

結論

  開(kāi)發(fā)人員無(wú)疑會(huì )繼續爭論是使用裸機調度程序還是RTOS。在某種程度上,決策是基于設計系統的開(kāi)發(fā)人員的技能和經(jīng)驗。在其他情況下,RTOS無(wú)疑是首要解決方案。如果有一點(diǎn)是明確的,那就是嵌入式開(kāi)發(fā)人員需要了解每種解決方案的優(yōu)缺點(diǎn),以及如何在任一場(chǎng)景中正確地實(shí)現解決方案。



關(guān)鍵詞: 嵌入式 RTOS 系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>