MRS真的是正途吗?内部团队劝用失败

这是第二次在这里发帖,很不幸过去一个多月不断尝试在公司内部引进WCH的RISC-V芯片失败。不是因为对芯片本身的硬件配置和可靠性存有疑虑,而是去说服开发人员去使用MRS这个奇葩的东西。MCU做的再好,如果没有人去将之实现到实际应用的产品里面完成所需的功能,都是徒劳。归根结底,执行事情的主要还是开发人员。

这篇帖子可能辜负了MRS的开发人员和WCH的一些定制设计的人员。但是还是要说出来。

在这里回顾一下过去一个多月的几个片段:

1,为什么一直纠着MRS不放?MRS具备着Windows下快速开发特点,一键打开范例代码,Ctrl+C, Ctrl+V一通操作,一个基本的功能就立刻实现,听上去多么美好啊!

可惜,资深开发人员,并不这么看。RISC-V从出生开始就有鲜明的“开源”标签,但凡对RISC-V或者单片机内核有浓厚兴趣的,不管是芯片级(FPGA实现内核)还是应用级(toolchain交叉编译开发流程),都更多的关注这个开源开发流程,而不是一个定制好的IDE程序。MRS的集成开发环境本身并没有问题,有朝一日做好了,碾压Keil和IAR都不是梦。但是,RISC-V却是开源的啊?开源的东西,为什么到了某些人手里,就变成了拿来主义?某些IDE拿开源Eclipse的芯,包Keil的外皮,东拼西凑却标榜“好用”,优于开源的公版开发,不是不好用,而是不敢用。这种方式下出来的产品最终表现的都往往一致:用户只管去安装和使用,产品资料遮遮掩掩,尽量不公开。等遇到开发问题了,找谁去求助!

归结一句话,开源的RISC-V,终归要在开源开发环境下,才更有前途。不是MRS不好,而是无法回答几个问题:

1),WCH为什么至今没有官方发布toolchain, 兼容的openocd源代码或者预编译包,而是借MRS之手?放眼行业内能属的上号的MCU厂商,至少也是官方有预编译的toolchain和调试工具发布。MRS究竟有和魅力能让WCH如此?君不见ST或者TI把软件开发页面自动转向IAR或者Keil网站?必有隐情!

2),这个社区有一个很著名的回答,就是如果不用MRS而用公版开发,那么WCH的RISC-V就无法发挥很多定制化的功能。从未见一个芯片厂商公然为第三方开发工具站队的。这是第一次。能不能发挥定制版MCU最大性能,根本上是官方自己的toolchain交叉编译工具有没有做好并投放给所有人,而不是一个IDE来决定的。从道理上说,MRS里面设置成公版toolchain路径,照样不能发挥最大性能。

3),说服别人使用MRS来开发开源的RISC-V其实非常简单,就是让开发者先走通用的开源开发流程,比如Eclipse甚至VS code,配置Toolchain和调试,完整走一遍,这算第一条路。然后再使用MRS的一条龙解决方案,再走一遍。如果开发者发现用MRS的对比下优点,那是很自然会切换的。可惜,第一条路,行不通,实在想走,必须先绕道MRS来反向观察第一条路是怎么铺的。WCH做开源的MCU却没有自己去公布完整的第一条路,让人汗颜!


2,为什么第一条路偏偏走不通?这个问题接着第一点的第三个问题。

过去几个月,我们尝试使用公版的toolchain,在MAC, Linux都做了编译,也使用过Si-Five的预编译包,都可以正常编译出固件。我们使用MRS公布的Linux toolchain,也成功实现交叉编译。但是,这条路卡在了WCH这个奇葩的调试器上

1),WCH宣称阉割掉JTAG,只支持便捷的SWD调试。但是这个SWD却不是标准的和Jlink10 兼容的协议。可惜的是,开发文档却找不到这个定制版SWD的只言片语。敢问这个SWD到底怎么样?是不是只能用不开源的WCH-LINK才能搭配?

开源就是这么神奇,一旦某一个节点开始不开源了,那么再下游的都不是开源的了。

我们遇到的最大问题,就是OpenOCD不支持WCH-Link,最后勉强找到这个https://github.com/kprasadvnsi/riscv-openocd-wch

在这个基础上重新编译OpenOCD之后,却又发现,WCH-Link因为被windows下升级到了新版固件,和这个版本兼容性又不好,频繁掉线。可问题是,WCH-Link不是开源的,不同固件版本也不知从何获取,更主要的是,这个riscv-openocd-wch并未声明兼容哪个版本!目前更不敢奢望WCH-Link能做出独立的快平台GDB server!

2),目前比较稳定的支持WCH的OpenOCD,只有MRS预编译的toolchain提供下载,也不可能会像https://github.com/kprasadvnsi/riscv-openocd-wch这样公布源代码。

可悲,第一条路走的伤痕累累,然后遥望MRS在那里招手,来吧,我们什么都有!可是,你们那些是怎么来的?WCH私信发给你们的吗?有何桌子底下的交易?三个字,不敢用。


最后,分享一个外链,也是一位热爱WCH产品的开发者的悲鸣:

https://bbs.21ic.com/icview-3127640-1-1.html

希望官方多多重视。眼下RISC-V方兴未艾,早期的路没有走正,再往后要纠正就很难了。谢谢。

我赞同楼主的观点,不公布源代码还违反了GPL协议,MRS的事我与OpenOCD的官方开发人员反馈过了,聊天记录链接

我尝试逆向工程过WCH-Link的通信协议,文档仓库代码仓库,现在放弃了。

还有WCHISPTool只有Windows版本而且协议不公开,ubuntu下我试了一下wine不能用,而必须用WCH-Link + MRS工具链烧录,我有空会去尝试逆向工程一下。

我打算写个用USB调试CH32V103的工具,像调试手机APP那样,用USB连接电脑就能调试程序了,不用使用任何其他硬件,我已经有过在其他芯片上开发串口GDB调试工具的经验了。


mounriver 有给openocd binary,虽然只有x86,但gdb调试啥的都还是可用的,更新还挺及时。


客观的说,用了openocd确实应该公开openocd相关代码。rvswd是闭源ip协议不开放可以理解,wchlink固件不开放也可以理解,但是openocd跟wchlink通信的协议(类似cmsis-dap)可是遮不住的。

沁恒可能是防止芯片被破解吧,估计也没有精力用闭源软件替换掉Openocd。


什么鬼?人家RISC-V大佬都没说这处理器是开源的,只是说指令集是开源的而已。

至于批量使用,跑了最新版的(20220602)的webserver后表示再等等....

如果不使用以太网,应该问题不大。


  1. 标准的swd应该是ARM的,不能随便用吧。

  2. 工具链应该也不是MRS开发的吧,WCH的riscv芯片加了一些自己的东西。改进了中断处理过程


不知道为什么wch不用标准的jtag协议


说一下观点

  1. 开源只是手段,可持续发展才是目的。

  2. 宗教式地遵守GPL协议,无疑丧失了自我。

    1. 在国内,无论什么协议,包括南京条约,都应该接受国内的嘎么闷管理,而不是红毛猴。

    2. 红毛猴用火炮炸国门的时候,并没有由于未交专利费而终止,这才是真正的契约精神。


只有登录才能回复,可以选择微信账号登录