simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:2192回复:10

NAND flash 文件系统配置求助!!紧急,谢谢各位大侠。

楼主#
更多 发布于:2007-05-21 11:05
小弟初次来搞wince的驱动,现在在弄NAND flash的文件系统,遇到了几个问题,一直苦苦的摸索但是没有解决。
问题大致如下:
1、只有当配置以下三个注册表参数全部为1时,才能mount上,现在把AutoFormat 或者AutoPart 设置为0,就不能mount上,不知道啥原因。
AutoMount = 00000001
AutoPart = 00000001
AutoFormat = 00000001

2、当设置以上三个注册表参数全部为1时,可以mount上,但是当重新启动后,上一次写的文件,在重启后无法读取,也就是根本没有保存下来。但是通过打印,在执行ReadFile时,会调用FLASH的FMD_WriteSector函数,而且写入正确了。估计是每次的格式化把它给删除掉了,但是如果每次都必须要格式化的话,就根本无法保存文件。也不知道啥原因?

3、格式化失败的打印信息
4294786560 PID:400002 TID:640002 FormatDisk!FormatVolume: New FAT #0 successfully written
4294786700 PID:400002 TID:640002 FormatDisk!FormatVolume: New root directory successfully written
4294786725 PID:400002 TID:640002 FormatDisk!FormatVolume: New BPB successfully written
4294786732 PID:400002 TID:640002 FormatDisk!FormatVolume complete.
4294786754 PID:400002 TID:640002 FSDMGR!MountFileSystemDriver: failed formatting disk before mounting!4294786759 PID:400002 TID:640002 FSD_MountDisk: Mounting volume for hDsk=D0047370
4294786771 PID:400002 TID:640002
 FMD_ReadSector+  dwNumSectors = 1 ,startSectorAddr = 0x
4294786792 PID:400002 TID:640002 FATFS!ReadRegistryValues: Registry flags = 0x24
4294786796 PID:400002 TID:640002 FATFS!ReadRegistryValues: Force write through enabled
4294786800 PID:400002 TID:640002 FATFS!ReadRegistryValues: Automatic formatting enabled
4294786804 PID:400002 TID:640002 FATFS!ReadRegistryValues: Transact data disabled
4294786807 PID:400002 TID:640002 FATFS!ReadRegistryValues: Security Support disabled

望各位wince的大侠多多指点,小弟在此不胜感激
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-21 13:49
AutoFormat = 00000001
没有找到MBR的情况下,才会format,找到MBR的情况下,应该不会format的

你是在eboot里面创建分区的吗?

重启就format  感觉是写的时候没写进去呢

偶也不知道了 搬个板凳做到等大侠来指点
[url]http://sniper167.bokee.com[/url]
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-21 15:54
就是在wince下面让它自动分区的,eboot下没有分区
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-22 20:57
这种现象是因为你写的函数不对,没有把系统要写的数据写到FLASH上,
或者是读的函数不对,读出来有错,所以文件系统认为它没有格式化过这个分区,
每次启动就会格式化.
还有,SECTOR INFO也要正确保存与读出.
学海无涯
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-23 09:47
数据是写入正确的,读取出来了。但是MBR的位置不在第一个page。
另外如果不能写入正确,那怎么mount的上,并且读写文件都正确。

问题就出在,自动分区格式化重启后,wince就不认识了。
songhuiss
驱动牛犊
驱动牛犊
  • 注册日期2005-10-07
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望55点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-05-23 15:12
那楼上有什么方法呢

这里我使用的是255平台~

出现了同样的问题

问过一些人,他们也都说读写出错~可是所有单步处理后也没有发现什么问题

奇怪,问题解决中
songhuiss
驱动牛犊
驱动牛犊
  • 注册日期2005-10-07
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望55点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-23 15:14
每次之所以能购 mount 其实就是因为 format了

在format之前是错误的,也就是说写错了~~多数情况下
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-23 17:37
我用的是CE6.0的平台,苦闷啊。
songhuiss
驱动牛犊
驱动牛犊
  • 注册日期2005-10-07
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望55点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-24 20:50
有啥结果了?
simon5430
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望67点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-05-28 10:28
我的已经搞定了。
本人初次搞wince的驱动,曾经搞了3年的vxworks bsp和驱动,与wince差异很大。
所以痛苦了这么一段时间。

我的问题原因是,spare的16个字节保存的不对,文件系统需要这些重要信息。
songhuiss
驱动牛犊
驱动牛犊
  • 注册日期2005-10-07
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望55点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-05-30 10:29
spare的16个字节保存的不对

能否详细一点说明呢?
游客

返回顶部