打印
[IDE]

基于VSCode软件框架的RISC-V IDE MRS2(二)

[复制链接]
323|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 我芯永恒 于 2025-3-28 15:32 编辑

上文书说到《工程创建》《工程配置》《工程管理》《代码编辑》,
今天将继续更新
代码编译》《代码调试》《代码下载》《远程协助《源码阅读》《版本平台》《软件主题风格》《代码区显示风格》《开放性》

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

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


【代码优化】
①        快速中断:
增添了一种全新的中断服务程序处理模式,该中断服务程序将原本的 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生成的库,在链接时能够彼此兼容
        


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

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


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


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

【代码下载】

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




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

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



【远程协助】
无感式远程协助,支持多场景调试代码
在实际的嵌入式项目推进过程中,经常会出现目标设备已经部署到工作环境但运行结果与预期不同的问题。由于涉密或代码管控的限制,往往无法直接将目标源码发送到设备端进行远程调试,所以只能将设备寄回或安排开发者奔赴现场进行问题排查。而MRS2 内置了无感远程协助模块,适用于该硬件设备与软件代码相互隔离的场景,在保证涉密代码安全的同时,减少了项目落地过程中的时间、人力成本。

该无感远程协助模块有以下功能及特点:
1.无感化远程:支持局域网、广域网下一键式建立远程网络连接,无需网络配置;远程下载、调试界面及操作与本地方式相同,符合工程师操作习惯。
2.软硬件隔离:支持工程源码与目标硬件存在空间隔离的远程调试场景,涉密代码无需发送到实际硬件连接的主机。
3.非独占操作:支持不占用整个计算机操作权限的远程方式,远程时不影响被调试方使用MRS2之外的其他软件。
4.代码防泄漏:支持建立复杂网络环境下的点对点加密通信,配合WCH-LinkE进行目标代码加密烧录。
5.适用多场景:支持远程下载、远程调试、远程IO引脚控制、远程串口输出信息回显功能,轻松应对各种远程协助场景。

【源码阅读】
跨文件语法跳转,浏览源码新体验
嵌入式开发中,不同芯片对应的工程源码一般由不同的集成开发环境创建,在需要快速浏览程序源码的场景下,开发者往往会使用编辑器软件来打开单个文件。此时源码中的函数、变量、宏定义等都无法跳转,不利于源码的快速阅读。
MRS2支持以源码文件夹方式打开各类工程,自动检测当前主机已安装的集成开发环境,并在首次浏览该文件夹时弹出配置页面,开发者指定好源码对应的开发环境后,即可支持开发级代码浏览体验:跳转到包含的头文件、快速预览、文件大纲视图、函数、变量、宏定义等跳转到定义位置…


【版本平台】
多平台下完整集成开发环境
MRS2提供了Window、Linux、macOS以及国产桌面操作系统下的集成开发环境版本,支持芯片工程创建、导入,代码编译、编译,下载、调试等完整嵌入式开发功能。

【软件主题风格】
扁平化界面风格,内置多种深浅色主题
MRS2主界面图标、窗体等元素采用了当前主流的扁平化设计风格,内置数十种深浅色主题供用户选择。



【代码区显示风格】
独立可调的代码编辑区缩放比例
MRS2代码编辑区提供独立的缩放功能,让用户可以根据自己的需求调整编辑区的大小,而不受主界面大小变化的影响。

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

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

70

帖子

1

粉丝