💾 Archived View for 050821.xyz › log › 2024-10-07-WS63_000.gmi captured on 2024-12-17 at 09:45:24. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
最后更新:2024 年 10 月 7 日夜
十一假期刚到,HiFoss 社区的凯宝就给我送上了一份惊喜--星闪物联网套件。之前早就听说过华为的星闪技术和它们的“开源”策略,现在也是可以在国庆假期体验一下了。
快递包装里面的是星闪开发板的包装盒,一个大的套件和一个小的最小系统板。套件包装并不像那些淘宝卖的 51 单片机实验套件,而是像手机盒一样里面还有黑色的海绵,看上去有点高端。套件的设计也很讲究,上面标识充分,注明了 ①② 外设板并且用排针上留空的针脚实现了类似防呆的设计。另外,套件大板上还集成了连接器用来接锂电池。虽然套件没有带电池,但说明板子还是精心设计的。套件的板子可以说是让用户看了就会接,非常友好。这算是一个惊喜,但随之而来的就是惊吓。
要把板子跑起来,首先要参考的文档是 HiSpark/fbb_ws63 下面的 tools/README.md,但是上面只记录了 Windows 上的教程。作为一位忠实的 GNU/Linux 用户,我当然不是为情愿的,但不管怎么说先试试吧。最小系统板上集成了 CH341K 所以所有烧录和调试都是用 UART 转出来的 USB 的 COM 口。三下五除二装上 HiSpark Studio 然后按照文档配置项目编译......
然后喜闻乐见地,报错了。HiSpark Studio 基本上是 Visual Studio Code 的插件版,集成的功能很全。但是它(或者说整个 IDE 和项目)有个软肋那就是 Windows 的 Shell 命令长度限制。不知道 fbb_ws63 构建系统是抽了什么风,给编译器传了大量的 Macro 定义导致可能超出 Windows 的限制。但这个问题还很玄学,在我的机器上,把 fbb_ws63 放到 C:\ 里都不够。最后还是把 fbb_ws63/src 放到 C:\ 才解决问题。如此大(>100M)的 Windows-only IDE 这样的问题都解决不了实在是很难说的过去。
随后在 Windows 上的编译、烧录和调试都顺利地完成了。但一直在 Windows 不是长久之计,到底还得在 GNU/Linux 上搭起来。这里得特别感谢山夆写的 Linux 上编译的教程,帮我少花了很多功夫。但是,论坛上的“Linux 教程”都是用的 WSL 或者 VM 镜像,而且有个共同点,那就是烧录都是在 Windows 上进行的。原来,海思官方的烧录工具只能在 Windows 跑。
那能怎么办呢?总不能所有镜像都在 Windows 烧吧,GNU/Linux 和 MacOS 用户怎么办?所以我决定自己动手丰衣足食,写烧写工具。
fbb_ws63 是部分开源的,bootloader 等部分都是静态库文件(这让镜像裁剪从何谈起?)并且官方的 BurnTool 也没有源代码。终究是被华为(海思)背刺了,算是见识到了华为(海思)代码开源不彻底、协议细节不公开的“开源精神”了。但那又如何呢?通过串口监视器,我观察到通讯无非就是写那些数据,回显那些东西。所以我直接 ghidra 启动!
这样,苦苦奋战了一个国庆假期总算是实现了一个自由开源的烧写工具,取名为 ws63flash(灵感来自 stm32flash)并以 GPLv3 协议释出了 v0.1.0 版本。ws63flash 是针对 Hisilicon WS63* 的刷写工具,支持类 Unix 平台和 Windows。ws63flash 目前只支持在 115200 波特率烧录,在 Windows 上烧录的照片:
我预计在 ws63flash v0.1.1 支持波特率选择和擦除等功能,敬请期待。下面是有关 ws63flash 的链接:
另外,这个项目也不想局限于 WS63 系列开发板。其它开发板比如小熊派也使用类似的协议,这些以后有机会也可以进行支持。