深入浅出Wince的存储机制

http://blog.csdn.net/pony_maggie/article/details/5270428

转载请注明出处

作者:小马


刚学wince那会,对它的文件存储老是理解不了. 最近公司在做一个wince下的终端移植项目,中间也遇到了一些存储方面的问题,随着学习慢慢深入, 有了一些自己的理解.

 

基于wince的设备,一般有下面几种物理存储设备:
nand flash

nor flash

SDRAM

另外还有诸如SD卡, u 盘等一些不常用的外部存储.

 

nand flash在wince下应用时, 你可以把它理解为PC上的硬盘, 我们看一下PC的硬盘里放了什么. 首先是你的操作系统文件占据了C盘的一部分空间,  C盘剩下的空间以及其它盘的空间就是你可以自由访问的.

 

nand flash在基于wince的开发板上一般被分为三个部分, 首先是一个叫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也就是几百K, wince系统映像几十M, 我们当然是希望nand flash越大越好, 这样我们能任意支配的空间就大了. 先来看一下PC上最大可以支持多大的硬盘容量. 目前市场上已出了T数量级的硬盘, 你的电脑能支持的硬盘容量是什么决定呢. 是主板,再具体点,是BIOS,如果你的主板支持48 bit LBA(寻址), 则硬盘最大可以是2的48次方.

 

市场上的nand flash 芯片硬件接口无非包括控制引脚,数据引脚夫,电源和地引脚. 然后数据口和地址是复用的. 下面是K9F1208U0B的引脚图,可以很清楚的看到上面几部分

 

 

 

 

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

 

再说说wince系统的内存分配. 

 

一般买一块基于wince的开发板,如果厂家说这个板子的内存是64M, 一般是说SDRAM有64M, wince的内存就是指这个SDRAM.Wince 下的内存实际上是分为两个部分的. 即对象存储和程序内存.也即:

 Wince内存 = 对象存储 + 程序内存.

 

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

 

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

 

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

 

很多人在网上问过一个问题:如何修改对象存储和程序内存的大小比例关系?

 

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

FSRAMPERCENT = 0Xxxxxxxxx

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

 

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

 

就说这么多吧,有不对的地方请指出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值