• 正文
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

選擇μCOS還是FreeRTOS?

2023/11/28
2448
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

微信公眾號(hào) | strongerHuang

最近有小伙伴在問(wèn):學(xué)習(xí)RTOS,選擇 μCOS ?還是 FreeRTOS ?

其實(shí)類(lèi)似的問(wèn)題,經(jīng)常都有老鐵在問(wèn),沒(méi)有統(tǒng)一的答案,通常來(lái)說(shuō),學(xué)會(huì)一款RTOS,再學(xué)其他的RTOS就相對(duì)很容易了。

就目前而言,μCOS?和 FreeRTOS 都比較適合初學(xué)者,μCOS源碼相對(duì)比較規(guī)范,也更容易理解。FreeRTOS市場(chǎng)占有率比較高,學(xué)習(xí)資料比較多。

當(dāng)然,他們倆各有各的特點(diǎn),今天就給大家分享一下這兩款RTOS的編碼規(guī)范,以u(píng)C/OS-III V3.08.02和 FreeRTOS V10.5.1為例。

編碼標(biāo)準(zhǔn)

uC/OS 和?FreeRTOS 都是遵循 MISRA C 編碼標(biāo)準(zhǔn),均支持 PC-Lint 靜態(tài)檢查,兩者官方文檔都有說(shuō)明。

提示:

MISRA C 標(biāo)準(zhǔn),指的是汽車(chē) C 語(yǔ)言開(kāi)發(fā)標(biāo)準(zhǔn),可以參看之前分享的文章:MISRA C:2012 標(biāo)準(zhǔn)是什么?

1.uC/OS

uC/OS文章明確指出遵循MISRA C:2012標(biāo)準(zhǔn),也支持?PC-Lint 的靜態(tài)檢查。

2.FreeRTOS

FreeRTOS也明確指出采用 MISRA C編碼標(biāo)準(zhǔn),但是不支持 C99 之后的標(biāo)準(zhǔn),也支持 PC-Lint 靜態(tài)檢查。

FreeRTOS在源代碼中有大量說(shuō)明(注釋?zhuān)?duì)?PC-Lint?靜態(tài)檢查可能會(huì)引起異常的代碼,這一點(diǎn)在 uC/OS 源代碼中是沒(méi)有的。

比如:

配置文件

兩種RTOS配置文件(也就是所謂的“裁剪”文件)的“內(nèi)容”有點(diǎn)類(lèi)似,也是進(jìn)行了分類(lèi)。

不過(guò),uC/OS的分類(lèi)和注釋更人性化,更適合初學(xué)者理解。

1.uC/OS

uC/OS的配置文件通常是:os_cfg.h

2.FreeRTOS

FreeRTOS的配置文件通常是:FreeRTOSConfig.h

標(biāo)頭

兩種RTOS標(biāo)頭的“內(nèi)容”有點(diǎn)類(lèi)似,只是一個(gè)居中,一個(gè)靠左。

1.uC/OS

包含RTOS版本、版權(quán)說(shuō)明、開(kāi)源協(xié)議說(shuō)明等:

2.FreeRTOS

包含RTOS版本、版權(quán)說(shuō)明、開(kāi)源協(xié)議說(shuō)明、網(wǎng)址等,和uC/OS類(lèi)似。

命名

兩種RTOS命名規(guī)則差別有點(diǎn)大,但都符合常規(guī)代碼命名規(guī)則。

1.文件名

uC/OS以【os_系統(tǒng)文件】方式,顯得更規(guī)范(體現(xiàn)了模塊化)。

FreeRTOS就比較直接,這個(gè)可能是剛才是命名的時(shí)候沒(méi)有長(zhǎng)期規(guī)劃,然后為了兼容,一直沿用至今。(這種更容易引起文件重名)

2.宏

兩者有共同之處:下劃線隔開(kāi)大寫(xiě)字母,但是開(kāi)頭(前綴)有一定區(qū)別。

以“配置文件”為例:uC/OS以【OS_CFG_】開(kāi)頭,F(xiàn)reeRTOS以【config】開(kāi)頭。

3.數(shù)據(jù)類(lèi)型

uC/OS定義的數(shù)據(jù)類(lèi)型,相對(duì)更常見(jiàn),也更適合新手。

FreeRTOS定義的數(shù)據(jù)類(lèi)型,更“系統(tǒng)”一點(diǎn),適合老司機(jī),對(duì)新手相對(duì)沒(méi)那么友好。

4.函數(shù)名

兩者有點(diǎn)類(lèi)似,前綴不一樣,后面都是以【大寫(xiě)字母開(kāi)頭】進(jìn)行區(qū)分。

比如:創(chuàng)建任務(wù)的函數(shù)名:

FreeRTOS的前綴官方有這樣的描述:

靜態(tài)(static)函數(shù)以 prv 為前綴。比如:prvIdleTask 函數(shù)。

API 函數(shù)以其返回類(lèi)型為前綴,void 類(lèi)型以?v?為綴。比如:vTaskDelete 函數(shù)。

注釋

//? /* */ 是兩種最常見(jiàn)注釋的方法,但這兩種 RTOS 基本以【/* */】注釋居多。

注釋的位置也是有講究,通常在代碼所在行上一行,或者在代碼所在行(代碼后面)。

這里主要說(shuō)明一下,F(xiàn)reeRTOS在代碼中沒(méi)有相信注釋函數(shù)的功能、參數(shù)、返回值等信息。

還是以“創(chuàng)建任務(wù)”函數(shù)為例:

當(dāng)然,F(xiàn)reeRTOS的函數(shù)注釋信息,在手冊(cè)中有相信描述。

縮進(jìn)

這兩種RTOS縮進(jìn)方式一樣,都是采用 4 空格:

這里要提醒一下,切記不要 Tab 和空格兩者混用,不然代碼就是一片亂。(在不少新手,或者初級(jí)工程中就經(jīng)常出現(xiàn)這種,代碼簡(jiǎn)直不敢看)

單詞縮寫(xiě)

不同的領(lǐng)域,有不同的縮寫(xiě)方式。在RTOS中也有一些常見(jiàn)的縮寫(xiě)單詞,比如:

縮寫(xiě) 原意
Addr Address
Blk Block
Chk Check
Clr Clear
Cnt Count
Ctr Counter
Ctx Context
Cur Current
Del Delete
Dly Delay
Err Error
OS Operating System??
CPU Center Processing Unit

好了,本文就分享到這里。以上只是列舉了部分典型的編碼風(fēng)格,更多細(xì)節(jié),大家可以抽時(shí)間自行研究。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
590BB120M000DGR 1 Silicon Laboratories Inc Oscillator
$49.09 查看
AT17F16A-30CU 1 Atmel Corporation Configuration Memory, 16MX1, Serial, CMOS, 6 X 6 MM, 1.04 MM HEIGHT, 1.27 MM PITCH, GREEN, LAP-8
$29.47 查看
AB-557-03-HCHC-F-L-C-T 1 Abracon Corporation PLL Based Clock Driver, 557 Series, 2 True Output(s), 2 Inverted Output(s), QFN-14

ECAD模型

下載ECAD模型
$15.58 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

作者黃工,從事嵌入式軟件開(kāi)發(fā)工作8年有余,高級(jí)嵌入式軟件工程師,業(yè)余維護(hù)公眾號(hào)『strongerHuang』,分享嵌入式軟硬件、單片機(jī)、物聯(lián)網(wǎng)等內(nèi)容。