软件开发者是芯片公司非常重要的资产,CPU做出来是不够的,要让更多的软件开发者用这颗芯片才是成功。国际大厂们都有一只较大的软件团队,在做面向开发者的软件工具和SDK等。--张先轶博士:为什么RISC-V需要共建软件生态?

前言

目前RISC-V架构在全球发展迅猛,RISC-V花了差不多5年的时间完成了ARM过去花了二十年积累的软件生态。但是跟ARM相比,RISC-V架构还有很长的路要走,其中面临的最大问题就是生态系统不够成熟,这很大程度上制约了RISC-V的应用和用户接受度。目前大多RISC-V IP和芯片厂商采用的开发环境都是基于社区开源的Eclipse环境、GDB、OPENOCD等。开源环境代码臃肿、运行速度慢、BUG多、用户配置复杂,这直接影响了商业用户的芯片使用体验。另一个方面,随着人工智能、物联网应用的兴起,很多用户需要根据应用定义RISC-V指令和体系结构,现有开源环境无法满足要求。

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

它的重要性不言而喻,直接能影响到 RISC-V的生态。有RISC-V开发者说,IDE种类繁多,用起来真不舒服,主要是IDE用起来真不习惯,相比Keil和IAR来说。

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

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

0x01 eclipse —— 著名开源 IDE

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

优点:

1.全开源,自由,免费 的 IDE2.有众多公司厂商,组织,支持维护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 进行 debug2.设置选项较为烦锁

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.定制程度取决于开发人员的能力

0x06 MounRiver Studio--RISC-V单片机(MCU)集成开发环境(IDE)

MounRiver Studio支持在线更新各类模块组件,如SDK、OpenOCD等。您可以通过MounRiver组件发布平台,上传组件供其他用户下载使用。IDE下载地址 www.mounriver.com,

基于Eclipse的方案,做的还不错,支持的芯片还挺多,希望支持更多的芯片厂家,比较看好。

0x07 Nuclei Studio IDE

Nuclei Studio IDE是芯来公司,基于Eclipse开发的一款针对芯来公司处理器核产品的集成开发环境工具。Nuclei Studio IDE 是基于eclipse的,软件是免安装的。因此直接去Nuclei官网下载对应的版本即可。希望它更加开放些,一个IDE要想强大光自家的可不行。

IDE下载地址为DOCS & TOOLS_Nuclei-Best RISC-V Processor IP,

0x08 卡姆派乐IDE

这个是后起新秀,希望保持开放,让更多的厂商参与进来携手共建,做好生态吧。卡姆派乐信息科技有限公司总部位于湖南长沙,在北京设有分支机构。公司成立于2019年1月,作为一家新兴的科技公司,卡姆派乐是国内首个专注于芯片基础软件并且具备全套工具链开发能力的信息技术企业,主要提供芯片集成开发环境、编译器、链接器、调试器、二进制翻译、高性能数学库、AI算子优化等服务。

卡姆派乐IDE的发布填补了国内在芯片集成开发环境领域的空白,对于完善RISC-V生态,推动RISC-V架构的应用和推广、推动国产自主芯片开发具有重要意义。专业芯片编译、调试,IDE、OS定制开发、OpenCL、CUDA、AI编译器和编程框架定制开发。

卡姆派乐

0x09 剑池 CDK

剑池 CDK 挺强大的,理念也挺先进,是基于平头哥芯片的开发工具。着重在 IoT 领域做开发,是一款集成开发环境,会将平头哥 ioT 的编译器、调试器、模拟器工具都封装在一个整体环境中提供给开发人员。实现整体简洁的界面,带来全新开发体验。就是占用资源比较大,面向平头哥芯片多一点,不够开放,要是能支持其它的就更好了。

剑池 CDK 是平头哥推出的一款专业面向 IoT 开发领域的集成开发环境,该集成开发环境围绕平头哥“1 天上手,5 天出原型,20 天出产品”1520 技术理念,为开发者提供简洁统一的图形开发界面,帮助开发者进行应用开发。该开发环境目前已支持平头哥自研指令集C-SKY 架构和 RISC-V 架构的芯片的开发。传统的嵌入式集成开发环境不同的是,剑池 CDK 内部自动对接芯片开放平台,自动获取芯片开放平台上的开发资源。在芯片开放平台上,包含了一个网络组件超市,能够提供各种类型的组件,通过对接网络平台,开发者可以快速的形成自己的方案。

CDK下载地址:

https://occ.t-head.cn/community/download?id=575997419775328256

0x0A 总结

可能正是由于 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太大太臃肿,且仅支持自家的芯片。如果能基于notepad--用QT实现一款小巧且速度快,像Keil一样好用且支持众多芯片该多好。如果时间不急的话,在目前商业 IDE 还不成熟的情况下,自行研发是个选择,对其自己的芯片开发的适配程度也会更高,但就是各自造轮子更加碎片化。RISC-V委员会应该站出来统一下标准规范,照抄CMSIS也行啊。像ARM这样能有个统一的Keil的IDE支持生态内的所有厂家芯片,且有CMSIS规范统一标准,降低门槛且丰富了生态。自行研发也有两个方向,一个就是基于 VS code 或NDD编辑器做二次开发,参考嘉楠勘智方案;另一个就是从头开发一款自己的 IDE,但由于自己定制调试器也是一个时间周期比较长的过程,所以大概率底层还是 gcc + openocd。当然了,这里也还有未列出的阿里平头哥发布的 剑池 CDK 开发环境,他们有中天微时期的基础,所以他们就是自己完全定制的 IDE,并且有自己的调试器 ck-link,是解决方案比较成熟的厂商了。建议RISC-V 芯片厂商协调委员会统一出来维护一个IDE不香吗?各个芯片厂商负责提供芯片驱动包,类似Keil5的IDE模式。非要各家都搞一个各自为战?那样并不利于生态。

RISC-V 单片机本是国产化弯道超车的机会,但就是碎片化太严重,驱动封装的不太好用,且没有好用的国产IDE。要是像stm32那般好用,想不火都难。各家的IDE各自为战,重复的造轮子,没有统一的支持各个厂家的不同芯片。 RISC-V 的世界缺乏像ARM这种的统一领导和规范,得形成合力避免重复和各自为战,才能扩大生态,开放共建实现共赢。开发者没选一个芯片就得换套IDE?就得重新熟悉一遍操作吗?

最后,期待国产单片机开发IDE软件也能朝着更好用,易用的方向发展,变得更好。

引用

张先轶博士:为什么RISC-V需要共建软件生态?

[RISC-V]国产MCU IDE ——MounRiver Studio(MRS)双核开发项目实战_MounRiver_Studio的博客-CSDN博客

【专访】张先轶博士:手持开源“大刀”,RISC-V如何从“低端量变”到“高端质变”? · Issue #I3J1XA · RV少年 (RV4Kids)/RVWeekly - Gitee.com

平头哥CH2601开发环境(CDK)搭建_zhengyad123的博客-CSDN博客

浅谈 RISC-V 软件开发生态之 IDE相关推荐

  1. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

  2. 浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解

    内容提要 注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下. 引言 1. S32K1xx系列MCU启动过程详解(startup_S ...

  3. 浅谈飞控的软件设计(across写的)

    关注across很久了,最近发现了它得CSDN,发现了这篇文章,感觉不错,转载保存. 摘自:https://blog.csdn.net/hz770495569/article/details/8657 ...

  4. 浅谈当前的手机开发技术

    浅谈当前的手机开发技术 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 随着3G时代的到来,手机软件开发成为了一个热门的软件开发技术,但是由于手机种类等一系列的原因,使 ...

  5. 浅谈iPhone和iPad开发中的图标设置

    浅谈iPhone和iPad开发中的图标设置 图标大小问题 我们的辛辛苦苦做出来的应用程序在iPhone上的表示仅仅是一个图标,对这个图标不可以不谨慎对待,不能因为大小不对头这些小问题而失真啊什么的. ...

  6. 智能车浅谈——抗干扰技术软件篇

    文章目录 软件抗干扰技术 数字信号的抗干扰措施 数字输入信号软件抗干扰措施 数字输出信号软件抗干扰措施 数字滤波 算术平均值滤波 中值滤波 滑动平均滤波 归一化 差比和 CPU及程序的抗干扰措施 复位 ...

  7. python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!

    原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...

  8. 浅谈Genymotion模拟器,专注开发

    浅谈Genymotion模拟器,专注开发 嘚吧嘚 下载 安装 配置 嘚吧嘚 在使用过众多的模拟器之后,发现夜神模拟器.逍遥模拟器.蓝叠模拟器等大部分模拟器都是为了娱乐.玩游戏的,在之前的文章<A ...

  9. 浅谈在游戏陪玩开发中常见的几种加密算法及实现

    前言 数字签名.信息加密是游戏陪玩开发前后端都经常需要使用到的技术,应用场景包括了用户登入.交易.信息通讯.oauth 等等,不同的应用场景需要游戏陪玩开发时使用到不同的签名加密算法,或者需要搭配不一 ...

最新文章

  1. asp.net程序性能优化的七个方面
  2. Codeforces Round #359 (Div. 2) C. Robbers' watch 暴力枚举
  3. (六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)决了当时的问题,那时LZ接触JAVA刚几个月,比葫芦画瓢的用了观察者模式。...
  4. python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例
  5. 3764树上的异或值(自己研究的静态字典树)
  6. 图像识别中的深度学习【香港中文大学王晓刚】
  7. 【数据结构与算法】之深入解析“H指数”的求解思路与算法示例
  8. Apache RocketMQ部署文档
  9. VS2010 C++ 创建COM组件
  10. mac macaca android,Mac使用自动化测试macaca踩坑记
  11. android xml显示调整,AndroidStudio中怎么设置xml与预览同时显示?
  12. 怎样才算是一个好的老师???
  13. Freebsd-9.0 how to change default sound device
  14. oracle退税率后台表,Oracle ERP表信息整理(AP).doc
  15. matlab音频指纹识别_指纹识别算法matlab实现.doc
  16. 单细胞文章解读——用单细胞RNA测序技术分析与肿瘤转移相关的细胞间通讯
  17. hiveSQL面试题16__时间序列--构造日期
  18. 汇编实验5 DOS、BIOS调用
  19. Windows 11系统映像恢复到新硬盘的3种方式
  20. Loner_li 机试题 将数字 例如12345.7895”,用程序实现显示壹万贰仟叁佰肆拾伍圆柒角玖分的方式

热门文章

  1. 我创业之路的“足迹”连缀——2008年新浪首届“我的创业路”征文
  2. 壹 2.2 整数表示
  3. NVIDIA DeepStream配置文件解析;摄像头源RTSP拉流源输入,RTSP推流输出
  4. 2016 多校4 1002 After a Sleepless Night 树上贪心
  5. 7个靠谱的Windows软件下载网站,个个「纯净、安全、无捆绑」!
  6. java中的repo什么意思,repo是什么意思什么梗 repo的含义及出处
  7. 图灵4月书讯【黑客与画家将在4月10日左右隆重上市】
  8. java-net-php-python-jspm光影婚纱影楼系统设计与实现系统计算机毕业设计程序
  9. 电容式触摸屏调试常见问题汇总
  10. STM32CubeMX学习--ThreadX_UART