ISP-55e0-WCH 用于 CH55x、CH57x 和 CH32Fx 的 ISP 闪存工具

该工具旨在通过 USB 在 Linux 上通过 USB 闪存 WinChipHead CH55x/CH57x/CH32Fx 系列,例如 CH551、CH552、CH554、CH559、CH579。

当设置为 ISP 模式时,芯片创建一个 4348:55e0 USB 设备,因此该项目的名称。

CH55x 系列中有一些类似的工具,但它们似乎都没有维护或可能没有适当的许可证。

所以我们必须重新发明轮子。

isp55e0 已经过测试:

  • 带有引导加载程序版本 2.3.1 的 CH551
  • 带有引导加载程序版本 2.3.1 的 CH552
  • 带有引导加载程序版本 2.4.0 的 CH552
  • 带有引导加载程序版本 2.4.0 的 CH554
  • 带有引导加载程序版本 2.4.0 的 CH559
  • 带有引导加载程序版本 2.8.0 的 CH579
  • 带有引导加载程序版本 2.3.1 的 CH32F103C8T6
  • CH32F103C8T6 带引导加载程序版本 2.5.0

建造

需要 libusb 开发包。在 Debian/Ubuntu 上,安装“libusb-1.0-0-dev”包。在 rpm 世界中,它通常被称为“libusb1-devel”。

类型:

制作

如何使用

帮助:

  ./isp55e0 --help

  一些 WinChipHead MCU 的 ISP 编程器
  选项:
    --code-flash, -f 固件到闪存
    --code-verify, -c 验证现有固件
    --data-flash, -k 数据到闪存
    --data-verify, -l 验证现有数据
    --data-dump, -m 将数据闪存转储到文件
    --debug, -d 打开调试跟踪
    --help, -h 这个帮助

查询设备。

./isp55e0

刷一些固件:

./isp55e0 -f fw.bin

对照闪存固件检查现有固件。

./isp55e0 -c fw.bin

请注意,如果验证失败,所有进一步的验证都将失败。要解决此问题,您需要重新启动芯片。

关于刷入 iHex 文件

不支持 iHex,但您可以使用 objcopy 将 iHex 文件转换为常规原始文件。

objcopy -I ihex -O 二进制 xxx.hex xxx.bin

CH32F103C8T6BluePill 克隆注意事项

CH32F103 芯片有两个 USB 端口。一些分线板有一个 USB 端口,有的两个都有。引导加载程序使用的 USB 端口连接到 PB6 (D-) 和 PB7 (D+),而常规端口连接到 PA11 (D-) 和 PA12 (D+)。如果您只有一个端口,则需要焊接才能访问它。如果存在两个端口,则底部端口由引导加载程序使用,顶部端口为普通端口,与 STM32F103 芯片兼容。

关于固件加密的说明

这些设备的缺点是固件必须加密并发送到设备。主机创建密钥。这个密钥被乱码并被发送到隐藏在垃圾字节中的引导加载程序。引导加载程序从数据包中的给定偏移量中提取密钥,然后在刷新或比较之前使用它来解密数据。这是一个简单的固定大小的异或键,所以很容易弄清楚,但这只是愚蠢的。密钥的最后一个字节是第一个字节和芯片类型的总和,所以你不能创建一个全零的假密钥。

还有许多其他制造商不做这种愚蠢的事情。

由于某种原因,dataflash 是不同的。写入必须加密,但读取是清晰的。

警告

未实施可选设置。程序不会尝试从错误中恢复,而是直接退出。

posted @ 2022-10-09 10:33  occworld  阅读(240)  评论(0)    收藏  举报