当前位置: 首页 > news >正文

基于VSCode软件框架的RISC-V IDE MRS2正式上线发布

基于VSCode软件框架的RISC-V IDE MRS2正式上线发布

一、概述

MounRiver Studio Ⅱ(MRS2)为MounRiver Studio的换代版本,从V2.1开始,框架更换至更现代的VSCode,并深度定制开发。在工程管理、代码编辑、编译、调试等方面均兼容之前版本,并在效率和功能等方面进行提升,着力将MRS打造为更加轻量化、智能化、高效化的RISC-V IDE。同时,提供Windows/Linux/macOS 以及国产操作系统版本,用户可前往MRS官网进行下载。

在这里插入图片描述

二、MRS2亮点

  • 高速化软件启动:针对安装速度、软件框架启动速度进行了专项优化。
  • 自动化工程配置:从模板无需设置直接创建工程、自带默认的编译配置、工具链切换时编译选项联动修改。
  • 实时化全局搜索:搜索结果根据实际文件内容实时刷新。
  • 智能化代码辅助:支持代码导航、补全、诊断、格式化、重构以及代码的实时静态语法分析;
  • 可视化代码分析:支持图表化显示代码中ROM,RAM用量占比、函数及变量占用内存大小及变化、输出文件各段数据实际大小等。
  • 高效化芯片调试:除常用的在线仿真调试外,还支持在线异常追踪调试以及远程调试。
  • 多样化辅助工具:集成HEX/BIN文件处理、串口调试、ISP下载、二进制文件浏览等多种嵌入式开发辅助工具。

三、核心功能介绍

3.1工程创建

  • 内置芯片模板工程,支持快速创建项目
    MRS2内置了沁恒微RISC-V芯片裸机及嵌入式实时操作系统工程模板,配套提供完整的编译、下载、调试参数文件,无需手动逐一设置,可直接一键式创建项目。
    在这里插入图片描述

  • 自定义工程模板创建、导入、导出功能
    MRS2支持将自定义的项目创建为芯片工程模板并导出,再由安装在其他主机上的MRS2导入后,即可在新建工程时使用自定义的芯片工程模板创建项目。
    在这里插入图片描述

3.2工程管理

  • 支持多种工程加载方式,便捷切换目标芯片型号
    MRS2兼容旧版MRS创建的工程、解决方案以及WCH EVT工程,可双击.wvproj/.wvsln文件或软件内菜单项加载工程/解决方案。MRS2还支持切换当前目标芯片型号,同时自动设置对应的下载、调试参数。
    在这里插入图片描述

  • 内置文件版本管理功能,支持回溯历史版本源码
    MRS2在文件保存时会自动按照分钟级的时间跨度进行版本备份,用户可以查看、对比任意备份的文件历史版本,并支持同步两个文件历史版本间的代码差异。
    在这里插入图片描述

3.3代码编辑

  • 自由添加文件书签、笔记
    MRS2可通过快捷键或右键菜单添加代码书签、笔记,支持快捷键方式跳转、专属页面全局管理,该功能不会像代码注释一样修改源码,修改后不影响源码编译结果,有助于审阅、浏览代码时添加备注信息。
    在这里插入图片描述

  • 主动式文件编码识别,避免中文字符出现乱码
    由于在Windows/Linux/macOS等平台下,文件的默认编码方式不同,导致更换平台加载工程时,包含中文的源码往往会显示为乱码,此时用户需要手动调整当前编辑器或整个集成开发环境(IDE)的默认文件编码。而当一个工程中包含多种编码方式的文件时,大多数只支持设置全局文件编码的IDE更是无法准确加载每个文件的中文字符。
    MRS2支持在打开文件时自动识别其编码方式,并提供切换浏览、保存文件时编码的快捷按钮,轻松应对跨平台浏览源码、加载包含不同编码文件工程等IDE使用场景。
    在这里插入图片描述
    在这里插入图片描述

  • 主动式标点转换,防止符号误输入
    在编写代码过程中,开发者经常面临在集成开发环境与其他软件之间不断切换使用的场景,可能导致部分全角符号被误输入到代码中,尤其是逗号、分号、圆角括号等半角、全角模式下外观差异不大的标点符号。开发者需要依赖集成开发环境在语法分析、代码编译阶段的报错提示,才能逐个修复误输入的符号。
    而MRS2在支持上述被动检测符号语法的基础上,还增加了主动式标点转换功能,可以将代码编辑区输入的逗号、分号、圆角括号等全角字符直接转换为半角字符,避免了后续手动修改的步骤,提升了代码开发效率。

在这里插入图片描述

3.4智能代码辅助

  • 代码补全
    在MRS2中,可以通过使用代码补全来更快输入代码。只要开始输入关键字、变量名或函数名,MRS2便会提供一系列匹配的建议供你选择。
    在这里插入图片描述

  • 代码格式化
    在软件开发过程中,代码的整洁性和一致性对于提升代码质量和维护效率至关重要。为此,我们提供了强大的代码格式化功能,帮助开发者轻松修正代码的缩进、换行以及重新排列注释,以确保代码结构的清晰和易读。
    此外,我们还支持自定义代码格式模板,允许开发者根据自己的编码习惯和项目需求,灵活设置代码的格式规范。有助于保持代码风格的一致性,从而减少因格式差异而导致的代码审查冲突和误解。
    在这里插入图片描述

  • 代码导航:精准定位,实时更新
    在软件开发过程中,高效地导航代码是提升开发效率的关键。MRS2提供的代码导航功能,不仅能够快速跳转至代码的声明、定义和引用位置,而且具备实时更新的能力,确保即使文件经过修改,导航也不会跳转至过时的位置。
    在这里插入图片描述在这里插入图片描述

  • 代码重构:全局多次重命名,安全可靠
    在软件开发过程中,全局重命名是一项至关重要的功能,它允许开发者快速且准确地更新代码中的变量名、函数名等符号,以保持代码的一致性和可读性。
    MRS2支持跨文件的多次全局重命名,在进行全局重命名时能够理解代码中的上下文和作用域,即使存在相同名称但作用域不同的局部变量,也能被准确地区分和重命名,而且无论涉及的文件数量多少,都能准确且一次性地完成所有相关标识符的更新。

在这里插入图片描述

  • 代码分析:代码质量实时监控(clang-tidy实时分析)
    MRS2能够实时监控代码,寻找其中可能存在的错误。一旦发现任何潜在问题,它会在编辑器中高亮显示可疑的代码段,帮助开发者迅速定位并解决问题。
    在这里插入图片描述

  • 代码诊断:快速修复,高效解决编译问题
    MRS2支持快速修复功能。该功能能够自动为许多常见的编译问题提供修复建议,并且可以根据建议自动更新代码。
    另外MRS2能够智能识别代码中的点操作符(.)和箭头操作符(->),并完成两者的自动转换,有助于减少因操作符使用不当而导致的编译错误。

在这里插入图片描述
在这里插入图片描述

3.5代码编译

  • 可视化编译分析,输出段用量占比全展示
    在嵌入式开发过程中,开发者经常需要留意编译输出文件中芯片FLASH及RAM区的使用情况,防止出现代码超出芯片容量的情况。而大多数集成开发环境在结束编译后,对此类信息的提示往往不够明显、详细,无形中增加了开发者在此类频繁操作上的时间成本和犯错风险。
    MRS2支持在结束编译后可视化展示输出段的详细信息:输出段空间占比,FLASH/RAM使用情况,各变量、函数所在地址、大小、增删状态及所占空间大小变化。所有编译输出的关键信息一目了然,一定程度上提升了嵌入式项目的开发效率。
    在这里插入图片描述

  • 精准链接错误跳转
    在嵌入式开发过程中,GCC链接阶段报错信息的准确性一直是开发者关注的焦点。传统的报错信息往往不够精确,错误跳转位置指向模糊,导致开发者在排查问题时耗时耗力。
    MRS2改善这一情况,优化了错误报告机制,实现了精准的链接错误跳转功能,以提升开发效率。
    在这里插入图片描述

(MRS2)
在这里插入图片描述

(旧版MRS)

3.6代码优化

  • 快速中断:
    增添了一种全新的中断服务程序处理模式,该中断服务程序将原本的 16 个寄存器的压栈、出栈操作予以减少,转而由硬件自动进行保存,提高了硬件中断服务程序的响应时间

在这里插入图片描述

(未开启优化)
在这里插入图片描述

(开启优化)

  • 优化程序存储结构:
    增加了highcode段,并将其部署在RAM区运行,且段中的函数将不会被内联,并对未使用的 highcode 段函数加以优化,降低 RAM和FLASH 的使用量

在这里插入图片描述

(未开启优化)

在这里插入图片描述

(开启优化)

  • 自定义压缩指令:
    新增8 条针对 MCU 8/16位数据操作的XW扩展压缩指令,使用MRS2内置的GCC12.2进行测试。利用 CSIBE Benchmark 进行 CodeSize 的对比实验,CSIBE套件中最好的优化比例为4.01%。
    在这里插入图片描述

  • 添加mcpy指令
    mcpy指令功能与c语言库函数memcpy相同,使用于内存复制搬运场景,能够提高在内存区域与数据宽度非对其时内存搬运的速度。

  • 兼容软件浮点库
    对工具链中的 lib 库生成器以及 link 链接器的代码加以修改,针对未涵盖浮点数的库源码进行处理,生成能够同时兼容 ILP32、ILP32F 这两种 ABI 的库,使得所生成的库能够在具备硬件浮点扩展和不具备硬件浮点扩展的工程中均能正常使用,降低了开发者对库的维护工作量。

  • 运行库优化
    添加基于定点运算的数学函数库 IQMATH
    添加专有打印函数printf,用以缩减代码规模
    GCC8和GCC12生成的库,在链接时能够彼此兼容

3.7代码下载

  • 内置专属下载模块,支持启用外部下载工具
    MRS2内置了适配WCH-Link系列硬件调试器的代码下载模块,支持查询硬件调试器模式、开启/禁用芯片代码保护功能、设置芯片ROM+RAM分配状态、禁用芯片两线调试接口、全擦、下载、校验、复位、启用SDI打印等功能。同时,MRS2还支持切换为其他硬件调试器,按用户指定的启动参数调用外部软件来完成下载操作。
    在这里插入图片描述
    在这里插入图片描述

  • 支持远程下载功能
    MRS2还支持远程下载功能,通过近、远端MRS2中运行的远程协助模块将近端(调试方)编译生成的目标文件加密发送至远端(被调试方),再自动调用远端连接的WCH-Link硬件调试器完成下载操作,并将程序运行结果回显到近端。
    在这里插入图片描述

  • 集成多种独立下载工具
    除了内置的下载功能模块,MRS2还集成了WCHISPStudio、WCH-LinkUtility等独立下载工具,以实现在不同的使用场景、芯片预留接口条件下满足开发者的代码下载需求。

在这里插入图片描述
在这里插入图片描述

3.8代码调试

  • 完整的在线仿真调试功能
    MRS2支持单步运行、重新运行、暂停运行等在线仿真调试功能,提供了代码反汇编、寄存器、外设、调用栈、变量等监控窗口。
    在这里插入图片描述

  • 支持一键开启RISC-V半主机模式(semihosting)
    MRS2支持一键开启semihosting功能,无需开发者手动移植相关接口函数,可直接将打印函数输出的内容显示到控制台。配合简化的printf函数,在减少代码占用的同时,不再额外需要串口硬件、上位机串口接收软件,简化了代码的调试环境搭建过程。
    在这里插入图片描述
    在这里插入图片描述

  • 在线异常追踪调试
    在实际的嵌入式产品使用场景中,有部分代码异常运行现象只会在特定的软硬件环境下偶现。此时如果采用常规的在线仿真调试手段,需要先复位芯片再进入调试模式,从而导致多次重试都无法复现之前的异常现象,极大降低了此类问题的处理效率。
    MRS2针对此类应用场景,特别支持了在线异常追踪调试方法,通过GDB指令,获取芯片当前变量、寄存器、Flash、调用栈内容,无需芯片先复位、运行再去监控变量、寄存器等内容,最大程度保留硬件瞬时状态,利于追踪代码问题。

在这里插入图片描述

  • 支持远程源码级、目标代码级调试
    MRS2还支持远程调试功能,通过近、远端MRS2中运行的远程协助模块将近端(调试方)编译生成的目标文件、调试指令等加密发送至远端(被调试方),再自动调用远端连接的WCH-LinkE硬件调试器与芯片通信,完成各项单步操作,并将单步调试执行结果回显到近端。MRS2也支持远程目标代码级调试:近端用户将修改后编译生成的目标文件远程下载到目标芯片,然后根据远端回显的芯片运行时打印信息来调整近端源码,再重复上述下载、查看回显信息过程,直到确定最终的代码内容。

在这里插入图片描述

四、开放性

  • 开放式厂商组件
    MRS2支持在线更新各类模块组件,如SDK、OpenOCD等。芯片及开发板厂商可以通过MounRiver组件发布平台,上传组件供其他用户下载使用。
    在这里插入图片描述
    在这里插入图片描述

五、下载与更新

  • 访问我们的官方网站:http://www.mounriver.com/download,根据操作系统选择对应的安装包进行下载。
  • 软件支持在线、离线更新操作。
    在这里插入图片描述

六、反馈与建议

  • MRS2内置反馈与建议通道
  • MRS2内置用户手册在这里插入图片描述

相关文章:

基于VSCode软件框架的RISC-V IDE MRS2正式上线发布

基于VSCode软件框架的RISC-V IDE MRS2正式上线发布 一、概述 MounRiver Studio Ⅱ(MRS2)为MounRiver Studio的换代版本,从V2.1开始,框架更换至更现代的VSCode,并深度定制开发。在工程管理、代码编辑、编译、调试等方面均兼容之前版本&#…...

AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲

今年,我有幸亲临现场参加了所有的 keynote,每一场都让我感受到深深的震撼。无论是全新的功能发布,还是令人眼前一亮的新特性展示,每一场 keynote 都精彩纷呈,充满干货,值得反复学习和回味。 恰好&#xff…...

前端小案例——520表白信封

前言:我们在学习完了HTML和CSS之后,就会想着使用这两个东西去做一些小案例,不过又没有什么好的案例让我们去练手,本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…...

FPGA随记——过约束

什么是过约束? 从字面意思来看,所谓过约束是指约束过紧了。这个“过”体现在setup requirement变小了,对于单周期路径,这个值通常与时钟周期一致,但在过约束情况下,等效于这个值变小了,也就是时…...

如何利用云计算进行灾难恢复?

云计算环境下的灾难恢复实践指南 天有不测风云,企业的IT系统也一样,我见过太多因为没有做好灾备而吃大亏的案例。今天就和大家聊聊如何用云计算来做灾难恢复。 一个惊心动魄的真实案例:某电商平台的主数据中心因为市政施工不小心挖断了光纤…...

【华为OD-E卷 - 九宫格按键输入 100分(python、java、c++、js、c)】

【华为OD-E卷 - 九宫格按键输入 100分(python、java、c、js、c)】 题目 九宫格按键输入,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母…...

基于AI大模型的医院SOP优化:架构、实践与展望

一、引言 1.1 研究背景与意义 近年来,人工智能(AI)技术取得了迅猛发展,尤其是大模型的出现,为各个领域带来了革命性的变化。在医疗领域,AI 医疗大模型正逐渐崭露头角,展现出巨大的应用潜力。随着医疗数据的海量积累以及计算能力的大幅提升,AI 医疗大模型能够对复杂的…...

Linux快速入门-一道简单shell编程题目

编写一个 Shell 程序。 功能:在用户家目录下创建一个文件夹myshell;进入此文件夹;在文件中创建文件aa.sh,如果文件夹或文件存在,则提示对象已存在,不创建。 代码编写 #!/bin/bash#获取用户家目录:方便后…...

Hive如何创建自定义函数(UDF)?

目录 1 自定义UDF函数基础 2 自定义UDF函数案例 3 创建临时函数 4 创建永久函数 1 自定义UDF函数基础 1. 内置函数:Hive 自带了一些函数...

聊聊前端框架中的process.env,env的来源及优先级(next.js、vue-cli、vite)

在平时开发中,常常使用vue、react相关脚手架创建项目,在项目根目录可以创建.env、.env.[mode](mode为development、production、test)、.env.local等文件,然后在项目中就可以通过process.env来访问相关的环境变量了。 下面针对如下…...

linux shell脚本 【分支结构case...in 、循环结构、函数】内附练习

1.思维导图 2.练习 1.定义一个find函数&#xff0c;查找ubuntu和root的gid 2.定义一个数组&#xff0c;写一个函数完成对数组的冒泡排序 bubble() {n${#arr[*]}for((i0;i<n-1;i));dofor((j0;j<n-1-i;j));doif ((arr[j]>arr[j1]));thentemp${arr[j]}arr[j]${arr[j1]}a…...

VSCode 终端显示“pnpm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本”

VSCode 终端显示“pnpm : 无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本”VSCode 终端显示“pnpm : 无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本”解决方案&#xff1a; 1.用get-ExecutionP…...

Android ActionBar 技术深度解析

Android ActionBar 技术深度解析 概述 ActionBar 是 Android 应用中的一个核心 UI 组件,用于提供导航、操作和品牌展示。它通常位于应用窗口的顶部,包含应用的标题、导航按钮、操作项等。ActionBar 自 Android 3.0(API 11)引入,并在 Android 5.0(API 21)后被 Toolbar …...

matlab-数字滤波器设计与实战

文章目录 数字滤波器设计FIR 滤波器设计IIR 滤波器设计巴特沃斯滤波器切比雪夫 I 型滤波器切比雪夫II型椭圆滤波器线性相位与非线性相位零相位响应数字滤波器实战数字滤波器产生延迟的主要原因补偿滤波引入的延迟补偿常量滤波器延迟补偿与频率有关的延迟从信号中除去不需要的频…...

JDK的运作原理

JDK&#xff08;Java Development Kit&#xff09;是Java开发者用来构建、编译、调试和运行Java应用程序的一套工具包。其核心原理涉及到Java语言的编译、执行以及Java虚拟机&#xff08;JVM&#xff09;的运作等多个方面。 1. Java编译原理 Java是一种先编译后解释执行的语言。…...

el-table 实现纵向多级表头

为了实现上图效果&#xff0c;最开始打算用el-row、el-col去实现&#xff0c;但发现把表头和数据分成两大列时&#xff0c;数据太多时会导致所在格高度变高。但由于每一格数据肯定不一样&#xff0c;为保持高度样式一致&#xff0c;就需要我们手动去获取最高格的高度之后再设置…...

Android Studio 下载安装教程(2024 更新版),附详细图文

今天&#xff0c;为大家带来的是Android Studio 2024更新版的下载安装教程&#xff0c;包含详细图文步骤。 随着 Android Studio 的不断更新&#xff0c;自从引入 Koala 系列后&#xff0c;其版本号的命名规则也发生了变化。以本次更新为例&#xff0c;版本号为 2024.2.1&#…...

安全框架:Apache Shiro

安全框架&#xff1a;Apache Shiro 前言您的第一个 Apache Shiro 应用程序Multiple Parts&#xff08;多个部分&#xff09;INI配置[main]部分[users]部分[roles]部分[urls]部分默认过滤器常规启用/禁用 密码学会话管理Remember Me 整合SpringBoot登录登录超时记住我注解登录后…...

泊松融合调研

目录 裁剪加速,速度提升2倍多 cuda版: 效果没测,官方效果不错: 效果不好,parosky/poissonblending 裁剪加速,速度提升2倍多 import os import sys import os os.chdir(os.path.dirname(os.path.abspath(__file__))) current_dir = os.path.dirname(os.path.abspath(__…...

uniapp——App下载文件,打开文档(一)

uniapp如何下载文件、打开文件 文章目录 uniapp如何下载文件、打开文件下载文件下载文件成功返回数据格式 打开文档处理 iOS 打开文件可能失败问题 相关API&#xff1a; uni.downloadFileuni.openDocument 注意&#xff1a; 只支持 GET 请求&#xff0c;需要 POST的&#xff…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

Spring事务传播机制有哪些?

导语&#xff1a; Spring事务传播机制是后端面试中的必考知识点&#xff0c;特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发&#xff0c;全面剖析Spring事务传播机制&#xff0c;帮助你答得有…...