文档总览

为 ESP32-S3 刷写固件

安装编译工具,通过项目脚本将固件写入板子。

刷写时先把板子接到 Mac。请使用支持数据传输的 USB 线;只能充电的线可能让板子亮灯,却不会出现串口设备。

安装工具与依赖

按照 arduino-cli 官方文档安装命令行工具,再添加 Espressif 开发板索引。项目使用 ESP32 3.3.x 支持包,下面的 3.3.12 与本次核对的上游 CI 一致。

arduino-cli config add board_manager.additional_urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core update-index
arduino-cli core install esp32:[email protected]
arduino-cli lib install "[email protected]"

如果你已配置过这个索引地址,不用重复添加。更新项目时,也请对照上游 README 和构建配置检查依赖版本。

编译并刷入

在克隆仓库的根目录运行:

hardware/flash.sh

脚本会编译固件、寻找串口,并尝试将已运行的板子切到 bootloader 后上传。确认上传成功,再拔下板子。

默认编译参数适用于 8 MB Flash、OPI PSRAM 和原生 USB。换用其他板型前,先阅读兼容性说明。

手动指定串口

先查看设备列表,再将你机器上的实际串口传给脚本:

arduino-cli board list
hardware/flash.sh /dev/cu.usbmodemYOUR_PORT

YOUR_PORT 是占位符,需要替换。列表中没有设备时,先换数据线、重新连接,必要时按开发板厂商的方法进入 bootloader。

为什么要使用 flash.sh

脚本会强制包含 hardware/hid_bridge/nimble_cfg.h,为蓝牙视频通道设置所需缓冲区。直接用默认 Arduino 参数编译,即使能刷入,也不代表视频链路的配置正确。

项目所在路径不能有空格,因为强制包含文件的编译参数有这个限制;脚本会提前检查。

需要诊断时

hardware/flash.sh --build-only
hardware/flash.sh --debug

--build-only 只编译,不上传;--debug 编入 USB 串口诊断信息。正常搭建不需要把这两条都执行一遍。

下一步验证什么

把板子接到 iPhone,在 App 中检查蓝牙、热点与投屏。固件上传成功并不能证明这些连接已经可用,继续设备连接指南逐项确认。

项目来源

README.mdhardware/flash.sh.github/workflows/ci.yml