Posted on 2008-12-19 15:33
pts 阅读(346)
评论(0) 编辑 收藏 所属分类:
Others
NVFS概述(T5,TE2,TX,LD,Treo650,Z22)+DBCacheTool
转贴自NCDIGI
为什么需要NVFS
自从2004年底PalmOne推出第一只NVFS机器??Tungsten T5以来,后续机型无一例外地采用了NVFS系统,象LifeDrive,Tungsten E2。等到回归Palm的时候,又有T|X,Z22。当然,少不了Treo650。
NVFS是什么?为什么需要NVFS?
基本的几点,NVFS,全名Non-Volatile File System(非挥发性文件系统):
1:提供了对非挥发性闪存式内存的支持(原来仅有ROM采用)
2:提供了完整的本地文件系统(以前Palm一直被人诟病为内存混乱)
3:提供了内置驱动器(支持充分利用超大容量的内存)
NVFS特征:
Palm OS 5.4.x(Garnet)
Palm OS 5.4.5:Tungsten T5,LifeDrive,Treo 650
Palm OS 5.4.8:升级过的上述三件,还有Tungsten E2
Palm OS 5.4.9:T|X,Z22,升级过的Treo650
(版本号不能一一检查,希望各位胖友指正)
NVFS基本结构
以前的OS1-4,OS5,OS5.2都是采用同样的架构:
1:一块NOR Flash,用于储存Palm OS
2:一块SDRAM,分为
存储堆(Storage Heap)用于储存用户程序和数据
动态内存堆(Dynamic Heap)用于储存程序执行中的临时数据
这时,一旦电力失去时间过长,基于SDRAM本身属性,它上面的所有数据都会被擦除。
于是,产生了NVFS的必要性。断电虽然罕见,但是一旦发生,对用户造成的损伤是很大的。NVFS解决了这个问题。
对于一台NVFS机器,,同样有两部分:
(下文用ROM指代一般的不可写区域,rom指代OS)
1:一块NAND Flash,包括:
引导区
rom标记
Overflow(超溢区,是压缩的rom)
存储堆标记
存储堆(storage
heap),包括虚拟RAM区(RescoExplorer中的A盘)和磁盘(内置驱动器,可选,如T5的INTERNAL和LD的LIFEDRIVE。
在RescoExplorer中,为B盘。注意插卡后的其他Palm卡是B盘,但有内置驱动器的插卡后卡是C盘)
其他部分为坏道保留。
2:一块DRAM,包括(DRAM也就是动态随机存储,SDRAM是DRAM的一种)
ROM(在RescoExplorer中为ROM)
数据库缓存(DBCache)
动态内存堆(Dynamic Heap)
还有一些混合内容。
注意:在Soft Reset开始时,DRAM是清空的。
以前Palm的启动过程(Hard Reset):
引导区直接引导NOR Flash中的Palm OS,Palm OS清空RAM并写入一些文件,并继续引导SDRAM中的程序。Soft Reset时不修改RAM。
NVFS-Palm的启动过程(Hard Reset):
首
先进行Soft Reset但是自动格式化存储堆(storage heap)。然后引导区将NAND
Flash中Overflow(压缩的rom)解压,并且按需要,释放到存储堆(storage
heap)和ROM。然后ROM开始执行,并引导storage heap中的程序。
这解释了现在Palm机器CPU越来越强重启越来越
慢的奇怪现象。以前的Palm重启速度非常快,一般瞬间-5s即可。然而由于要处理很多数据,NVFS-Palm重启很慢,象LD大概要两分钟(我没用过
LD,是道听途说的,希望有LD的朋友指正)。同时,硬启后T5,LD在内在磁盘里有文件,就是Overflow里释放出来的。
同是Flash(闪存),有什么区别?
NOR Flash是XIP(就地执行)式的,任何一个字节均能被直接访问。
NAND Flash则相反,必须512Byte一起读出和写入。无法直接执行。
所以,才不辞劳苦地把rom压缩起来(节约空间),然后释放到DRAM执行。虽然多了一步,但工业上NAND Flash产能高,质量好,容量大。为了提高容量,需要采用NAND Flash。
我们以Treo 650和Tungsten T5(未升级)为例,具体说明内存分布情况:
Treo 650:
NAND Flash 32MB
引导区……………………<1MB
超溢区(压缩rom)……8MB
存储堆??虚拟RAM……24MB
存储堆??内有磁盘……无
Tungsten T5:
NAND Flash 256MB
引导区……………………<1MB
超溢区(压缩rom)……14MB
存储堆??虚拟RAM……64MB
存储堆??内有磁盘……176MB(实际为161MB)
两者的
DRAM 32MB
ROM………………………16MB
DBCache…………………10MB(升级后的T5为14.8MB)
Dynamic Memory…………6MB(实际为4MB)
NVFS中的数据存储与程序执行:
基于NAND Flash糟糕的512B限制,使得空间出现了大量浪费。
尤
其在OS
5.4.5中,每个数据库的每个记录(pdb/prc,prc其实是特殊pdb。每个pdb由一个文件头和一系列record(记录)组成)必须至少占据
512B。如果一个1K的文件,由100个10B的记录组成,那么实际消耗为100*512=51.2KB。当然这是极端情况,但一般会增大2-3倍。
在OS
5.4.8/9中,指向记录的方法作了改进。每个512B区块最多包含16个32B的sector(选择子)。如果记录一个<32B的数据,只需要
一块,剩下的空间仍然可用其他sector(选择子)访问。如果有一个大小为N的数据,那么系统会找到一个恰比N大的2的幂,并消耗这么大一个空间。譬
如,128<188<256,系统将分配8个sector给188B的一个记录,消耗256B空间。剩余256B仍然可用。此时,上面1K的
文件将占据100*32B=3.2K。浪费被缩小了很多。不过,系统仍然要读出512B的内容到内存,然后从内存中寻找对应数据。这样开销又大了些。不过
是值得的。
要执行一个程序,必须先把程序刷进DBCache里。否则,由于不能直接访问任意字节,程序无法执行。所
以,SoftReset后第一次启动程序会比较慢,因为程序从NAND
Flash拷贝到DBCache。之后,由于程序(可能还有一些必须数据库)一直留在DRAM里,启动速度就丝毫不比以前的Palm慢了。
写数据库的命令实际上都写在DBCache中。只有当DmSyncDatabase执行后,DBCache中的修改才会写入Storage Heap。同时把不用的数据库清除。
(下面用RAM指代RAM虚拟区)
针对NVFS的问题:
核心问题:DBCache
每个程序执行必须先进入DBCache。
DBCache
一般只有10-11MB(即使是最大的TT5,在Warm Reset时也只有11MB剩余),正常情况还要被系统用去一部分(Hard
Reset后的升级T5的是8.5MB)。装上软件后,由于启动时,系统会向RAM中所有程序发出软启运行指令,DBCache又被耗了一些。我的TT5
正常开机是5.2MB。
由于有的程序在正常执行时和软启运行时状态不一样,DBCache还会被继续消耗。当从卡上运行时,程序会直接拷入DBCache。
如
果DBCache不够但仍然向其中拷入文件时,会导致Fatal
Exception??我想用过最新的Palm的胖友都知道这个著名画面吧,一个黑框,标题Fatal Exception,内容Fatal
Exception
,下面有Reset字样。还有一个较为罕见的错误,就是DmQueryDatabase。在SuperMiner中,DBCache不足会产生这个错误。
另外,有些程序包含一些不兼容的内容(尤其是Hack),在操作DBCache时也会出现错误。
尤其是OS
5.4.5,由于系统不会自动清理(也就是DmSyncDataBase),导致DBCache迅速耗尽。在程序调稳定之后,找到DBCacheTool
之前,大约使用时间12h必须软启一次??因为马上要Fatal
Exception了。这就是TT5,Treo650老死机的根源。至于网上有篇文章说要删除shim_logs,其实完全不必。因为这个文件是很正常
的。缺了这个T5容易进入按开机键出现palmOne logo然后黑屏的情况。只要用DBCacheTool,问题基本可以解决。
对于OS 5.4.7以上版本,系统会自动用DmSyncDatabase清理,一般DBCache不会消耗很快。尤其是运行卡上的程序不会造成DBCache损耗。DBCacheTool一般也不用了。
然而对OS 5.4.8,有的程序会把数据库一直标记为使用中(其实不用了)导致DmSyncDatabase对它们失效,所以DBCacheTool Dm模式还是有效的。OS 5.4.9可以识别这些数据库并去掉标记。
解决DBCache不足的办法有几个,这里有两个小软件:
DBCacheTool:
由McFile作者开发。这里是0.2a版。它可以通过两种方式释放DBCache:Sync(使用DmSyncDatabase)和Dm(由软件逐个分
析DBCache中的数据库,如认为不会再用便刷回NAND
Flash然后删掉)。还可以在软启时自动进行清理(不过推荐不要用,可能导致循环死机,不如进入Launcher后自己操作)
它带有一个DA文件,具有方便查看剩余DBCache和选择清理的功能。
Sync模式基本瞬时,除非垃圾太多了会需要1-2s。Dm模式清理速度为20-40s一次。
RLock:
由Resco公司开发的。可以“锁住”程序??把程序强行放在Dynamic
Memory中,腾出DBCache。这可以释放DBCache(因为动态内存不大会不够),而且有的程序由于不兼容,会直接把DBCache搞糟,锁住
后程序会操作动态内存而不是DBCache,就不会再出问题。程序帮助中有必须锁的程序列表。
还有,如上所述,DBCache的大小和
RAM中的程序是有关系的。如Picsel Brownser和Flash
Player就是DBCache杀手??每个消耗2MB。而且从开机就开始。Novii
Remote视数据库数,会消耗1M。各种Launcher都会消耗x00KB。TCPMP会消耗800KB-1M。Repligo有
300-500KB。Documents To Go
和CJKOS都是大户,尤其是字体文件。不过这两个东西大家应该留在RAM里的,只要CJKOS不要装太多字体就好了??尤其是GB/GBK
24*24字体。
运行一些程序的说明:
特别吃DBCache的如Classics(大约8-9M),SharkAttack,Snails(大约7.5-8M),Arvalva(4-6M,估计运行中会增加),Edge(4-5M),My Little Tanks(4.2M)
Classics未升级的T5是基本上不能运行的(Warm Reset下只有8.1M)
>6M的程序如果不用Warm Reset??按住向上键Reset,是难以运行的。不过Warm Reset后,由于驱动没有加载,五向键会失效,这是一件麻烦的事情。
LJP和Firestorm,在NVFS机器上用UDMH也可能内存不足。这是因为DBCache的原因。Warm Reset配合UDMH或许是个好主意。
RescoExplorer在备份/导入时会逐渐消耗DBCache。推荐大家备份/导入30-40%左右就停止,然后继续。因为停止时RescoExplorer会自动释放刚才占用的内存。(其实港版OS5.4.5 TT5配合RescoExplorer是可以备份的)
文件系统:
肯定有胖友注意过RescoExplorer中有一个A:,下面有一个文件夹PALM_DM,里面的文件和RAM一模一样(如果RescoExplorer版本太低会显示权限不足无法访问),而且属性后面有个RAM值。这就是虚拟RAM的文件系统。
在高版本RescoExplorer中RAM中文件属性有个NVFS Size,就是在文件系统中的大小??如前所述,由于糟糕的512B,文件大小比内容大。
而且,PALM_DM中的文件无法删除??被虚拟RAM系统给锁定了。
(PS:
有时这个文件夹下会出现ExgLocalFile_文件,这是RescoExplorer从卡向内存拷文件时中断的垃圾文件。一般在误点了卡中一大文件,
然后发现Palm失去响应,就Reset,会出现这种情况。到Options->General->Tap on name
="Open",把前面勾去掉就好。如果你的内存莫名其妙消失一大片而RAM里没多东西,一般问题就是这个。)
作为过渡,TT5的A:基本只有PALM_DM和Blazer临时文件。那些系统可以不依赖外接卡(如桌面图案)调用的在INTERNAL里面。
T|X已经在A:下面放了不少文件夹,象Blazer,媒体和Pocket Tunes都在下面有文件可操作(图片,歌曲,网页)。桌面图案也移到了这里。可见,内部文件系统正在逐渐成熟并进入应用。
后记:花了4个小时,终于写好了。
当初二我看到Dell Axim50广告知道了有PPC这种东西。于是很心动。准备上大学了去买一只。
然后在我同学那里见到了Palm m135,被上面Warfare华丽的效果震撼了。
于是知道了世界上有Palm这种东西。
快到高三,由于急需图形计算器,又不甘心TI-92+和TI Voyage 200的昂贵价格和糟糕的可扩展性,准备找只Palm或PPC来。
然后找到了TomPDA。然后知道了Palm和PPC的恩恩怨怨。
然
后我去PalmSource和Microsoft找了些技术文档来比较。当看到了Zen of
Palm的时候,立刻,我被Palm征服了,它完全改造了我的想法。之后我毫不犹豫地研究了Palm的机型,最后在2005的暑假入了一只TT5。很不
幸,由于在这里不够认真,没发现T5的非升级是只Bug机。
不过很庆幸TT5是Bug机。为了摆弄它,才把Palm OS好好研究了一遍。现在才发现,方便好用才是重要的。
又很庆幸于Palm优良的服务。这个月初,由于底部笔尖漂移,送修了。花了43.5元邮费,修好了。寄出后4天从总部发出,12天后到家。当初接线员还说要15-21工作日呢。真是保险过头。
尽
管Palm
OS现在被人说成江河日下,今天又在电脑报上看到它把TT5内存写成16M,还有“菲菲说‘Palm的发展落后于PDA’”。实在是很恼火。现在除了
Skype,Palm没有什么弱于PPC的多媒体应用了。PIM更是Palm强项,LifeBalance实在是好用。用过hp iPAQ
rz1919,一个1800的PPC,居然内存只有32M可用,分辨率只有320*240,主频只有200MHz。性价比不敢恭维。
Palm上手比PPC丝毫不差。我买来后一天就把内置程序全部学会了。三天配置的软件基本上够用了。虽然调稳定花了三个月??不过不买bug机不会有这种问题。
ALU已经出来了。不知为什么还没有使用的计划。去年LD出来不用OS6时我很怀疑Palm是否准备用OS6??确实到今天还没有。原以为Palm迟迟不发OS6是等待ALU,结果等来今年Nelson想卖掉Palm的消息。祝Palm一路走好。
不得不说多媒体、广告和配置对新手是最看中的。Palm偏偏缺了这些??或说被人这么认为。
最
后批评一下中国的广告数码市场和这么容易被广告误导的消费群体。《读者》上铺天盖地的EJP广告就是明证。好记星e8000,和Palm
IIIxe相当的性能卖1280(估计是广告费占成本大头);e百分反应慢的象蜗牛,要1200;这两样居然销量还很好……不得不说好记星的造型相对文曲
星来说酷多了,对某些追求时髦的学生杀伤力太大。结果性价比低的变态的产品诞生了。现在学生中盲目攀比的风气实在太重。性能强的手机主要功能是游戏。性能
强的EJP还是游戏。完全是游戏机了,还不如NDS和GBA性价比高。MP4亦是不如PSP。更新换代也太快。我自己已经淘汰了一只文曲星
PC200,PC2000c,一只Nokia
8210(现在是6230)。自己想想也忒浪费了。要不是为了TT5的蓝牙我不会去换6230。但现在除了转存短信,拍照-传照片,蓝牙就不用了。wap
上网还是小屏的手机方便。其实没有这些关系也不大。现在我才明白什么叫够用就好,尤其是方便好用。买东西不是买自己口袋能承受的,而是买自己手上能用的。
超出使用范围的,就叫做炫耀和攀比了。
Posted:2006-05-17 09:31 |
[楼 主]