StrongWong

浅谈 RISC-V 软件开发生态之 IDE

0x00 前言

今天简单谈一些关于 RISC-V 开发的软件生态相关,主要是关于 RISC-V 的开发 IDE,就是集成开发环境。集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的软件开发服务套(组)。

目前来看,RISC-V 的硬件生态已经在蓬勃发展,而 RISC-V 相关的软件生态还在日趋完善的过程中,这里就来浅谈一点我的个人认识,如有不对,请批评指正。

目前,RISC-V 的软件开发 IDE ,主要是有以下几种解决方案。

0x01 eclipse —— 著名开源 IDE

全开源,需要自行集成 RISC-V Toolchains + eclipse + OpenOCD 来搭建开发环境。

优点:

  1. 全开源,自由,免费 的 IDE
  2. 有众多公司厂商,组织,支持维护
  3. 可扩展的插件功能 缺点:
  1. 庞大臃肿,而且需要 java 运行环境。现在的版本在安装过程中会自动安装一个 jre 的运行环境。但是目前国内用户如果自行安装会下载很慢,使用代理相对快很多。如果不使用安装版本,也可以使用 zip 包解压的版本
  2. 集成众多插件,插件数量多了之后会拖慢系统
  3. 需要自行集成编译器及仿真器,打包发布给用户使用

0x02 IAR for RISC-V—— 老牌商业 IDE

IAR for RISC-V 版本目前已经正在和部分芯片厂商进行合作适配、授权支持。主要包括:SiFive、Andes Technology、Nuclei(芯来科技)、CloudBEAR、Syntacore、C-SKY(平头哥)、GigaDevice(兆易创新)、MicroChip。

优点:

  1. IAR 有非常优秀的编译器,针对代码的大小和速度有很好的优化;从 coremark 跑分排行榜上的 ARM 芯片来看,相对来说 IAR 的代码性能更高一些,当然各版本之间也会存在差异。但目前 IAR for RISC-V 的版本还未开放下载,暂时还没有相关测评。
  2. 有很优秀的 Trace 工具进行调试

coremark

IAR for RISC-V

缺点:

  1. 纯商业 IDE,使用需要授权,相对来说用户不易获得授权使用,尤其是新版本更新了 License 授权方案
  2. RISC-V 芯片需要通过其 i-jet 来调试

0x03 Embedded Studio for RISC-V —— SEGGER 老牌嵌入式开发工具供应商

Embedded Studio 目前正在适配支持 Andes Technology、Nuclei(芯来科技)、GigaDevice(兆易创新) 、SiFive、Syntacore、Western Digital 的 RISC-V 芯片开发。

优点:

  1. 个人用户免费,支持全功能, 跨平台支持含 Windows, macOS 和 Linux 版本。
  2. 优于 IAR 的编辑器
  3. 启动速度快,大工程启动速度相对较快
  4. 调试工具丰富,因为是传统嵌入式工具链厂商,有 J-link 系列工具支持
  5. 支持 RISC-V 内核

缺点:

  1. 目前只支持 J-link 进行 debug
  2. 设置选项较为烦锁

0x04 VS code —— 开发新秀

VS code 在我看来就是一款优秀的开源跨平台代码编辑器,但由于其内置了标准 Debugger Adaptor Protocol,经过各路大神,一些组织,部分企业公司结合各自的需求,开发了各具特色的 Debug 插件。于是乎 VS Code 俨然变成了一款极具竞争力的 IDE,成功跨界抢各类 IDE 的市场,因为其灵活小巧,迅速成为了各路开发者的新宠。但也由于其开发调试功能不是本身内置,也给不同的开发需求带来了一定的门槛,需要开发者自行进行一些开发环境配置,对于新手小白不是特别友好。但还是有很多愿意折腾的大佬。

优点:

  1. 软件全开源免费,体积小,启动快,界面新颖,更新快,新兴的优秀编辑器代表
  2. 开源众多的插件
  3. 可跨平台使用

缺点:

  1. 其本身就是一个,优秀的开源编辑器,如果要进行 MCU 开发,需要开发插件,或者使用相应的工具链来自行配置,对用户不是很友好
  2. 目前没有支持 RISC-V 的通用插件
  3. 通过体验 cortex debug 、esp-idf、platformIO 等开发插件,体验也并不是很友好;但也是跟插件开发者的能力、需求和习惯相关
  4. Cortex Debug 插件,代码在 bootrom 里运行时,反汇编窗口无法显示当前的 bootrom 代码,除非手动反汇编。它执行显示当前 elf 范围内的文件,regs 窗口没法设置显示格式;这些可能是 Cortex Debug 插件的局限。

0x05 KendryteIDE —— 基于 VS code 包装的 IDE 方案

KendryteIDE 是嘉楠勘智,基于开源的 VS code 编辑器,自己定制的 RISC-V 芯片 IDE 解决方案,整体风格继承 VS code。

优点:

  1. 基于开源 VS code,二次开发,完全自主可控,轻量级
  2. 继承了 VS code 的优秀编辑器,及其优点

缺点:

  1. 目前不可以直接使用其 IDE,来进行其他的 RISC-V 芯片调试
  2. 需要重新适配自己的 MCU 来做开发,开发工作量和时间周期是不确定的
  3. 定制程度取决于开发人员的能力

0x05 总结

可能正是由于 RISC-V 硬件的自由更改的属性,各家厂商都可以有自己独特的 RISC-V 架构,所以这也导致了 RISC-V 的编译工具链会有各厂商自己定制,不能像 ARM 那样各个厂商都使用 MDK,只需要做一个 SDK or Pack 包集成到 MDK 中即可。于是乎,我们就看到了市面上的各大 RISC-V 芯片或 IP 公司,都在做自己的 IDE 用自己的工具链。 那么为什么各家都在做各自的工具链呢,我认为还是没有形成类似于 ARM 的 CMSIS 这样的嵌入式软件接口标准,来统一管理底层软件接口,于是乎就变成了各自玩各自的,没有统一。这也是导致 RISC-V 软件生态薄弱,碎片化的一个重要因素。

但我相信,未来应该也会出现类似于 CMSIS 的标准,来完成一统大业的工作。

于是乎现在就是八仙过海,各显神通的局面。但大部分的 RISC-V 厂商的开发 IDE,还是基于开源的 eclipse + gcc toolchains + openocd 的方案来开发和调试芯片产品,相对来说这可能是比较快和相对成熟的方案。

当然,我个人猜测,像 IAR、SEGGER 这种纯商业的第三方 IDE 、嵌入式工具供应商,也希望能够适配市面上的各型号 MCU 开发,稳固自己的工具链生态,所以 SEGGER 率先推出了支持 RISC-V 开发的 IDE,但可能也正是由于 RISC-V 的灵活性,致使全面支持 RISC-V 架构的 IAR 版本还迟迟没有正式推出。

个人认为,如果一个 RISC-V 芯片厂商需要尽快推出自己的 IDE ,那么可能使用 eclipse + gcc toolchains + openocd 的方案会比较快;如果时间不急的话,在目前商业 IDE 还不成熟的情况下,可能自行研发是比较好的选择,对其自己的芯片开发的适配程度也会更高;那么自行研发也有两个方向,一个就是基于 VS code 编辑器做二次开发,参考嘉楠勘智方案;另一个就是从头开发一款自己的 IDE,但由于自己定制调试器也是一个时间周期比较长的过程,所以大概率底层还是 gcc + openocd。当然了,这里也还有未列出的阿里平头哥发布的 剑池 CDK 开发环境,他们有中天微时期的基础,所以他们就是自己完全定制的 IDE,并且有自己的调试器 ck-link,是解决方案比较成熟的厂商了。

eclipseVS codeIAREmbedded Studio
版权开源,免费开源,免费商业授权个人用户免费,合作厂商用户免费
是否支持 RISC-V编辑器本身不支持,可定制编辑器本身不支持,可定制支持,但需要厂商和 IAR 合作开发支持,需要厂商合作开发
是否插件拓展有插件有插件,没有 RISC-V 通用插件,需要厂商 or 第三方 or 开源社区自定义不支持不支持
是否可调试使用开源 openocd 调试使用开源 openocd 调试支持 RISC-V 的版本需要使用 IAR 官方 I-jet 仿真器支持 RISC-V,但仅支持 SEGGER 的J-link 仿真器
快捷键调试支持各种调试插件使用方式不一致支持支持
汇编 Debug支持需要自定义插件支持支持支持
Mem 访问、读写支持需要自定义插件支持支持支持
寄存器访问、读写支持需要自定义插件支持支持支持
窗口中变量、数据的格式是否可更改支持不确定,可能需要自定义插件支持支持支持
用户界面新版本有所改进,有颜色主题更改新潮,有较多颜色主题,代码配色友好新版本有有限主题更改有限更改
…………………………