加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • Zephyr 簡(jiǎn)介
    • Zephyr 的特性
    • Zephyr 與RT-Thread、FreeRTOS的對(duì)比及其優(yōu)略勢(shì)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Zephyr 會(huì)成為物聯(lián)網(wǎng)時(shí)代RTOS的佼佼者?

07/07 09:55
2155
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

最近,有接觸到Zephyr操作系統(tǒng),在這之前我也沒(méi)怎么了解過(guò),簡(jiǎn)單了解了一下,發(fā)現(xiàn)其增長(zhǎng)的勢(shì)頭還挺猛的。

下面我們一起來(lái)簡(jiǎn)單認(rèn)識(shí)認(rèn)識(shí)Zephyr。

Zephyr 簡(jiǎn)介

Zephyr RTOS是Linux基金會(huì)下的一個(gè)開(kāi)源項(xiàng)目,以其高效、靈活、安全的特點(diǎn),在實(shí)時(shí)操作系統(tǒng)領(lǐng)域嶄露頭角,成為物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)的首選之一?;?strong>Apache 2.0許可。

官網(wǎng):https://www.zephyrproject.org/

代碼倉(cāng):https://github.com/zephyrproject-rtos/zephyr

1、Zephyr軟件架構(gòu):

Zephyr從下到上大致分為如下幾層:

硬件:含了實(shí)際的硬件設(shè)備,如CPU、內(nèi)存、外設(shè)等。這些硬件設(shè)備是操作系統(tǒng)運(yùn)行的基礎(chǔ)和支撐。

硬件抽象層(HAL):提供了對(duì)底層硬件的抽象和封裝,使得操作系統(tǒng)內(nèi)核和應(yīng)用程序能夠以一種統(tǒng)一的方式訪問(wèn)和控制硬件資源。這有助于提高代碼的可移植性和可重用性。

內(nèi)核層:Zephyr內(nèi)核是操作系統(tǒng)的核心部分,負(fù)責(zé)任務(wù)調(diào)度、內(nèi)存管理、中斷處理等基本功能。Zephyr提供了兩種內(nèi)核:微內(nèi)核(microkernel)超微內(nèi)核(nanokernel),用戶可以根據(jù)具體需求選擇使用哪種內(nèi)核或同時(shí)使用兩者。

服務(wù)層:提供了一系列系統(tǒng)級(jí)的服務(wù),如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、藍(lán)牙協(xié)議棧等。這些服務(wù)為應(yīng)用層提供了必要的支持和接口,使得應(yīng)用程序能夠更加方便地訪問(wèn)和使用底層硬件資源。

應(yīng)用層:包含用戶開(kāi)發(fā)的各種應(yīng)用程序。這些應(yīng)用程序運(yùn)行在Zephyr操作系統(tǒng)之上,利用操作系統(tǒng)提供的各種服務(wù)和接口實(shí)現(xiàn)具體功能。

2、Zephyr源碼目錄:

? arch:包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺(tái)占一個(gè)相應(yīng)的目錄。這些目錄中存放了針對(duì)不同架構(gòu)的移植文件,主要是針對(duì)不同的CPU進(jìn)行適配,包括內(nèi)核的源文件和頭文件(其中包含私有API)等。例如,對(duì)于ARM架構(gòu),可能會(huì)有arch/arm目錄,其中包含針對(duì)ARM CPU的適配代碼。

? boards:存放板級(jí)代碼及相關(guān)的配置文件。開(kāi)發(fā)板屬于SoC的子集,當(dāng)我們選中一個(gè)開(kāi)發(fā)板時(shí),也就會(huì)自動(dòng)確認(rèn)其SoC的型號(hào)。此外,該目錄下還包含了板子的設(shè)備樹(shù)文件,用于描述板上可用資源。

? cmake:包含構(gòu)建Zephyr所需的額外構(gòu)建腳本。Zephyr使用CMake作為構(gòu)建系統(tǒng),構(gòu)建過(guò)程可分為配置階段和構(gòu)建階段。

? doc:系統(tǒng)文檔目錄,包含Zephyr的相關(guān)文檔和工具。

? drivers:設(shè)備驅(qū)動(dòng)目錄,每個(gè)不同的驅(qū)動(dòng)占用一個(gè)子目錄。Zephyr為各種硬件設(shè)備提供了豐富的驅(qū)動(dòng)程序

? dts:devicetree源文件目錄,用于描述特定板子的設(shè)備細(xì)節(jié),如外設(shè)寄存器數(shù)量及寄存器地址。這些文件在構(gòu)建過(guò)程中會(huì)被用來(lái)生成設(shè)備樹(shù)信息,供操作系統(tǒng)內(nèi)核使用。

? include:包含所有公共API的頭文件(除了在lib下定義的部分)。這些頭文件為開(kāi)發(fā)者提供了訪問(wèn)Zephyr內(nèi)核和各種組件的接口。

? kernel:與架構(gòu)無(wú)關(guān)的內(nèi)核代碼目錄,包含Zephyr操作系統(tǒng)的核心功能,如線程調(diào)度、內(nèi)存管理等。

? lib:庫(kù)代碼目錄,包括最小的標(biāo)準(zhǔn)C庫(kù)等。這些庫(kù)為Zephyr提供了基本的編程支持。

? misc:不屬于任何其他頂級(jí)目錄的雜項(xiàng)代碼。

? modules:提供特定芯片系列的一些外設(shè)配置選項(xiàng)。

? samples:演示使用Zephyr特性的示例應(yīng)用程序目錄。這些示例代碼有助于開(kāi)發(fā)者快速上手Zephyr并理解其各種特性。

? scripts:用于構(gòu)建和測(cè)試Zephyr應(yīng)用程序的各種程序和其他文件。

? soc:SoC(System on Chip,片上系統(tǒng))相關(guān)代碼和配置文件目錄。這些目錄中存放了針對(duì)不同芯片的外設(shè)配置和部分功能初始化代碼。

? subsys:Zephyr子系統(tǒng)目錄,包括USB、網(wǎng)絡(luò)、文件系統(tǒng)及藍(lán)牙等子系統(tǒng)的代碼。這些子系統(tǒng)為Zephyr提供了豐富的功能和接口。

Zephyr 的特性

1、安全性

安全性是Zephyr RTOS的重要特性之一。它提供了內(nèi)存保護(hù)、安全啟動(dòng)和加密算法等安全功能,確保設(shè)備在面對(duì)潛在威脅時(shí)能夠保持安全。

2、豐富的連接能力

Zephyr內(nèi)置高效的TCP/IP網(wǎng)絡(luò)棧,支持IPv4/IPv6,以及多種無(wú)線協(xié)議,如藍(lán)牙(BLE)、Wi-Fi等,滿足現(xiàn)代物聯(lián)網(wǎng)設(shè)備的各種連接需求。這種廣泛的連接能力使得Zephyr成為構(gòu)建物聯(lián)網(wǎng)應(yīng)用的核心操作系統(tǒng)之一。

3、統(tǒng)一的構(gòu)建系統(tǒng)與設(shè)備樹(shù)支持

Zephyr提供了統(tǒng)一的構(gòu)建系統(tǒng)和設(shè)備樹(shù)支持,簡(jiǎn)化了跨平臺(tái)開(kāi)發(fā)流程。

設(shè)備樹(shù)例子:

有Linux設(shè)備樹(shù)那味了?

zephyr的設(shè)備樹(shù)管理和Linux設(shè)備樹(shù)類(lèi)似,都采用了樹(shù)狀結(jié)構(gòu)來(lái)描述硬件資源,兩者都支持通過(guò)屬性(properties)來(lái)定義硬件設(shè)備的各種參數(shù)和配置信息。

Zephyr設(shè)備樹(shù)與Linux設(shè)備樹(shù)主要的區(qū)別:

zephyr設(shè)備樹(shù)主要面向資源受限的嵌入式系統(tǒng),Zephyr并不直接使用設(shè)備樹(shù)編譯后的二進(jìn)制文件(DTB)。相反,它在構(gòu)建編譯階段通過(guò)腳本將設(shè)備樹(shù)信息轉(zhuǎn)換為C語(yǔ)言頭文件中的宏定義。這樣,內(nèi)核和應(yīng)用程序可以通過(guò)調(diào)用這些宏定義來(lái)訪問(wèn)設(shè)備樹(shù)信息,減少了運(yùn)行時(shí)的資源消耗。

Linux設(shè)備樹(shù)則直接使用設(shè)備樹(shù)編譯后的DTB文件。在系統(tǒng)啟動(dòng)時(shí),Linux內(nèi)核會(huì)解析DTB文件,獲取硬件信息并進(jìn)行板級(jí)初始化。這種方式提供了更高的靈活性和實(shí)時(shí)性。

構(gòu)建方面Zephyr使用CMake作為構(gòu)建系統(tǒng),通過(guò)west build命令編譯、鏈接應(yīng)用程序,并生成可下載到目標(biāo)設(shè)備的固件映像。此外,Zephyr還集成了GDB調(diào)試器,與Visual Studio Code、Eclipse等IDE無(wú)縫配合,為開(kāi)發(fā)者提供良好的開(kāi)發(fā)環(huán)境。

4、高效與靈活性

Zephyr RTOS是一款面向物聯(lián)網(wǎng)的小型、可裁剪的實(shí)時(shí)操作系統(tǒng),支持多種硬件平臺(tái)(如ARM、x86、RISC-V等)和多種開(kāi)發(fā)環(huán)境(Windows、Linux、MacOS)。其模塊化設(shè)計(jì)允許開(kāi)發(fā)者根據(jù)需求選擇啟用或禁用特定的功能,從而實(shí)現(xiàn)輕量級(jí)的內(nèi)核以適應(yīng)資源受限的硬件(最小資源需求:8KB Flash,5KB RAM)。

這種高度可配置性使得Zephyr在智能家居、工業(yè)自動(dòng)化、穿戴設(shè)備等領(lǐng)域得到廣泛應(yīng)用。

Zephyr 與RT-Thread、FreeRTOS的對(duì)比及其優(yōu)略勢(shì)

Zephyr優(yōu)勢(shì)

??高效靈活:模塊化設(shè)計(jì)使得Zephyr能夠根據(jù)需求進(jìn)行裁剪和配置。

??安全性高:提供多種安全功能和開(kāi)源許可保障代碼安全。

??連接能力強(qiáng):支持多種無(wú)線協(xié)議和網(wǎng)絡(luò)棧滿足物聯(lián)網(wǎng)設(shè)備的連接需求。

??社區(qū)活躍:擁有活躍的全球社區(qū)提供持續(xù)的技術(shù)更新和支持。

Zephyr劣勢(shì)

??相對(duì)較新:與FreeRTOS及RT-Thread等RTOS相比,Zephyr的歷史較短且市場(chǎng)認(rèn)知度有待提高。

??商業(yè)許可問(wèn)題:雖然Zephyr本身開(kāi)源免費(fèi),但基于Zephyr的商業(yè)項(xiàng)目可能需要考慮其他組件或服務(wù)的許可費(fèi)用。

Zephyr 與 RT-Thread對(duì)比

RT-Thread與Zephyr類(lèi)似,也是一款面向物聯(lián)網(wǎng)的開(kāi)源RTOS。然而,RT-Thread在生態(tài)系統(tǒng)和社區(qū)支持方面可能略遜于Zephyr。此外,RT-Thread在某些特定領(lǐng)域(如物聯(lián)網(wǎng)操作系統(tǒng)標(biāo)準(zhǔn)制定)的參與度不如Zephyr高。

Zephyr 與 FreeRTOS對(duì)比

FreeRTOS是一款輕量級(jí)的RTOS,廣泛應(yīng)用于各種嵌入式系統(tǒng)中。與Zephyr相比,F(xiàn)reeRTOS在資源占用方面可能更加優(yōu)化,但在安全性和模塊化設(shè)計(jì)方面可能稍顯不足。FreeRTOS的社區(qū)支持也非?;钴S,但其在物聯(lián)網(wǎng)領(lǐng)域的專門(mén)優(yōu)化和特性可能不如Zephyr豐富。

對(duì)于Zephyr,大家怎么看?歡迎留言討論。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
KSZ8721BLI-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48
$3.1 查看
TJA1051T/3/CM,118 1 NXP Semiconductors TJA1051 - High-speed CAN transceiver SOIC 8-Pin

ECAD模型

下載ECAD模型
$1.03 查看
KSZ9897RTXC-TR 1 Microchip Technology Inc IC ETHERNET SWITCH 7PORT 128TQFP

ECAD模型

下載ECAD模型
暫無(wú)數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

本公眾號(hào)專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時(shí),公眾號(hào)內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!