BES平台笔记3——map文件与RAM空间释放

linux GCC链接生成的map文件

什么是MAP文件?

、

map文件是如何生成的?

在这里插入图片描述

为什么要在调试时生成MAP文件?

在这里插入图片描述

深入了解map文件

BES平台的代码已经构建完成,编译代码过程中自动生成map文件,保存在out/…/目录下
如图:
在这里插入图片描述

Archives linked

Archive member included to satisfy reference by file (symbol)
显示调用库函数信息:来自那个.a中的哪个.o
在这里插入图片描述

Allocating common symbols

末初始化的全局变量:大小、变量、出处
在这里插入图片描述

Discarded input sections

没有被调用的函数和变量
在这里插入图片描述

Memory Configuration

根据.ld文件中MEMORY来划分的内存区域:名称、起始地址、长度、访问权限(x执行权限、r读权限、w写权限、xr可读可执行、xrw可读可写可执行)。
在这里插入图片描述

Linker script and memory map

链接脚本和内存映射
在这里插入图片描述

在MAP文件中查看剩余空间

在map文件中,全局搜索free可以查看相关区域剩余空间
在这里插入图片描述在这里插入图片描述
如果需要释放空间,首先要查map文件,RAM总共多少,编译基础多少,增加宏之后还剩多少,然后看下plat文件的具体分配。

空间不够死机

举个例子:
最近有人问了一个问题,听音乐过程中,耳机死机,日志显示如下:
[syspool_get_buff] size = 73728 , free size = 69360
System pool in shortage! To allocate size 73728 but free size 69360.
在这里插入图片描述很明显,这是音频播放的空间不够死机了,忧郁BES音频播放空间是动态分配的,所以要从其他地方释放空间。解决方向有两,一是关闭不必要的算法,减少算法空间占用,二是检查系统空间分配,将没由用到的空间释放出来。
如:RAMCPX:RAMCPX可以减小,如图就多出0x7e20,看能否正常运行,RACMPX_BASE应该也要改。
在这里插入图片描述RAMCP:RAMCP可以增大,如果编译能过,就持续增大,编译不过可能是RAM不够,就改回去。
在这里插入图片描述FRAMX:还能减小0x5000
在这里插入图片描述在这里插入图片描述修改的地方在plat_addr_map_bestXXXX.h文件中,当然,因为具体芯片不一样,代码可能有不同差别。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值