WINCE6.0创建多个分区的实现
备注:我们的BSP包是WINCE6.0+S3C2451+SLC
要实现的目标:由之前的一个分区改为两个分区:
实现如下:
1.在eboot中定义文件系统类型,在platform.reg中增加相应的注册表信息,这是参考http://www.armce.com/bbs/thread-2882-1-1.html这个帖子来做的,但没有成功,比如我在eboot中WriteOSImageToBootMedia函数中定义分区类型:
#define PART_FATFS1 0x11
#define PART_FATFS2 0x12
hPartEx1 = BP_OpenPartition( NEXT_FREE_LOC,
SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(50*1024*1024))*PAGES_PER_BLOCK, // align to block
PART_FATFS1,
TRUE,
PART_OPEN_ALWAYS);
hPartEx2 = BP_OpenPartition( NEXT_FREE_LOC,
USE_REMAINING_SPACE,
PART_FATFS1,
TRUE,
PART_OPEN_ALWAYS);
2.然后在platorm.reg中做分区映射
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"11"="MYFS1"
"12"="MYFS2"
3.接着在platorm.reg中增加下面的注册表信息
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\MYFS1]
; "FormatExfat"=dword:1
"Flags"=dword:14
"EnableWriteBack"=dword:1
"FriendlyName"="MYFS1"
"Folder"="DISK2"
"Dll"="exfat.dll"
"Util"="fatutil.dll"
"DisableAutoFormat"=dword:1
"DisableAutoScan"=dword:1
"EnableCache"=dword:1
"CacheSize"=dword:0
"CacheDll"="diskcache.dll"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\MYFS2]
; "FormatExfat"=dword:1
"Flags"=dword:14
"FriendlyName"="MYFS2"
"Folder"="PART2"
"Dll"="exfat.dll"
"Util"="fatutil.dll"
"DisableAutoFormat"=dword:1
"DisableAutoScan"=dword:1
"EnableWriteBack"=dword:1
"EnableCache"=dword:1
"CacheSize"=dword:0
"CacheDll"="diskcache.dll"
作此修改后的系统跑不起来,停在下面的串口信息输出的地方:
#### FMD_DRIVER:::FMD_OEMIoControl
FMD_OEMIoControl: unrecognized IOCTL (0x71c24).
这部分的注册表信息如下:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="SMFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
"Flags"=dword:1000
ENDIF IMGHIVEREG
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
"DriverPath"="Drivers\\BuiltIn\\SMFLASH"
"LoadFlags"=dword:1 ; load synchronously
"BootPhase"=dword:0
IF IMGHIVEREG
"MountAsBootable"=dword:1 ; for Hive-based registry
ENDIF IMGHIVEREG
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\BINFS]
"MountHidden"=dword:1
"MountAsROM"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"11"="MYFS1"
"12"="MYFS2"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\MYFS1]
; "FormatExfat"=dword:1
"Flags"=dword:14
"EnableWriteBack"=dword:1
"FriendlyName"="MYFS1"
"Folder"="DISK2"
"Dll"="exfat.dll"
"Util"="fatutil.dll"
"DisableAutoFormat"=dword:1
"DisableAutoScan"=dword:1
"EnableCache"=dword:1
"CacheSize"=dword:0
"CacheDll"="diskcache.dll"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\MYFS2]
; "FormatExfat"=dword:1
"Flags"=dword:14
"FriendlyName"="MYFS2"
"Folder"="PART2"
"Dll"="exfat.dll"
"Util"="fatutil.dll"
"DisableAutoFormat"=dword:1
"DisableAutoScan"=dword:1
"EnableWriteBack"=dword:1
"EnableCache"=dword:1
"CacheSize"=dword:0
"CacheDll"="diskcache.dll"
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
在此向大家请教了。