1

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

 2 years ago
source link: https://blog.strongwong.top/posts/%E6%B5%85%E8%B0%88-RISC-V-%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E7%94%9F%E6%80%81%E4%B9%8B-IDE.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
浅谈 RISC-V 软件开发生态之 IDE

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

发表于

2021-02-12

| 分类于 RISC-V

嵌入式

| 评论数: 0

| 阅读次数: 39

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 工具进行调试
  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,是解决方案比较成熟的厂商了。

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 访问、读写 支持 需要自定义插件支持 支持 支持 寄存器访问、读写 支持 需要自定义插件支持 支持 支持 窗口中变量、数据的格式是否可更改 支持 不确定,可能需要自定义插件支持 支持 支持 用户界面 新版本有所改进,有颜色主题更改 新潮,有较多颜色主题,代码配色友好 新版本有有限主题更改 有限更改 …… …… …… …… ……

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK