爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1184|回复: 2
收起左侧

NVFS概述(T5,TE2,TX,LD,Treo650,Z22)+DBCacheTool

[复制链接]
发表于 2007-9-11 23:20:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
转贴自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上网还是小屏的手机方便。其实没有这些关系也不大。现在我才明白什么叫够用就好,尤其是方便好用。买东西不是买自己口袋能承受的,而是买自己手上能用的。超出使用范围的,就叫做炫耀和攀比了。
发表于 2007-9-21 18:47:05 | 显示全部楼层
接着坐~再累也值得~
回复 支持 反对

使用道具 举报

发表于 2007-9-24 14:04:24 | 显示全部楼层
真是难得一见的好帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-4-25 21:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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