RISC-V IDE MRS2使用笔记(二): 编译后Memory分析

RISC-V IDE MRS2使用笔记(二): 编译后Memory分析

MounRiver Studio2支持在主菜单Project下勾选Show Memory Analysis开启内存分析功能。开启该功能后进行工程编译,无需额外配置工程属性,就可以直观地查看各个段链接后在内存空间的分配信息,以及符号的排列统计。

随着编译后的分析进度完成,编辑器会扩展一个分组区域打开编译结果分析视图。

视图上方以柱形图显示各个section节大小,以及饼图形式展现Flash和RAM的大小和使用量。

  • text为代码节,存储在Flash中
  • data为数据节。初始值在Flash,运行时在RAM
  • bss为未初始化数据节,只存储在RAM中。

对于一般程序,Flash的使用量为.text,.data节大小之和;RAM使用量为.data,.bss节大小之和。

分析视图的下方为符号表,显示符号的类型(函数或变量),名称,地址,大小等详细属性。表中默认以地址递增排序,也可以按需选择大小排序。

通过符号表,物理内存分布一目了然,此外方便工程师进行一些功能优化:

i.代码膨胀定位:快速识别占用空间最大的函数

ii.库函数优化:发现大型库函数,考虑替换或优化实现

iii.异常快速定位:通过程序计数器pc值直接定位故障函数,协助调试

iv.缓存局部性优化:将频繁调用的函数集中放置,提高指令缓存命中率;分支预测改善:

变化和状态栏显示了同个工程与上一次编译时的符号状态和大小变化值。我们通过将例程模块简单修改后重新编译。改动后打印函数后未被调用,打印库中相关函数都没有被链接,因此代码体积减小,区域FLASH和RAM大小骤减,库函数如memset状态为removed。关联的符号变化和在表中均能直观体现。

内存分析下方的符号视图还提供了上下文菜单。选择某符号的行后右键,支持跳转到符号在源码中定义位置。

右键符号,同样支持跳转到该符号反汇编对应位置,编辑器会打开其所在编译单元中间文件(.o)的反汇编结果,供用户快速浏览处理优化后的汇编指令。

相关推荐
青山是哪个青山5 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
hsjiasb6 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
Shell运维手记8 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
FakeOccupational9 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
动词ing9 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
2401_8582861110 小时前
VSCODE远程链接错误: 无法建立链接,过程试图写入的管道不存在的解决方法
ide·vscode·编辑器
周洲083010 小时前
STM32 GPIO 外部中断深度解析:边沿触发 / 电平触发、NVIC 优先级配置、中断嵌套实战
stm32·单片机·嵌入式硬件
轻微的风格艾丝凡10 小时前
波形异常记录--零飘过大
嵌入式·硬件工程·dsp
LCG元10 小时前
STM32F103 CAN 总线通信实战:标准库双机通信与过滤器配置精讲
stm32·单片机·嵌入式硬件
z落落11 小时前
C# Modbus-ASCII 超详细完整笔记(协议原理+LRC算法+读写源码全拆解)
笔记