6819|18

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wicne中的file0000.chk垃圾文件 [复制链接]

系统是 2440 + PB5.0 构成的
   在拷贝文件时候  关机重启就会产生file0000.chk 。。。。。。文件
要如何才能修复呐  ?  等高手指点迷经

最新回复

总结下     问题可能是出在 FAT32 文件系统和 flash驱动之间 冲突 falsh  扇区是2048的  FAT32的是512的  如何要解决的话可以把falsh的 扇区虚拟成512的来欺骗下CPU (这个方法我没去实现 ,因为当时时间紧。。大家可以去实现下 ^_^) 然后就是 12楼的 改注册表(我是这么实现的,现在系统还算稳定还没出现问题呐) 也可以去public中改FAT 文件系统的文件 其中有个检测文件碎片的函数 把返回值改掉 也可以的 这么多 要是有更好的方法可以 提示下   废话不说  结账给分   详情 回复 发表于 2010-4-2 16:32
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可能是flash驱动的问题,flash断电异常。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用楼主 nx427 的回复:
系统是 2440 + PB5.0 构成的
在拷贝文件时候 关机重启就会产生file0000.chk 。。。。。。文件
要如何才能修复呐 ? 等高手指点迷经

我也感觉是 驱动的 问题 就是不知道 改哪里
  驱动都看了好几遍了  能具体说下改哪里吗?
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个类似于磁盘碎片,可能是NAND驱动引起的。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
会不会是 我在写FLASH过程中 并没把数据全写进去 还有部分在内存中引起的 ?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
也遇到过没整明白
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 nx427 的回复:
会不会是 我在写FLASH过程中 并没把数据全写进去 还有部分在内存中引起的 ?

那你是怎么解决的 ?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
以前有人遇到过,后来他自己解决了,也没有说怎么解决的。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
自己顶下   很急··
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(中级)

10
 
这种情况没遇到过,拷贝过程中关机出现的?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
不懂,帮群里的兄弟顶下吧。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
帮忙顶下
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
   "Flags"=dword:24

看看你的注册表中这个键是如何配置的,设置一下禁用自动扫描试试看。

FATFS_DISABLE_AUTOSCAN 0x00000004 Disables automatic calls to ScanVolume.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
这样好像解决不了根本
  好想也是个办法  试试 谢谢 ···
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 nx427 的回复:
这样好像解决不了根本
好想也是个办法 试试 谢谢 ···


如果在正常操作的情况不会产生就可以。
拷贝文件时断电,这在PC上也会产生类似的文件,因为已经是非法操作了。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 sunrain_hjb 的回复:
如果在正常操作的情况不会产生就可以。
拷贝文件时断电,这在PC上也会产生类似的文件,因为已经是非法操作了。

主要是 我是在拷贝结束后  才正常断电的 没有非法操作  
这个是 FLASH(k9f1g08) 驱动中 写的部分
     BYTE Status;
    ULONG SectorAddr = (ULONG)startSectorAddr;
    DWORD i;
    if (!pSectorBuff && !pSectorInfoBuff)
        return(FALSE);
    NF_RSTECC();                            // Initialize ECC.
    NF_nFCE_L();                            // Select the flash chip.
        NF_CLEAR_RB();  
    NF_CMD(CMD_RESET);                        // Send reset command.
        for(i=0;i<10;i++);
        NF_DETECT_RB();

    while (dwNumSectors--)
    {
        ULONG blockPage = SectorAddr;//(((SectorAddr / NAND_PAGE_CNT) * NAND_PAGE_CNT) | (SectorAddr % NAND_PAGE_CNT));
        if (!pSectorBuff)
        {
                    NF_CLEAR_RB();   
                    NF_CMD(CMD_WRITE);   // Write 1st command
                    NF_ADDR((2048+0)&0xff);         // Column (A[7:0]) = 0
                NF_ADDR(((2048+0)>>8)&0xff);         // A[11:8]
                    NF_ADDR((blockPage)&0xff);        // A[19:12]
                    NF_ADDR((blockPage>>8)&0xff);        // A[27:20]
        #if (K9F2G08_SUPPORT||K9F4G08_SUPPORT||K9F8G08_SUPPORT)
                    if((g_pNandFlashChip->FlashID!=0xECF1)&&(g_pNandFlashChip->FlashID!=0xECA1))
                            NF_ADDR((blockPage>>16)&0xff);
        #endif
                    NF_WRDATA( (pSectorInfoBuff->bBadBlock) );

                //  Write the first reserved field (DWORD)
                NF_DATA_W4(pSectorInfoBuff->dwReserved1);

                //  Write OEM reserved flag
                NF_WRDATA( (pSectorInfoBuff->bOEMReserved) );

                //  Write the second reserved field
                NF_WRDATA( (pSectorInfoBuff->wReserved2 >> 8) & 0xff );
                NF_WRDATA( (pSectorInfoBuff->wReserved2) & 0xff );
                    pSectorInfoBuff++;
        }
        else
        {
                        NF_CLEAR_RB();   
                        NF_CMD(CMD_WRITE);   // Write 1st command
                        NF_ADDR(0);         // Column (A[7:0]) = 0
                        NF_ADDR(0);         // A[11:8]
                        NF_ADDR((blockPage)&0xff);        // A[19:12]
                        NF_ADDR((blockPage>>8)&0xff);        // A[27:20]
#if (K9F2G08_SUPPORT||K9F4G08_SUPPORT||K9F8G08_SUPPORT)
                        if((g_pNandFlashChip->FlashID!=0xECF1)&&(g_pNandFlashChip->FlashID!=0xECA1))
                                NF_ADDR((blockPage>>16)&0xff);
#endif
       
                    if( ((DWORD) pSectorBuff) & 0x3)
                        {
                //  Write the data
                        WrPage2048Unalign (pSectorBuff,(PULONG)&s2440NAND->rNFDATA);
                                RETAILMSG(1,(TEXT("o")));
                                Sleep(1);
            }
            else
            {
                               
                WrPage2048(pSectorBuff,(PULONG)&s2440NAND->rNFDATA);                // Write page/sector data.
                            RETAILMSG(1,(TEXT("x")));
                                Sleep(1);
                        }
                        if(pSectorInfoBuff)
                        {
                        //  Write the bad block flag
                                NF_WRDATA( (pSectorInfoBuff->bBadBlock) );

                                //  Write the first reserved field (DWORD)
                                NF_DATA_W4(pSectorInfoBuff->dwReserved1);

                                //  Write OEM reserved flag
                                NF_WRDATA( (pSectorInfoBuff->bOEMReserved) );

                               
                                //  Write the second reserved field
                                NF_WRDATA( (pSectorInfoBuff->wReserved2 >> 8) & 0xff );
                                NF_WRDATA( (pSectorInfoBuff->wReserved2) & 0xff );
                                pSectorInfoBuff++;
                        }
                        pSectorBuff += NAND_PAGE_SIZE;
        }
        NF_CLEAR_RB();   
        NF_CMD(CMD_WRITE2);                    // Send write confirm command.
         //  Wait for RB
          NF_DETECT_RB();         // Wait tR(max 12us)

                    //  Check the status
              NF_CMD(CMD_STATUS);
        Status = NF_RDDATA();
        if (Status & 1)
        {
                    NF_nFCE_H();                            // Deselect the flash chip.
            //SetKMode (bLastMode);
            #ifdef BOOT_LOADER
                 EdbgOutputDebugString("ERROR: FMD_WriteSector: failed sector write.\r\n");
                        #else
                                 RETAILMSG(1,(TEXT("ERROR: FMD_WriteSector: failed sector write.\r\n")));
                        #endif
                        return(FALSE);
        }
//        NF_nFCE_H();                            // Deselect the flash chip.
        ++SectorAddr;
    }

    NF_nFCE_H();                            // Deselect the flash chip.

    //SetKMode (bLastMode);
    return(TRUE);
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

17
 
拷贝结束后断电也会有这个问题?每次必现吗?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

18
 
我的也有,不过我是开机检测把这些文件删除了。

有人说是flash驱动的问题。昨天发来新的驱动,不过还没有试过。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

19
 
总结下  
  问题可能是出在 FAT32 文件系统和 flash驱动之间 冲突
falsh  扇区是2048的  FAT32的是512的  如何要解决的话可以把falsh的 扇区虚拟成512的来欺骗下CPU
(这个方法我没去实现 ,因为当时时间紧。。大家可以去实现下 ^_^)
然后就是 12楼的 改注册表(我是这么实现的,现在系统还算稳定还没出现问题呐)
也可以去public中改FAT 文件系统的文件 其中有个检测文件碎片的函数 把返回值改掉 也可以的
这么多 要是有更好的方法可以 提示下  
废话不说  结账给分
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表