3495|8

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于多分区的加载问题 [复制链接]

目前的NAND 除了reserved 的 block(STEPLDR, TOC, EBOOT), MBR, 之后把剩下的NAND分成4个区, 一个BINFS分区, 3个FATFS分区。
MBR的4个分区的数据如下:
03   05 01 00    21  c4 00 00   40 01 00 00  00 30 00 00
00   c5 01 00    0b  e4 00 00   40 31 00 00  00 08 00 00
00   e5 01 00   0b  e4 00 00  40 39 00 00  00 40 00 00
00   e5 01 00   0b  e4 00 00  40 79 00 00  00 40 00 00

注册表里的配置如下:
[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}"
"Flags"=dword:00000014

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
    "PartitionDriver"="mspart.dll"
    "Folder"="NAND_FLASH"
    "AutoMount"=dword:1
    "AutoPart"=dword:1
    "AutoFormat"=dword:1
    "Name"="Microsoft Flash Disk"
        
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\BINFS]
    "DLL"="binfs.dll"

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]
    "DLL"="fatfsd.dll"

这样能否在NK启动的时候把4个分区都mount上去呢?
由于我的NK,是无界面的 ,所以debug起来比较麻烦。
在系统默认的情况下, NAND在download NK的时候,被分成了2个区, 一个NK.bin大小的文件的BINFS分区和剩下的部分分成一个FAT的分区用于用户数据,这样的情况下, 在系统上看, NAND驱动器被识别为xxxx(不知道这个名字是靠哪个键值来定义的),分区一显示为Part00, 第二分区为Part01* (这里的*是什么意思?), 这个时候挂载到系统的路径是不是 \"Folder"\ (Folder取决于注册表的配置), 但是这样就有个问题了,如果像我这样的的3个分区都被挂载了,那路径是如何的?

最新回复

这样设置了其实的扇区和大小的方式, 系统的能识别他们是同一个MBR上所定义的吗? 还有一个疑问的地方,"AutoMount"=dword:1 这个参数,我在手册上看到, 如果定义了这个会自动mount所有的分区, 这个会和上面的设置冲突造成紊乱吗?  详情 回复 发表于 2009-12-22 11:48
点赞 关注

回复
举报

64

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
MARK,顶下。
学习下
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
顶下。。。 为啥没人帮忙呢? 难道是我的问题描述得有问题?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
在存储管理器上看你的nandflash的名字就是name  Microsoft Flash Disk,你挂在上去的part00是挂载上去的名字,也就是那个folder,所以你的路径应该是\Microsoft Flash Disk\floder

如果是APP来读写数据都是需要靠这样的路径来寻找文件的。

我不知道你的注册表是基于hive还是基于RAM,如果是基于hive我敢打包票你的注册表肯定是起不来的。如果是RAM我就不好说了。因为我没有试验过。。如果兄台想要验证你的想法。。不用debug也可以看到你的分区时否挂上啊。。。可以telnet啊。。。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
学习下
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
仅仅这些注册表内容吗?
如果想实现三个FAT分区,那么FAT分区部分的注册表就要写三个,且驱动要支持。不同的路径都是通过每个folder来设置的
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk]
   "Prefix"="DSK"
   "Dll"="ONDisk.dll"
   "Order"=dword:1
   "Index"=dword:4
   "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
   "Profile"="FlashDisk"
   "BmlVolumeId"=dword:0        ; BML volume ID = 0
   "BmlPartitionId"=dword:8        ; BML parition ID = PARTITION_ID_FILESYSTEM
   "WMRStartSector"=dword:0
   "WMRNumOfSector"=dword:4000        ; 128MByte
   "Flags"=dword:11000        ; do not load again in boot phase 2        ;


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
    "DefaultFileSystem"="FATFS"
    "PartitionDriver"="mspart.dll"
    "Name"="PocketMory MLC Disk"
    "Folder"="Documents and Settings"
    "AutoMount"=dword:1
    "AutoPart"=dword:1
    "AutoFormat"=dword:1
    "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
    "FriendlyName"="PocketMory FAT FileSystem"
    "Dll"="fatfsd.dll"
    "Flags"=dword:00000014                        ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
    "FormatTfat"=dword:1
    "EnableCacheWarm"=dword:0


;----------------------------------------------------------------------------
; 2nd FAT Area
;----------------------------------------------------------------------------
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk1]
   "Prefix"="DSK"
   "Dll"="ONDisk.dll"
   "Order"=dword:1
   "Index"=dword:3
   "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
   "Profile"="FlashDisk1"
   "BmlVolumeId"=dword:0                ; BML volume ID = 0
   "BmlPartitionId"=dword:A        ; BML parition ID = PARTITION_ID_FILESYSTEM1
   "WMRStartSector"=dword:4000
   "WMRNumOfSector"=dword:4C000        ; last location
   "Flags"=dword:11000        ; do not load again in boot phase 2        ;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1]
    "DefaultFileSystem"="FATFS"
    "PartitionDriver"="mspart.dll"
    "Name"="PocketMory MLC Disk1"
    "Folder"="System"
    "AutoMount"=dword:1
    "AutoPart"=dword:1
    "AutoFormat"=dword:1
    "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
    "FriendlyName"="PocketMory FAT FileSystem1"
    "Dll"="fatfsd.dll"
    "Flags"=dword:00000014                        ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
    "FormatTfat"=dword:0
    "EnableCacheWarm"=dword:0

;----------------------------------------------------------------------------
; 3rd FAT Area
;----------------------------------------------------------------------------
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk2]
   "Prefix"="DSK"
   "Dll"="ONDisk.dll"
   "Order"=dword:1
   "Index"=dword:1
   "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
   "Profile"="FlashDisk2"
   "BmlVolumeId"=dword:0                ; BML volume ID = 0
   "BmlPartitionId"=dword:9        ; BML parition ID = PARTITION_ID_FILESYSTEM1
   "WMRStartSector"=dword:50000
   "WMRNumOfSector"=dword:ffffffff        ; last location
   "Flags"=dword:11000        ; do not load again in boot phase 2        ;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk2]
    "DefaultFileSystem"="FATFS"
    "PartitionDriver"="mspart.dll"
    "Name"="PocketMory MLC Disk2"
    "Folder"="Storage Card"
    "AutoMount"=dword:1
    "AutoPart"=dword:1
    "AutoFormat"=dword:1
    "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk2\FATFS]
    "FriendlyName"="PocketMory FAT FileSystem2"
    "Dll"="fatfsd.dll"
    "Flags"=dword:00000014                        ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
    "FormatTfat"=dword:0
    "EnableCacheWarm"=dword:0


其中,"WMRStartSector"=dword:0
   "WMRNumOfSector"=dword:4000        ; 128MByte
是设置每个分区的起始地址及分区大小,驱动从注册表中读取这个数据
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
啊。。 是要3组的呀?  我好好研究下你的 reg信息, 非常感谢各位。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 veabol 的回复:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk]
? "Prefix"="DSK"
? "Dll"="ONDisk.dll"
? "Order"=dword:1
? "Index"=dword:4
? "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
? "Profile"="FlashDisk"
? "BmlVolumeId"=dword:0 ; BML volume ID = 0
? "BmlPartitionId"=dword:8 ; BML parition ID = PARTITION_ID_FILESYSTEM
? "WMRStartSector"=dword:0
? "WMRNumOfSector"=dword:4000 ; 128MByte
? "Flags"=dword:11000 ; do not load again in boot phase 2 ;


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
? ? "DefaultFileSystem"="FATFS"
? ? "PartitionDriver"="mspart.dll"
? ? "Name"="PocketMory MLC Disk"
? ? "Folder"="Documents and Settings"
? ? "AutoMount"=dword:1
? ? "AutoPart"=dword:1
? ? "AutoFormat"=dword:1
? ? "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
? ? "FriendlyName"="PocketMory FAT FileSystem"
? ? "Dll"="fatfsd.dll"
? ? "Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
? ? "FormatTfat"=dword:1
? ? "EnableCacheWarm"=dword:0


;----------------------------------------------------------------------------
; 2nd FAT Area
;----------------------------------------------------------------------------
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk1]
? "Prefix"="DSK"
? "Dll"="ONDisk.dll"
? "Order"=dword:1
? "Index"=dword:3
? "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
? "Profile"="FlashDisk1"
? "BmlVolumeId"=dword:0 ; BML volume ID = 0
? "BmlPartitionId"=dword:A ; BML parition ID = PARTITION_ID_FILESYSTEM1
? "WMRStartSector"=dword:4000
? "WMRNumOfSector"=dword:4C000 ; last location
? "Flags"=dword:11000 ; do not load again in boot phase 2 ;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1]
? ? "DefaultFileSystem"="FATFS"
? ? "PartitionDriver"="mspart.dll"
? ? "Name"="PocketMory MLC Disk1"
? ? "Folder"="System"
? ? "AutoMount"=dword:1
? ? "AutoPart"=dword:1
? ? "AutoFormat"=dword:1
? ? "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
? ? "FriendlyName"="PocketMory FAT FileSystem1"
? ? "Dll"="fatfsd.dll"
? ? "Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
? ? "FormatTfat"=dword:0
? ? "EnableCacheWarm"=dword:0

;----------------------------------------------------------------------------
; 3rd FAT Area
;----------------------------------------------------------------------------
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk2]
? "Prefix"="DSK"
? "Dll"="ONDisk.dll"
? "Order"=dword:1
? "Index"=dword:1
? "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
? "Profile"="FlashDisk2"
? "BmlVolumeId"=dword:0 ; BML volume ID = 0
? "BmlPartitionId"=dword:9 ; BML parition ID = PARTITION_ID_FILESYSTEM1
? "WMRStartSector"=dword:50000
? "WMRNumOfSector"=dword:ffffffff ; last location
? "Flags"=dword:11000 ; do not load again in boot phase 2 ;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk2]
? ? "DefaultFileSystem"="FATFS"
? ? "PartitionDriver"="mspart.dll"
? ? "Name"="PocketMory MLC Disk2"
? ? "Folder"="Storage Card"
? ? "AutoMount"=dword:1
? ? "AutoPart"=dword:1
? ? "AutoFormat"=dword:1
? ? "MountFlags"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk2\FATFS]
? ? "FriendlyName"="PocketMory FAT FileSystem2"
? ? "Dll"="fatfsd.dll"
? ? "Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
? ? "FormatTfat"=dword:0
? ? "EnableCacheWarm"=dword:0


其中,"WMRStartSector"=dword:0
? "WMRNumOfSector"=dword:4000 ; 128MByte
是设置每个分区的起始地址及分区大小,驱动从注册表中读取这个数据


这样设置了其实的扇区和大小的方式, 系统的能识别他们是同一个MBR上所定义的吗?
还有一个疑问的地方,"AutoMount"=dword:1 这个参数,我在手册上看到, 如果定义了这个会自动mount所有的分区, 这个会和上面的设置冲突造成紊乱吗?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表