阅读:2081回复:18
请教CE5.0中FAT对NANDFLASH的支持问题
CE500中fat应该是支持2K大页的,我想知道,它对NANDFLASH的BLOCK的大小有没有限制?对总大小有没有限制?
我的问题是以前用K9K,1G的NANDFLASH, 2K的页,64页/BLOCK,FAT可以挂载,一直可以正常跑,现在换了K9G的NANDFLASH,也是1G的NANDFLASH, 2K的页,只是变成128页/BLOCK,缺不能正常跑了,每次重启动都会重新格式化FAT分区。像问一下这是怎么回事?有知道的大虾帮忙解释下。 不胜感激 |
|
沙发#
发布于:2007-07-03 09:07
我现在在用K9K4G08,但是fat一直挂载不了。大侠可不可以分享一下您的2K page是怎么挂载上去的?谢谢了。
|
|
板凳#
发布于:2007-07-03 10:01
挂不上去原因很多,你可以先参考以下“ MX21 NAND CE5.0 HIVE的问题。做过的大哥请指导一下!谢谢了! ”讨论的结果,如果还不行的话可以把你的注册表贴上来大家一起讨论一下。顺便详细说说你开发板的情况。
|
|
地板#
发布于:2007-07-03 12:35
引用第0楼jasonshi于2007-07-02 09:34发表的 请教CE5.0中FAT对NANDFLASH的支持问题 : 你从K9K到K9G改了哪些地方?另外,把注册表的AutoFormat=1去掉,会怎么样?是否是启动不了? 另外,总共的block数目也应该减少了,K9K为1024,那么K9G就应该是512 (我没看K9G文档,你说两者总容量是一样的,那总的block就应该较K9K少)。所以,这些细节的修改是不是都做完整了,另外两者的读写时的地址访问时钟周期是不是完全一样的?等等 |
|
地下室#
发布于:2007-07-03 12:55
我是在270上面搞k9k4g08,每一个page是2048,一个block是64个page。我自己在fmd_init里面调用fmd_writesector,fmd_readsector都可以正确的读写data和spare区。fmd_getinfo里面我也设置了sector 大小为2048。fmd_getblockstatus,fmd_setblockstatus也可以正常工作的。
但是fat在挂载的时候,得到的sector数目居然是负数! 注册表我就是按照之前我的512小page的nand过来的。 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NANDFLASH] "Dll"="smflash.dll" "Order"=dword:2 "Prefix"="DSK" "Ioctl"=dword:4 "Profile"="NANDFLASH" "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}" "Flags"=dword:1000 ; Override names in default profile [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH] "Name"="NAND Disk" "Folder"="NAND Disk" "MountFlags"=dword:2 ; "MountFlags"=dword:0 "AutoMount"=dword:1 "AutoPart"=dword:1 "AutoFormat"=dword:1 "FileSystem"="fatfsd.dll" "PartitionDriver"="mspart.dll" [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\NANDFLASH] "DriverPath"="Drivers\\BuiltIn\\NANDFLASH" "LoadFlags"=dword:1 "Order"=dword:0 大侠们指导指导,谢谢了。 |
|
5楼#
发布于:2007-07-03 14:27
dillonhua : 我的两片NAND分别是K9K8G:8K个blocks,K9G8G :4k 个blocks。
去掉AutoFormat=1确实启动不了了。 两者的读写时的地址访问时钟周期是完全一样的,只是擦除的时候一个是*64 ,一个是*128,这些都已经改了,如果这些不对,应该一次都起不来的,但每次都能起来,而且FAT区可以正常使用,只是每次起来都要格式化。 |
|
6楼#
发布于:2007-07-03 14:30
zzjlovece:但是fat在挂载的时候,得到的sector数目居然是负数!,这个信息你从哪里看到的?
|
|
7楼#
发布于:2007-07-03 21:04
引用第5楼jasonshi于2007-07-03 14:27发表的 : 那你AutoFormat=0看看?另外,要注意一下,他们对于invalid block的记录信息是在2048后面的第几个字节记录的 |
|
8楼#
发布于:2007-07-04 07:40
autoformat不会影响,即使将其设为1,只要FAT表的格式是对的,也不会再格式化.
我觉得这个问题主要有这两个方面: 1.访问硬件时序是不是对. 2.SECTOR INFO是否保存正确. 这两点搞定应该就没问题了. |
|
|
9楼#
发布于:2007-07-04 09:01
引用第6楼jasonshi于2007-07-03 14:30发表的 : 这个是调制信息: 0x83fc88c8: Loading partition driver mspart.dll hModule=83F9EA2C 0x83fc88c8: Driver mspart.dll loaded 0x83fc88c8: FLASHDRV.DLL:L2P_GetPhysicalSectorAddr() - Secondary table doesn't exist for logical sector 0x0!!! 0x83fc88c8: FLASHDRV.DLL:ReadFromMedia() - Unable to determine physical sector address for logical sector 0x00000000 0x83fc88c8: Opened the store hStore=000B2EB0 0x83fc88c8: FLASHDRV.DLL:L2P_GetPhysicalSectorAddr() - Secondary table doesn't exist for logical sector 0x0!!! 0x83fc88c8: FLASHDRV.DLL:ReadFromMedia() - Unable to determine physical sector address for logical sector 0x00000000 0x83fc88c8: NumSec=-384 BytesPerSec=2048 FreeSec=0 BiggestCreatable=0 很奇怪的。。。。 而且我自己写一点数据,再读出来,是一样的。spare区写进去再读出来也是一样的。 |
|
10楼#
发布于:2007-07-04 09:24
但是fat在挂载的时候,得到的sector数目居然是负数!
有没有添加对所用芯片的定义?比如: // K9K1GXXX0A family #define NAND_DEVICE_K9K1G08Q0X \ { ID_MAKER_SAMSUNG, 0x78, 16, SAMSUNG_SMALLPAGE_X08_BBI_OFFSET, 33333333, 8192, 32, 512, 16, 0x03, 0x00, TRUE } |
|
|
11楼#
发布于:2007-07-04 09:40
dillonhua:试了,还是不行,OOB中的八个字节顺序我已经调整了,应该没问题。
microsun : 1.访问硬件时序是对的. 2.SECTOR INFO也正确. 我想知道FAT对大BLOCK有没有特殊的要求?另外K9G的oob只能写一次,CE会不会多次写OOB? |
|
12楼#
发布于:2007-07-04 10:07
小弟同样遇到了这样的问题。
不过已经找出规律,发现在2KB页大小时,FAT支持最大512MB的分区,如果超过这个大小,分区程序就会自动重新分区;反之则不会自动分区。 想分两个区试试,但是也没有搞成功。 |
|
13楼#
发布于:2007-07-04 10:10
对于这个问题,看能否问问微软,文件系统内部是如何进行处理的。我就没有搞明白为什么只支持512MB大小的分区,将FLASH总大小设置超过512MB,分区程序自动重新分区并且格式化。
如果这样的话,我1GB的FLASH,只能使用一半啊。另外想搞几个分区,但是不知道如何设置。 可以加我MSN 探讨 sandassnow@msn.com 或者QQ 29271884 |
|
14楼#
发布于:2007-07-04 10:20
引用第10楼saint_bxg于2007-07-04 09:24发表的 : 呵呵,大侠我直接用的我这个k9k4g08的硬件操作,相关的配置也都是对的。应该不是您说的这个问题。 |
|
15楼#
发布于:2007-07-04 14:49
simon5430 我的QQ 36671013 我白天公司里不能用这些,晚上联系
|
|
16楼#
发布于:2007-07-05 10:25
引用第12楼simon5430于2007-07-04 10:07发表的 : 应该不是哦,我1G的flash 分的区有个960多M的 |
|
|
17楼#
发布于:2007-07-05 10:29
分区不能超过512M,看看是不是这个原因
Partition Types Value Description PART_UNKNOWN (00h) Unknown PART_DOS2_FAT (01h) 12-bit FAT PART_DOS3_FAT (04h) 16-bit FAT. Partitions smaller than 32MB. PART_EXTENDED (05h) Extended MS-DOS Partition PART_DOS4_FAT (06h) 16-bit FAT. Partitions larger than or equal to 32MB. PART_DOS32 (0Bh) 32-bit FAT. Partitions up to 2047GB. PART_DOS32X (0Ch) Same as PART_DOS32 (0Bh), but uses Logical Block Address Int 13h extensions. PART_DOSX13 (0Eh) Same as PART_DOS4_FAT (06h), but uses Logical Block Address Int 13h extensions. PART_DOSX13X (0Fh) Same as PART_EXTENDED (05h), but uses Logical Block Address Int 13h extensions. |
|
|
18楼#
发布于:2007-07-05 11:22
引用第9楼zzjlovece于2007-07-04 09:01发表的 : 我也遇到这个问题,你是怎么解决的?? 谢谢 那位大虾知道,指导一下。 谢谢了。。 |
|
|