- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MTK平台内存使用总结
MTK平台内存使用总结:
物理内存:
物理内存不止一块。
外部RAM
最大的那一块了,如果不做设置,代码中使用的内存空间被放在这里。
为了降低成本,绝大多数方案目前使用4MB内存,少数使用8MB。
内部RAM(或称为 紧密耦合内存、TCM)
这块内存在不同硬件平台中大小不同,常见的6225上为72KB。
速度应该快些,系统中将软解码各种格式图片时使用到的栈空间放到这里。
其他芯片内存。
例如常见的25平台上有一块称为“INTSRAM_MULTIMEDIA”的内存,48K大小。
这块内存在23、35上没有。(当然23、35上也有25所没有的内存)
系统对于内存的管理:
MTK平台上的内存动态分配均是对已分配内存的“复用”。
要深入的理解并使用好内存,有必要看一下SCAT文件。
(SCAT文件,ARM分散链接文件,描述ROM、RAM大致分配情况)
EXTSRAM_LARGEPOOL_NORMAL 0 {
; For MT6228, MT6229 projects, app-based ASM always at first due to Java FBBR
app_mem.obj (LARGEPOOL_FIRST_ZI)
ScrMemMgr.obj (LARGEPOOL_ZI)
//一般方案不做java支持,下面的这个内存池是无效的
j2me_custom_resource.obj (LARGEPOOL_ZI)
med_main.obj (LARGEPOOL_ZI)
}
这部分内容描述了内存中的几大内存池。
其中:
0上文中所说的外部RAM的起始地址。
ZI:无初始值内存数据,就是零。
LARGEPOOL:内存池,开机之后大块的全零数据,可以对其进行复用,但要保证不冲突。实际上,MTK软件已经分别做好了app_mem、med_main两段内存池的管理。
ASM:
Application shared memory
这块内存是实质是个数组,大小由一个共用体决定。
在头文件app_mem.h中,我们可以手动的设定其大小。
详细使用步骤:
在app_mem.h中,注册程序ID。
在app_mem.h中,定义程序使用的内存大小,并设置公用体(06B以及之前的版本没有用共用体,仅用宏来限制最终数组大小,设置繁琐了些)。
在程序初始化时,应使用系统函数注册程序,给出程序的退出函数。
applib_mem_ap_register
申请,applib_mem_ap_alloc
释放,释放动作应在上文注册程序时给出的退出函数中。applib_mem_ap_free
其他说明:这块内存总大小在300K左右(基线版本默认大小)。
多媒体块内存
使用简单,应用的较为广泛分配方法。
使用方法:
申请:med_alloc_ext_mem
释放:med_free_ext_mem
说明:
多媒体模块内存池较大,一般在800K~1MB之间。
对于申请的大小,没有特殊限制,可以一次申请大块空间。
申请和释放时,在cather中可以看出相关信息,包括申请、释放大小,当前总活动个数。Cather模块为MOD_MED。
多媒体内部内存
此块内存一般不放在外部RAM上,为了保证其高速性(多用于多媒体模块内部消息的处理),这块内存一般被放到内部RAM说是其他高速内存上。
常见的25平台,这块内存被放置在一块称为“INTSRAM_MULTIMEDIA”的内存中,这块内存为芯片内存,不属于内部RAM。
但不管硬件上怎样安排,软件中使用这块内存的方法是一样的。
使用方法:
申请:med_alloc_int_mem
释放:med_free_int_mem
说明:
除管理的大小不同外(最大值在40K左右),使用起来和多媒体块内存没有区别,系统也会在cather中给出相关信息。
ctrl_buff
在custom_config.c中,有块称为System_Mem_Pool的内存池,其中存放着Tasks stack, external queue, control buffer.
该块内存大小在400K左右。
control buffer被用于模拟C lib的malloc,但大小受限制,一次申请的最大值为2KB。
使用方法:
申请: OslMalloc
释放:OslMfree
测试时,在8号机上,连续申请了
64*20 + 128*20 + 256*20 + 512*20 + 1024*10 + 2048*10 = 52 KB的内存,每一次结果都是成功的。
其他说明:
Control buff 是一块被格式化的内存,分配的内存块,以及每种大
您可能关注的文档
最近下载
- 《市政排水管道气囊封堵施工规程》.pdf
- TOPRAAD920印刷模切开槽机.pdf VIP
- 单相整流电路建模与仿真.doc VIP
- 缺血性脑血管病临床管理指南解读.pptx VIP
- 工程概算预算审核方案(3篇).docx VIP
- 神经重症气管切开患者气道功能康复与管理专家共识2024.pptx VIP
- 2025年监理工程师之监理概论考试题库及答案(名师系列).docx VIP
- 2025年监理工程师之监理概论押题练习试卷B卷附答案 .pdf VIP
- 2025年监理工程师之监理概论考试题库及完整答案(必刷).docx VIP
- 2025年监理工程师之监理概论押题练习试卷A卷附答案 .pdf VIP
文档评论(0)