RISC-V IDE MRS无感远程协助模块详解
RISC-V IDE MRS无感远程协助模块详解
一、说明
1.1 概述
针对RISC-V/ARM等内核MCU的嵌入式集成开发环境MRS(MounRiver Studio)从V1.90版本开始内置无感远程协助模块(Sensorless Remote Assistant Module,以下简称SRA模块)。SRA模块是一款支持远程下载、调试、串口数据回显等功能的集成开发环境综合单元,提供了局域网、广域网环境下的专业嵌入式开发协助解决方案。
在实际的嵌入式项目推进过程中,经常会出现目标设备已经部署到工作环境但运行结果与预期不同的问题。由于涉密或代码管控的限制,往往无法直接将目标源码发送到设备端进行远程调试,所以只能将设备寄回或安排开发者奔赴现场进行问题排查。而MRSSRA模块则适用于该硬件设备与软件代码相互隔离的场景,在保证涉密代码安全的同时,减少了项目落地过程中的时间、人力成本。
1.1.1 软硬件连接
SRA模块进行无感远程协助时,两台不同主机上的MRS分别作为近端(调试方)与远端(被调试方)。根据网络环境的差异,也分为局域网以及广域网无感远程协助模式。

1.1.2 运行环境
MRS版本V1.90及以上。
WCH-LinkE固件版本V2.10及以上。
计算机系统Win7及以上。
1.1.3 功能特点
相较于目前已有的远程桌面工具或集成开发环境自带的远程软件,MRS SRA模块有以下功能特点:
- 免网络设置:支持自适应网络模式,局域网、广域网下一键建立远程网络连接,无需网络配置。

- 防代码泄漏:支持工程源码与目标硬件存在空间隔离的远程调试场景,涉密代码无需发送到目标硬件连接的主机。

- 非独占操作:远程时不占用整个计算机操作权限,不影响被调试方使用MRS之外的其他软件。

- 集多重加密:使用IoCHub[注1]建立各网络环境下的点对点加密通信,配合WCH-LinkE进行目标代码加密烧录。

- 需操作授权:远端每次等待远程连接前,会实时生成唯一授权码,近端得到授权后才可以建立远程连接;远程下载、调试界面及操作与本地方式相同,兼容常规操作习惯。

注1: IoCHub是一种能自适应广域网、局域网的透明直传解决方案,仅需调用一套接口,就能让设备间实现高效、安全、稳定的点对点数据透传。MRS无感远程协助模块集成了IoCHub,通过其建立调试器软件的远程通信。在远程通信过程中IoCHub在远近端分别扮演调试器Client与调试器Server的角色。
1.1.4 应用场景
SRA模块支持远程下载、远程调试、远程IO信号控制、远程串口输出信息回显等功能,可应用于以下远程协助场景:

1.2 界面
SRA远程软件其整体界面如下,红框标记的分别为MRS中远程下载、远程调试以及SRA模块功能按钮。用户在远程协助时只用选择本机模式(调试方或被调试方),无需进行其他的网络配置。

未建立远程连接时,远程下载、远程调试按钮为灰化状态,此时只能进行本地下载、调试操作:

建立远程连接后,远程下载、远程调试按钮为使能状态,此时可以进行本地或远程下载、调试操作:

二、使用
2.1 建立SRA远程连接
在MRS的工具栏中点击无感远程协助按钮弹出远程软件界面,默认使用自适应网络模式,无需用户手动进行网络配置。远端用户只要点击开始远程调试按钮,将动态生成的远程授权码告知近端用户,等待近端与其建立远程连接即可。

2.2 执行SRA远程操作
2.2.1 远程下载
建立连接后,点击MRS界面的远程下载按钮,即可将近端编译生成的目标代码下载至远端设备,此时远端设备WCH-LinkE输出的信息将回显至MRS控制台。


2.2.2 远程调试
2.2.2.1 远程目标调试
SRA模块支持远程目标调试功能:近端用户将修改后编译生成的目标文件远程下载到目标芯片,然后根据远端回显的芯片运行时打印信息来调整近端源码,再重复上述下载、查看回显信息过程,直到确定最终的代码内容。

2.2.2.2 远程在线仿真
SRA模块也支持远程在线仿真功能:建立连接后,点击MRS界面的远程调试按钮,即可进行源码的远程在线仿真调试。整体操作与各项监控信息窗口与本地仿真调试无异,可以进行设断点、单步执行、全速执行、重新执行等操作。此时远端设备的调试信息仍会回显至近端。

2.2.3 远程IO控制
建立远程连接后,近端可以远程设置远端WCH-LinkE硬件的3.3v/5v引脚、RST引脚IO信号以及目标芯片的读保护状态。

2.2.4 远程串口回显
建立远程连接时,远端可以选择已连接的WCH-LinkE串口,将芯片串口TX引脚与WCH-LinkE RX引脚相连,再通过嵌入式代码将输出的打印信息流定向到该串口。
示例代码
__attribute__((used)) int _write(int fd, char *buf, int size){int i;for(i = 0; i < size; i++){#if(DEBUG == DEBUG_UART1)while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);USART_SendData(USART1, *buf++);#elif(DEBUG == DEBUG_UART2)while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);USART_SendData(USART2, *buf++);#elif(DEBUG == DEBUG_UART3)while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);USART_SendData(USART3, *buf++);#endif}return size;}
远程协助时,近端调试者可以在MRS控制台和远程软件输出框中查看目标硬件的串口输出内容。

2.3 断开SRA远程连接
建立远程连接后,近端调试者和远端被调试者都可以主动断开SRA远程连接。

2.4 用户意见在线反馈
用户可以通过MRS用户意见在线反馈功能,将文字、图片、压缩包文件等反馈内容实时发送到MRS技术支持邮箱。

相关文章:
RISC-V IDE MRS无感远程协助模块详解
RISC-V IDE MRS无感远程协助模块详解 一、说明 1.1 概述 针对RISC-V/ARM等内核MCU的嵌入式集成开发环境MRS(MounRiver Studio)从V1.90版本开始内置无感远程协助模块(Sensorless Remote Assistant Module,以下简称SRA模块)。SRA模块是一款支…...
APA技术方案及关键点
APA即我们平时用的最多的基础泊车功能(自动泊车辅助),按照功能来分,有下列子功能: 1.AVM(全景影像),四路环视鱼眼动态拼接,去畸变,提供给用户车身周围360的环境图像信息,有2D(单路鱼眼图)&…...
WordPress外链页面安全跳转插件
老白博客我参照csdn和腾讯云的外链跳转页面,写了一个WordPress外链安全跳转插件:给网站所有第三方链接添加nofollow标签和重定向功能,提高网站安全性。插件包括两个样式,由于涉及到的css不太一样,所以分别写了两个版本…...
【牛客网】安全—加密和安全
每日一练 Day1: 1.信息安全的基本属性是( D ) A.保密性 B.完整性 C.可用性,可靠性,可控性 D.A、B、C都是 信息安全的基本属性通常可以归纳为以下几个方面: 保密性(Confidentiality…...
Mybatis基础操作
基础操作 增删改查 Select 是查询类的注解,所有的查询均使用这个Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。Insert 插入数据库使用ÿ…...
Java实验二类编程实验
1.编写一个代表三角形的类(Triangle.java)。 其中,三条边a,b,c(数据类型为double类型)为三角形的属性,该类封装有求三角形的面积和周长的方法。分别针对三条边为3、4、5和7、8、9的两个三角形进行测试&…...
css文本溢出省略号多行单行例子详细
在 CSS 中,可以使用 text-overflow: ellipsis; 属性来实现文本溢出时自动省略号的效果。但是该属性只能用于单行文本溢出的情况,对于多行文本溢出的情况,需要使用一定的技巧才能实现相应的效果。下面将分别介绍单行和多行文本溢出时的实现方法…...
android auto
测试面向汽车的 Android 应用 | Android 开发者 | Android Developers (google.cn)...
opengl基础笔记1
1、opengl运行模式及opengl规范 运行模式:核心模式与立即渲染模式(弃用) 由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL…...
Flutter中的各种刷新小部件
1.FutureBuilder 用于处理异步操作和构建界面的非常有用的小部件。它通常与 Future 对象一起使用,用于在异步操作完成后构建界面。 import package:flutter/material.dart;void main() > runApp(MyApp());class MyApp extends StatelessWidget {overrideWidget…...
DataxWeb安装部署及使用--真香警告
DataxWeb安装部署及使用–真香警告 文章目录 1.Datax简介1.1 Datax是什么?1.2 Datax的架构1.3 设计理念1.4 DataX3.0框架设计1.5 DataX3.0插件体系1.6 DataX3.0核心架构1.6.1 核心模块介绍1.6.2 DataX调度流程 2.DataxWeb简介2.1 DataxWeb是什么?2.2 Dat…...
OpenCV 笔记(4):图像的算术运算、逻辑运算
Part11. 图像的算术运算 图像的本质是一个矩阵,所以可以对它进行一些常见的算术运算,例如加、减、乘、除、平方根、对数、绝对值等等。除此之外,还可以对图像进行逻辑运算和几何变换。 我们先从简单的图像加、减、逻辑运算开始介绍。后续会有…...
创建ABAP数据库表和ABAP字典对象-使用已存在的数据元素增加城市字段04
基于内置域增加一个字段 1.在编辑器中,输入字段的名称,后跟冒号:city:。暂时忽略这个错误。2. 输入/MOC/C并使用自动补全(**Ctrl空格**),输入类型。3. 然后添加一个分号:city: /moc/city;4.在SAP GUI中查看,字段已经新增...
Centos7上安装 Node.js
文章目录 一、前言二、步骤三、涉及nodejs,centos还是少用吧 一、前言 centos7安装nodejs如果直接安装较高版本会包错误,无法运行npm node: /lib64/libm.so.6: version GLIBC_2.27‘ not found (required by node)二、步骤 网上说的下载升级编译器的方…...
栈及其栈的模拟实现和使用
1. 栈(Stack) 1.1 概念 栈 :一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO ( Last In First Out )的原则…...
HarmonyOS开发:开源一个刷新加载组件
前言 系统Api中提供了下拉刷新组件Refresh,使用起来也是非常的好用,但是风格和日常的开发,有着巨大的出入,效果如下: 显然上面的效果是很难满足我们实际的需求的,奈何也没有提供的属性可以更改,…...
XSSFWorkbook读取模板,批量填充并导出文件
1、pom文件导入 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>…...
Lazada新店运营秘籍自养号测评技术
跨境行业的前途虽然大好,但要想真正从中分一杯羹并非易事。东南亚市场前景大好,而作为其主流在线购物网站之一,Lazada吸引了众多卖家和买家。作为新手来说,注册好Lazada之后,店铺下一步该怎么做呢?赶紧来看…...
python:逐像素处理遥感数据时间序列数据(求时间序列最大值、最大值所对应的索引、最大值所在的时间)
作者:CSDN @ _养乐多_ 本文记录了使用gdal、ras、numpy 库实现遥感时间序列数据逐像素处理的代码。并以求NADVI时间序列最大值为例。代码可扩展到其他多种对时间序列的处理,比如MK趋势分析,求时间序列中值、众数、标准差、和,时间序列拟合、异常检测、机器学习预测等多种应…...
SpringCloudGateway--过滤器(自定义filter)
目录 一、概览 二、通过GatewayFilter实现 三、继承AbstractGatewayFilterFactory 一、概览 当使用Spring Cloud Gateway构建API网关时,可以利用Spring Cloud Gateway提供的内置过滤器(filter)来实现对请求的处理和响应的处理。过滤器可以…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
