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型号,点击应用。
重新下载,成功执行操作。