MTK中关于存储系统应用教程

移动开发
MTK中关于存储系统应用教程是本文要介绍的内容,主要是来了解并学习MTK中存储系统中的操作,具体内容的实现来看本文详解。

MTK中关于存储系统应用教程是本文要介绍的内容,主要是来了解并学习MTK中存储系统中的操作,关于MTK中详细的应用来看本文将就。

NOR和NAND都是flash,掉电数据不丢失的,掉电数据丢失的叫RAM

flash上分两块,code区域和文件系统区域(又分系统盘和用户盘)。

NVRAM是一套机制,它的数据部分:default存在flash的code区,NARAM文件存在文件系统区域(系统盘)

phone的电话本数据是以NVRAM文件的形式保存在文件系统区域的(系统盘),SIM卡的电话本就在SIM卡上了

T卡是扩展的flash,都是文件系统区

NANDflash、NORflash及普通flash有什么区别

NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NORflash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NANDflash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。

相“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。

NOR的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。

NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

MTKFLASH对应64+32是什么意思

手机MCP芯片的型号,主要用于加速处理图像的能力有

64+32、128+32、128+64、256+64、1G+256、1G+512系列FLASH,广泛应用于MTK6225、6235平台,主要产地是TOSHIBA日本

多数的手机的存储器是二合一的,即FLASH和SRAM包在同一片芯片里。64+32是指8Mbyte(64Mbit)的NORFLASH+4Mbyte(32Mbit)的SRAM,128+32同理。

ROM是只读存储器,断电后能保证数据不会丢失,一般保证比较重要的数据.

RAM是随机存储器,断电后数据会丢失.

ROM和RAM指的都是半导体存储器。本来的含义是:ROM是ReadOnlyMemory的意思,也就是说这种存储器只能读,不能写。而RAM是RandomAccessMemory的缩写。这个词的由来是因为早期的计算机曾经使用磁鼓作为内存,而磁鼓和磁带都是典型的顺序读写设备。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的大小并不影响运行速度。

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

还有2M有用到ARM的启动和部分的内存,运行速度相当快。相当于PC的硬盘

32sdrambitM=4MB,一般用来存储动态内存,全局变量什么的,相当于PC的内存。

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

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

  1. ROM0x000000000x01c00000,  
  2. 修改  
  3. DUMMY_END0x084000000x04  
  4. 为  
  5. DUMMY_END0x088000000x04, 

这样的修改,现在的ROM和RAM大小都为以前默认的2倍。

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

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

  1. ================================================================================  
  2. CodeRODataRWDataZIDataDebug  
  3. 659753674487325205642667053730676GrandTotals 
  4. ================================================================================  
  5. TotalROSize(Code+ROData)14046268(13717.06kB)  
  6. TotalRWSize(RWData+ZIData)4318761(4217.54kB)  
  7. TotalROMSize(Code+ROData+RWData)14098324(13767.89kB)  
  8. ================================================================================ 

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程序才能正常访问变量。否则只能运行不含变量的代码。

小结:MTK中关于存储系统应用教程的内容介绍完了,希望通过MTK中存储系统内容的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2021-06-18 06:00:31

存储系统

2015-09-29 18:17:58

戴尔云计算

2018-09-29 14:08:04

存储系统分布式

2018-05-31 08:39:18

单机存储系统

2011-08-31 10:20:26

MTK驱动开发

2017-11-07 08:54:06

云存储技术系统

2018-09-21 11:00:58

Ceph存储系统

2011-09-06 13:31:10

MTK平台Scatter文件

2018-06-08 08:46:14

RaftPaxos系统

2018-01-31 08:44:20

数据存储存储设备存储系统

2009-01-30 11:29:48

石油行业地质勘探存储

2017-11-22 10:23:32

存储系统VeSpace

2017-11-08 11:22:46

存储趋势系统

2017-07-04 10:58:57

SAN存储网络存储系统架构

2018-01-19 08:35:47

存储系统SAS

2018-03-13 08:45:08

存储系统DHT算法

2017-04-14 09:48:25

分布式存储系统

2018-01-22 09:08:14

存储系统性能带宽

2020-03-04 17:37:09

存储系统硬件层

2011-09-06 10:10:12

MTK系统Android系统
点赞
收藏

51CTO技术栈公众号