WINCE6.0创建多个分区的实现

loongembedded
领域专家: 嵌入式与硬件开发技术领域
2012-09-07 12:25:22
备注:我们的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
在此向大家请教了。
...全文
203 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loongembedded 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
已经分享给你了,你也实现了不是???
[/Quote]
哈哈,原来是你,非常感谢了。
unsway123 2012-09-17
  • 打赏
  • 举报
回复
已经分享给你了,你也实现了不是???
loongembedded 2012-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
实现了!!!!!
[/Quote]
可否分享啊?
unsway123 2012-09-13
  • 打赏
  • 举报
回复
实现了!!!!!
loongembedded 2012-09-11
  • 打赏
  • 举报
回复
肯定有不少朋友实现过FATFS多分区,期望可以指教一下,谢谢。
loongembedded 2012-09-07
  • 打赏
  • 举报
回复
期望知道的朋友可以分享一下,谢谢了。

19,524

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧