WINCE6.0文件系统选择
1. ROM-only文件系统
ROM-only文件系统驱动能够从ROM文件系统中读取数据,此文件系统使应用程序不能把文件保存在对象存储区中,也就是不能保存在RAM用于对象存储的区域中,而只能保存在flash和存储卡上。ROM中的数据通过Windows目录来访问,外部这里的ROM是指nk.bin在RAM中的内容,不管是选择ROM-only还是RAM and ROM文件系统,当我尝试去复制Windows目录都出弹出出错的对话框,如下图所示:
图1
说明Windows就是ROM文件(也就是nk.bin)在RAM中的目录。另外,外部文件系统可以再次作为一个独立的目录挂载到根目录下,如下图
图2
如图2,Flash Disk和Storage Card分别为flash的一个盘符和TF卡的盘符,它们都是作为一个独立的目录挂载在根目录下。
2. ROM-only文件系统的优缺点
2.1 优点
因为ROM-only文件系统,因为根目录是映射到flash的一个分区中的,所以保存在根目录、桌面、Application Data、Documents and Settings等目录下内容也就是保存在flah中的所以重启之后不会丢失,便于安装cab安装包,而不会出现重启后丢失的情况。
2.2 缺点
⑴用户可以修改系统文件,安全性相对没有那么好,比如我把触摸屏驱动touch.dll拷贝到windows目录下,这样就会覆盖掉之前的touch.dll,如下图:
图3
这样就可以轻易修掉系统的文件,可见有很大的安全隐患,而且使用时间长了,系统就会变得没那么稳定可靠了。
⑵应用程序不能把文件保存在对象存储区中,也就是不能保存在RAM用于对象存储的区域中,比如对于一个大小为32768KB的nk.nb0(25535KB的nk.bin)的存储内存(也就是对象存储区)和程序内存的分配如下图所示:
图4
由图4可知对于ROM-only文件系统来说,是不能使用对象存储区的,如果我们试图左右移动滑动条,滑动条只能跳到最右边(这是因为ROM-only不支持动态分配存储内存和程序内存),如果这时按下ok,因为滑动条是处于最右边,所以分配给程序内存大小就为0,这时候如果我们执行任何一个应用,比如回到桌面后双击my device,会弹出Out of Memory Error的对话框,内容是There is not enough memory.Please exit some running programs and try again,这时候就只能重启设备才能解决这个问题了,因为重启之后系统又恢复图3的内存分配了。
用activesync同步的时候,发现无法同步的问题,PC端同步软件的同步界面如下:
图5
如果选择同步文件,在同步过程中WINCE设备弹出出错的界面,如下图:
图6
⑷因为ROM-only文件系统不支持对象存储,比如我们对windows、My Documents、Program Files等目录的操作就是读写flash,这样相对于读写RAM来说,速度相对会慢一些,而且没有读写RAM那么稳定。
3. RAM and ROM文件系统
RAM and ROM文件系统驱动能够从ROM文件系统中读取数据,也能从对象存储区中RAM文件系统读取数据。像访问ROM一样,RAM and ROM文件系统在对象存储区中提供文件存储。对于RAM and ROM文件系统来说,文件系统的根目录是对象存储区,也就是图4左边分配的内存空间,所有保存在根目录下数据就是保存在对象存储区中,所以对于RAM and ROM文件系统来说,根据实际的需要来合理分配对象存储区,另外如flash的分区ResidentFlash,TF卡的分区Storage Card这些,就成为一个独立的目录挂载在根目录下面。
4. RAM and ROM文件系统的优缺点
4.1 缺点
⑴系统中的东西在重启后会恢复,比如保存在windows、My Documents、Program Files目录下的文件会丢失,不利于第三方cab安装包的安装。
4.2 优点
⑴对于连续不断对RAM供电的设备来说,选择RAM and ROM文件系统来说是最有效的,因为只要保持对RAM的刷新,对象存储区的数据操作(也就是对RAM的读写)就不会丢失,而对RAM的操作速度更快,效率更好。
⑵安全性相对好点,系统中的东西在重启后会恢复,这样基本上不会随着系统使用时间的推移会变得不稳定。
⑶不会存在上面ROM-only文件系统中列出来的缺点。