ROM-RAM分析基于MStar-V2.04版本.doc_第1页
ROM-RAM分析基于MStar-V2.04版本.doc_第2页
ROM-RAM分析基于MStar-V2.04版本.doc_第3页
ROM-RAM分析基于MStar-V2.04版本.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

ROM/RAM分析基于MStar V2.04版本S/NRevDescription of ChangeDateOriginatorCheckApproval10.01Original11/25/2011曹明贵概述: ROM: Read Only Memory 只读存储器RAM: Random Access Memory (存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器)在嵌入式系统里面通常有NOR和NAND 的两种存储介质,通常的说法包含了(ROM/RAM)两部分, 用来存储代码和文件系统,及参数等。这里介绍一下如何分析手机平台的ROM/RAM的使用情况,基于mstar v2.04的版本一、手机存储系统:NOR/NAND 两种存储的差异NOR: 可以进行读写,但写速度比较慢,下载工具可以看出来;但具有片上执行代码的功能,即CPU 可以直接从NOR flash 上寻址,读取代码进行执行,因此代码不用加载到RAM 里面进行执行;通常用作代码存储, 部分区域用于文件系统, 但文件系统写较慢。NAND:类似与硬盘,写很快,只做存储用,没有片上执行代码的功能(CPU 无法直接寻址),代码需要加载到RAM 里面运行, 所以需要较大的RAM。NOR 通常也搭配RAM 做成 MCP (集成封装的): 128Mb+64Mb, 或者256Mb+64Mb 等等,1Mb 是指1M bit, 因此128Mb 只有16MB 字节大小的空间。 大的指NOR, 小的指RAM.NAND 搭配的RAM 通常性能好些,RAM 也有多种区分。 通常1Gb+256Mb, 1Gb+512Mb,1Gb 大小为128MB字节。二、如何查看 文件A. mstar 平台的out目录下生成的文件, 是链接时产生的ELF和BIN文件信息文件,和mtk上的.lis 文件类似,可以看到整个的执行代码包含的信息。包含了各个目标文件,库文件,函数直接的调用关系,变量的大小等等。 ELF:Executable and Linkable FormatB. 各个段的意义 Code (inc. data) RO Data RW Data ZI Data Debug Object NameCode : 代码, The (inc. data) column gives the size of constants, string literals, and other data items used as part of the code. (inc. data) 代码里面(函数)的常量数据,字串等。RO Data: Read-Only只读的数据, const 定义的常量数据部分RW Data: Read-Write:可以读写的数据,全局变量,或者static 定义的变量,初始值不为0的。ZI Data: Zero Init 的数据, 初始化为0的全局变量或者static 定义的变量。Debug:调试信息部分,包含在可以调试的ELF文件里面。C. LINK info 里面包含的主要信息解绍:1整个bin文件的ROM/RAM 大小信息 Total RO Size (Code + RO Data) 8551424 (8351.00kB) Total RW Size (RW Data + ZI Data) 1376912 (1344.64kB) Total ROM Size (Code + RO Data + RW Data) 8683932 (8480.40kB)2. 各个lib/obj 的ROM/RAM 大小信息库相关lib: Code (inc. data) RO Data RW Data ZI Data Debug Library Name22988 1006 21 130 390 142580 a2dp.libObj相关: Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name2624 486 0 112 0 12068 AudioFsm.o3. 所有符号的引用,地址信息 (Memory Map of the image)函数和变量的信息:(几个例子)Symbol Name Value Ov Type Size Object(Section)a. _main 0x0000003c ARM Code 8 _main.o(!main)b. MAE_Init 0x00312ea5 Thumb Code 72 mae_main.o(.text)c. aDaysPerMonth 0x00693ac8 Data 12 hal_asura_rtc.o(.constdata)4. scatter file 文件信息ascatter file 是连接(link)时memory map的配置表,整个手机系统的地址信息包含在里面,各个代码段,数据段的地址等等。参考一下MSTAR8532的一个scatter file:scatter_8532_64_32_bt_acrux2.dsc, 最终使用的是经过编译处理的,在out目录下:scatter.dsc, 读时参考arm link 相关文档 ADS_LinkerGuide_A.pdf, 先大概了解一下scatter文件。b. 里面包含了ROM到RAM的地址信息和排列顺序,包括内部RAM,具体的每个段对应的地址长度在link时都会定下来,如:CUST_LCD_FUNCTABLE, 里面会生成: Image$CUST_LCD_FUNCTABLE$Base,Image$CUST_LCD_FUNCTABLE$Length, RAM部分, XRAM:Image$XRAM$Base, Image$XRAM$ZI$Base, Image$XRAM$ZI$Limit, ZI:部分,CODE(bin) 里面保留的只是起始地址和长度信息;系统初始化只需初始化成0即可;RW部分:CODE (bin) 里面保留的是起始地址,和内容,带长度信息,系统需要copy初始化;三、checklog.txt 的查看2.04.03 在生成代码后, 后产生个check log文件, 只要对应用的flash还是能够分析出是否有超出的问题,可以经常查看查看, 可以看到每一部分的大小。- LangPack: LangPack0000 -Binary Size = 8759314(8555 KB)Cus Size = 5797876(5662 KB)Rai Size = 1507328(1472 KB)Trace Size = 32768(32 KB)E2p Size = 4 Sectors (Always)Total Size = 16097286(15721 KB)每一部分内部连续,不同部分不连续, 因flash分了不同的块, 每种flash块不一样,都是128Mb的flash,有的能下载,有的下载不了。四、RAM内存分配使用情况分析1. 一部分是静态内存,在编译链接时一定定下来了。2. 动态内存 堆(POOL / Heap),总的内存减去静态分配的。APOOLTR#044F RTK02 Stack Pool GroupTR#0450 RTK02 -+-+-+-+-+-TR#0451 RTK02 POOL | SIZE | TOTAL | FREE | USED | MAXTR#0452 RTK02 -+-+-+-+-+-TR#0453 RTK02 0 | 12 | 1200 | 605 | 595 | 967TR#0454 RTK02 1 | 44 | 2200 | 474 | 1726 | 2200TR#0455 RTK02 2 | 108 | 500 | 208 | 292 | 500TR#0456 RTK02 3 | 236 | 500 | 366 | 134 | 500TR#0457 RTK02 4 | 492 | 80 | 16 | 64 | 80TR#0458 RTK02 5 | 1004 | 20 | 4 | 16 | 20B. HEAPTR#046E RTK05 = Heap Blocks List TR#0470 RTK05 Status | Base Addr | End Addr | Size | Timestamp | task & address TR#0471 RTK05 -+-+-+-+-+-TR#0473 RTK05 ALLOCATED | 0x10117fc0 | 0x10117ff8 | 56 | 414 | RTK INIT - fms_E2pInit (0x0001a67d)TR#0474 RTK05 ALLOCATED | 0x10118020 | 0x10199cf8 | 531672 | 415 | RTK INIT - main (0x00015a2d)TR#0475 RTK05 ALLOCATED | 0x10199d20 | 0x101a42b8 | 42392 | 416 | RTK INIT - fms_MapLaunchService (0x0001b6b3)3. 提及一下栈的使用, 用在task调用函数专递参数,分配局部变量的内存等const vm_apmOneTask_t cus_apmTasks = /* Stack Size , Stack pointer , Initialisation function , Parser function , Priority */ CUS_1_STACK_SIZE, vm_apmCustomStack1, vm_apmAppliInit1 , vm_apmAppliParser1 , CUS1_PRIO, DEV, / DEV task CUS_2_STACK_SIZE, vm_apmCustomStack2, vm_apmAppliInit2 , vm_apmAppliParser2 , CUS2_PRIO, DVTST , / MMI task CUS_3_STACK_SIZE, vm_apmCustomStack3, vm_apmAppliInit3 , vm_apmAppliParser3 , CUS3_PRIO, EMMI , / C

温馨提示

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

评论

0/150

提交评论