//=====================================================================
//TITLE:
// TCC89x的NAND数据分区的设置
//AUTHOR:
// norains
//DATE:
// Thursday 11-November-2010
//Environment:
// Windows CE 6.0
// TCC8900
//=====================================================================
如果采用默认设置的话,那么NAND只有一个数据分区,也就是说,当WinCE启动之后,在“我的设备”下只能看到一个NAND目录。不过,如果使用的是TCC89x系列,则这个NAND的数据分区还可以进一步划分。现在,我们就一步一步来看看,如何进行设置。
首先,要让WinCE知道存在这些分区,所以我们需要做的,就是设置注册表。在这里,我打算添加两个分区,分别是APP和REG。在PB中添加如下注册表内容:
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/Nand/APPFATFS]
"Folder"="APP"
"FriendlyName"="FAT FileSystem"
"Paging"=dword:1
"CacheSize"=dword:10
"Util"="fatutil.dll"
;"AutoMount"=dword:1
"MountHidden"=dword:0
"MountAsROM"=dword:0
"MountFlags"=dword:0
"MountAsBootable"=dword:1
"MountAsRoot"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/Nand/REGFATFS]
"Folder"="REG"
"FriendlyName"="FAT FileSystem"
"Paging"=dword:1
"CacheSize"=dword:10
"Util"="fatutil.dll"
;"AutoMount"=dword:1
"MountHidden"=dword:0
"MountAsROM"=dword:0
"MountFlags"=dword:0
"MountAsBootable"=dword:1
"MountAsRoot"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/REGFATFS]
"MountFlags"=dword:0
"Dll"="exfat.dll"
[HKEY_LOCAL_MACHINE/System/StorageManager/APPFATFS]
"MountFlags"=dword:0
"Dll"="exfat.dll"
[HKEY_LOCAL_MACHINE/System/StorageManager/PartitionTable]
"0b"="FATFS"
"11"="APPFATFS"
"12"="REGFATFS"
"21"="BINFS"
注册表的内容比较简单,可能会觉得迷惑的是PartitionTable字段,11和12代表的是什么?为什么这里要选择这两个数值?这两个软件其实是烧录软件所用到的,在这里先不详细解释,后面再一并解说。
当然,光是有注册表还不行,系统起来后还是只有一个NAND分区。接下来的事情,我们就必须借助于Telechips自带的FWDN这个烧录软件。
首先,不要连接TCC89x设备,打开FWDN软件,选择Tools的Option,设置需要写入MBR,如图:
将TCC89x设备设置为USB启动,并连接到电脑。连接成功后,点击Nand Data区域,如图:
在弹出的对话框中选择4个分区,第一个分区选择BinFS,第二个选择0x11,第三个选择0x12,最后一个选择32-bit FAT。精明的朋友可能已经发现了,0x11和0x12和注册表PartitionTable下的数值是对应的。既然如此,那么BinFS和32-bit FAT指的又是什么呢?千万不要被字面意思所迷惑,其实这两个分别代表的是0x21和0x0b。这些数值,都是FWDN烧录时写到NAND中,方便驱动识别功能的。
右边的Image和FAT选项又是什么意思呢?两者最大的区别是,Image不会建立文件系统,而Fat会建立。另一个区别就是Image会将选择的文件数据完整地写到相应的NAND区域,而Fat会将文件夹下的所有文件写到已建立好文件系统的分区之下。简单点来说,Image将单个文件以二进制的形式写到NAND相应区域,Fat则是将文件夹下的所有文件以文件系统的形式写到相应分区。
当然,Fat你可以选择在烧录的时候是否需要额外烧录其它文件,关键在于Source Folder是否点选。
系统启动之后,进入“我的设备”就能看到相应的数据分区了,如图:
现在有个很有意思的问题,我们可不可以将APP给隐藏,不让用户去使用,但程序员却可以通过代码来进行操作呢?答案是可以的。要做到这点,非常简单,如果我们要隐藏APP分区,只要在注册表路径[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/Nand/APPFATFS]下增加一个MountHidden键值,然后设置为1即可,如:
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/Nand/APPFATFS]
"Folder"="APP"
"FriendlyName"="FAT FileSystem"
"Paging"=dword:1
"CacheSize"=dword:10
"Util"="fatutil.dll"
;"AutoMount"=dword:1
"MountHidden"=dword:1
"MountAsROM"=dword:0
"MountFlags"=dword:0
"MountAsBootable"=dword:1
"MountAsRoot"=dword:1
从图中可以看到,APP这个分区已经消失了。那么,不通过程序,是不是我们在WinCE的Explorer下就不能访问到APP分区了呢?不是,我们可以在Run命令行中输入“/APP”进入,如图:
最后,我们以一张大图,来完整诠释注册表和FWDN的关系(屏幕小的朋友注意了,你可以换显示器了?图片过宽,可能无法完整显示,可以保存到硬盘后再查看,或是复制该图片地址,直接在浏览器中打开),如图: