wince6.0 nandflash当做mass storage

                                                                        wince6.0  nandflash当做mass storage(U盘)

 平台:wince6  + S3C6410 

BSP:友坚BSP2.1

 前些日子,有客户要求Nandflash作为 mass storage使用,不想使用同步工具传资料。下面是具体步骤:

1.勾选 Device Drivers->USB Function->USB FUnction Clients->Mass Storage

2.SMDK6410.bat  中的

 set BSP_USBFNCLASS=SERIAL
@REM set BSP_USBFNCLASS=MASS_STORAGE

修改为

@REM set BSP_USBFNCLASS=SERIAL
  set BSP_USBFNCLASS=MASS_STORAGE

3.修改platform.reg中usb function注册表

#IF 0 ;add mao for usb Mass_Storage
;------------ USB Function Driver -------------------------------------------
; @CESYSGEN IF CE_MODULES_USBFN
IF BSP_NOUSBFN !
IF BSP_KITL != USBSERIAL


[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SC6410USBFN]
"Dll"="s3c6410_usbfn.dll"
"Prefix"="UFN"
"Order"=dword:20
"Priority256"=dword:64
"Irq"=dword:60; USB OTG Virtual IRQ = 96 (0x60), Physical IRQ = 58
"BusIoctl"=dword:2a0048
"IClass"=multi_sz:"{E2BDC372-598F-4619-BC50-54B3F7848D35}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"


[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=-; erase previous default
 




;------------ USB Function Serial Driver --------------------------------------
IF BSP_USBFNCLASS == SERIAL


[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"


[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
"FriendlyName"=LOC_USBFN_SERIAL_NAME
"idVendor"=dword:045E
     ;"idVendor"=dword:0547  ;add mao
"Manufacturer"=LOC_USBFN_SERIAL_MANUFACTURER
 "idProduct"=dword:00CE


;"idProduct"=dword:2720 ;add mao
"Product"=LOC_USBFN_SERIAL_PRODUCT
"Index"=dword:5


ENDIF BSP_USBFNCLASS
;-------------------------------------------------------------------------


;------------ USB Function Mass Stroge Driver ---------------------------------
IF BSP_USBFNCLASS == MASS_STORAGE


[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
; "DefaultClientDriver"=- ; erase previous default


"DefaultClientDriver"="Mass_Storage_Class"


[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"   //DSK后缀标号要与nandflash中的index一致
"FriendlyName"="Mass Storage"
"idVendor"=dword:045E
"Manufacturer"="Generic Manufacturer (PROTOTYPE--Remember to change idVendor)"
"idProduct"=dword:FFFF
"Product"="Generic Mass Storage (PROTOTYPE--Remember to change idVendor)"
"bcdDevice"=dword:0
"Removable"=dword:0
;-----------------add mao 1217------------
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\RNDIS]


    "idVendor"=dword:0547


    "Manufacturer"=LOC_USBFN_RNDIS_MANUFACTURER


    "idProduct"=dword:2c2d


    "Product"=LOC_USBFN_RNDIS_PRODUCT
;-----------------add mao 1217------------


ENDIF BSP_USBFNCLASS


[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class]
"Index"=dword:3


[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class\High_Capacity]
"Index"=dword:3


[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\MMC_Class]
"Index"=dword:3
;-------------------------------------------------------------------------




[HKEY_CURRENT_USER\ControlPanel\Comm]
"Cnct"="`USB"


[HKEY_LOCAL_MACHINE\DebugZones]
"USBFN"=dword:ffff
"Serial"=dword:ffff
"PM"=dword:ffff


ENDIF
ENDIF BSP_NOUSBFN !
; @CESYSGEN ENDIF CE_MODULES_USBFN
;-------------------------------------------------------------------------

4.NandFlash 的注册表如下

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NANDFlash]
"Dll"="nandflash.dll"
"Prefix"="DSK"
"Order"=dword:4
;"Ioctl"=dword:4
"Profile"="NSFlash"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Index"=dword:1  ;add mao 1217




; Override names in default profile
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NSFlash]
"DefaultFileSystem"="FATFS"
 "Name"="Microsoft Flash Disk"
 "Folder"="NANDFlash"
 "PartitionDriver"="MSPart.dll"
 "AutoMount"=dword:1
 "AutoPart"=dword:1
 "AutoFormat"=dword:1 


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NSFlash\FATFS]
"EnableCache"=dword:1
"CacheSize"=dword:1000
"MountBootable"=dword:1
;"Flags"=dword:00000024
"CheckForFormat"=dword:1
;add mao
  ; "FormatExfat"=dword:1
    "FormatFAT"=dword:1 
"Flags"=dword:14
"EnableWriteBack"=dword:1
"MountAsRoot"=dword:1
"MountAsBootable"=dword:1


重新sysgen 后,下载NK后,会在pc端 发现  可移动磁盘,

遇到的问题:

点击打开时,提示未格式磁盘,需要格式化,但格式化时会出错,或者导致系统重启后起不来,

原因是:我的Nandflash被分为了BINFS 和FAT32 两个分区,pc识别的是BINFS分区,现在我们需要将FAT32分区映射给pc,修改public下的usbfn—class -storage-block.cpp中的g_hStore = OpenStore(g_szDeviceName);为

g_hStore = OpenPartition(g_hStore, _T("Part01")); //add mao for mass storage

重新编译后,发现第一次打开时 还是提示要格式化磁盘,格式化后可以使用,为什么需要格式化在网上查到原因:

CE6设备如果使用exFAT文件系统,作为Mass Storage盘符连接win xp系统的PC后,访问这个盘符时XP会提示此盘符未格式化,需要格式化,这是因为WINDOWS桌面系统是从Vista sp1才开始支持exfat的,后边的win7等都没有问题,而win xp识别exFAT需求安装补丁955704,文件名:WindowsXP-KB955704-x86-CHS.exe
下载地址:


http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=1cbe3906-ddd1-4ca2-b727-c2dff5e30f61

当然如果你未选中exfat文件系统组件,我估计是没有最后这个问题的,安装补丁后,就OK了。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值