MTK内存配置详细说明_第1页
MTK内存配置详细说明_第2页
MTK内存配置详细说明_第3页
MTK内存配置详细说明_第4页
MTK内存配置详细说明_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.NOR FlashNOR Flash的ROM和RAM都较小,要节省RAM只能是去掉不必要的功能或减少存储PB/SMS等的条数,或者优化应用占用的RAM空间。ROM除了优化和节省代码和资源空间,还可以通过调整代码区和文件系统区的大小来获得更多的代码区或用户空间。以128+64 MCP为例(Memory分配为Code: 14MB,FS: 2MB,用户区: 355KB的内存分配图: 内存配置在custom_MemoryDevice.h文件中:#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0xe00000#define NOR_BOOTING_NOR_FS_SIZ

2、E 0x200000#define NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS 710其中,NOR_BOOTING_NOR_FS_BASE_ADDRESS是配置code区域的大小,这里配置为0xe00000即14MB。Code区中包含bootloader部分,固定占用128KB,所以实际可用的代码区是小于14MB的。NOR_BOOTING_NOR_FS_SIZE是配置文件系统区域的大小,这里配置为0x200000即2MB; NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS是配置用户可见区域的大小,此配置的单位是sector,1 se

3、ctor = 512 Bytes,此处的710表示710个sectors,即355KB。文件系统分配参考ckSysDrv.log文件:=FS Total Size 2097152FS First Drive Size 363520FS Overhead for (MBR + PBR + Root Dir 7168FDM Overhead (NOR 415232=Free Space for Folders and Applications 131* *Folders and Applications Requirement (Clusters 965315 clusters are left

4、(315.0 KB = 0.31 MB1.1 如何调整code区和FS区的大小?从上图可以看出,NOR_BOOTING_NOR_FS_BASE_ADDRESS和NOR_BOOTING_NOR_FS_SIZE加起来就是整个Memory的大小。当CODE区不足时(编译时log中会给出确切的超出尺寸,可以适当的减少FS系统区域的大小;反之,可以增加FS系统的区域以增加用户区的大小。注意:1.针对Multi-Bank的MCP而言,如果要调整ROM的配置,前提是支持如下功能:TRUEENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT=2.调整ROM的配置要严格一Block对齐(

5、BLOCK的大小与具体的MCP相关,不同的MCP的Block可能会不同,常见的Block是128KB。3.根据编译结果,可以确定需要调整的大小,如:#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0xE20000#define NOR_BOOTING_NOR_FS_SIZE 0x1E0000或#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0xDE0000#define NOR_BOOTING_NOR_FS_SIZE 0x2200004.目前存在的未解决的问题(eservice ID: MAUI_0287656353_09A平台K

6、6053S项目存在问题,当配置如下时是正常的:#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0xdc0000#define NOR_BOOTING_NOR_FS_SIZE 0x240000但是修改为以下的配置,则无法开机,只显示了bootloader画面,然后就死机了:#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0xde0000#define NOR_BOOTING_NOR_FS_SIZE 0x220000文件系统区分为几个部分:用户区、文件分区表头区、应用程序区以及预留区域。用户区就是用户可见区域(FS First Dri

7、ve Size,此区域可以分配的最大空间计算如下: FS First Drive Size = FS Total Size Overhead Applications Left Space其中,FS Total Size是上一步分配的FS空间大小。Overhead包括FS Overhead和FDM Overhead,FS Overhead基本是固定的,占用的空间也比较小,可以不去考虑。FDM Overhead的大小是可以在custom_MemoryDevice.h进行调整的: #define NOR_FDM4_ESB_PARAMETER_ERASE_QUEUE_SIZE 3MTK默认的FDM

8、Overhead大小为5个blocks(即5*128KB,最小值为3,不能小于3,否则会导致错误。如非必要,尽量保持MTK的默认值,保证系统的稳定性和运行效率, MTK反馈当用户区太小或者应用占用的系统区空间需要增大时,可以调整为3,不会影响到手机的正常运行,但会对运行效率有一些影响,对于53这样的平台用户基本感觉不到,因为影响效率的瓶颈不在此处。此配置调整的前提也需要支持如下option:TRUEENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT=Applications区域是根据项目的不同配置而变化的,比如NVRAM增加或减少,PB和SMS 的最大条数的调整,WA

9、P, JA V A, BT等配置的调整等都会影响到Applications区域的占用空间。具体可以参考ckSysDrv.log文件。Left Space是系统区预留的空间,不能太小,比如10KB左右就会导致在开机时提示系统空间不足(倒计时提示,有时开始时没有问题,但操作一些功能后再开机又会出现此提示。针对此情况,MTK也没有给出具体应该预留多少,建议60KB100KB或更多些。从目前的版本情况看,超过30KB应该可以,但为保险起见,还是建议60KB以上。综上,可以看出,配置Memory只需修改custom_MemoryDevice.h文件中的定义。由于此文件是由编译前选定的MCP复制而来的,而

10、MCP是公用的,不是为某一个项目或某一个需求配置的,所以需要在编译开始之前将复制到目标路径custom_MemoryDevice.h进行修改。custom_MemoryDevice.h这个文件比较特殊,不能像普通的头文件加入条件编译语句,所以增加了一个perl脚本来完成需要的修改configMemory.pl。此脚本的执行要保证在sysgen 和emigen执行之前。为增加Memory配置的灵活性,定义了两组宏分别用于项目配置和用户需求配置:用于项目配置(proconfig.mak:当通用的MCP配置无法满足某个项目时定义。TL_MEMORY_CUSTOM_ROM_CODE_SIZE_PROJ

11、ECT (代码区大小TL_MEMORY_CUSTOM_FS_SIZE_PROJECT (文件系统区大小TL_MEMORY_CUSTOM_USER_SIZE_PROJECT (用户可见区大小 用于客户需求配置(userxxx.mak:当通用的MCP配置无法满足某个客户需求时定义。TL_MEMORY_CUSTOM_ROM_CODE_SIZE_USER (代码区大小TL_MEMORY_CUSTOM_FS_SIZE_USER (文件系统区大小TL_MEMORY_CUSTOM_USER_SIZE_USER (用户可见区大小configMemory.pl脚本的基本思路如下:1检查是否用户需求中配置了MCP

12、,如果没有配置则检查项目是否配置了MCP,如果也没有配置则不需要修改memory配置;否则记录下各区域的大小。此处,为了简化实现,必须3个区域都配置了才有效,且此处省去了配置各区域的校验。2打开custom_MemoryDevice.h这个文件,将文件内容读到一个字符串中,然后关闭。3在这个字符串中查找各区域定义的关键字,找到后使用配置的值替换掉。4再次打开custom_MemoryDevice.h这个文件,将字符串写回文件中,然后关闭。完成配置。如果编译一个版本出现ROM空间超出时,可以直接修改custom_MemoryDevice.h文件中的定义进行调整,然后执行mcpgen.bat编译验

13、证。call make TELACOM53_10A_12832 gprs sysgencall make TELACOM53_10A_12832 gprs emicleancall make TELACOM53_10A_12832 gprs emigencall make TELACOM53_10A_12832 gprs c,u custom drv注意:由于目前make file中都设置了SYSGEN_ENABLE=TRUE,表示scatter file每次new 编译时都会自动生成。在10A之前的版本,mcpgen.bat中不需要执行make sysgen命令scatter file就会自

14、动更新,但是10A版本则必须要执行make sysgen命令,否则scatter file无法根据custom_MemoryDevice.h中修改的配置进行更新。2.NAND FlashNAND Flash(MCP的类型的ROM和RAM相比NOR Flash都较大,一般情况不需要过多的考虑ROM空间问题,但在某些情况RAM是需要重点注意的,当RAM空间紧张的时候要可以通过优化代码和调整scatter file来节省RAM。以下是NAND Flash和RAM分配的简要说明(可能不完全准确: FS内存配置在custom_MemoryDevice.h文件中:#define NAND_BOOTING_

15、NAND_FS_BASE_ADDRESS 0x02800000#define NAND_BOOTING_NAND_FS_SIZE 0x05800000#define NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS 128000含义与NOR Flash相同,其中NAND_BOOTING_NAND_FS_BASE_ADDRESS是配置code区域的大小;NAND_BOOTING_NAND_FS_SIZE是配置文件系统区域的大小;NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS是配置用户可见区域的大小,此配置的单位是sector,1

16、sector = 512 Bytes。由于NAND Flash和NOR Flash的工作方式不同,前者不能片上运行,必须要load到RAM 中才能运行,所以需要注意以下几点:1.当手机上电后,ROM和SECONDARY_ROM会通过bootloader全部Load到RAM中后才开始运行;2.而DEMAND_PAGING_ROM0中的代码会动态加载到RAM中运行,即当系统运行过程中需要执行到DEMAND PAGING中的代码时,会先将一部分代码load到page pool中,运行完后再重新载入其他的代码。3.可见,ROM和SECONDARY_ROM这两部分代码既需要储存在ROM中,也需要同样大小

17、的RAM加载运行。所以,要节省RAM空间,需要尽可能的将这两部分代码的体积减小,也就是说要适当增大DEMAND PAGING CODE的大小。4.RAM占用的计算方法(大体上:TOTAL RAM = Total RW Size (RW+ZI + ROM + SECONDARY_ROM + Demand Page Pool其中,Total RW Size (RW+ZI 是应用程序占用的RAM空间,可以从lis文件中查看;Demand Page Pool是动态加载需要的RAM空间,MTK默认是800KB,一般情况下不需要修改,定义在custom_config.c中:#define DEMP_PAG

18、E_POOL_SIZE (800 * 10245.对于NAND Flash,FS系统区(不可见区需要留出足够的空间以避免再开机时出现文件系统不足的“倒计时”提示。MTK针对此问题没有明确的说法,只是建议尽量多留一些,根据我们之前的经验,FS系统区保留18MB24MB比较合适,即Left Space在10M以上。调整code区和FS区的大小的方法与NOR Flash相同,实现上也是通过configMemory.pl脚本完成,请参考前面的相关说明和configMemory.pl脚本。另外,为尽可能节省RAM,经常需要调整DEMAND PAGING ROM SIZE。实现上也定义了两组宏分别用于项目

19、配置和用户需求配置:修改DEMAND PAGING ROM SIZE需要修改scatter file和custom_scatstruct.c文件,由于目前基本都开启了SYSGEN_ENABLE=TRUE,修改这两个文件都要在相应的perl脚本中完成: sactGenLib.pl和SysGen2.pl。custom_scatstruct.c:#define DEMP_PAGE_POOL_SIZE (_TL_MEMORY_CUSTOM_DEMAND_PAGING_ROM_SIZE_ /1024/1024/* in MB */ scatter file:DEMAND_PAGING_ROM0 0xf4

20、000000 0x18000002.2如何尽可能将资源及代码放到DEMAND PAGING ROM 中?通过配置scatter file可以将一些数据及资源放到DEMAND_PAGING_ROM0中,如果开启了SYSGEN_ENABLE=TRUE,需要修改sactGenLib.pl文件。将一些模块的资源和数据部分写到scatter file中的DEMAND_PAGING_ROM0部分,生成BIN文件时就会生成在DEMAND_PAGING_ROM0文件中。如下:DEMAND_PAGING_ROM0 0xf4000000 0x2000000DEMAND_PAGING_ROM0 0xf4000000

21、DEMAND_PAGING_ROM1 +0x00DEMAND_PAGING_ROM2 +0x00DEMAND_PAGING_ROM3 +0x00; _TL_TELACOM_MODIFICATION_ begin; audio resourcecustpack_audio.obj (+RO-DATAresource_audio.obj (RES_AUDIO; Vector fontvf_*.obj (+RO-DATA; Preset Java Appletsj2me_custom_mids.obj (+RO-DATA; HanWang WrtingHanWangInterface.obj (+R

22、O-DATA; Charset tablecharsettable.obj (+RO-DATA; _TL_TELACOM_MODIFICATION_ endcustpack_audio.obj (+RO-DATA:表示将custpack_audio.c文件中的DATA部分放到DEMAND PAGING ROM中。custpack_audio.obj (+RO-CODE:表示将custpack_audio.c文件中的code部分放到DEMAND PAGING ROM中。对于某些文件中嵌入了一些资源,但不能将DATA区域全部放到DEMAND PAGING ROM 中,否则会导致一些问题(resource_audio.obj (RES_DATA会引起死机问题。将某些CODE放到DEMAND PAGING ROM也可能会引起类似的问题。保险起见,一般情况下不要将CODE 部分放到DEMAND P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论