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

news2024/11/26 2:25:10

软件开发者是芯片公司非常重要的资产,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博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VsCode终端无法使用conda切换环境的问题

一.问题描述: windows的cmd可以正常使用conda切换环境 为了方便想使用vscode的终端,但是报错: PS C:\Users\admin\Desktop\MyProject> conda activate objection1.8.4 CommandNotFoundError: Your shell has not been properly configured to use conda activate. invocati…

智能排班系统 【管理系统功能、操作说明——下篇】

文章目录 页面与功能展示排班日历月视图(按职位查询)月视图(按员工查询)周视图 排班任务管理创建排班计算任务设置任务的排班规则设置工作日客流量导入任务计算查看任务结果发布任务任务多算法计算 页面与功能展示 排班日历 在排…

vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

Vcruntime140.dll文件是Windows操作系统中非常重要的一个动态链接库文件,用于支持使用Microsoft Visual C编译器创建的应用程序的运行。当Windows系统中的vcruntime140.dll文件丢失时,可能会导致某些应用程序无法正常启动。在尝试启动应用程序时&#xf…

Android HCE开发

我们来详细说明一下关于不同模式下的AID响应问题(前提:一个手机,手机上有A、B两个HCE APP,通过读卡器向手机发送APDU选择指令) 1、A和B的应用AID设置的都是payment模式, 只有手机当前选定的默认支付APP会响…

基于Faster rcnn pytorch的遥感图像检测

基于Faster rcnn pytorch的遥感图像检测 代码:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0 数据集 使用RSOD遥感数据集,VOC的数据格式如下: RSOD是一个开放的目标检测数据集,用于遥感图像中的目标检测。…

图片类型转换,url,File,Base64,Blob

一,图片url转化为文件 function urlToFile(url, imageName) {return new Promise((resolve, reject) > {var blob nullvar xhr new XMLHttpRequest()xhr.open(GET, url)xhr.setRequestHeader(Accept, image/png)xhr.responseType blobxhr.onload () > {b…

JVM内存模型和结构详解

JVM内存模型和Java内存模型都是面试的热点问题,名字看感觉都差不多,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到 达数据库,带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

java程序1补充:从键盘输入圆的半径,求圆的周长和面积(简易与交互两版)

编写一个java程序,从键盘输入圆的半径,求圆的周长和面积,并输出。 要求: (1)半径仅考虑int型正整数,并综合利用所学较好地处理异常输入,包括非法整数、负整数输入时的处理。输入半…

网络编程套接字基本概念认识

目录 认识端口号 认识TCP协议 认识UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 认识端口号 端口号(port)是传输层协议的内容 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 …

数字电路仿真编译文件指定方式

目录 1 最基本的方式 2 指定多个文件 3. 使用filelist文件 4 指定整个目录中的所有指定后缀的文件 5 指定include文件的搜索路径 6 追加宏的定义 7 Verdi相关的选项 8 Vivado中的处理方式 1 最基本的方式 最基本的方式就是直接在命令行指定单个源文件,比如说…

VMware安装华为存储模拟器

实验需要的软件: VMware Workstation Pro ST00000000201812000*配套的license文件 Dorado5000 V3存储模拟器磁盘 存储模拟器磁盘和license文件资源,在本人主页发布的资源中去下载 安装步骤: 1. 点击 “文件->新建虚拟机”。 2. 在弹框…

MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询SQL执行加载顺序七种JOIN写法 3 索引介绍3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合建索引3.6 哪些情况不适合建索引 4 性能分析4.1 性能分析前提知识4.2 Explain…

SQL Server数据库使用

文章目录 前言一、SQL Server 2008 R2 安装例:安装一台SQL Server 2008 R2服务器 二、SSMS管理工具简介1.SQL Server 2008 R2常用的工具2.连接到服务器 三、SQL Server数据库分类及管理1.SQL Server数据库分类2.SQL Server数据库文件类型3.SQL Server数据库管理例&a…

操作系统第五章——输入输出管理(中)

提示:若我会见到你,事隔经年,我如何向你招呼,以眼泪,以沉默 文章目录 5.2.1 IO核心子系统知识总览功能要在那个层次实现 5.2.2 假脱机技术(SPOOLing)知识总览什么是脱机技术假脱机技术——输入井…

Kafka锦集(二):三种不同方式,查看kafka是否已启动

前言 Kafka的启动之前,必不可少的三个操作: 1、启动Zookeeper服务,点击进入 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 2、 Kafka的下载和安装 3、修改Kafka安装目录下./config/server.properties文件里的监听窗…

考研C语言第三章

3.1 运算 #include <stdio.h>int main() {int result45*2-6/310%4;printf("%d\n",result);return 0; }C语言输出上每次都要带着数据类型&#xff0c;想念java 算术运算符与关系运算符 #include <stdio.h>int main() {int a;while(scanf("%d"…

C#,Matlab混合编程(01)——Mat文件格式简介及读写Mat文件的C#源程序

Matlab 软件 20GB&#xff0c;很大&#xff0c;还有卡脖子的问题。 我们可以利用其生成的 Mat 文件做更多的事。 1 Mat 文件 MAT 文件版本概述 MAT 文件是二进制 MATLAB 文件&#xff0c;用于存储工作区变量。从 MAT 文件版本 4 开始&#xff0c;随后的几个 MAT 文件版本都支持…

qtcreator-ros 安装配置

qtcreator-ros 安装配置 计划利用 QT 搭建简易的小车远程控制客户端&#xff0c;QT 系统学习有点耗时&#xff0c;借助 qtcreator-ros 可以缩短开发周期 How to Install (Users) ROS Qt5 librviz人机交互界面开发一&#xff08;配置QT环境&#xff09; 电脑中已经安装 5.10.1 …

DJ6-1/2/3 文件系统

目录 6.1 文件系统概述 6.1.1 文件、记录和数据项 6.1.2 文件类型 6.1.3 文件系统模型 6.1.4 对文件的操作 6.2 文件的逻辑结构 6.2.1 文件逻辑结构的类型 6.2.2 顺序文件&#xff08;Sequential File&#xff09; 6.2.4 索引文件&#xff08;Index File&…