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