Files
P4-USB-transfer/README.md
T
zhengxinandCursor 427336659b 补充 NAND 传输上位机并重写说明
将 NAND_Xfer.exe 纳入仓库,README 改为当前工程情况和上位机用法。

Co-authored-by: Cursor <[email protected]>
2026-10-13 22:00:48 +08:00

53 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P4 USB 传输
ESP32-P4 工程,仓库里有两套程序。
- 根目录是设备主固件。界面、蓝牙、Wi-Fi、表情包和外置 SPI NAND 都在这里。外置盘挂载点是 `/extflash`,表情文件放在 `/extflash/eaf/`。
- `nand_xfer/` 是单独的 NAND 传输固件。电脑通过板载 USB Serial/JTAG 把文件写到同一块外置 NAND,设备侧路径同样以 `/extflash` 开头。
分区表在 `partitions.csv`,与 IntegratedV1 相同。传输固件只覆盖 `ota_0`(偏移 `0x70000`,大小 10MB),不改 bootloader、分区表和 NVS。烧录、恢复主程序和串口协议见 `nand_xfer/README.md`。
## 上位机
Windows 程序:`nand_xfer/NAND_Xfer.exe`。双击打开,窗口标题是「NAND 传输」。它把本机一个目录批量写到设备的 FLASH 目录。
使用前先让板子跑着 `nand_xfer` 固件,USB 接到 P4 的 USB Serial/JTAG,并关掉占用该 COM 口的其它程序,包括 `idf.py monitor`。
1. **端口**:下拉选择串口。描述里带 `303A` 或 `Serial/JTAG` 的口排在前面。没有口时点「刷新」,并确认线已插上。
2. **本地目录**:要上传的文件夹。默认是 `E:\PET\EAF`,点「浏览」可以换。上传的是这个目录里面的内容,子目录会保留。
3. **FLASH目录**:设备上的目标路径。默认是 `/extflash/eaf`。
按钮:
- **查询**:显示 NAND 容量、是否已挂载、FAT 总空间和剩余空间。日志里出现「未挂载」时,新盘要先格式化,再列目录或写入。
- **列目录**:列出 FLASH 目录。目录显示为 `DIR`,文件显示为 `FILE` 加字节数。
- **批量写入**:按本地目录逐个写入。每个文件在设备上关闭、同步、回读并做 CRC 校验后才算成功。进度按文件个数走。某个文件失败时,日志里会记下名字,其余文件继续。再传一次会覆盖未完成的文件。
- **停止**:当前这个文件结束后不再继续。已经写完的文件保留。
- **格式化**:清空整块外置 NAND 上的文件。新盘第一次使用时做这一步。确认框里输入 `FORMAT /extflash` 才会执行,大约一两分钟。盘上已有表情文件时不要格式化。格式化由设备按 16KB 簇完成;不要在 Windows 资源管理器里格式化这块盘。
写入结束后,窗口会再列一次目标目录。
## 命令行
同一套传输也可以用 Python 脚本,工作目录是 `nand_xfer`:
```powershell
py -3 -m pip install pyserial
py -3 nand_put.py COM3 "C:\files\demo.eaf" "/extflash/eaf/demo.eaf"
py -3 nand_put.py COM3 "C:\files\eaf" "/extflash/eaf" --recursive
py -3 nand_put.py COM3 --info
py -3 nand_put.py COM3 --list "/extflash/eaf"
```
`--format` 会清空 NAND,执行前要在提示里输入确认文字。完整命令、烧录脚本和协议见 `nand_xfer/README.md`。
## 重新打包上位机
在 `nand_xfer` 目录执行:
```powershell
.\build_gui.ps1
```
脚本用本目录的虚拟环境调用 PyInstaller,产物是 `nand_xfer\dist\NAND_Xfer.exe`。要更新仓库里的发布文件时,用这个新文件覆盖 `nand_xfer\NAND_Xfer.exe`。