μC/OS的商業(yè)版Cesiμm RTOS,和FreeRTOS是嵌入式軟件領(lǐng)域流行的兩種實(shí)時(shí)內(nèi)核。雖然這兩款RTOS功能相似,并且具有可比較的執(zhí)行指標(biāo),但它們都有各自的優(yōu)點(diǎn)和缺點(diǎn),本文將分析一下其差異。
功能區(qū)別
Cesiμm RTOS和FreeRTOS的API之間存在比較大的差異。以信號(hào)量創(chuàng)建為例,F(xiàn)reeRTOS提供了下列對(duì)象創(chuàng)建函數(shù):
與信號(hào)量創(chuàng)建函數(shù)一樣,互斥信號(hào)量和隊(duì)列也使用類似的函數(shù)變體,而非一個(gè)統(tǒng)一的函數(shù)來創(chuàng)建這些內(nèi)核對(duì)象,導(dǎo)致用戶必須熟悉更多的API。
雖然FreeRTOS這些函數(shù)使得在應(yīng)用程序中查找相應(yīng)的信號(hào)量創(chuàng)建函數(shù)更容易,但用戶需要付出更多努力理解每個(gè)函數(shù)的具體用途。相反,使用Cesiμm RTOS,信號(hào)量或互斥量創(chuàng)建更簡單。
傳遞給函數(shù)的參數(shù)將決定用戶創(chuàng)建的對(duì)象類型。這種方法非常簡單,用戶不需要象FreeRTOS一樣,在調(diào)試時(shí)執(zhí)行多個(gè)重定向創(chuàng)建函數(shù)。
通過OSSemCreate()函數(shù),根據(jù)參數(shù)值可以創(chuàng)建二值、計(jì)數(shù)或靜態(tài)信號(hào)量,設(shè)置初始計(jì)數(shù)并將信號(hào)量數(shù)據(jù)對(duì)象定義為靜態(tài)變量或非靜態(tài)變量。
通過傳入創(chuàng)建函數(shù)的不同參數(shù),創(chuàng)建與FreeRTOS相同類型的對(duì)象,而無需為每個(gè)對(duì)象單獨(dú)提供函數(shù)。
從使用上講,Cesiμm RTOS的功能沒有缺失,但調(diào)試時(shí)需要了解、管理和維護(hù)的API更少。
調(diào)試特性
FreeRTOS中,信號(hào)量創(chuàng)建函數(shù)將映射到等效隊(duì)列函數(shù)實(shí)例中。例如:
隨著函數(shù)嵌套深度的增加,在調(diào)試期間跟蹤錯(cuò)誤將變得更加困難。而在Cesiμm RTOS中調(diào)試信號(hào)量、隊(duì)列或互斥信號(hào)量的創(chuàng)建更簡單,更容易找到故障點(diǎn)或錯(cuò)誤配置。
例如xSemaphoreTake()函數(shù)將調(diào)用xQueueSemaphoreTake()函數(shù),后者將根據(jù)調(diào)用來自信號(hào)量還是隊(duì)列,實(shí)現(xiàn)后續(xù)操作。
額外的條件處理使函數(shù)在調(diào)試時(shí)的跟蹤更加復(fù)雜。相比之下,Cesiμm RTOS中的創(chuàng)建函數(shù)更直接、簡短,并且能更快的調(diào)試并識(shí)別問題。
在性能方面,兩者幾乎相同,但從開發(fā)人員的角度來看,Cesiμm RTOS代碼將更容易跟蹤。
特性區(qū)別
盡管兩個(gè)內(nèi)核提供的功能相似,但Cesiμm RTOS提供了更高的代碼質(zhì)量和一些獨(dú)特的特性。
其中包括更具描述性的錯(cuò)誤返回代碼、與現(xiàn)成的Cesiμm軟件棧的兼容性以及整體代碼的清潔度。
錯(cuò)誤返回碼
FreeRTOS函數(shù)返回碼非常簡單。通常會(huì)給出兩個(gè)返回代碼值給其調(diào)用API。大多數(shù)函數(shù)的返回值為pdPASS, pdFAIL, pdTRUE和pdFALSE。
對(duì)于描述性稍強(qiáng)的返回代碼,一些函數(shù)可能返回值errCOULD_NOT_ALLOCATE_REQUIRED_
MEMORY、errQUEUE_BLOCKED、errQUEUE_YIELD、errQUEUE_BLOCKED或errQUEUE_YIELD。
當(dāng)試圖檢測(cè)代碼以實(shí)現(xiàn)故障恢復(fù)或更復(fù)雜的錯(cuò)誤處理時(shí),這些返回值無法提供更多詳細(xì)的反饋。
如vSemaphoreDelete(),這個(gè)函數(shù)調(diào)用了vQueueDelete(),其返回代碼是void,這使得測(cè)試該函數(shù)的結(jié)果是成功還是失敗變得很棘手。
相比之下,Cesiμm RTOS提供了豐富的錯(cuò)誤返回值和消息,供開發(fā)人員在API中使用。所有用戶調(diào)用的OS函數(shù)都提供了(OS_ERR *)類型參數(shù)。
該變量在執(zhí)行完成時(shí)被賦予一個(gè)值來反映成功或失敗的原因。這些細(xì)節(jié)可以提供更精確的調(diào)試體驗(yàn)。
當(dāng)調(diào)試一個(gè)大型應(yīng)用程序時(shí),這個(gè)特性將顯著影響開發(fā)時(shí)間。
vSemaphoreDelete()的等效函數(shù),在Cesiμm RTOS 為OSSemDel(),此函數(shù)接受(OS_ERR *)類型參數(shù),該參數(shù)可以返回以下值之一。
支持的軟件棧
Cesiμm RTOS的另一個(gè)優(yōu)勢(shì)是其豐富的中間件支持。中間件與RTOS基于相同的規(guī)范設(shè)計(jì)和標(biāo)準(zhǔn)。使開發(fā)人員的學(xué)習(xí)體驗(yàn)更加順暢。
廣泛使的用FreeRTOS,也支持許多第三方軟件棧。然而,這些產(chǎn)品具有不同的代碼設(shè)計(jì)標(biāo)準(zhǔn),使得產(chǎn)品集成更具挑戰(zhàn)性。開發(fā)人員不僅要學(xué)習(xí)新產(chǎn)品,還必須熟悉其代碼風(fēng)格。移植和集成工作更具挑戰(zhàn)性。Cesiμm RTOS全系列軟件產(chǎn)品在設(shè)計(jì)時(shí)考慮到了互操作性。這有助于加快開發(fā)人員在集成新軟件堆棧時(shí)的學(xué)習(xí)曲線。Cesiμm RTOS提供以下產(chǎn)品棧:
· 文件系統(tǒng)Cs/FS
· 網(wǎng)絡(luò)協(xié)議棧Cs/NET,其中應(yīng)用協(xié)議如HTTP、DHCP等
· USB設(shè)備棧Cs/USBD
· USB主機(jī)棧Cs/USBH
· Modbus棧Cs/Modbus
此時(shí),Cesiμm還支持SSL解決方案、圖形用戶接口和其他第三方產(chǎn)品。
潔凈的代碼
在查看代碼時(shí),將代碼和注釋混合在一起時(shí)中,將很難將兩者分開并只關(guān)注其中一個(gè)。因此,Cesiμm RTOS代碼被劃分為左邊的代碼和右邊的注釋。當(dāng)然,這并沒有真正的改進(jìn)性能,完全是為了用戶體驗(yàn)。結(jié)構(gòu)越清晰,就越容易學(xué)習(xí)、使用和支持。這使得理解Cesiμm RTOS代碼更容易,從而節(jié)省了進(jìn)入開發(fā)階段的時(shí)間。
雖然FreeRTOS和Cesiμm RTOS解決方案在性能和功能上相似,但Cesium RTOS提供了的更佳的用戶體驗(yàn)。為應(yīng)用程序選擇最佳的RTOS涉及許多因素,例如性能、功能和可靠性。對(duì)開發(fā)人員來說,同樣重要的是精通RTOS特性所需的努力程度及其易用性(其中包括應(yīng)用程序調(diào)試,這是開發(fā)周期中經(jīng)常被忽視的階段)。
隨著應(yīng)用的增長,會(huì)添加新的特性集,整個(gè)項(xiàng)目的復(fù)雜性也會(huì)增加。Cesiμm RTOS內(nèi)置的用戶體驗(yàn)增強(qiáng)功能使用戶在復(fù)雜應(yīng)用程序中更高效,并幫助提高工作效率。
審核編輯:劉清
-
RTOS
+關(guān)注
關(guān)注
22文章
820瀏覽量
119918 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62421 -
Err
+關(guān)注
關(guān)注
0文章
6瀏覽量
6513 -
API串口
+關(guān)注
關(guān)注
0文章
13瀏覽量
4863
原文標(biāo)題:【內(nèi)核對(duì)比】CesiμmRTOS vs FreeRTOS
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
分析一下uC/OS-III和FreeRTOS的區(qū)別
supervisor的第三方軟件Web統(tǒng)一管理界面cesi
關(guān)于FreeRTOS內(nèi)存管理的疑問誰來解答一下
請(qǐng)問一下在FreeRTOS系統(tǒng)下的LwIP-1.4.1是怎樣移植的
梳理一下FreeRTOS任務(wù)管理單元實(shí)現(xiàn)思路
梳理一下FreeRTOS內(nèi)核代碼規(guī)范
能否幫忙介紹一下FreeRTOS分配SRAM和DDR的功能是什么,是如何工作的?
談?wù)?b class='flag-5'>FreeRTOS及其授權(quán)方式
電磁爐加熱一下就停一下什么原因及解決辦法
初入FreeRTOS
![初入<b class='flag-5'>FreeRTOS</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
圖解FreeRTOS 原理系列之任務(wù)管理器基本框架
![圖解<b class='flag-5'>FreeRTOS</b> 原理系列之任務(wù)管理器基本框架](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS高級(jí)篇2---FreeRTOS任務(wù)創(chuàng)建分析
![<b class='flag-5'>FreeRTOS</b>高級(jí)篇2---<b class='flag-5'>FreeRTOS</b>任務(wù)創(chuàng)建<b class='flag-5'>分析</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論