存储器的种类:ROM、RAM、FLASH
存储器的种类分别是非易失性存储器ROM、易失性存储器RAM、FLASH存储器。
一、非易失性存储器ROM(Read One Momory)
ROM(Read Only Memory)只读存储器。用来存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也能够保留数据。
ROM分为以下几个种类:
1、MASKROM:
厂商制造过程中使用一组特定的数据或指令进行编程,通过光刻工艺屏蔽存储器阵列的某些区域,将数据硬连接到ROM,从而创建永久的、不可更改的“1”和“0”图案。这意味着一旦芯片生产出来,就无法修改、擦除或重写数据。
2、PROM:
可编程只读存储器只允许写入一次,所以也被称为“一次可编程只读存储器”(One Time Progarmming ROM,OTP-ROM)。
PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1),以实现对其“编程”的目的。
PROM的典型产品是“双极性熔丝结构”,如果我们想改写某些单元,则可以给这些单元通以足够大的电流,并维持一定的时间,原先的熔丝即可熔断,这样就达到了改写某些位的效果。
另外一类经典的PROM为使用“肖特基二极管”的PROM,出厂时,其中的二极管处于反向截止状态,还是用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可。
3、EPROM:
EPROM是一种断电后仍能保留数据的计算机储存芯片——即非易失性的(非挥发性)。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。
一旦编程完成后,EPROM只能用强紫外线照射来擦除。通过封装顶部能看见硅片的透明窗口,很容易识别EPROM,这个窗口同时用来进行紫外线擦除。可以将EPROM的玻璃窗对准阳光直射一段时间就可以擦除。
4、EEPROM:
可电擦除、可编程的ROM,按字节进行删除和重写,写入时间很长很慢,现在多用作非易失的数据存储器。特点是可以随机访问与修改,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。
具有较高的可靠性,但是电路复杂成本也高。因此目前的EEPROM都是几十KByte到几百KByte的,很少有超过512KByte。
二、易失性存储器RAM(Random Access Memory)
RAM(Random Access Memory),随机存取存储器。与CPU直接交换数据的内部存储器,也叫内存。
它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介,当电源关闭时RAM不能保留数据。RAM可以进一步分为静态RAM(SRAM)和动态RAM(DRAM)两大类。
1、静态RAM(Static RAM/SRAM):
SRAM速度非常快,不需要刷新电路即能保存数据,是目前读写最快的存储设备了,但是集成度较低,非常昂贵。
2、动态RAM(Dynamic RAM/DRAM):
DRAM保留数据的时间很短(需要刷新电路,每隔一段时间刷新一次,否则数据会消失),速度要比SRAM慢,不过还是比ROM要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。
3、内存工作原理:
内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的"动态"指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。
具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。
但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。
三、FLASH存储器
1、FLASH闪存:
FLASH闪存是非易失性(Non-Volatile)内存,结合了ROM和RAM的长处,可电擦除、可编程(EEPROM)、断电不会丢失数据、同时可以快速读取数据,U盘和MP3里用的就是这种存储器。
在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为存储设备,然而近年来FLASH全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储装载程序以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
FLASH属于广义上的ROM,和EEPROM的最大区别是FLASH按扇区操作,相对于EEPROM的改进就是擦除时不再以字节为单位,而是以块为单位,简化了电路,数据密度更高,降低了成本。目前Flash主要有两种NOR Flash和NADN Flash。
NOR Flash:NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。
一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息。NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节,但是擦除仍要按块来擦。
NADN Flash:没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512Byte,采用这种技术的Flash比较廉价。
用户不能直接运行NAND Flash上的代码,NANDFlash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。大容量的用NANDFLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的"闪盘",可以在线擦除。
NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(NAND FLASH按块来擦除,按页来读,NOR FLASH没有页)。
由于NAND FLASH引脚上复用,因此读取速度比NORFLASH慢一点,但是擦除和写入速度比NOR FLASH快很多。NAND FLASH内部电路更简单,因此数据密度大、体积小、成本也低。因此大容量的FLASH都是NAND FLASH。小容量的2~12M的FLASH多是NOR FLASH。
FLASH工作原理:Flash Memory属于非易失性存储设备(Non-volatile Memory Device),FLASH的内部存储是MOSFET,里面有个悬浮门(Floating Gate),是真正存储数据的单元。数据在Flash内存单元中是以电荷(electrical charge)形式存储的。
存储电荷的多少取决于外部门(external gate)所被施加的电压,控制了是向存储单元中冲入电荷还是使其释放电荷。数据的表示是以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
对于数据的表示,单个存储单元中内部所存储电荷的电压,和某个特定的阈值电压Vth相比,如果大于此Vth值就是表示1,反之小于Vth就表示0。
对于NAND FLASH的数据的写入1,就是控制External Gate去充电,使得存储的电荷超过阈值Vth就表示1了。而对于写入0,就是控制External Gate去放电,使得电荷减少到小于Vth就表示0了。
2、SSD与HDD:
HDD:硬盘驱动器(Hard Disk Drive),最基本的电脑存储器,也就是机械硬盘,靠磁场存储信息,故也称为磁盘。在这里不做过多介绍。
SSD:固态硬盘(Solid State Drives)。由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。
3、eMMC与USF2.0:
eMMC:eMMC的全称为“embedded Multi Media Card”,是由MMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。
eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,eMMC利用的是它将主控制器、闪存颗粒整合到了一个小的BGA封装内。eMMC=NAND Flash+控制器+标准封装接口。
UFS2.0:UFS2.0的闪存规格则采用了新的标准,它使用的是串行界面,很像PATA、SATA的转换。并且它支持全双工运行,可同时读写操作,还支持指令队列。
相比之下,eMMC是半双工,读写必须分开执行,指令也是打包的,在速度上就已经是略逊一筹了。而且UFS芯片不仅传输速度快,功耗也要比eMMC5.0低一半,可以说是旗舰手机闪存的理想搭配。
总结:虽然eMMC在传输速度和性能方面不及现在最新的UFS2.0,但在日后相当长的一段时间内,还是会继续占领移动产品闪存芯片的主流。
因为eMMC有着更成熟的工艺,能够大规模生产,成本更低更适合大众化的移动产品闪存芯片需求;而UFS2.0虽然很好,但是生产成本较高,在现在刚开始投入市场的初期,只能够被放在高端产品上使用。
但以现在的趋势来看,UFS2.0将会逐渐成为移动产品市场的主流相信是不成问题,毕竟科技是需要进步的。
打包当前系统ROM里的打包分区怎么选
zipalign,即zip align,是专门优化apk的
和“4K对齐”有一些意思上的相似。
在Android中,每个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。
在Android中,当资源文件通过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。但是,如果资源本身没有进行对齐处理(未使用过zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。
对于应用程序开发者来说,这种显式读取方式是相当便利的。它允许使用一些不同的开发方法,包括正常流程中不包含对齐的资源,因此,这种读取方式具有很大的便利性。
遗憾的是,对于用户来说,这个情况恰恰是相反的——从未对齐的apk中读取资源比较慢且花费较多内存。最好的情况是,Home程序和未对齐的程序启动得比对齐后的慢(这也是唯一可见的效果)。最坏的情况是,安装一些未对齐资源的应用程序会增加内存压力,并因此造成系统反复地启动和杀死进程。最终,用户放弃使用如此慢又耗电的设备。
zipalign提高了优化后的Applications与Android系统的 交互效率。
zipalign就好比为Applications与Android系统之间搭建了一条高速公路
简单优化:zipalign
Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的。这篇文章将描述zipalign如何有助于性能改善以及如何使用它来优化你的app。
在Android中,每个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。
使用ADT:
如果你使用导出向导的话,Eclipse中的ADT插件,就能自动对齐Release程序包。使用向导,右击工程属性,选择“Android Tools” > “Export Signed Application Package…”。当然,你还可以通过AndroidManifest.xml编辑器的第一页做到。
使用Ant:
Ant编译脚本(从Android 1.6开始)可以对齐程序包。老平台的版本不能通过Ant编译脚本进行对齐,必须手动对齐。
从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。
Release模式下,如果有足够的信息签名程序包的话,Ant才会执行对齐操作,因为对齐处理发生在签名之后。为了能够签名程序包,进而执行对齐操作,Ant必须知道keystore的位置以及build.properties中key的名字。相应的属性名为key.store和key.alias。如果这些属性为空,签名工具会在编译过程中提示输入store/key的密码,然后脚本会执行签名及apk文件的对齐。如果这些属性都没有,Release程序包不会进行签名,自然也就不会进行对齐了。
手动:
为了能够手动对齐程序包,Android 1.6及以后的SDK的tools/文件夹下都有zipalign工具。你可以使用它来对齐任何版本下的程序包。你必须在签名apk文件后进行,使用以下命令:zipalign -v 4 source.apk destination.apk
验证对齐:
以下的命令用于检查程序包是否进行了对齐:zipalign -c -v 4 application.apk
极力推荐手动zipalign你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有的新应用程序也需要这么做!
简单优化:zipalign
Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的。这篇文章将描述zipalign如何有助于性能改善以及如何使用它来优化你的app。
在Android中,每个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。
总而言之zipalign,是专门优化apk的
参考资料:
1、设置环境变量。
2、创建system、sdcard、data、cache等目录。
3、把一些文件系统到拥有相同关键字的目录去。
4、设置一些文件的用户群组、权限。
5、设置一些线程参数。
6、设置TCP缓存大小,以上就是打包当前系统ROM里的打包分区设置方法。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!