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开发编译时,如何修改工程优化等级

具体如下:

或有时编译报错,也可按照下列勾选试一下

IMG_256

MRS进行工程编译时,如何配置FLASH、RAM显示占比

具体配置如下:

配置完成后,编译显示如下:

关于RAM显示占比百分之百问题:这是由ld文件的书写不同导致的,不影响的,data+bss的大小就是实际使用的RAM的大小。若需要修改显示,可将ld文件修改下,修改内容如下图,修改ld文件的同时需要将debug.c文件中的void *_sbrk(ptrdiff_t incr)函数整体注释掉,此处需要注意,修改过后,动态内存分配超出将不会有提示。

1648542383769502.png

打印浮点类型

当需要打印浮点类型时,MRS要进行如下配置,具体如下图:

或只勾选下面这个

IMG_256

配置LD文件在工程中显示

当打开工程没有显示LD文件时,如何配置LD文件在工程中显示,具体如下图。直接在工程文件夹下修改ld文件名称,将.ld文件名称重命名为link.ld,然后将ld文件路径修改

使用sprintf打印

当使用sprintf打印时,如执行sprintf(buf, "%5.1f", fvalue),需进行如下配置:

当重复多次调用相同函数编译出错,删除一些正常

原因如下:

关于MRS 的汇编设置 assembler 和 assembler-with-cpp 的区别以及如何切换

IMG_256

IMG_257

用例程 WebServer参考FreeRTOS,移植FreeRTOS的代码,编译报错,如下图

IMG_258

区别是有没有打开汇编文件的预处理,如下图所示:

IMG_256

关于关键字 __attribute__((section(x)))的使用

IMG_256

关于sprintf打印输出配置

IMG_256

当使用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不初始化

 

posted @ 2023-02-01 11:26  WCH_CH32  阅读(866)  评论(0编辑  收藏  举报