在Zephyr RTOS開發(fā)環(huán)境中構(gòu)建并將“Hello World”項(xiàng)目flash到功能強(qiáng)大的ESP32-S3開發(fā)板上
在第一篇文章中,我們從頭開始構(gòu)建了一個(gè)干凈的、完全可控的Zephyr RTOS開發(fā)環(huán)境?,F(xiàn)在是時(shí)候用更先進(jìn)的微控制器來測試它的功率了。
在本指南中,我們將使用我們的新環(huán)境來構(gòu)建并將“Hello World”項(xiàng)目flash到功能強(qiáng)大的ESP32-S3 (N16R8)開發(fā)板上。這是一個(gè)龐然大物,具有雙核處理器,Wi-Fi,藍(lán)牙5 (LE), 16MB的大閃存和8MB的PSRAM。
為了做到這一點(diǎn),我們將使用一個(gè)最小的、生產(chǎn)就緒的模板,該模板預(yù)先配置為Visual Studio Code中的無縫體驗(yàn)。
1. 你需要什么
在我們開始之前,請確保一切都準(zhǔn)備好了。硬件很簡單,如果您按照我們的第一個(gè)指南進(jìn)行操作,軟件應(yīng)該已經(jīng)配置好了。
硬件:
?ESP32-S3開發(fā)板(本指南使用的是帶有N16R8芯片的通用板)。
?一根USB Type-C線(確保它是數(shù)據(jù)線,而不僅僅是充電線!)
軟件:
?一個(gè)完整配置的Zephyr RTOS環(huán)境(Python, Git, West, SDK等)。
?Visual Studio Code與推薦的擴(kuò)展(包括C/ c++, CMake工具,和任務(wù)管理器)。
剛開始?如果你還沒有準(zhǔn)備好你的開發(fā)環(huán)境,請先按照我的詳細(xì)指南:Manual Zephyr RTOS Installation on Windows。此項(xiàng)目模板假定您的環(huán)境已經(jīng)準(zhǔn)備就緒。
2. 快速入門:從零到“Hello World”
重要:確保您的Zephyr環(huán)境已激活!zephyr-env運(yùn)行。CMD -你的終端應(yīng)該在提示符下顯示(.venv)。
2.1. 獲取項(xiàng)目模板
將存儲庫克隆到本地機(jī)器并在Visual Studio Code中打開它:
2.2. 連接硬件
連接ESP32-S3非常簡單。將USB-C電纜插入主板的USB-to-UART端口(通常標(biāo)有“UART”或“COM”),并將另一端連接到您的計(jì)算機(jī)。
2.3. 構(gòu)建項(xiàng)目
我們將使用VS Code任務(wù)來簡化工作流。你有兩個(gè)選擇:
選項(xiàng)A:命令面板
?按Ctrl+Shift+B或進(jìn)入“Terminal→Run Task…”
?從下拉菜單中選擇Build
選項(xiàng)B:任務(wù)瀏覽器(推薦)
?打開任務(wù)資源管理器面板(側(cè)欄)
?單擊Build任務(wù)旁邊的播放按鈕
等待構(gòu)建完成。您應(yīng)該在終端中看到構(gòu)建成功。
2.4. 閃光板
使用相同的方法(Command Palette或task Explorer)運(yùn)行Flash任務(wù)。單板應(yīng)自動檢測并閃現(xiàn)。
2.5. 監(jiān)控輸出
現(xiàn)在,運(yùn)行Monitor任務(wù)。一個(gè)串行監(jiān)視器將在VS Code終端中打開。
2.6. 慶祝!
您應(yīng)該看到消息Hello World!每一秒都在打印。您剛剛在ESP32-S3上運(yùn)行了第一個(gè)Zephyr應(yīng)用程序!
3. 引擎蓋下:是什么讓這個(gè)模板聰明
這個(gè)模板不僅僅是打印文本;正確配置ESP32-S3的復(fù)雜硬件,實(shí)現(xiàn)高性能。
3.1. 硬件配置(' esp32s3_devkit .overlay ')
覆蓋文件是硬件設(shè)置的核心,它告訴Zephyr如何處理這塊板上巨大的16MB閃存和8MB PSRAM。
主要特點(diǎn):
?PSRAM Enabled:顯式將PSRAM大小設(shè)置為8MB。
?Flash Size Defined:配置Flash的最大容量為16MB。
?分區(qū)表:包括一個(gè)標(biāo)準(zhǔn)的16MB分區(qū)布局,這對于ESP-IDF引導(dǎo)加載程序和固件存儲是必不可少的。
比命令行代碼段更聰明的方法
ESP32板的世界是多樣化的,有幾十種Flash和PSRAM尺寸的組合。為了管理這種復(fù)雜性,Zephyr提供了一個(gè)名為Snippets的強(qiáng)大功能。
代碼片段是模塊化的配置文件,您可以在構(gòu)建時(shí)使用-S標(biāo)志應(yīng)用它。例如,標(biāo)準(zhǔn)的Zephyr配置電路板的方法是運(yùn)行這樣的命令:
雖然這個(gè)系統(tǒng)非常靈活,但它要求您將這些標(biāo)志添加到每個(gè)構(gòu)建命令中。此模板通過將我們的16MB閃存和8MB PSRAM板的配置直接嵌入到。覆蓋文件。這使得構(gòu)建過程更加清晰,并且VS Code構(gòu)建任務(wù)可以完美地開箱即用。
為您的板調(diào)整模板
如果你的主板有不同的Flash/PSRAM配置(例如,8MB Flash和2MB PSRAM),你可以很容易地切換到使用片段。方法如下:
1.清除覆蓋文件:打開esp32s3_devkitc. exe文件。覆蓋文件并刪除其所有內(nèi)容。
2. 在VS Code中激活代碼片段:打開.vscode/tasks。json文件。在Build任務(wù)中,你會發(fā)現(xiàn)這些被注釋掉的行:
3. 取消注釋和配置:取消注釋這些行并更改值以匹配您的硬件(例如,“flash-8M”,“psram-2M”)。
3.2. 項(xiàng)目配置(Project .conf)
該文件對內(nèi)核和驅(qū)動程序進(jìn)行微調(diào),以獲得最佳性能。
CONFIG_SPIRAM_MODE_OCT=y:開啟PSRAM的八進(jìn)制SPI模式。它使用8條數(shù)據(jù)線來快速訪問外部存儲器。
?CONFIG_ESPTOOLPY_FLASHMODE_QIO=y:啟用主flash的Quad I/O模式。它使用4條數(shù)據(jù)線來加速代碼執(zhí)行。
?80MHz可選模式:默認(rèn)為40MHz。為了獲得最佳性能,您可以取消注釋最后兩行,以80MHz的速度運(yùn)行PSRAM和Flash。
3.3. 應(yīng)用程式碼(src/main.c)
代碼本身是為Zephyr量身定制的經(jīng)典“Hello World”。
它沒有切換引腳,而是使用printk()將格式化的字符串發(fā)送到串行控制臺,這是調(diào)試的基本工具。
3.4. VS Code工作流
任務(wù)。json:定義Build、Flash、Monitor和Clean腳本。構(gòu)建任務(wù)是精心制作的,明確指向正確的板目標(biāo)(esp32s3_devkitc/esp32s3/procpu)和我們的自定義覆蓋文件,確保每次都有完美的構(gòu)建。
c_cpp_properties。json:該文件配置智能感知。重要:必須至少運(yùn)行一次Build任務(wù)才能使代碼完成工作完美,因?yàn)樗蕾囉赾ompile_commands。在構(gòu)建期間生成的Json文件。
4. 常見問題處理
“west: command not found”
?原因:Zephyr環(huán)境沒有被激活。
?解決方案:運(yùn)行zephyr-env。cmd腳本(Windows)或源環(huán)境文件。您的提示符應(yīng)該顯示(.venv)。
“閃爍失敗,出現(xiàn)‘串行異常’或‘連接失敗’”
?原因:單板未進(jìn)入引導(dǎo)加載模式或USB線纜故障。
?解決方案:
1. 確保您使用的是具有數(shù)據(jù)功能的USB電纜。
2. 手動進(jìn)入引導(dǎo)模式:長按BOOT,按下RESET,然后釋放BOOT。重新運(yùn)行Flash任務(wù)。
“串行監(jiān)視器中出現(xiàn)亂碼或無輸出”
?原因:波特率不匹配或連接不良。
?解決方法:VS Code Monitor任務(wù)自動處理波特率(115200)。按下單板上的RESET按鈕。如果失敗,請重新檢查USB電纜和連接。
5. 結(jié)論
恭喜你!您已經(jīng)在功能強(qiáng)大的ESP32-S3上成功構(gòu)建、刷新和監(jiān)視了第一個(gè)Zephyr項(xiàng)目。
這個(gè)模板提供了一個(gè)堅(jiān)如磐石的基礎(chǔ),處理棘手的內(nèi)存配置,這樣您就可以專注于編寫應(yīng)用程序代碼。集成的VS Code工作流使整個(gè)開發(fā)過程快速、高效和愉快。
本文編譯自hackster.io





