在CSDN看到的,转过来学习一下
http://bbs.csdn.net/topics/330066780
用CreatePartition()就可以了。流程
1、用FindFirstStore()和FindNextStore()枚举系统中所有Store设备,根据szStoreName判断是不是我们要的Nand Flash。
2、根据找到的Store句柄调用CreatePartition(),可以指定partition的名字、扇区数
3、调用OpenPartition(),根据Store句柄和Partition的名字打开分区
4、调用DismountPartition()卸载分区。
5、调用FormatVolume()格式化分区,此时可以指定簇大小、FAT版本等。
6、调用MountPartition()加载分区
2---6可以重复多次调用,就可以建立多个分区了。
注意每个分区的大小,不要第一次就用完了Store的所用空间,后面的分区会建立失败的
注册表
引用 5 楼 gooogleman 的回复:
引用 3 楼 yangcuncunzhang 的回复:
用CreatePartition()就可以了。流程
1、用FindFirstStore()和FindNextStore()枚举系统中所有Store设备,根据szStoreName判断是不是我们要的Nand Flash。
2、根据找到的Store句柄调用CreatePartition(),可以指定partition的名字、扇区数
3、调用OpenPartition(),根据Store句柄和Partition的名字打开分区
4、调用DismountPartition()卸载分区。
5、调用FormatVolume()格式化分区,此时可以指定簇大小、FAT版本等。
6、调用MountPartition()加载分区
2---6可以重复多次调用,就可以建立多个分区了。
注意每个分区的大小,不要第一次就用完了Store的所用空间,后面的分区会建立失败的
楼主是ADS bootloader的,估计是自动分区那种,楼主应该 多加载一次驱动,估计就可以了。呵呵
BootLoader是什么编译的应该没关系吧?
我的项目中,BootLoader也是ADS1.2的,WinCE5是PlatForm Builder做的,就是用上面的办法建立多个分区的,注册表中只用了一份驱动。这样有个小缺陷:分区的名字是根据注册表里面指定的,如果用上面的API建立多个分区,各个盘符的名字会是Nand Flash, Nand Flash1, Nand Flash2。
楼主,下面是我的注册表项
; Use Device Manager to load the NAND FMD driver as a built-in block driver.
; This can be used for both WinCE and Windows Mobile builds.
;
; Note: We support Windows Mobile Image Update build for SmartPhone,
; and the registry settings below get conflicts with the ones needed by Image Update.
; So we will overwrite them and setup Storage Manager Autoload keys in SmartPhone section
; to load NAND FMD driver as persistent storage during the early boot phases.
;
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NANDFMD]
"Profile"="FlashDisk"
"Index"=dword:1
"Dll"="nandfmd.dll"
"Prefix"="DSK"
"Order"=dword:1
"FSD"="FATFS.DLL"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
; Override names in default profile. These settings are also required to
; support the automatic mounting and creation of the "NAND Flash" folder.
;
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
"DriverPath"="Drivers\\BuiltIn\\NANDFMD"
"Name"="NAND FLASH"
"Folder"="NAND Flash"
"DefaultFileSystem"="FATFS"
"EnableCache"=dword:1
"CacheSize"=dword:0
; Explicitly specify the use of the TFAT filesystem for NAND flash.
;
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
"FormatTfat"=dword:1 ; Format partitions to be TFAT
"Flags"=dword:007C1014 ; reference follow bit flag
如果用EBOOT的话,在EBOOT里重复用
hPartEx = BP_OpenPartition( NEXT_FREE_LOC,
USE_REMAINING_SPACE,
PART_DOS32,
FALSE,
PART_OPEN_ALWAYS);
就可以建立多少分区
如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460
; Explicitly specify the use of the TFAT filesystem for NAND flash.
;
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
"FormatTfat"=dword:1 ; Format partitions to be TFAT
"Flags"=dword:007C1014 ; reference follow bit flag
FlashDisk1 这个有点奇怪,难道是要改注册表的?FlashDisk1应该是FlashDisk才对啊。:funk1::funk1:
如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460