浅谈 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 来搭建开发环境。
优点:
- 全开源,自由,免费 的 IDE
- 有众多公司厂商,组织,支持维护
- 可扩展的插件功能 缺点:
- 庞大臃肿,而且需要 java 运行环境。现在的版本在安装过程中会自动安装一个 jre 的运行环境。但是目前国内用户如果自行安装会下载很慢,使用代理相对快很多。如果不使用安装版本,也可以使用 zip 包解压的版本
- 集成众多插件,插件数量多了之后会拖慢系统
- 需要自行集成编译器及仿真器,打包发布给用户使用
0x02 IAR for RISC-V—— 老牌商业 IDE
IAR for RISC-V 版本目前已经正在和部分芯片厂商进行合作适配、授权支持。主要包括:SiFive、Andes Technology、Nuclei(芯来科技)、CloudBEAR、Syntacore、C-SKY(平头哥)、GigaDevice(兆易创新)、MicroChip。
优点:
- IAR 有非常优秀的编译器,针对代码的大小和速度有很好的优化;从 coremark 跑分排行榜上的 ARM 芯片来看,相对来说 IAR 的代码性能更高一些,当然各版本之间也会存在差异。但目前 IAR for RISC-V 的版本还未开放下载,暂时还没有相关测评。
- 有很优秀的 Trace 工具进行调试
缺点:
- 纯商业 IDE,使用需要授权,相对来说用户不易获得授权使用,尤其是新版本更新了 License 授权方案
- RISC-V 芯片需要通过其 i-jet 来调试
0x03 Embedded Studio for RISC-V —— SEGGER 老牌嵌入式开发工具供应商
Embedded Studio 目前正在适配支持 Andes Technology、Nuclei(芯来科技)、GigaDevice(兆易创新) 、SiFive、Syntacore、Western Digital 的 RISC-V 芯片开发。
优点:
- 个人用户免费,支持全功能, 跨平台支持含 Windows, macOS 和 Linux 版本。
- 优于 IAR 的编辑器
- 启动速度快,大工程启动速度相对较快
- 调试工具丰富,因为是传统嵌入式工具链厂商,有 J-link 系列工具支持
- 支持 RISC-V 内核
缺点:
- 目前只支持 J-link 进行 debug
- 设置选项较为烦锁
0x04 VS code —— 开发新秀
VS code 在我看来就是一款优秀的开源跨平台代码编辑器,但由于其内置了标准 Debugger Adaptor Protocol,经过各路大神,一些组织,部分企业公司结合各自的需求,开发了各具特色的 Debug 插件。于是乎 VS Code 俨然变成了一款极具竞争力的 IDE,成功跨界抢各类 IDE 的市场,因为其灵活小巧,迅速成为了各路开发者的新宠。但也由于其开发调试功能不是本身内置,也给不同的开发需求带来了一定的门槛,需要开发者自行进行一些开发环境配置,对于新手小白不是特别友好。但还是有很多愿意折腾的大佬。
优点:
- 软件全开源免费,体积小,启动快,界面新颖,更新快,新兴的优秀编辑器代表
- 开源众多的插件
- 可跨平台使用
缺点:
- 其本身就是一个,优秀的开源编辑器,如果要进行 MCU 开发,需要开发插件,或者使用相应的工具链来自行配置,对用户不是很友好
- 目前没有支持 RISC-V 的通用插件
- 通过体验 cortex debug 、esp-idf、platformIO 等开发插件,体验也并不是很友好;但也是跟插件开发者的能力、需求和习惯相关
- Cortex Debug 插件,代码在 bootrom 里运行时,反汇编窗口无法显示当前的 bootrom 代码,除非手动反汇编。它执行显示当前 elf 范围内的文件,regs 窗口没法设置显示格式;这些可能是 Cortex Debug 插件的局限。
0x05 KendryteIDE —— 基于 VS code 包装的 IDE 方案
KendryteIDE 是嘉楠勘智,基于开源的 VS code 编辑器,自己定制的 RISC-V 芯片 IDE 解决方案,整体风格继承 VS code。
优点:
- 基于开源 VS code,二次开发,完全自主可控,轻量级
- 继承了 VS code 的优秀编辑器,及其优点
缺点:
- 目前不可以直接使用其 IDE,来进行其他的 RISC-V 芯片调试
- 需要重新适配自己的 MCU 来做开发,开发工作量和时间周期是不确定的
- 定制程度取决于开发人员的能力
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,是解决方案比较成熟的厂商了。
eclipse | VS code | IAR | Embedded Studio | |
---|---|---|---|---|
版权 | 开源,免费 | 开源,免费 | 商业授权 | 个人用户免费,合作厂商用户免费 |
是否支持 RISC-V | 编辑器本身不支持,可定制 | 编辑器本身不支持,可定制 | 支持,但需要厂商和 IAR 合作开发 | 支持,需要厂商合作开发 |
是否插件拓展 | 有插件 | 有插件,没有 RISC-V 通用插件,需要厂商 or 第三方 or 开源社区自定义 | 不支持 | 不支持 |
是否可调试 | 使用开源 openocd 调试 | 使用开源 openocd 调试 | 支持 RISC-V 的版本需要使用 IAR 官方 I-jet 仿真器 | 支持 RISC-V,但仅支持 SEGGER 的J-link 仿真器 |
快捷键调试 | 支持 | 各种调试插件使用方式不一致 | 支持 | 支持 |
汇编 Debug | 支持 | 需要自定义插件支持 | 支持 | 支持 |
Mem 访问、读写 | 支持 | 需要自定义插件支持 | 支持 | 支持 |
寄存器访问、读写 | 支持 | 需要自定义插件支持 | 支持 | 支持 |
窗口中变量、数据的格式是否可更改 | 支持 | 不确定,可能需要自定义插件支持 | 支持 | 支持 |
用户界面 | 新版本有所改进,有颜色主题更改 | 新潮,有较多颜色主题,代码配色友好 | 新版本有有限主题更改 | 有限更改 |
…… | …… | …… | …… | …… |