樂鑫對 Zephyr 的最新支持
過去一年中,樂鑫持續(xù)進行 Zephyr 項目開發(fā),不僅增加了移植層和外設驅(qū)動,而且還在 Zephyr 工具、代碼庫和 Bug 修復等方面有所貢獻。本文旨在介紹我們近期對 Zephyr 的新增支持,以及未來對該項目的支持方向。
通往低功耗模式之路
Zephyr 正在從 Pin Mux 向 Pin Control 轉(zhuǎn)變。Pin Control 是一種新的機制,它為配置 IO 引腳的輸入輸出方向和啟用上拉/下拉,提供了一種更好的方式。更重要的是,它支持將引腳分配給一個特定的外設。相較于 Zephyr 用戶,這項功能對那些致力于提供架構(gòu)支持的人影響更大。
目前樂鑫 ESP SoC 的 Pin Control 移植工作已經(jīng)完成,這也意味著我們在芯片低功耗方面達到了一個重要的里程碑。
Wi-Fi 管理器支持
我們在 ESP SoC 上移植 Zephyr 時,發(fā)現(xiàn) ESP SoC 已經(jīng)以擴展芯片的方式成為 Wi-Fi 解決方案。大多數(shù)系統(tǒng)還會包含另一個運行 Zephyr 的 CPU,它通過串行端口連接到 ESP SoC 之后,就可以連 Wi-Fi 了。
ESP SoC 更適合這類應用,并且是第一批被移植到 Zephyr 的自帶 Wi-Fi 功能的芯片。值得一提的是,我們還成功支持了 Zephyr 的 Wi-Fi 管理器。雖然沒有為它增加新功能,但可以使已經(jīng)使用 Wi-Fi 管理器 API 的用戶,由此逐漸熟悉對 ESP SoC Wi-Fi 系統(tǒng)的控制。
ESP SoC 上的 Zephyr 與并行處理
非對稱多處理 (Asymmetric Multiprocessing, AMP) 是樂鑫實現(xiàn)對 Zephyr 支持的重要突破之一??偟膩碚f,AMP 意味著將系統(tǒng)中的每一個內(nèi)核都作為獨立的處理器,來運行自己的任務/固件/操作系統(tǒng)等。從某種意義上說,這就像在單個微控制器中進行并行計算(這一點在 ESP-IDF 中還未進行過探索)。
Zephyr 的 AMP 解決方案與 ESP-IDF 解決方案在多核微控制器的使用方式上有所不同。到目前為止,ESP-IDF 側(cè)重于 SMP(對稱多處理),而 Zephyr 則是 AMP。對樂鑫來說,在 ESP SoC 上提供 AMP 的首要目標是:
網(wǎng)絡負載處理:一個核心負責處理網(wǎng)絡負載,另一個專用于運行用戶應用程序
并行嵌入式軟件:允許非關(guān)鍵程序與關(guān)鍵程序分開執(zhí)行
冗余處理:同一套固件可以在 ESP SoC 不同內(nèi)核上并行運行
通用并行處理:在一個封裝中提供兩個 MCU
目前,這部分還處于 Push Request 階段,還未正式合并,用戶可以進行測試。
外設支持
ESP SoC 的外設資源豐富,移植工作也相對復雜。我們非常感謝來自 Zephyr 社區(qū)的開發(fā)者們與我們合作移植外設。目前,ESP SoC 外設的移植狀態(tài)如下:
表格說明:
Beta:功能已開發(fā),或處于最終測試/合并階段
WIP:樂鑫團隊正在進行的工作
Community:社區(qū)成員正在進行的工作
Yes:支持該特性
No:不支持該特性
N/A:不適用于本設備
所有支持取決于具體場景
為何上表未列出 ESP32-S3 的支持情況?
我們已經(jīng)開始了 ESP32-S3 的移植工作。值得注意的是 ESP32-S3 是一款比較特殊的 SoC,相較于 ESP32-S2,它增加了雙核和藍牙支持;相較于 ESP32,它增加了一個 USB-OTG 外設和更強大的 CPU。
總而言之,ESP32-S3 的開發(fā)在被正式納入 Zephyr 項目前需要滿足以下三個條件:
多核支持:我們正嘗試通過 AMP 實現(xiàn)(這是目前的一個代碼合并請求)
低功耗模式:已開展相關(guān)工作
對 USB-OTG 的支持:將在后續(xù)計劃中實現(xiàn)
在滿足上述三個條件之前,我們建議開發(fā)者優(yōu)先使用 ESP32 或 ESP32-S2。現(xiàn)階段,它們是運行 Zephyr 的最佳選擇。?
未來的支持方向
樂鑫計劃持續(xù)支持 Zephyr 項目。我們將重點開發(fā)基于 ESP SoC 的 Zephyr AMP 方案,使操作系統(tǒng)在不同微控制器上實現(xiàn)并行處理。
樂鑫歡迎廣大用戶為我們提供寶貴意見和建議 (https://www.espressif.com/en/contact-us/technical-inquiries/other-technical-issues),我們將高度重視所有反饋,持續(xù)優(yōu)化并改進產(chǎn)品,為構(gòu)建物聯(lián)網(wǎng)項目提供更全面和便捷的支持。
相關(guān)資源
查看上次更新后的項目進展:https://www.espressif.com/en/news/new_operating_systems_in_ESP32
從 Pin Mux 轉(zhuǎn)向 Pin Control:https://github.com/zephyrproject-rtos/zephyr/issues/39740
GitHub 上的 AMP 代碼合并請求:https://github.com/zephyrproject-rtos/zephyr/pull/44645