<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>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 現在是使用標準RTOS API的時(shí)間了嗎?

現在是使用標準RTOS API的時(shí)間了嗎?

發(fā)布人:13261589816 時(shí)間:2023-06-26 來(lái)源:工程師 發(fā)布文章

與嵌入式MCU一起使用的RTOS的名單很長(cháng),其中大多數都有自己的專(zhuān)有功能以及獨特的API。有些API很好,有些則不太好。實(shí)際上,好的和不太好的RTOS API之間的差異相當小——大多數RTOS API都有其專(zhuān)用的功能?;仡欉^(guò)去30多年,我開(kāi)始意識到私有的RTOS API已經(jīng)并將繼續對嵌入式開(kāi)發(fā)和我們的整個(gè)行業(yè)產(chǎn)生負面的影響。

 

首先,私有的RTOS API代表了應用程序固件的鎖定,使用私有的RTOS API編寫(xiě)的代碼必須修改才能移植到不同的RTOS。更糟糕的是,移植到另一個(gè)RTOS所需的修改可能令人生畏。一些RTOS供應商添加了一個(gè)適應層,試圖支持其他API。然而,這個(gè)解決方案并不理想,因為它就像在圓孔中安裝一個(gè)方形釘子。更不用說(shuō)額外適配層大大增加了RTOS的開(kāi)銷(xiāo)和復雜性,它還可能導致錯誤。

 

無(wú)論如何,無(wú)法輕松遷移應用程序代碼可能會(huì )嚴重限制產(chǎn)品的演變。例如,如果一個(gè)應用程序依賴(lài)于RTOS XYZ,并且它不支持最新和最高性能的處理器,應用程序要么需要修改其代碼庫以移植到另一個(gè)RTOS,要么等到RTOS XYZ添加支持,要么就放棄。同樣,將基于RTOS XYZ的應用程序遷移到嵌入式Linux(另一個(gè)非常常見(jiàn)的情況)是困難的,因為嵌入式Linux中的多線(xiàn)程是基于POSIX pthreads API的。標準的RTOS API將有助于消除鎖定,從而使嵌入式應用程序更加便攜,并增強其未來(lái)的演變。

 

私有的RTOS API也需要經(jīng)過(guò)培訓才能上手,大多數首次使用RTOS的開(kāi)發(fā)人員必須花大量時(shí)間學(xué)習私有的RTOS API。即使是使用FreeRTOS或微軟的Azure RTOS (ThreadX)的嵌入式開(kāi)發(fā)人員——兩者都是流行的嵌入式RTOS,每個(gè)都有自己的專(zhuān)有API,它們在開(kāi)發(fā)人員總數中所占比例相當小。這里的重點(diǎn)是,私有的RTOS API需要學(xué)習,這花費了公司的時(shí)間和金錢(qián)。行業(yè)標準的RTOS API將減少培訓,從而節省資金,并提高設備制造商產(chǎn)品上市時(shí)間。

 

另一個(gè)問(wèn)題是,一些設備制造商的產(chǎn)品系列橫跨MCU和MPU處理器,通常具有不同的功能和價(jià)格特點(diǎn),他們基于MPU的產(chǎn)品經(jīng)常使用某種類(lèi)型的嵌入式Linux。對于這些公司來(lái)說(shuō),由于私有的RTOS API,必須維護單獨的開(kāi)發(fā)團隊(和代碼庫)既困難又昂貴。使用標準的RTOS API,應用程序代碼可以在基于MPU和MCU的項目之間實(shí)時(shí)共享,從而改善從編碼、測試到產(chǎn)品發(fā)布的整個(gè)開(kāi)發(fā)過(guò)程。


標準RTOS API應該是什么?

在我們更進(jìn)一步討論之前,我們應該感謝ARM。他們多年前在嵌入式行業(yè)發(fā)現了這個(gè)問(wèn)題,甚至試圖用CMSIS-RTOS API解決這個(gè)問(wèn)題。不幸的是,CMSIS RTOS API最終是另一個(gè)專(zhuān)有的RTOS API。

 

回到標準的RTOS API應該是什么這個(gè)問(wèn)題,有趣的是,答案多年來(lái)一直擺在我們面前:標準的RTOS API應該是行業(yè)標準POSIX pthread API,它已經(jīng)是每個(gè)嵌入式Linux發(fā)行版以及每個(gè)大學(xué)計算機科學(xué)課程的一部分。由于嵌入式Linux占嵌入式設計的70%,因此很容易認為POSIX pthread API已經(jīng)是嵌入式系統中的RTOS API標準,也是大多數開(kāi)發(fā)人員已經(jīng)熟悉的標準。

 

此外,POSIX pthread API已經(jīng)在UNIX/Linux系統上測試了30多年。將硬實(shí)時(shí)功能與這個(gè)工業(yè)標準API融合,承諾嵌入式開(kāi)發(fā)人員一個(gè)兩全其美的方案。我們的行業(yè)只需要各種RTOS提供商原生態(tài)的采用它。將嵌入式行業(yè)統一在POSIX pthread API標準上,將消除技術(shù)的鎖定,加速嵌入式產(chǎn)品演變。減少培訓,并立即實(shí)現MCU和MPU級設備之間的代碼共享和遷移——所有這些都將推動(dòng)嵌入式行業(yè)向前邁出的重要一步。

作者:Bill Lamie

在商業(yè)RTOS領(lǐng)域工作了30多年——他先是創(chuàng )建了Accelerated Technology(被西門(mén)子收購),然后是Express Logic(被微軟收購)。Bill是Nucleus和ThreadX的唯一作者。Bill的最新努力是PX5,在那里你可以找到他的最新產(chǎn)品——PX5 RTOS!

麥克泰技術(shù)是PX5 RTOS 的代理商,學(xué)習和評估PX5 RTOS可了解:

http://www.bmrtech.com/Product/product_list/293.html



*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(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>