打印
[单片机芯片]

MounRiver怎样查看占用多少ROM和RAM

[复制链接]
1304|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
例如用MounRiver编译CH32V103C8T6工程后,出现如下信息:

请问有办法查看或计算编译后的工程能占用单片机多少ROM和RAM吗?
CH32V103C8T6是64K FLASH,20K RAM的。

使用特权

评论回复
沙发
WCHTech37| | 2022-3-17 19:27 | 只看该作者
您好,MRS开启ROM、RAM占比功能方法如下图所示:
打开工程属性配置页,在C/C++ Build->Settings->Tool Settings选项列表中单击GNU RISC-V Cross C Linker->Miscellaneous,然后在右侧Linker flags窗口添加命令行:“—print-memory-usage”,最后点击Apply and Close保存修改。

更多MRS功能、开发技巧及开发实例详见: https://blog.csdn.net/qq_36353650?spm=1000.2123.3001.5343


使用特权

评论回复
板凳
wgtwgtwgt|  楼主 | 2022-3-17 21:37 | 只看该作者
本帖最后由 wgtwgtwgt 于 2022-3-17 21:43 编辑
WCHTech37 发表于 2022-3-17 19:27
您好,MRS开启ROM、RAM占比功能方法如下图所示:
打开工程属性配置页,在C/C++ Build->Settings->Tool Sett ...

谢谢,能打印出ROM和RAM的使用率,只是RAM直接显示使用100%了,翻看您所给的链接,看到专门有一个帖子用于解决RAM占用100%的问题。只是该帖子所给的方法:

对于MRS v1.70版本会导致错误:


我来回改了几次,发现替换成下图所示时,错误就消失了:


还有这个:

也能解决之前的错误。

似乎只要". = . + __stack_size;"存在就有问题,去掉这句话后就没问题了,也不知道能不能解决帖子最后所提到的”该写法在RAM区使用量超出实际堆栈大小时不会有提示,大家在使用时需要自行检查,以防出现未知错误“。


使用特权

评论回复
地板
ufbycd| | 2022-3-19 19:56 | 只看该作者
本帖最后由 ufbycd 于 2022-3-19 19:59 编辑

为什么要搞得这么复杂?编译后不是已经用GCC工具链的size命令(arm-none-eabi-size)打印出来了吗?!
ROM = text + data
RAM = bss + data

看一眼那个输出就一眼了然了吧。

使用特权

评论回复
5
wgtwgtwgt|  楼主 | 2022-3-19 21:05 | 只看该作者
本帖最后由 wgtwgtwgt 于 2022-3-19 21:52 编辑
ufbycd 发表于 2022-3-19 19:56
为什么要搞得这么复杂?编译后不是已经用GCC工具链的size命令(arm-none-eabi-size)打印出来了吗?!
ROM  ...

谢谢回复
MRS有个问题,对于用它创建的CH32V103工程,编译后bss数值大了2048:

上图实际的RAM应是24+(2056-2048)=24+8=32B
bss数值多出的2048,与Link.ld文件这里有关:

若将Link.ld最后的一句话注释掉,bss就不会多2048了:

也可能是我理解错误,请问编译后工程的RAM占用量需要加上_stack_size的数值吗?@ufbycd
也不知道MRS的开发团队注意到这个问题没有 @WCHTech37  



使用特权

评论回复
6
ufbycd| | 2022-3-21 11:01 | 只看该作者
本帖最后由 ufbycd 于 2022-3-21 11:08 编辑
wgtwgtwgt 发表于 2022-3-19 21:05
谢谢回复
MRS有个问题,对于用它创建的CH32V103工程,编译后bss数值大了2048:

那个__stack_size 并不是一个问题,那是预留给动态申请内存(malloc)用的堆空间,当然如果你不用malloc自然可以把它去掉。也不建议在裸机系统用malloc

使用特权

评论回复
7
wgtwgtwgt|  楼主 | 2022-3-21 12:44 | 只看该作者
ufbycd 发表于 2022-3-21 11:01
那个__stack_size 并不是一个问题,那是预留给动态申请内存(malloc)用的堆空间,当然如果你不用malloc自 ...

谢谢。
如果是裸机的话,MRS自动生成的工程,什么也不想改,编译后,RAM占比是否应该加上__stack_size的数值?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

191

帖子

3

粉丝