RAM and ROM File System vs ROM-only File System

来源:互联网 发布:域名和空间的关系 编辑:程序博客网 时间:2024/05/16 19:49
 
本文转载自http://chenyq2008.spaces.live.com/blog/

二者都是文件系统driver。都有能力读取ROM文件系统。 区别在于:前者除了能够读取ROM盘之外,他还构造了一个RAM盘。(因为file system很容易混淆,我称呼ROM盘和RAM盘) 。

本文转载自http://chenyq2008.spaces.live.com/blog/
RAM盘指什么呢? 就是在ram空间虚拟的磁盘。 先说些废话:ce起来后会把所有可以用的内存分割成为2个空间,存储内存和程序内存, 默认的是1:1的分配, 你可以在config.bib里面设置FSRAMPERCENT来改变分配比例。 程序内存就是程序可用内存, 就是正常理解的普通意义的内存。而存储内存:Object Store, 它包括了注册表, 属性数据库和上面提到的RAM盘。
ROM盘指什么呢? 首先肯定的是, 它指nk.bin。 其次, 它究竟指的是在flash上的nk.bin还是被加载到内存执行的nk.bin呢?经过测试推理, 应该指的是加载到内存里面的nk.bin。内核启动后要找到文件执行,首先执行nk.exe,这个算特例, 因为镜像入口点就是它, nk.exe要加载filesys.exe,而且filesys.exe需要获得注册表, 这个时候没有初始化磁盘,而且初始化磁盘需要注册表, 所以只有从内存的ROM盘获得,这是一个论据。 另外还做了个测试, 从电脑经过usb或者网线下载nk.bin到设备运行, 下载后并不烧写到磁盘,而是直接运行,这样测试是成功的, 说明ROM盘的确是指的内存里面镜像。

回到RAM and ROM File System vs ROM-only File System的话题。使用前者的话, 系统的根目录就是前面提到的RAM盘, 而外部磁盘如:\ResidentFlash,\Storage Card这些,就成为一个独立的目录挂载在根目录下面, ROM盘的内容则安置在\windows目录, 如果xip,你甚至还可以看到\binfs代表的nk.bin所在的磁盘。 除了外部磁盘, 对其他目录的写和更改都是发生在内存, 所以, 重启系统后全部消失了。这产生一个的问题:第三方软件怎么永久安装? 因为第三方软件常常保存东西在windows目录下面,也会修改注册表。重启后就不能使用了。这一点完全背离了用户习惯的使用经验。(微软考虑是设备是永不关机的,所以早期的ppc是没有关机功能的。) 在catalog中加入ROM-only File System组件, 并且修改注册表的MountFlags或者MountAsRoot就可以使用ROM-only File System功能,如果之前已有的项目,重新rebuild时候记得勾上clear。 它将一个磁盘当成系统的根目录。但是对于wince5.0会存在一个困扰, 就是同步功能不能工作了。根据资料,Wince6.0和mobile都提供了一个File replacition filter driver(fsreplxfilt.dll)能解决这个问题。我分析推测,因为同步是需要同步到Object Store, 这个驱动提供Object Store接口的处理。关于File replacition的描述的链接地址在这:http://msdn.microsoft.com/en-us/library/aa911937.aspx