MRS_开发编译与设置相关问题汇总
解决问题如下:
- MRS开发编译时,如何修改工程优化等级
- MRS进行工程编译时,如何配置FLASH、RAM显示占比
- 打印浮点类型
- 配置LD文件在工程中显示
- 使用sprintf打印
- 当重复多次调用相同函数编译出错,删除一些正常
- 关于MRS 的汇编设置 assembler 和 assembler-with-cpp 的区别以及如何切换
- 关于关键字 __attribute__((section(x)))的使用
- 关于sprintf打印输出配置
- 当使用MounRiver编译遇到下列问题
- MRS使用C++编译修改方法
- 关于编译器默认是char还是unsigned char的问题
- MounRiver同时生成hex文件和bin文件设置方法
- MRS将变量指定RAM区域Noinit不初始化
MRS开发编译时,如何修改工程优化等级
具体如下:
或有时编译报错,也可按照下列勾选试一下
MRS进行工程编译时,如何配置FLASH、RAM显示占比
具体配置如下:
配置完成后,编译显示如下:
关于RAM显示占比百分之百问题:这是由ld文件的书写不同导致的,不影响的,data+bss的大小就是实际使用的RAM的大小。若需要修改显示,可将ld文件修改下,修改内容如下图,修改ld文件的同时需要将debug.c文件中的void *_sbrk(ptrdiff_t incr)函数整体注释掉,此处需要注意,修改过后,动态内存分配超出将不会有提示。
打印浮点类型
当需要打印浮点类型时,MRS要进行如下配置,具体如下图:
或只勾选下面这个
配置LD文件在工程中显示
当打开工程没有显示LD文件时,如何配置LD文件在工程中显示,具体如下图。直接在工程文件夹下修改ld文件名称,将.ld文件名称重命名为link.ld,然后将ld文件路径修改
使用sprintf打印
当使用sprintf打印时,如执行sprintf(buf, "%5.1f", fvalue),需进行如下配置:
当重复多次调用相同函数编译出错,删除一些正常
原因如下:
关于MRS 的汇编设置 assembler 和 assembler-with-cpp 的区别以及如何切换
用例程 WebServer参考FreeRTOS,移植FreeRTOS的代码,编译报错,如下图
区别是有没有打开汇编文件的预处理,如下图所示:
关于关键字 __attribute__((section(x)))的使用
关于sprintf打印输出配置
当使用MounRiver编译遇到下列问题
可在工程属性页勾选汇编预处理选项尝试解决该问题,如下:
MRS使用C++编译修改方法
1、选中工程 右键 new->other
注意事项:
1、
la a0,__libc_fini_array
call atexit
call __libc_init_array
2、
void _init(void){}
void _fini(void){}
关于编译器默认是char还是unsigned char的问题
不勾选 char默认是unsigned char;勾选后默认是signed char。
如果不确定可通过以下函数确认:
MounRiver同时生成hex文件和bin文件设置方法
注:配置后点击应用并关闭
图二中构建bin文件指令:
riscv-none-embed-objcopy -O binary "${ProjName}.elf" "${ProjName}.bin"
如果你的MounRiver在图一选择的输出bin文件则图二可以使用以下指令:
riscv-none-embed-objcopy -O ihex "${ProjName}.elf" "${ProjName}.hex"
MRS将变量指定RAM区域Noinit不初始化