文件系统

  文件系统是一个实现了数据的存储、组织、处理和获取等操作的抽象数据类型。一般分为磁盘文件系统,网络文件系统和特定功能的文件系统。

磁盘文件系统主要包括FAT(FAT12FAT16FAT32)NTFSHFSext2ext3,现在ext4也出来了。

FLASH文件系统是针对FLASH存储器设计的文件系统。随着移动设备的不断普及,和FLASH存储空间的不断增长,FLASH文件系统也流行起来。在嵌入式系统中,绝大多数都使用FLASH文件系统。

数据库文件系统是基于数据库的文件系统。与分层结构的管理不同,在数据库文件系统中,文件由描述符来标识,如文件的类型、主题、作者或其他一些元数据。

网络文件系统是用来访问服务器中文件的文件系统,常见的协议有NFSAFSSMB

现代操作系统都集成了文件系统,WinCE也不例外。与桌面Windows的文件系统不同,WinCE的文件系统中没有分区的概念。所有的文件系统,都被Mount到根目录“/”下面。编程时需要注意,WinCE中也没有当前目录的概念,所有的目录都以根目录为参考。

WinCE中支持的文件系统有如下几种:

文件系统

概要

FATFATFS

标准的FAT文件系统。单个文件不能超过4G,分区大小也有限制。

exFAT

FAT的升级版,取消了文件和分区大小的限制。

TFAT

基于exFAT的文件系统,支持交互操作,需要驱动的支持。

BinFS

支持将bin文件Mount成一个文件系统,WinCE中的Multi-BIN需要用到该文件系统。

CDFS/UDFS

用来支持CDDVD的文件系统。

RAM(对象存储)

RAM文件系统由FSD Manager管理。

RELFSD

在开发的过程中,将开发主机的release目录mount到设备上。

WinCE文件系统的配置,由注册表实现,一般在[HKLM/System/StorageManager]中。

    在定制WinCE操作系统时,我们可以选择ROM-only 的文件系统或RAM and ROM的文件系统。当选择RAM and ROM的文件系统时,根目录文件系统在内存当中,掉电即丢失。为了实现根文件系统和注册表的保存,即在冷启动时不丢失,我们需要选择ROM-only的文件系统和HIVE BASED注册表,以将存储空间Mount成根目录,并配置注册表使其支持HIVE BASED注册表。

Linux的文件系统有extXFSJFSReiserFS。嵌入式Linux的文件系统主要有rootfsRAMDiskCramfsJFFS2(基于日志的FLASH FS)、YAFFS2Yet Another FLASH FS)等。

所以,想要LinuxWinCE共用一个NAND FLASH有没有可能呢?两个想法,简单而又方便的是让Linux直接挂在WinCE下的FAT分区,第二个想法是WinCE中留一些BLOCK,给Linux处理。先MARK一下,有时间再来求证。

补充一下,最终WinCELinux共享NAND的方式是,WinCE使用前500MLinux使用后500M,修改也非常简单。在WinCE中报告容量时,将1G设置为500M既可。Linux使用NAND时,可以设置起始位置,设置在500M以后就行。

WinCE的文件系统和数据存储都指的是对象存储,对象存储是WinCE的默认文件系统,它相当于WinCE设备的硬盘。是由共享一个内存堆的文件系统、数据库和注册表组成。

WinCE文件系统既可以是一个RAMROM文件系统,也可以是一个ROM的文件系统。

数据库提供了对属性记录集的存储、访问和分类,WinCE默认数据库是CEDB(WinCE Database)数据库,同时WinCE也包括了对EDB(Embedded Database)数据库的支持,EDB数据库进一步加强了CEDB的功能。

系统注册表用于存储关于应用程序、驱动程序、用户设置和其他设置的数据。WinCE注册表要么是基于RMA(RAM-based)的注册表,要么是基于蜂窝(Hive-based)的注册表。

1.对象存储

****摘录于http://ponymaggie.blog.sohu.com/124274673.html****

现在市场上的基于wince的板子,基本上有下面几种存储设备,nand flash, nor flash, SDRAM, SD盘。SD卡和U盘不说了,跟PC机上使用没什么区别。

说说nand flash(nor flash就不说了,类似),可以把它理解为电脑上的硬盘,我们看一下电脑上的硬盘里放了什么,首先是你的操作系统文件占据了C盘的一部分空间,C盘剩下的空间以及其它盘的空间就是你可以访问的。再来看看nand flash,很多开发板把它分为三个部分首先是boot loader,它的映像文件占了nand flash的一部分,然后是你的wince的映像文件一般都有30M左右。相当于PC机上安装完操作系统占的空间最后剩下的部分的格式化后你可以拿来任意使用。 

Boot loader 主要做两件事,一是初始化一些硬件资源(比如cache),二是加载wince系统运行你可能要说nand flash与电脑硬盘的区别就是它多了一个boot loader。其实这样说不完全对,电脑其实也有一个bootloader,它的名字叫BIOS。只不过BIOS不是放在硬盘里,而是固化在主板上的只读ROM里。

Nand flash最后剩下的这部分这间怎么用呢,wince启动后,打开我的设备是看不到这部分空间的,需要你到存储器管理器”(在控制面板里)去格式化一下,然后新建一个分区这之后即使你冷启动系统,它也是可见的。

wince最大可以支持多大的nand flash一般情况下,bootloader也就是几百Kwince系统映像几十M,我们当然是希望nand flash越大越好,这样我们能任意支配的空间就大了。先来看一下PC上最大可以支持多大的硬盘容量。目前市场上已出了T数量级的硬盘,你的电脑能支持的硬盘容量是什么决定呢,是主板,再具体点,是BIOS,如果你的主板支持48 bit LBA(寻址),则硬盘最大可以是248次方。

是不是wince能支持的最大nandflash也不是wince系统决定的呢。市场上的nand flash 芯片硬件接口无非是下面几部分,控制引脚,数据引脚夫,电源和地引脚。然后数据口和地址是复用的。下面是K9F1208U0B的引脚图,可以很清楚的看到上面几部分(NC表示不用)

是了,只要能和CPU在硬件上接口匹配,然后bootloader里驱动做相应改动,就可以支持市场上最大的nand flash, 目前市场上最大的nand flash容量我不是很清楚,但06年三星就已经推出了32Gnand flash, 所以现在最大的容量起码也得大过这个数。

好了,重点来了,看看wince系统启动后的内存分配了。

一般我们买一块基于wince的开发板,如果厂家说这个板子的内存是64M,一般就是说SDRAM64M, wince的内存在硬件上就是这个SDRAM

Wince 下的内存实际上是分为两个部分的。即对象存储和程序内存

Wince内存 对象存储 程序内存。

64M的这个板子举例。开发板上电进入控制面板->系统,左边是对象存储,右边是程序内存。

先说一下对象存储对象存储是wince里一个新的概念。嵌入式wince操作系统一般是用在消费电子上面比如pocket pc,手机,PDA等移动设备上。这一类的设备一般都是有两个电源的,一个是主电源(比如你的手机电池),一个是后备电池(拆开手机,电路板上可以找到那个小电池)。后备电池的作用就是在主电源没电的情况下,维持操作系统的一些需要保存的数据,比如注册表,数据库等。而这些要保存的数据就是放在对象存储里的,可以复制一个文件到wince下(SD卡,U盘除外),会发现对象存储占用空间变大。讲到对象存储就不能不说文件系统的概念

wince 的文件系统总得来说分为两种,一种是内建的文件系统,如RAM文件系统和ROM文件系统;一种是可安装的文件系统,如FAT文件系统。 

内建的文件系统是放在对象存储里的,对象存储从物理角度来讲就是一个RAM,除了内建的文件系统外,它还包括注册表和数据库。最大支持256M的大小,对象存储的存在,面向用户隐藏了ROM文件系统和RAM文件系统的差异,对用户来讲,都可以访问,只不过ROM里的文件是只读的从另一个角度也就是说,这些文件没有必要在物量上驻留在对象存储里;而可安装的外部文件系统存在的意义是提供对外部存储设备的访问,典型的比如nand flashSD卡等。

好了,来看看很多人在网上问过的一个问题也就是如何修改对象存储和程序内存的大小比例关系。

对象存储和程序内存的大小修改就比较人性化了打开控制面板->存储器管理器,可以看到一个滑块,左右移动它就可以改变它们的比例。但是有一点要注意,这个设置是不会被保存的,系统冷启动后还是会恢复默认设置的(一般是各占一半)。那怎么办呢?有办法如果你在配置系统时就知道这两部分内存所要占的比例,可以在config.bib里加上下面的语句

FSRAMPERCENT 0Xxxxxxxxx

这个值可以改变默认设置。 

最后一个问题,wince最大支持多大的物理内存也就是SDRAM最大可以是多少。在硬件条件允许的情况下,wince的内核只能管理最大512M的物理内存这是由系统本身的内存映射机制决定的。

2.文件系统

(1)文件系统类型

WinCE主要有如下三种类型的文件系统:

基于ROM的文件系统

基于RAM的文件系统

FAT文件系统

由于WinCE没有当前目录的概念,所有对对象的引用都使用完整路径。

FAT文件系统不是一个交易安全的文件系统,如果在一个交易的中间写操作被中断,如突然断电或移动存储介质等,FAT文件系统可能崩溃。当文件分配表的内容与卷的目录表或数据部分出现不一致时,FAT卷会崩溃。TFAT文件系统则会保证当出现断电时,文件分配表和目录保持完整。

TFAT文件系统驱动是FAT文件系统驱动的超集,TFAT既支持TFAT卷又支持FAT卷。

值得注意的是:TFAT文件系统的写操作要比FAT文件系统的写操作慢,所以当考虑使用TFAT作为文件系统时,要考虑到性能的降低。读操作则两者相当。

(2)二进制ROM映像文件系统

二进制ROM映像文件系统(BinFS)是一个读由romimage.exe产生的二进制映像(.bin)文件格式的文件系统。

(3)CDFS/UDFS文件系统

压缩磁盘(Compact Disc)文件系统(CDFS)和通用磁盘(Universal Disc)文件系统(UDFS)被用来读取CD盘、DVD盘和CD-ROM

(4)可安装文件系统

可安装文件系统为开发者提供了对WinCE支持的存储设备进行扩展的能力,使WinCE的文件系统成为一个开放的系统。

3.数据库

数据库提供了属性集记录的存储、访问和分类。WinCE数据库(CEDB)模型是一个小型的、扁平的结构,并为小型的、有效的存储进行了优化。WinCE数据库没有对应的Win32 APIWinCE有自己的一套完整的数据库API

4.注册表 

WinCE注册表是一个系统数据库,用来存储关于应用程序、驱动程序、用户配置及其他配置的数据。

5.文件管理器

文件管理器实现了对象存储和存储管理,并将所有文件系统统一到一个根“/”下面的单个系统中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值