RISC-V IDE MRS使用笔记(十):嵌入式编程开发技巧汇总

news2024/11/18 0:44:41

RISC-V IDE MRS使用笔记(十):嵌入式编程开发技巧汇总

MRS常见嵌入式开发技巧:

Q1:如何修改程序编译生成库?
A1:在工具栏中点击活动工程的编译配置按钮,在Build Artifact的Tab页面指定目标类型,选中为Static Library
在这里插入图片描述

点击Apply and Close应用编译配置。此时会提示建议将调试等级设置为None,优化等级设为Os,这是为了减少生成库的大小并且防止源码被反汇编而泄露。点击OK,即可自动设置。
在这里插入图片描述

点击编译按钮,在输出目录obj下就生成了静态库。默认为lib {ProjName}.a,{ProjName}为宏变量,代表工程名。如下图,本例中会生成libusart.a
在这里插入图片描述

Q2:如何程序编译后的目标名称?
A2:如需指定目标输出的名称,在Q1的例子中,工程配置的同个Tab界面,可以修改相关的前缀、名称和扩展名
在这里插入图片描述

编译为elf时,根据工程配置会伴随生成hex、bin,以及list和map文件,用户如果不想名称与工程相同,逐个重命名这些文件会比较麻烦。修改此处的Artifact name即可统一指定。
前缀、扩展一般来说无需修改,因为elf的后缀、库的前缀与扩展名是确定的。

Q3:编译报错找不到链接库,报错信息”ld.exe: cannot find -lxxx”
A3:这种情况下已经编译完了各个源文件,链接过程中在搜索路径中找不到xxx库文件。因此打开工程属性页中编译配置,在Tool Settings的TAB页面下查看C Linker工具的库搜索路径,检查是否缺失了需要链接的.a。
在这里插入图片描述

Library search Path(库搜索路径)格式一般是工程变量表示的逻辑路径,对应工程树的结构。这种情况下在工程树中展开对应的目录,直观检查即可。

本例中,检查NetLib文件夹,发现缺失libwchnet.a,从系统中拖拽库文件到工程树的NetLib目录节点(或者复制该文件,选中NetLib目录,ctrl+V粘贴),再F7执行增量编译,就能成功编译了。

若库搜索路径的格式是绝对路径,打开电脑文件浏览器对应位置检查,添加缺失的即可。如果路径在本机找不到,说明可能工程是由其他电脑拷贝而来的,需要在上图的界面中重新添加。此处不建议再添加绝对路径,而是在添加/编辑时点击Workspace,选中工程下的资源后自动生成逻辑路径。避免工程拷贝后继续出现绝对路径错误的情况。
在这里插入图片描述

Q4:外部链接目录失效,如何恢复?
在这里插入图片描述
A4:方法一:删除并重新添加:选中失效的链接目录,快捷键delete。确认删除。随后右键工程,重新添加外部链接目录,在文件浏览器中找到位置并确认。
在这里插入图片描述在这里插入图片描述

方法二:更新链接位置。右键失效链接目录,点击Properties,Resource分类下可以查看到记录的逻辑路径Location,以及解析后的绝对路径Resolved location。当前情况下Resolved Location自然是不存在的。点击Edit,弹出窗体中,点击Folder,指定要链接的位置。最好点击OK进行更新即可。
在这里插入图片描述

因此,即使用户在工程编译配置中尽量使用了逻辑路径(如Q3中的例子),但本机下的目录移动、删除仍有概率导致外部链接目录失效,建议尽量在MRS软件中操作目录和文件!

Q5:下载过程中未成功执行,也未报错
在这里插入图片描述

A5:旧工程缺失了MCU型号字段。点击工程树右上角的按钮Configure MCU Debugger,设置工程对应的芯片MCU型号,点击应用。

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

重新下载,成功执行操作。

在这里插入图片描述

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

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

相关文章

uniapp仿浙北惠生活微信小程序

最近给公司写了一个内部微信小程序,功能比较简单,之前是用微信小程序原声写的,一遍看文档一边写,js,wxml,wxcc,json分在不同文件的写法很不习惯,于是花了两天用uniapp重写了一遍&…

思维导图对我生活以及工作的帮助(用户投稿)

作为一名白领,我每天都面临着各种各样的工作和生活压力。 为了更好地应对这些挑战,我开始尝试使用思维导图来帮助自己更好地组织和管理各种信息和任务。其中一款非常优秀的软件就是ProcessOn思维导图,它为我的工作和生活带来了很多便利和帮助…

Spring Boot|启动图案修改ASCII字符画

效果图 实现 在项目目录的resources文件夹中新建一个banner.txt,将内容放入即可: // _ooOoo_ // // o8888888o // // …

华为ENSP配置无线AC-网关模式

1、配置交换机以及AC的接口为trunk 交换机 vlan b 10 20 # interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 10 20 # # interface GigabitEthernet0/0/2port link-type trunkport trunk pvid vlan 10port trunk allow-pass vlan 10 20 # …

Linux系统安装QQ最新版 2023-06-30

腾讯在2023-05-30更新了linux版的qq,这次界面终于不再复古,好看多了。 安装步骤: 1.进入官网,寻找合适的安装包下载 https://im.qq.com/linuxqq/index.shtml 选择跟自己计算机匹配的版本,一般都是X86,如…

JAVA-编程基础-05-方法的定义、调用、重载

Lison <dreamlison163.com>, v1.0.0, 2023.03.22 JAVA-编程基础-05-方法的定义、调用、重载 文章目录 JAVA-编程基础-05-方法的定义、调用、重载方法的概念什么是方法 方法的定义和调用无参数方法定义和调用方法调用过程图解 带参数方法的定义和调用带返回值方法的定义和…

Ureport 多数据集合关联显示

ureport 使用较少&#xff0c;目前单位这边有项目正好使用到了&#xff0c;也遇到不少坑&#xff0c;和其他报表稍微有些不同&#xff0c;在这里记录一下&#xff0c;为大家排一下坑 目前需求是要求数据以这样显示 1、创建数据源 1.1 B2、C1、D2 、C4、C2 各使用了不同的数据…

chatGPT流式回复是怎么实现的

chatGPT流式回复是怎么实现的 先说结论&#xff1a; chatGPT的流式回复用的就是HTTP请求方案中的server-send-event流式接口&#xff0c;也就是服务端向客户端推流数据。 那eventStream流式接口怎么实现呢&#xff0c;下面就进入正题&#xff01; 文章目录 chatGPT流式回复…

UE5ControlRig脚部IK匹配地面(FootIK)的简易实现

UE的Foot IK可以有多套方案&#xff0c;老的有动画蓝图中用TwoBoneIK&#xff0c;新的做法有ControlRig的BasicIK、FullBodyIK。博主针对FootIK做一个简单的验证&#xff0c;因此使用ControlRigTwoBoneIK的做法&#xff0c;并做一下记录&#xff0c;之前做过UE FootIK的大佬可以…

小白到运维工程师自学之路 第四十四集 (mariadb高可用集群故障转移)

一、概述 故障转移是指在集群中某个节点发生故障时&#xff0c;自动将服务转移到其他正常节点上的 过程。在MariaDB高可用集群中&#xff0c;通常使用主从复制的方式来实现故障转移。其中一个 节点被指定为主节点&#xff0c;负责处理所有的写操作和部分读操作&#xff0c;其…

通过无模型多代理强化学习掌握Stratego游戏

Stratego是一款流行的双人不完美信息棋盘游戏。由于其复杂性源于其巨大的游戏树、在不完善的信息下进行决策以及一开始的分段部署阶段&#xff0c;Stratego对人工智能&#xff08;AI&#xff09;构成了挑战。以前的计算机程序充其量只在业余水平上运行。 Perolat等人引入了一种…

Crontab的sendmail邮件发送引发磁盘问题

一.背景 大清早的收到一台服务器的内存占用高达98%的钉钉告警。 回想了一下&#xff0c;这台服务器没跑什么业务啊&#xff0c;咋从凌晨1点就开始告警呢? 赶紧登录服务器&#xff0c;top 按照内存倒序一下&#xff0c;没发现占用特别大的进程。内存监控图如下: 但是发现了很…

Windows环境本地部署Oracle11g r2实操手册

前言&#xff1a;一直在做其他测试&#xff0c;貌似都忘了Windows环境oracle安装&#xff0c;这是一个很早很早的安装记录了&#xff0c;放上来做个备录给到大家参考。 环境&#xff1a; &#xff08;都是常规系统及工具&#xff0c;官网度娘搜索即可下载测试学习&#xff09;…

通过无代码CDC工具实现Oracle实时同步到Mysql

Oracle数据实时同步需求 现代企业对于数据实时同步的需求日益迫切&#xff0c;特别是在涉及Oracle数据库的情况下。实时同步数据对企业来说至关重要&#xff0c;因为它可以确保不同系统之间的数据始终保持一致性和最新性&#xff0c;提供准确的决策支持和及时的业务反应。 针…

Leetcode-每日一题【725.分隔链表】

题目 给你一个头结点为 head 的单链表和一个整数 k &#xff0c;请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等&#xff1a;任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列&#…

在 JavaScript 中获取选中或突出显示的文本

本文将展示我们如何使用 DOM API 来让用户在屏幕上突出显示或选择文本。 DOM API 为我们提供了 getSelection() 方法&#xff0c;该方法允许我们获取用户选择的文本。 窗口对象可以直接访问这个方法。 让我们看看如何实际实现此功能。 使用 JavaScript 中的 window.getSelecti…

Vscode快速对比两个文件的不同部分

文件对比第一种方法&#xff1a; 打开vscode&#xff0c;打开文件或者文件夹 选中需要对比的文件 按住ctrl选择要对比的另一个文件&#xff0c;鼠标右键选择将已选项进行比较 结果如下&#xff1a; 文件对比第二种方法&#xff1a; 打开文件&#xff0c;点击鼠标右键 命…

牛客网论坛考研计算机组成原理笔记,GitHub已下载量已过百万

**前言&#xff1a;**看过很多书&#xff0c;但总是忘得很快。知识广度越大越容易接纳新东西&#xff0c;但从考察角度来说&#xff0c;自然是对某个方面了解越深越好。那些大而全的著作虽然每本都是经典中的经典&#xff0c;但实际工作中可能只用到其中的一小部分。我现在越发…

机器学习13: 使用 TensorFlow 进行二元分类(Binary Classification)编程实践

在【机器学习6】和【机器学习9】中&#xff0c;我们使用 TensorFlow 进行了“线性回归模型”和“组合特征”编程实践。本质上&#xff0c;其中采用的都是回归模型&#xff0c;也就是说&#xff0c;我们创建了产生浮点预测的模型&#xff0c;比如“这个社区的房子要花 N 千美元。…

基于matlab深度学习的多光谱图像语义分割(附源码)

一、前言 此示例演示如何使用 U-Net 对具有七个通道的多光谱图像执行语义分割。 语义分割涉及用类标记图像中的每个像素。语义分割的一个应用是跟踪森林砍伐&#xff0c;即森林覆盖率随时间的变化。环境机构跟踪森林砍伐&#xff0c;以评估和量化一个地区的环境和生态健康状况…