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





