StackChan 工具箱

刷固件 · 读固件 · 串口日志 —— 单页、免安装,Chrome / Edge(WebSerial)打开即可
① 刷固件
② 读固件
③ 串口日志
④ 说明 / 常见问题
第 1 步:连接设备(USB-C 数据线接设备)
未连接
第 2 步:选固件文件、填 Flash 地址
Flash 地址固件文件(.bin)
Flash 地址按你固件的说明填写(如 0x0 / 0x10000)。要写多个文件就点「+ 增加一行」,逐条填地址选文件。
第 3 步:烧录
—
连接设备(只读操作,不会改动设备)
未连接
分区地图(K151 / 16MB):
0x0 bootloader · 0x8000 分区表 · 0x9000 NVS(WiFi/服务器地址/皮肤/舵机回中位/灯色)· 0xD000 otadata · 0x20000 app 主槽 · 0x410000 app 备槽 · 0x800000 assets(表情/字体/唤醒词)
未连接
设备在 panic 重启循环时,这里能看到完整原因(例:octal_psram: PSRAM chip is not connected)。 连接后点「复位设备」即可抓开机全过程;抓完「保存日志为文件」发出来最快定位。
使用顺序建议:刷/读固件需要设备处于下载模式(连接时自动进入);日志页是纯监听串口。 同一时刻只能有一个功能占用串口 —— 切换页面前先点「断开」。
这是什么

一个纯浏览器端的 ESP32 工具页:刷固件(esptool-js)、读回固件备份、看串口日志。 全部在你自己电脑和串口之间完成,不经过任何服务器中转,不需要装 Python / 驱动 / 客户端。

需要什么 刷固件步骤
  1. 「① 刷固件」→ 连接
  2. 填 Flash 地址 + 选本地 .bin(固件请自行下载到本机,页面不提供固件)
  3. 开始烧录 → 等进度走完 → 设备自动重启
典型地址表(M5Stack StackChan / CoreS3,16MB flash)
地址内容说明
0x0bootloader + 分区表 + app + assets整片包(merged)用;⚠ 会覆盖 NVS
0x8000分区表单独换分区表时用
0x9000NVSWiFi / 服务器地址 / 舵机回中位 / 皮肤设置,别乱刷
0x20000app 主槽(ota_0)只更新程序时刷这里
0x410000app 备槽(ota_1)两个槽都写 = 无论从哪启动都是新版
0x800000assets表情 / 字体 / 唤醒词,8MB 分区
不同板子的地址不一样,以你自己设备的分区表为准 —— 用「② 读固件」读整片后能看出来。
常见问题

Q:刷完之后设备没反应、屏幕黑的,日志一直重启循环?
先「③ 串口日志」连接 + 复位,把日志抓出来看第一行错误。常见两类:

Q:刷完新版本,重启后又变回旧版本?
开 CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE 时,OTA 写入的新镜像首次启动处于 PENDING_VERIFY, App 必须调用 esp_ota_mark_app_valid_cancel_rollback()“报平安”,否则 bootloader 下次启动会回滚。 自编译固件记得加这一步(可在主循环入口调用)。

Q:OTA 升级总是卡住 / 下载到一半就失败?
多半是下载链路被掐断(跨境直连尤其明显)。检查得到的固件是完整的:下载完对一下大小和 sha256; 有条件就给下载走 CDN,或改用本页插线刷。

Q:连接时提示端口被占用 / 点了没反应?
同一个串口同一时刻只能被一个功能占用:回到上一个页签点「断开」,或者关掉其它占用串口的程序 (串口监视器、Arduino IDE、M5Burner 等)。

Q:能刷别的 ESP32 板子吗?
能。这个页面不绑定任何固件,只要是 .bin + 正确地址即可;上面那张地址表是 StackChan 的,别的板子按自己的分区表填。

免责声明

刷机有风险:固件文件与 Flash 地址都由你自己确认,写错地址会覆盖设备上其它数据(例如 0x9000 的 NVS 存着 WiFi 配置与各项设置),写错固件可能导致设备无法启动。动手前先用「② 读固件」把整片备份下来, 出问题可以用正确的整片包救回。本页是纯客户端工具,不读取、不上传你的任何数据,所有操作只发生在你的浏览器与串口之间; 刷坏、刷错、丢设置的后果请自行承担。