NOR和NAND都是flash, 掉电数据不丢失的,掉电数据丢失的叫RAM
flash上分两块,code区域和文件系统区域(又分系统盘和用户盘)。
NVRAM是一套机制,它的数据部分:default存在flash的code区,NARAM文件存在文件系统区域(系统盘)
phone的电话本数据是以NVRAM文件的形式保存在文件系统区域的(系统盘),SIM卡的电话本就在SIM卡上了
T卡是扩展的flash,都是文件系统区

NAND flash、NORflash及普通flash 有什么区别 
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。
相“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。
NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

MTK FLASH 对应64+32是什么意思
手机MCP芯片的型号,主要用于加速处理图像的能力有
64+32、128+32、128+64、 256+64、 1G+256、1G+512系列FLASH,广泛应用于MTK6225、6235平台,主要产地是TOSHIBA日本
多数的手机的存储器是二合一的,即FLASH和SRAM包在同一片芯片里。64+32是指8M byte(64M bit)的NOR FLASH+4M  byte(32M bit)的SRAM,128+32同理。

ROM是只读存储器,断电后能保证数据不会丢失,一般保证比较重要的数据.
RAM是随机存储器,断电后数据会丢失.
ROM和RAM指的都是半导体存储器。本来的含义是:ROM是Read Only Memory的意思,也就是说这种存储器只能读,不能写。而RAM是Random Access Memory的缩写。这个词的由来是因为早期的计算机曾经使用磁鼓作为内存,而磁鼓和磁带都是典型的顺序读写设备。RAM则可以随机读写
现在ROM通常指非挥发的存储器,或者说,不掉电。系统停止供电的时候它们仍然可以保持数据。所以光盘也有CD-ROM或者DVD-ROM的说法。而RAM通常都是没电之后就没有数据的,典型的就象计算机的内存,需要系统重新启动的时候从硬盘重新载入数据。有的时候,如果数据可以擦写,也会借用RAM这个概念,譬如DVD-RAM,其实只是可以擦写的DVD光盘而已,并非真正的半导体存储器
 
关于智能手机ROM和RAM的区别
存储器分为随机存储器(RAM)和只读存储器(ROM)两种。其中ROM通常用来固化存储一些生产厂家写入的程序或数据,用于启动电脑和控制电脑的工作方式。而RAM则用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,RAM中存储的数据就会丢失。
对于手机而言
运行游戏、程序速度快慢看的是RAM,也就是动态内存,不是看ROM。ROM是静态空间,用来存储东西的,相当于手机的Z盘。RAM和ROM就好比是电脑的内存和硬盘。C盘准确的来讲也不应该叫ROM只读存储器。C盘应该叫FLASH,因为C盘是可擦写的,而FLASH的大小并不影响运行速度。

128 bit M = 16MB 一般划分 14M 的资源区,包含了图片,字符串,NVRAM等。

{

1KB等于1024B,B是英文Byte(比特)的缩写,KB即kilobyte,字面意思就是千比特。
byte是文件大小的一个计量单位,大家都知道在计算机里面,文件都是以二进制方式存储的,这样一个最小的存储单元(譬如10、11、01、00)叫做一个bit(位,位元),八个位元等于一个比特。
转换关系:
8bit=1b
1024byte=1kb
1024kb=1mb
1024mb=1gb
1024gb=1tb
以上单位k指千、m指百万、g指10亿,t指万亿,大小写均可。
因为1024≈1000,所以1024b,也称为1k,以下类似。

}
还有2M有用到ARM 的启动和部分的内存,运行速度相当快。相当于PC的硬盘
32 sdram bit M = 4MB,一般用来存储动态内存,全局变量什么的,相当于PC的内存。

mtk25平台默认的是128Mbit flash memory 和 32Mbit SRAM,因为1BYTE等于8BIT,所以就是我们通常所说的是16M ROM和4M RAM,不过由于文件系统占用2M,这2M一般又被分为系统盘和用户盘,系统盘存储NV文件和MMS相关文件,对用户不可见,用户盘用户连上电脑就可以看到,但由于一些原因,有不少手机是不设用户盘的,用户盘过大,会导致彩信等一些模块不稳定,所以很多使用NORFALSH时不设用户盘,但NAND FALSH一般都会设置一定的用户盘。如果需要设置,只要修改宏PARTITION_SIZE值就可以控制。所以我们能够使用的就只剩下14,这一点可以从BUILD目录下的scatWINGTECH25_GEMINI.txt文件的声明部分看到,在SCAT文件中,有一行是SCHEME   : external 14MB flash memory and 4MB SRAM,就是说14MROM和4MRAM。

由于用户需求不同,有些时候我们会修改RAM和ROM大小,一般就要相应的修改SCAT文件。在SCAT文件中,我们可以看到行ROM 0x00000000 0x00e00000,就是说可以使用的ROM从0x00000000开始,到0x00e00000结束,共计0x00e00000字节,在下面又可以看到这些ROM被分成四个4M的段使用。在SCAT的行EXTSRAM_LARGEPOOL_NORMAL 0x08000000处我们可以看到RAM的使用情况,地址从0x08000000开始, 到0x08400000 结束,共计0x00400000BYTE,即4MBYTE,如果你是32MROM,8MRAM,就要修改ROM 0x00000000 0x00e00000为
ROM 0x00000000 0x01c00000,修改DUMMY_END 0x08400000 0x04为    DUMMY_END 0x08800000 0x04,这样的修改,现在的ROM和RAM大小都为以前默认的2倍。

其实有时RAM紧张时不一定非要采用增加RAM来实现,这样成本较大,可以采用复用内存也可以节约大量内存。 在SCAT文件中,很多时候,我们可以看到关健字overlay,这是一些手机的应用中为节省内存使用的复合内存,如INTSRAM_MULTIMEDIA 0x40000000  0xC000,声明了MED复用内存的起始地址,只要不冲突,这几乎是最好的解决内存紧张的方法。如果ROM超过了,可能会比较麻烦一些,去掉不必要的图片,音乐,减小图片的质量,去掉一些不必要的功能,把宏函数转为普通函数都可以节约一部分ROM。

如果RAM或者ROM编绎到最后出错,提示ROM超了或者RAM超过了,这时就要精确计算超出部分的大小,然后再根据计算的大小寻找解决办法。计算的方法是打开LIS文件,把RAM或者ROM加起来,减去14或者4,超过的字节数,就是需要调整的内存大小

================================================================================
      Code    RO Data    RW Data    ZI Data      Debug

6597536    7448732      52056    4266705    3730676   Grand Totals

================================================================================

Total RO  Size(Code + RO Data)             14046268 (13717.06kB)
    Total RW  Size(RW Data + ZI Data)           4318761 (4217.54kB)
    Total ROM Size(Code + RO Data + RW Data)   14098324 (13767.89kB)

================================================================================
RAM 大小看起来已经超过4M(4318761)了,怎么编译没有报错,并且使用正常?

内存复用

要了解RO,RW和ZI需要首先了解以下知识:
(1)ARM程序的组成
            此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。
            一个ARM程序包含3部分:RO,RW和ZI
            RO是程序中的指令和常量
            RW是程序中的已初始化变量
            ZI是程序中的未初始化的变量
            由以上3点说明可以理解为:
            RO就是readonly,
            RW就是read/write,
            ZI就是zero

(2)ARM映像文件的组成
            所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。
            Image文件包含了RO和RW数据。
            之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。
            Q:为什么Image中必须包含RO和RW?
            A:因为RO中的指令和常量以及RW中初始化过的变量是不能像ZI那样“无中生有”的。
(3)ARM程序的执行过程
            从以上两点可以知道,烧录到ROM中的image文件与实际运行时的ARM程序之间并不是完全一样的。因此就有必要了解ARM程序是如何从ROM中的image到达实际运行状态的。
            实际上,ROM中的指令至少应该有这样的功能:
            1. 将RW从ROM中搬到RAM中,因为RW是变量,变量不能存在ROM中。
            2. 将ZI所在的RAM区域全部清零,因为ZI区域并不在Image中,所以需要程序根据编译器给出的ZI地址及大小来将相应得RAM区域清零。ZI中也是变量,同理:变量不能存在ROM中
            在程序运行的最初阶段,RO中的指令完成了这两项工作后C程序才能正常访问变量。否则只能运行不含变量的代码

同配置而变化的,比如 NVRAM 增加或减少,PB 和 SMS 的最大条数的调整,WAP, JAVA, BT 等配置的调整等都会影响到 Applications 区域的占用空 间。具体可以参考 ckSysDrv.log 文件。 Left Space 是系统区预留的空间,不能太小,比如 10KB 左右就会导致在开机时提示系统空 间不足(倒计时提示) ,有时开始时没有问题,但操作一些功能后再开机又会出现此提示。 针对此情况,MTK 也没有给出具体应该预留多少,建议 60KB~100KB 或更多些。从目前的 版本情况看,超过 30KB 应该可以,但为保险起见,还是建议 60KB 以上。
1.3 实现为不同的项目和客户需求自动配置 Memory
综上,可以看出,配置 Memory 只需修改 custom_MemoryDevice.h 文件中的定义。由于此文 件是由编译前选定的 MCP 复制而来的,而 MCP 是公用的,不是为某一个项目或某一个需 求配置的,所以需要在编译开始之前将复制到目标路径 custom_MemoryDevice.h 进行修改。 custom_MemoryDevice.h 这个文件比较特殊,不能像普通的头文件加入条件编译语句,所以 增加了一个 perl 脚本来完成需要的修改——configMemory.pl。 此脚本的执行要保证在 sysgen 和 emigen 执行之前。 为增加 Memory 配置的灵活性,定义了两组宏分别用于项目配置和用户需求配置: 用于项目配置(proconfig.mak) :当通用的 MCP 配置无法满足某个项目时定义。 TL_MEMORY_CUSTOM_ROM_CODE_SIZE_PROJECT (代码区大小) 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,如果没有配置则检查项目是否配置了 MCP,如果也 没有配置则不需要修改 memory 配置;否则记录下各区域的大小。此处,为了简化实现, 必须 3 个区域都配置了才有效,且此处省去了配置各区域的校验。
2) 打开 custom_MemoryDevice.h 这个文件,将文件内容读到一个字符串中,然后关闭。 3) 在这个字符串中查找各区域定义的关键字,找到后使用配置的值替换掉。 4) 再次打开 custom_MemoryDevice.h 这个文件,将字符串写回文件中,然后关闭。完成配 置。 如果编译一个版本出现 ROM 空间超出时,可以直接修改 custom_MemoryDevice.h 文件中的 定义进行调整,然后执行 mcpgen.bat 编译验证。 call make TELACOM53_10A_12832 gprs sysgen call make TELACOM53_10A_12832 gprs emiclean call make TELACOM53_10A_12832 gprs emigen call make TELACOM53_10A_12832 gprs c,u custom drv 注意:由于目前 make file 中都设置了 SYSGEN_ENABLE=TRUE,表示 scatter file 每次 new 编译时都会自动生成。 10A 之前的版本, 在 mcpgen.bat 中不需要执行 make sysgen 命令 scatter file 就会自动更新,但是 10A 版本则必须要执行 make sysgen 命令,否则 scatter file 无法根 据 custom_MemoryDevice.h 中修改的配置进行更新。
2. NAND Flash
NAND Flash(MCP 的类型)的 ROM 和 RAM 相比 NOR Flash 都较大,一般情况不需要过 多的考虑 ROM 空间问题,但在某些情况 RAM 是需要重点注意的,当 RAM 空间紧张的时 候要可以通过优化代码和调整 scatter file 来节省 RAM。 以下是 NAND Flash 和 RAM 分配的简要说明(可能不完全准确) :
XXX_BOOTLOADER_XXX.bin
Bootloader
EXT_BOOTLOADER ROM SECONDARY_ROM Static Total RW Size (RW+ZI)
Code
DEMAND_PAGING_ROM0 Dynamic Code Loading
FS FS
Demand Page Pool (800KB)
Left Space
RAM
NAND Flash (ROM)
User Space
FS Overhead Used by applications
Left Space
FS
内存配置在 custom_MemoryDevice.h 文件中:
#define NAND_BOOTING_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 是配置用户可见区域的大小, 此配 置 ...

转载nbsp;MTK存储系统相关相关推荐

  1. [转载]计算机视觉、机器学习相关领域论文和源代码

    十二星女面对婚外情会说不吗? 新浪首页登录注册 苍茫大地的博客 http://blog.sina.com.cn/handphone [订阅][手机订阅] 首页博文目录图片关于我 个人资料 苍茫大地 微 ...

  2. [转载]Eclipse.ini的相关说明

    原文链接:http://www.cnblogs.com/yan5lang/archive/2011/05/24/2055867.html Eclipse的启动由$ECLIPSE_HOME/eclips ...

  3. MTK层相关应用集合(摘抄)

    最近工作中经常要涉及到对层的修改,特在网上搜集了一些资料,特分享于此. 对于层,有个核心理念:代表屏幕上像素点阵的数据集合 一般来说,MTK上一个像素由两个字节表示 一,mtk平台上旋转图像的代码,可 ...

  4. 转载:Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神

      转载自赵凯强的博客: http://blog.csdn.net/zhaokaiqiang1992/article/details/43731967  本篇文章主要纪录赵凯强先生在学习过程中,发 ...

  5. 转载:better-scroll的相关api

    格式:var obj = new BScroll(object,{[option1,],.,.}); 注意:1.要确保object元素的高度比其父元素高 2.使用时,一定要确保object所在的dom ...

  6. 【转载】漏洞 CNVD-2017-36682 相关公告以及 JavaScript / 安卓开发者须知

    安全公告 链接 http://www.cnvd.org.cn/flaw/show/CNVD-2017-36682 CNVD-2017-36682相关公告 攻击原理 <WebView跨源攻击分析& ...

  7. MTK软件测试简历,【转帖】MTK]平台相关资料

    编译工具和辅助工具: ADS1.2 ADS12_update_842.exe MSYS-1.0.10.exe MinGW-3.1.0-1.exe ImageMagick-6.2.5-5-Q16-win ...

  8. 【转载】分布式存储系统的几个技术指标

    原始链接:https://zhuanlan.zhihu.com/p/34305823 侵删 随着数据的爆炸,现在越来越多的人关注分布式存储,或者叫云存储.然而选择一款分布式存储应该关注哪些指标呢?这篇 ...

  9. 【转载】数字图像处理相关

    最近版上有不少人在讨论图像处理的就业方向,似乎大部分都持悲观的态度.我想结合我今年找工作的经验谈谈我的看法. 就我看来,个人觉得图像处理的就业还是不错的.首先可以把图像看成二维.三维或者更高维的信号, ...

最新文章

  1. JMH 和 Arthas 定位问题的案例分享 !
  2. 命令行下从bak文件恢复sqlserver数据库方法
  3. java gc信息_JVM之GC回收信息详解
  4. emqtt 试用(二)验证 emq 和 mosquito 的共享订阅
  5. mysql填写账户远程_如何开启MySQL的远程帐号
  6. 对你的的应用程序进行Debug
  7. 如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器
  8. MessageFormat用法
  9. DPDK QOS4 -- PORT数据结构的初始化
  10. ueditor富文本
  11. Tableau6——地图绘制
  12. 沧小海基于xilinx srio核的学习笔记之第三章 xilinx srio核介绍(三)核配置
  13. apply,call,bind重新定义this的区别
  14. 为什么要使用PPTP协议代理ip?
  15. 行为型模式:观察者模式
  16. 笔记本电脑安装CentOS7
  17. 引流产品分几类?引流产品结构四类定位产品
  18. Springboot美食汇开放平台8ob70计算机毕业设计-课程设计-期末作业-毕设程序代做
  19. C语言核心知识点大汇总
  20. Func:统一网络控制器

热门文章

  1. HCIP第九天 --- BGP基础配置
  2. 民间借贷司法解释修订后利息的计算方法
  3. 在eclipse中用bluestack运行android程序
  4. SpringBoot使用assembly进行项目定制化打包
  5. 爬虫(汪峰歌词实战)
  6. TS-CAM: Token Semantic Coupled Attention Map for Weakly Supervised Object Localization
  7. 实现html播放ppt的炫酷效果
  8. 小众兼职,适合学生、白领:派盘推广金轻松赚
  9. 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)
  10. 微信群里设置签到任务,从而活跃群气氛!