易码技术论坛

 找回密码
 加入易码
搜索
查看: 206620|回复: 4

[转]关于Windows Mobile 5和2003的存储

[复制链接]
发表于 2006-12-9 15:53:23 | 显示全部楼层
lee最好来看下
 楼主| 发表于 2006-12-9 22:07:26 | 显示全部楼层
是的,上次我想解释就是这个,所以这次专门贴滴,了解一下
发表于 2006-12-9 22:21:55 | 显示全部楼层
我只说一点:
flash又nand和nor之分
nand由于是串行的,所以不能在上面直接执行程序!!!
而nor是并行的,可以在上面直接执行程序,但是速度是相当慢的!!!
发表于 2006-12-9 22:24:38 | 显示全部楼层
楼顶的帖子只是说明了系统文件是放在nand上的,并没有说系统文件可以直接在nand上执行,实际上这也是不可能的!!!理由见上帖
 楼主| 发表于 2006-12-9 15:26:15 | 显示全部楼层 |阅读模式
关于Windows Mobile 5和2003的存储杂谈


有人说,WM5的存储是Windows Mobile的一大改进。

一、关于不同类型的 Flash ROM

的确,对于WM5的Flash存储是一大进步,不过,把全部存储都移到FlashROM上真的好吗?

FlashROM,顾名思义是ROM(Read Only Memory),的确有他的好处:资料存储后不丢失。
FlashROM,普遍上分为NOR(或非门阵列)Flash和NAND(与非门阵列)Flash。
对于大部分用户存储,都使用NAND Flash。原因是其造价低廉(这也是为什么现在的存储卡这么便宜的原因,以前的卡用NOR,现在的卡用NAND),而且可以做到很大的容量,但是存储容易出错(所以需要ECC),工艺不好还会有大量坏块。

NAND型的闪存理论上可擦写次数是100万次,而NOR只有10万次,所以寿命比NOR的高。在读写速度上,NAND型读速度较慢(但写入速度较快)NOR则相反,缺点是组成一个存储单元的晶体管元件比NAND的多,导致相同容量的存储卡NAND的体积大,生产成本也高,所以现在大容量的存储卡都采用NAND型的。(感谢pda_MAN的修正)
通常PPC中,NOR用于存放系统、Bootloader。NAND则用于存放用户数据。这也是PPC中出现2个ROM容量指标的原因。

但无论是NOR也好,NAND也好。他们的写入次数是有限的。另外,Flash写入需要整个存储块(512B一个)写入,而且写入只能从0xFF(全1)向下降。

简单来说,Flash的写入操作是把该位的电子导出,使写入的位置成为低电平。也就是说,你无法使Flash中的一个位从0变到1,只能从1变到0。所以改写Flash的时候,通常要先擦除(充电),使该位变为1再写入。
然而事实上并没有这么简单。Flash的写入操作是以块为单位的写入。即是说,如果你只要改变某一块的某一个字节中的某一个位,则整块就会控制芯片被读出,暂存在SRAM中,写入改变的位到SRAM,擦除Flash中的对应块(512B为一块),使该块全为0xFF,再写入。也就是说,只要改变一个字节,哪怕只是一个字节中的1个位,将会导致整块重写。当然,这样的速度也就很慢了。当然速度慢还有其他原因,例如NAND Flash要外加控制芯片,每次只读1个字节,寻址和读取都花费比内存要多地周期等等...

二、关于 Flash ROM 的文件系统
有人试图把临时文件放在Flash上,是不明智的做法,也会使得系统巨慢(针对2003或以前系统来说)。

曾经就有人尝试在PDA上装Linux的时候,把Swap和tmpfs mount到了Flash上,真是看了都心寒(试想一下Linux的Swap在1秒内改写多少次?不足1年就把Flash寿命用尽!)。注:这个是Linux的情况,不是PPC的

现在好了,PPC用户也开始受到国外的影响,对于2003或以前版本的系统,有人为了节省的内存,把各种cache和临时文件的目录相应移到了存储卡上。这样不仅降低了系统的效率,而且还有可能导致存储卡过多写入(导致存储卡过多写入只是可能,关于这个问题下面再讨论)。

然后我们再看Fat/Fat32的存储方式,是使用文件分配表+链式存储。简单来说,每创建、修改一个文件,就会改写文件分配表,而文件分配表却是一块固定的区域。试想象,如果疯狂的往Flash新建文件、删除文件的话,文件分配表无疑是写入次数最多的,这块区域也是最容易坏的。(联想到日后的病毒用此方法来破坏Flash。。。)
在logical file system层中,把文件的访问进行映射,例如把某一目录A的任何写入和读取操作映射到另一目录B上(也就是说把另一目录B挂载(mount)到A上,挂载后2者都可以操作,这里暂时不考虑一致性和同步互斥问题)。在VFS层里使用这个方法就可以使得文件写入Flash避免丢失。当然还有更好的处理方法,但都是源于一个思想,在驱动程序里把多个驱动器映射到同一逻辑驱动器上并按照一定的优先级别来进行访问。

驱动程序在WM2003中是可以安装和替换的,现在已经有公司利用更改io control层来实现存储卡的压缩存储(对用户透明,只须装一个驱动)。
但可惜并没有人去开发Flash存储用户文件这种驱动程序。
上述是小弟在搞嵌入式开发和使用PDA过程中的见解,若有不当之处,还望各位DX指点一下。

五、WM5的RAM Disk解决方案!提高你的系统速度!

我认为,WM5肯定对Flash有一定的保护机制,但使用RAM Disk来存储临时文件(特别是浏览器的cache)肯定会把系统速度提高不少的。
RAM Disk程序请看:

附件: ramdisk.zip (2006-7-28 17:03, 5.08 K)
该附件被下载次数 121

注意:只适合WM5的机型
使用方法:
ramdisk 你要建立的Ram Disk大小,以KB计算
例如:ramdisk 4096 即建立 4MB的RAM Disk
ramdisk /U 删除Ram Disk,释放内存

据说建立大于8MB的Ram Disk会导致部分机型的驱动程序冲突,建议大家不要建立8MB以上,临时文件也用不了这么多的^_^。
建立RAM Disk后还要用工具把临时文件改放在Ram Disk才可以哦

附上brighthand的连接:http://forum.brighthand.com/showthread.php?t=224727

六、WM5对如何避免Flash的过多写入,大家都来讨论一下

pda_MAN的说法:NAND型的闪存并不是想象中的那么短命,如果是这样的话,INTEL也不会在下一代的PC上推出混合型硬盘了(闪存颗粒+硬盘),军用本本也不采用闪存型硬盘了PS:即使闪存出现坏块也可以格式化把坏块给屏蔽掉。当然为了延长ppc机内闪存寿命可以把经常要读写的文件转移到存储卡上(卡坏了容易换 )

ruby2005的说法:电压低到一定程度,就增加写FLASH的频度,过低的话就关闭交互方式,之后后台直接写FLASH,末了只有在电压恢复到一定水平后(充电后)才能开机。不知有人试过突然拔掉电池后,装WM5的机器会不会丢数据。 所以如果能优化到关机前写Flash的话(排除用户显式要求写FLASH(这在2003中也存在)),对FLASH的伤害还是微不足道的, 否则那些升级为WM5的朋友们可就惨了!
NOR-NAND-T.JPG
fat_rm0Mx8H8wxhB.jpg
zsS8s+1zbM=_HNOsjuDHnc8B.jpg
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 09:07 , Processed in 0.010804 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表