davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2539回复:15

wince5.0, K9F1G08和永久存储

楼主#
更多 发布于:2008-08-12 12:02
请教一下,我在使用K9F1G08时,只要在nandflash上进行文件操作,如拷文件,就会产生碎片文件(.chk)。
而之前使用1208时就没这个问题。
哪位高手知道这是什么原因?
mykxc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-03
  • 最后登录2009-03-17
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望19点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-12 14:26
同是天涯沦落人,我也在琢磨这个问题
davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-08-12 14:39
感谢关注!
不知道是不是页大小改变引起的?1208的页大小是512 bytes,而1G08的页大小是2K!
我想只有这个参数才会引起这个问题,我尝试欺骗一下内核,把1G08的2K页分成4个512bytes大小的页来访问,但是引起了另外一个问题:每次启动时内核都会重新格式化nandflash!好像没有找到MBR一样!
郁闷!
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-08-12 16:09
拿着精华的例子就可以用,我的好像没出现你们的这么多问题
WINCE/EVC/VS2005群:18219722
davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-08-12 17:15
请问楼上,你是将一个页(2K)大小作为一个扇区供内核使用的吗?
ztg0021
驱动小牛
驱动小牛
  • 注册日期2007-02-09
  • 最后登录2016-02-18
  • 粉丝1
  • 关注0
  • 积分141分
  • 威望223点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-08-13 08:42
对的,他本来就是1页2k啊
WINCE/EVC/VS2005群:18219722
mykxc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-03
  • 最后登录2009-03-17
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望19点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-08-13 09:07
文件数量不多时不会自动产生碎片文件,当flash里的文件较多时每次重新启动都会多出来一堆碎片文件。
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-08-13 12:16
在函数ScanVolume,ScanVolumeEx中返回ERROR_SUCCESS就不会产生这个问题。
WINCE500\PUBLIC\COMMON\OAK\DRIVERS\FSD\FATUTIL\MAIN\scandisk.cpp
在存储管理器中分区属性扫描一下可以看一下效果。
但问题的根源没有找到,感觉可能是文件系统和设备驱动不完全兼容吧,我同事曾经把2K的底层驱动都模拟成512的,这样也没有CHK文件。
努力! 成功就在不远处....
davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-08-13 14:48
像我在2楼说的,我也怀疑是flash驱动和文件系统对SECTOR_SIZE的不一致引起的,驱动里是把1G08的一页即2K作为一个SECTOR,而文件系统里的SECTOR却是512 bytes.
尝试了把2K页面模拟成4个512byte来访问,但出现了每次上电启动时会重新格式化剩余nandflash的问题,不知7楼的同仁你们又没有遇到过?
mykxc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-03
  • 最后登录2009-03-17
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望19点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-08-13 17:27
难道其他使用2K页面的同志都没有碰到这个问题的吗?
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-08-14 01:01
上电启动格式化-
这个注册表中设置一下就好了吧,自动格式化、自动分区、自动挂载、自动扫描分区..
一般第一次会有吧,以后都不会了
努力! 成功就在不远处....
mykxc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-03
  • 最后登录2009-03-17
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望19点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-08-14 10:45
每次开机格式化NAND的情况我也碰到过,后来发现是读写spare info数据处理有问题造成的。不知道你的情况怎样
davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-08-19 11:02
这个问题已经解决了,方案就是将2K的大页面分成4个512字节的小页面来访问,只不过要注意SPARE区域的写。
mykxc
驱动牛犊
驱动牛犊
  • 注册日期2003-03-03
  • 最后登录2009-03-17
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望19点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-09-06 18:28
是不是模拟成512BYTES/Sector, 256Sector/Block, Block总数还是8192?Spare data 要不要也分成四块?
niuniu123
驱动牛犊
驱动牛犊
  • 注册日期2008-07-24
  • 最后登录2009-12-02
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2008-09-25 16:50
晕,我用1208都有这个问题,只要多次测试copy大的file到nandflash就会出现。
davisy040919
驱动牛犊
驱动牛犊
  • 注册日期2006-06-18
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望49点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2008-10-08 17:33
"将2K的大页面分成4个512字节的小页面来访问",每SECTOR当然就是512BYTES,而每BLOCK的SECTOR数自然就是以前的4倍了,总BLOCK数仍然不变。从而FLASH的总容量仍没变。
spare区域也要分成4块,不能冲突。
游客

返回顶部