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

weigedianqi   2009-11-9 18:54 楼主
这个问题困扰了我好几天了,拜托大家帮帮忙看看是怎么回事了,帖子也看了无数了,但是还是找不到解决办法。

问题的具体情况是这样的,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


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

回复评论 (12)

"Flags"=dword:00000024
-->"Flags"=dword:00000014
点赞  2009-11-9 19:15
引用: 引用 1 楼 guopeixin 的回复:
"Flags"=dword:00000024
-->"Flags"=dword:00000014


这个是起什么作用的呢?我看到有的是24,有的是14,还有我想是否需要在eboot中将剩余的空间给格式化成fat格式的分区呢?
点赞  2009-11-9 19:19
忘了说了是wince5.0,怎么没有人气了,顶上去!
点赞  2009-11-10 09:21
引用: 引用 2 楼 giwawe 的回复:
引用 1 楼 guopeixin 的回复:
"Flags"=dword:00000024
-->"Flags"=dword:00000014



这个是起什么作用的呢?我看到有的是24,有的是14,还有我想是否需要在eboot中将剩余的空间给格式化成fat格式的分区呢?

我给你顶,呵呵
先说一下结果是怎么样的
点赞  2009-11-10 09:39
引用: 引用 4 楼 guopeixin 的回复:
引用 2 楼 giwawe 的回复:
引用 1 楼 guopeixin 的回复:
"Flags"=dword:00000024
-->"Flags"=dword:00000014


这个是起什么作用的呢?我看到有的是24,有的是14,还有我想是否需要在eboot中将剩余的空间给格式化成fat格式的分区呢?

我给你顶,呵呵
先说一下结果是怎么样的


结果还是一样,没有什么变化啊!
点赞  2009-11-10 14:45
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方
点赞  2009-11-10 20:02
引用: 引用 6 楼 guopeixin 的回复:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


非常感谢guopeixin,可是真的是有这样么?没有其他办法么?
点赞  2009-11-11 09:28
引用: 引用 7 楼 giwawe 的回复:
引用 6 楼 guopeixin 的回复:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


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

简单的方法就是抄袭,哈哈
拿着别人公版bsp的相关注册表配置直接粘贴过来,因为从你的描述来看,应该是fat mount出现了问题,而不是partition等出现了问题,所以应该是注册表配置的问题,呵呵,仅供参考
点赞  2009-11-11 09:52
引用: 引用 8 楼 guopeixin 的回复:
引用 7 楼 giwawe 的回复:
引用 6 楼 guopeixin 的回复:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


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

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


我也觉得是mount出了问题,注册表我也尝试过很多种了,但是就是不行。每次clear build都需要40多分钟,太痛苦了。
点赞  2009-11-11 09:59
引用: 引用 9 楼 giwawe 的回复:
引用 8 楼 guopeixin 的回复:
引用 7 楼 giwawe 的回复:
引用 6 楼 guopeixin 的回复:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


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

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


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

那还是仔细的和公版中对比一下,这样来的最快也最简单,等好了,回过头来再查原因吧
点赞  2009-11-11 20:59
引用: 引用 10 楼 guopeixin 的回复:
引用 9 楼 giwawe 的回复:
引用 8 楼 guopeixin 的回复:
引用 7 楼 giwawe 的回复:
引用 6 楼 guopeixin 的回复:
有点麻烦了,呵呵
两个方法
1. 把storage manager的代码移植到bsp下,然后调试fat mount那段代码
2. 或者build一个debug 版的image,从log信息找到出问题的地方


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

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


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

那还是仔细的和公版中对比一下,这样来的最快也最简单,等好了,回过头来再查原因吧


非常感谢guopeixin的建议,现在先弄wifi部分的东西,等段时间再来弄这个了。
点赞  2009-11-12 09:30
先结贴,以后再开贴了
点赞  2009-11-12 21:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复