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

linux GCC链接生成的map文件

什么是MAP文件?

BES平台笔记3——map文件与RAM空间释放_第1张图片

map文件是如何生成的?

BES平台笔记3——map文件与RAM空间释放_第2张图片

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

在这里插入图片描述

深入了解map文件

BES平台的代码已经构建完成,编译代码过程中自动生成map文件,保存在out/…/目录下
如图:
BES平台笔记3——map文件与RAM空间释放_第3张图片

Archives linked

Archive member included to satisfy reference by file (symbol)
显示调用库函数信息:来自那个.a中的哪个.o
BES平台笔记3——map文件与RAM空间释放_第4张图片

Allocating common symbols

末初始化的全局变量:大小、变量、出处
BES平台笔记3——map文件与RAM空间释放_第5张图片

Discarded input sections

没有被调用的函数和变量
BES平台笔记3——map文件与RAM空间释放_第6张图片

Memory Configuration

根据.ld文件中MEMORY来划分的内存区域:名称、起始地址、长度、访问权限(x执行权限、r读权限、w写权限、xr可读可执行、xrw可读可写可执行)。
BES平台笔记3——map文件与RAM空间释放_第7张图片

Linker script and memory map

链接脚本和内存映射
BES平台笔记3——map文件与RAM空间释放_第8张图片

在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平台笔记3——map文件与RAM空间释放_第9张图片很明显,这是音频播放的空间不够死机了,忧郁BES音频播放空间是动态分配的,所以要从其他地方释放空间。解决方向有两,一是关闭不必要的算法,减少算法空间占用,二是检查系统空间分配,将没由用到的空间释放出来。
如:RAMCPX:RAMCPX可以减小,如图就多出0x7e20,看能否正常运行,RACMPX_BASE应该也要改。
BES平台笔记3——map文件与RAM空间释放_第10张图片RAMCP:RAMCP可以增大,如果编译能过,就持续增大,编译不过可能是RAM不够,就改回去。
BES平台笔记3——map文件与RAM空间释放_第11张图片FRAMX:还能减小0x5000
BES平台笔记3——map文件与RAM空间释放_第12张图片BES平台笔记3——map文件与RAM空间释放_第13张图片修改的地方在plat_addr_map_bestXXXX.h文件中,当然,因为具体芯片不一样,代码可能有不同差别。

你可能感兴趣的:(BES,笔记)