当前位置: 代码迷 >> WinCE >> 关于i.MX27+nandflash(K9F2G08ROA)+wince的FATFS分区挂载有关问题
  详细解决方案

关于i.MX27+nandflash(K9F2G08ROA)+wince的FATFS分区挂载有关问题

热度:246   发布时间:2016-04-28 12:58:09.0
关于i.MX27+nandflash(K9F2G08ROA)+wince的FATFS分区挂载问题
这个问题困扰了我好几天了,拜托大家帮帮忙看看是怎么回事了,帖子也看了无数了,但是还是找不到解决办法。

问题的具体情况是这样的,eboot中将nandflash分出了一个BINFS的分区,然后进到系统中可以看到两个分区分别为
  1. part00(类型:0x21,文件系统:binfs.dll,标志:0x00000000)
  2. part01(类型:0x20,文件系统:BOOT,标志:0x00000000)
两个分区都无法挂载,同时未分配的空间有200多M,将余下的空间分成FATFS格式后可以看到residenflash文件夹,也可以读写,断电后也可以保存。
其类型:0x06,文件系统:fatfs.dll,标志:0x00000010。

  但是我想让其自动去挂载这个FAT分区,不用手工的去新建那个分区,同时想将根目录放在fat这个分区下,但是怎样都不行。

看了很多文章,说是要在eboot下将剩余的空间给格式化成fat才行,我在我的eboot中加了一下语句将剩余的空间格式化成fat分区:
hPart = BP_OpenPartition(NEXT_FREE_LOC,USE_REMAINING_SPACE,
PART_DOS32, TRUE, PART_OPEN_ALWAYS);

if(hPart == INVALID_HANDLE_VALUE)
{
OALMSG(OAL_INFO, (TEXT("ERROR: Cannot create FatFS partition!\r\n")));
return FALSE;
}
else
OALMSG(OAL_INFO, (TEXT("INFO: Successfully created FatFS partition.\r\n")));
之后可以看到在flash的属性中多了一个分区part01,其类型0x06,文件系统为:fatfs.dll,标志:0x00000000,但是前面就是没有星号,没有挂载起来,点击mount,显示unable mount,不知道什么原因了,我的注册表设置如下:

; @CESYSGEN ENDIF CE_MODULES_NDIS
;
; NAND driver
;
; HIVE BOOT SECTION
IF BSP_NAND_FMD

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NAND_Flash]
  "Dll"="nandfmd.dll"
  "Order"=dword:0
  "Prefix"="DSK"
  "Ioctl"=dword:4
  "Profile"="FlashDisk"
  "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
  "FriendlyName"="NAND FLASH Driver"
; "Flags"=dword:1000

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
"DefaultFileSystem"="FATFS"
"AutoPart"=dword:1
"AutoMount"=dword:1
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
"Folder"="ResidentFlash"
"BootPhase"=dword:0
; "Flags"=dword:1000

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
; Override common setting to enable automatic formatting of unformatted volumes
"MountAsRoot"=dword:1
"Flags"=dword:00000024
"AutoPart"=dword:1
"AutoMount"=dword:1
"AutoFormat"=dword:1
"MountAsBootable"=dword:1

ENDIF
; END HIVE BOOT SECTION


拜托各位高手了,感激不尽啊!!

------解决方案--------------------
探讨
引用:
引用:
引用:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


非常感谢guopeixin,可是真的是有这样么?没有其他办法么?

简单的方法就是抄袭,哈哈
拿着别人公版bsp的相关注册表配置直接粘贴过来,因为从你的描述来看,应该是fat mount出现了问题,而不是partition等出现了问题,所以应该是注册表配置的问题,呵呵,仅供参考


我也觉得是mount出了问题,注册表我也尝试过很多种了,但是就是不行。每次clear build都需要40多分钟,太痛苦了。
  相关解决方案