查看: 4240|回复: 14

[求助] YL-KL26Z 移植FAT32文件系统 遇到诡异事情

[复制链接]
  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
    发表于 2016-4-5 15:51:01 | 显示全部楼层 |阅读模式
    打算将FAT32文件系统移植到KL26中(用znFAT),接口都调好了,然后调用API往SD卡里面创建txt文件,然后想往这个txt文件里面写入数据的时候出问题了,调用写数据的函数成功返回了写入数据的长度,用读卡器打开SD也可以看到txt文件大小符合写入的数据大小,但是一打开txt文件里面,发现里面什么内容都没有,或者说是看不见吧,可以感觉到有东西在里面,不过就是看不到,求解~
    我知道答案 目前已有14人回答
    1.png
    2.png
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2016-4-5 16:23:41 | 显示全部楼层
    楼主你好!
    你每次打开文件,写入数据之后,有没有把文件关掉?
    关掉文件是非常重要的,否则可能导致新建文件,写入不成功。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2016-4-5 16:29:58 | 显示全部楼层
    小恩GG 发表于 2016-4-5 16:23
    楼主你好!
    你每次打开文件,写入数据之后,有没有把文件关掉?
    关掉文件是非常重要的,否则可能导致新建文 ...

    恩恩,有调用关闭文件的函数的,而且显示返回值是0,表示关闭成功的~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2016-4-5 16:31:20 | 显示全部楼层
    小恩GG 发表于 2016-4-5 16:23
    楼主你好!
    你每次打开文件,写入数据之后,有没有把文件关掉?
    关掉文件是非常重要的,否则可能导致新建文 ...

    但是还是这个样子,数据显示不出来,SD卡的物理层读写扇区的函数都测试过了的,是没问题的~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2016-4-5 17:20:48 | 显示全部楼层
    最后无事 发表于 2016-4-5 16:29
    恩恩,有调用关闭文件的函数的,而且显示返回值是0,表示关闭成功的~

    znFAT我到没有用过,不过我用过fatfs文件,都是可以的。
    你写入的时候,写入函数读写有没有问题呢?比如直接操作sd卡的block读写。
    另外,你把SD卡里面的文件给删掉,然后重新建一个,再写入试试。
    你把你写入的函数调用给我看看呢,长度控制的对不对?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2016-4-5 18:10:49 | 显示全部楼层
    本帖最后由 最后无事 于 2016-4-5 18:12 编辑
    小恩GG 发表于 2016-4-5 17:20
    znFAT我到没有用过,不过我用过fatfs文件,都是可以的。
    你写入的时候,写入函数读写有没有问题呢?比如 ...

    你说的直接操作SD卡的block读写这种方法我试过了,是没有问题的。
    我忘txt里面写东西,是调用这个函数的 znFAT_WriteData(&fileinfo,20,buf);
    UINT32 znFAT_WriteData(struct FileInfo *pfi,UINT32 len,UINT8 *pbuf)
    {
    UINT32 temp=0,temp1=0,len_temp=len;
    UINT32 Cluster_Size=((pInit_Args->BytesPerSector)*(pInit_Args->SectorsPerClust));
    printf("Cluster_Size = %d\n",Cluster_Size);
    #ifdef USE_EXCHANGE_BUFFER
    #ifndef USE_ALONE_EXB
    UINT8 old_devno=Dev_No;
    #else
    pexb_buf=(pfi->exb_buf);
    #endif
    #endif

    just_file=pfi;

    #ifndef RT_UPDATE_CLUSTER_CHAIN
    get_next_cluster_in_cccb=1;
    #ifdef USE_ALONE_CCCB
    CCCB_To_Alone();
    #endif
    #endif

    if(0==len) return 0; //Èç¹ûҪдÈëµÄÊý¾Ý³¤¶ÈΪ0£¬ÔòÖ±½Ó·µ»Ø0
    printf("aaaaaaaaaaaa\n");
    if(len>(0XFFFFFFFF-pfi->File_Size)) return (UINT32)-2; //Îļþ´óСÔÚдÈëÊý¾Ýºó½«·¢ÉúÒç³ö´íÎó

    znFAT_Seek(pfi,pfi->File_Size); //ÎļþÊý¾Ý¶¨Î»µ½Îļþĩ⣬ÎļþλÖÃÏà¹ØÐÅÏ¢Ëæ¼´¸Ä±ä

    //¼ì²é´ÅÅÌÊ£Óà¿Õ¼äÊÇ·ñ¹»ÓÃ
    printf("File_CurOffset = %d\n",pfi->File_CurOffset);
    if((pfi->File_CurOffset%Cluster_Size)!=0)
    {
            printf("bbbbbbbbb\n");
      temp=((pInit_Args->BytesPerSector)-(pfi->File_CurPos))+((LAST_SEC_OF_CLU(pfi->File_CurClust))-(pfi->File_CurSec))*(Cluster_Size);
      //µ±Ç°´ØÊ£ÓàÊý¾ÝÁ¿

      if(len>temp) //Èç¹ûҪдÈëµÄÊý¾ÝÁ¿´óÓÚtemp£¬Ôò˵Ã÷±ØÈ»»á³¬³öµ±Ç°´Ø£¬ÎªÆäÀ©Õ¹¿Õ´Ø
      {
       temp1=(len-temp)/(Cluster_Size);
       if((len-temp)%(Cluster_Size)) temp1++; //¼ÆËãÐèÒª¶àÉÙ¸ö¿Õ´Ø

       if(temp1>(pInit_Args->Free_nCluster)) return ((UINT32)-1); //¿Õ¼ä²»×ã
      }

    }
    else
    {
      temp1=len/(Cluster_Size);
      if(len%(Cluster_Size)) temp1++; //¼ÆËãÐèÒª¶àÉÙ¸ö¿Õ´Ø  
      if(temp1>(pInit_Args->Free_nCluster))
                    //return ((UINT32)-1); //¿Õ¼ä²»×ã
              return (10); //¿Õ¼ä²»×ã
    }

    //===========================================================================================================

    temp=((pInit_Args->BytesPerSector)-(pfi->File_CurPos)); //¼ÆË㸳¸øÁÙʱ±äÁ¿£¬ÒÔÃâºóÃæÖØ¸´¼ÆËã

    if((pfi->File_CurOffset%Cluster_Size)!=0)
    {
      if(len<=temp) //ҪдÈëµÄÊý¾ÝСÓÚµÈÓÚµ±Ç°ÉÈÇøÊ£ÓàÊý¾ÝÁ¿
      {
       #ifndef USE_EXCHANGE_BUFFER
       znFAT_Device_Read_Sector(pfi->File_CurSec,znFAT_Buffer); //¶ÁÈ¡µ±Ç°ÉÈÇøÊý¾Ý£¬ÒÔ±ã×÷ÉÈÇøÄÚÊý¾ÝÆ´½Ó
       Memory_Copy(znFAT_Buffer+pfi->File_CurPos,pbuf,len); //ÉÈÇøÊý¾ÝÆ´½Ó
       znFAT_Device_Write_Sector(pfi->File_CurSec,znFAT_Buffer); //»ØÐ´ÉÈÇøÊý¾Ý
       #endif

       if(len==temp) //Èç¹ûҪдÈëµÄÊý¾ÝÕýºÃÕ¼Âúµ±Ç°ÉÈÇø
       {
            #ifdef USE_EXCHANGE_BUFFER
            if(0!=pfi->File_CurPos)
            {
         #ifndef USE_ALONE_EXB
             if(Dev_No!=sexb_cur_dev) //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸²»Êǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
             {
              if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
              {
               Dev_No=sexb_cur_dev;
               znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

           Dev_No=old_devno;
              }
              znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
             }
             else //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸ÕýÊǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
             {
              if(sexb_cur_sec!=(pfi->File_CurSec)) //Õ¼ÓÃEXBµÄÉÈÇø²»Êǵ±Ç°Òª²Ù×÷µÄÉÈÇø
              {
               if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
               {
                znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

                znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
               }           
              }
             }
         #endif

             Memory_Copy(pexb_buf+pfi->File_CurPos,pbuf,len); //ÉÈÇøÊý¾ÝÆ´½Ó

         znFAT_Device_Write_Sector(pfi->File_CurSec,pexb_buf); //»ØÐ´ÉÈÇøÊý¾Ý
         
         #ifndef USE_ALONE_EXB
             sexb_cur_sec=0; //ÿ´ÎEXBÖеÄÊý¾ÝÒÔÕûÉÈÇøÊý¾Ý»ØÐ´Ö®ºó£¬ÎÒÃDZãÈÏΪËü²»ÔÙ±»Õ¼ÓÃÁË
             sexb_cur_dev=(UINT8)(-1); //EXBµÄµ±Ç°É豸ºÅÖÃΪ¿Õ£¬ÕâÀïÈ¡-1È϶¨ÆäΪ¿Õ£¬ÎªÁËÓëÓÐЧÉ豸ºÅ0ÏàÇø·Ö
             psexb_cur_oc=(struct FileInfo *)0; //´ËʱEXB²»¹éÈκÎÎļþËùÓÐ
         #endif
            }
            else
            {
             znFAT_Device_Write_Sector(pfi->File_CurSec,pbuf); //»ØÐ´ÉÈÇøÊý¾Ý
            }
        #endif

            if(IS_END_SEC_OF_CLU(pfi->File_CurSec,pfi->File_CurClust)) //Èç¹ûµ±Ç°ÉÈÇøÊǵ±Ç°´ØµÄ×îºóÒ»¸öÉÈÇø
            {
             pfi->File_CurSec=SOC(pfi->File_CurClust); //¸üе±Ç°ÉÈÇø£¬ÆäʵÎÞЧ£¬ÎªÁ˹æÕû
            }
            else //µ±Ç°ÉÈÇø²»Êǵ±Ç°´ØµÄ×îºóÉÈÇø
            {
             pfi->File_CurSec++;
            }

            pfi->File_CurPos=0;
            pfi->File_CurOffset+=len; //¸üе±Ç°Æ«ÒÆÁ¿
            pfi->File_Size+=len; //¸üÐÂÎļþ´óС
         
      #ifdef RT_UPDATE_FILESIZE
            Update_File_Size(pfi); //¸üÎļþĿ¼ÏîÖеÄÎļþ´óС×Ö¶Î
      #endif
      printf("qqq\n");
            printf("len = %d\n",len);
            return len;
      }
      else//lenСÓÚµ±Ç°ÉÈÇøÊ£ÓàÊý¾ÝÁ¿
      {  
            #ifdef USE_EXCHANGE_BUFFER
        #ifndef USE_ALONE_EXB
            if(Dev_No!=sexb_cur_dev) //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸²»Êǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
            {
             if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
             {
              Dev_No=sexb_cur_dev;
              znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

          Dev_No=old_devno;
             }
             znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
            }
            else //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸ÕýÊǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
            {
             if(sexb_cur_sec!=(pfi->File_CurSec)) //Õ¼ÓÃEXBµÄÉÈÇø²»Êǵ±Ç°Òª²Ù×÷µÄÉÈÇø
             {
              if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
              {
               znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

               znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
              }           
             }
            }
        #endif
            Memory_Copy(pexb_buf+pfi->File_CurPos,pbuf,len); //ÉÈÇøÊý¾ÝÆ´½Ó

        #ifndef USE_ALONE_EXB
            sexb_cur_dev=Dev_No;
            sexb_cur_sec=pfi->File_CurSec;
            psexb_cur_oc=pfi; //¼Ç¼EXBÖлº³åµÄÊý¾ÝÊôÓÚÄĸöÎļþ
        #endif
        #endif
        //znFAT_Device_Write_Sector(pfi->File_CurSec,ex_buf); //»ØÐ´ÉÈÇøÊý¾Ý

        pfi->File_CurPos+=(UINT16)len;
        pfi->File_CurOffset+=len; //¸üе±Ç°Æ«ÒÆÁ¿
        pfi->File_Size+=len; //¸üÐÂÎļþ´óС
            
        #ifdef RT_UPDATE_FILESIZE
            Update_File_Size(pfi); //¸üÎļþĿ¼ÏîÖеÄÎļþ´óС×Ö¶Î
        #endif
      printf("www\n");
            printf("len = %d\n",len);
            return len;         
       }
      }
      else
      {
       #ifndef USE_EXCHANGE_BUFFER
       znFAT_Device_Read_Sector(pfi->File_CurSec,znFAT_Buffer); //¶ÁÈ¡µ±Ç°ÉÈÇø
       Memory_Copy(znFAT_Buffer+pfi->File_CurPos,pbuf,temp); //ÉÈÇøÊý¾ÝÆ´½Ó
       znFAT_Device_Write_Sector(pfi->File_CurSec,znFAT_Buffer); //»ØÐ´ÉÈÇø
       #else

       if(0!=pfi->File_CurPos)
       {
        #ifndef USE_ALONE_EXB
            if(Dev_No!=sexb_cur_dev) //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸²»Êǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
            {
             if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
             {
              Dev_No=sexb_cur_dev;
              znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

          Dev_No=old_devno;
             }
             znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
            }
            else //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸ÕýÊǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
            {
             if(sexb_cur_sec!=(pfi->File_CurSec)) //Õ¼ÓÃEXBµÄÉÈÇø²»Êǵ±Ç°Òª²Ù×÷µÄÉÈÇø
             {
              if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
              {
               znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

               znFAT_Device_Read_Sector(pfi->File_CurSec,pexb_buf);
              }           
             }
            }
        #endif

              Memory_Copy(pexb_buf+pfi->File_CurPos,pbuf,temp); //ÉÈÇøÊý¾ÝÆ´½Ó

        znFAT_Device_Write_Sector(pfi->File_CurSec,pexb_buf); //»ØÐ´ÉÈÇøÊý¾Ý

        #ifndef USE_ALONE_EXB
            sexb_cur_sec=0; //ÿ´ÎEXBÖеÄÊý¾ÝÒÔÕûÉÈÇøÊý¾Ý»ØÐ´Ö®ºó£¬ÎÒÃDZãÈÏΪËü²»ÔÙ±»Õ¼ÓÃÁË
            sexb_cur_dev=(UINT8)(-1); //EXBµÄµ±Ç°É豸ºÅÖÃΪ¿Õ£¬ÕâÀïÈ¡-1È϶¨ÆäΪ¿Õ£¬ÎªÁËÓëÓÐЧÉ豸ºÅ0ÏàÇø·Ö
            psexb_cur_oc=(struct FileInfo *)0;
        #endif
       }
       else //Èç¹ûµ±Ç°Î»ÖÃÔÚ0λÖã¬ÔòÖ±½ÓдÉÈÇø
       {
            znFAT_Device_Write_Sector(pfi->File_CurSec,pbuf); //»ØÐ´ÉÈÇøÊý¾Ý
       }
       #endif

       len_temp-=temp;
       pbuf+=temp;

       if(!(IS_END_SEC_OF_CLU(pfi->File_CurSec,pfi->File_CurClust))) //Èç¹ûµ±Ç°ÉÈÇø²»Êǵ±Ç°´ØµÄ×îºóÒ»¸öÉÈÇø
       {
            pfi->File_CurSec++;
            pfi->File_CurPos=0;

        pfi->File_CurOffset+=temp;

        temp=(LAST_SEC_OF_CLU(pfi->File_CurClust)-(pfi->File_CurSec)+1)*(pInit_Args->BytesPerSector);//µ±Ç°´ØÖеÄÊ£ÓàÕûÕûÉÈÇøÊý¾ÝÁ¿

        if(len_temp<=temp) //Èç¹ûҪдÈëµÄÊý¾ÝÁ¿Ð¡ÓÚµÈÓÚµ±Ç°´ØÖеÄÊ£ÓàÕûÉÈÇøÊý¾ÝÁ¿
            {
             temp1=len_temp/(pInit_Args->BytesPerSector); //¼ÆËãҪдÈëµÄÊý¾ÝÁ¿¹»¼¸¸öÕûÉÈÇø

             znFAT_Device_Write_nSector(temp1,pfi->File_CurSec,pbuf);
             pbuf+=((pInit_Args->BytesPerSector)*temp1);

             if(len_temp==temp) //Èç¹ûÕýºÃдÂúµ±Ç°´Ø
             {
              pfi->File_CurSec=SOC(pfi->File_CurClust); //‡å´Ø
              pfi->File_CurPos=0;

              pfi->File_CurOffset+=len_temp;
              pfi->File_Size+=len;

          #ifdef RT_UPDATE_FILESIZE
                 Update_File_Size(pfi); //¸üÎļþĿ¼ÏîÖеÄÎļþ´óС×Ö¶Î
          #endif
        printf("rrr\n");
              printf("len = %d\n",len);
              return len;
             }
             else
             {
              pfi->File_CurSec+=temp1;
              pfi->File_CurPos=(UINT16)(len_temp%(pInit_Args->BytesPerSector));

              if(pfi->File_CurPos) //»¹ÓÐҪдµÄÊý¾Ý,´¦Àí×îºóµÄ×Ö½ÚÊý¾Ý
              {
           #ifndef USE_EXCHANGE_BUFFER
               Memory_Copy(znFAT_Buffer,pbuf,pfi->File_CurPos);
               znFAT_Device_Write_Sector(pfi->File_CurSec,znFAT_Buffer);
           #else
           #ifndef USE_ALONE_EXB
           if(Dev_No!=sexb_cur_dev) //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸²»Êǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
               {
                if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
                    {
                 Dev_No=sexb_cur_dev;
                 znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ

             Dev_No=old_devno;
                    }
               }
           else //Èç¹ûÏÖÔÚ²Ù×÷µÄÉ豸ÕýÊǵ±Ç°Õ¼ÓÃEXBµÄÉ豸
               {
                if(sexb_cur_sec!=(pfi->File_CurSec)) //Õ¼ÓÃEXBµÄÉÈÇø²»Êǵ±Ç°Òª²Ù×÷µÄÉÈÇø
                    {
                 if(0!=sexb_cur_sec) //Èç¹ûEXBÕý±»Õ¼ÓÃ
                     {
                  znFAT_Device_Write_Sector(sexb_cur_sec,pexb_buf); //Èç¹ûEXBÖл¹ÓÐÊý¾Ý£¬ÔòÏȽ«ÕâЩÊý¾Ý»ØÐ´µ½ÆäÏàÓ¦ÉÈÇøÖÐ
                     }           
                    }
               }
           #endif

               Memory_Copy(pexb_buf,pbuf,pfi->File_CurPos);

           #ifndef USE_ALONE_EXB
               sexb_cur_sec=pfi->File_CurSec;
               sexb_cur_dev=Dev_No;
               psexb_cur_oc=pfi; //¼Ç¼EXBÖлº³åµÄÊý¾ÝÊôÓÚÄĸöÎļþ
           #endif
           #endif
              }

          pfi->File_CurOffset+=len_temp;
              pfi->File_Size+=len;

          #ifdef RT_UPDATE_FILESIZE
                Update_File_Size(pfi); //¸üÎļþĿ¼ÏîÖеÄÎļþ´óС×Ö¶Î
          #endif
        printf("ttt\n");
              printf("len = %d\n",len);
              return len;
             }
            }
            else
            {
             temp1=temp/(pInit_Args->BytesPerSector);

             znFAT_Device_Write_nSector(temp1,pfi->File_CurSec,pbuf);
             pbuf+=temp;

             len_temp-=temp;

             pfi->File_CurSec=SOC(pfi->File_CurClust);
             pfi->File_CurPos=0;

             pfi->File_CurOffset+=temp;         
            }
       }
       else //µ±Ç°ÉÈÇøÊǵ±Ç°´Ø×îºóÒ»¸öÉÈÇø
       {
            pfi->File_CurSec=SOC(pfi->File_CurClust);
            pfi->File_CurPos=0;

            pfi->File_CurOffset+=temp;           
       }   
      }
    }

    //Èç¹ûÎļþµÄµ±Ç°Æ«ÒÆÁ¿ÊÇ´Ø´óСµÄÕûÊý±¶£¬Ôò
    //Ö±½Ó½øÈë¿ÕÎļþ¿ªÊ¼Î»ÖûòÕû´ØÎ»ÖÃдÊý¾ÝµÄ½×¶Î
    WriteData_From_nCluster(pfi,len_temp,pbuf); //´Ó¿ÕÎļþ¿ªÊ¼Î»ÖûòÕû´ØÎ»ÖÃдÊý¾Ý£¬´Ëʱ¶¼ÊÇÒ»ÖÖ¡°¾½¾³´Ø¡±µÄÇé¿ö
                                                  //ÕâÖÖÇé¿öÏ£¬Êý¾ÝÕýºÃÍ£Ö¹ÓÚÄ©´ØµÄĩβ»òÊÇ¿ÕÎļþ¶øÃ»ÓÐÊý¾Ý£¬Í¨
                                                  //³£ÎļþÐÅÏ¢¼¯ºÏÖмǼµÄÎļþλÖÃÐÅÏ¢Ó¦¸ÃÊÇÏÂÒ»´ØµÄ×ʼλÖã¬
                                                  //µ«ÊÇÕâ¸öʱºòÏÂÒ»´ØÉÐûÓб»·ÖÅ䣬¼´ÎļþÄ©´ØµÄFAT´ØÏî¼Ç¼µÄÊÇ
                                                  //0XFFFFFF0F£¨´ØÁ´½áÊø±ê¼Ç£©£¬Òò´Ë´ËʱµÄÎļþλÖÃÐÅÏ¢ÊÇÎÞЧµÄ
                                                  //znFATÖÐ×÷³öÔ¼¶¨:¡°¾½¾³´Ø¡±Çé¿öÏ£¬¿ÕÎļþµ±Ç°´ØÎª0£¬ÔÚÄ©´ØÄ©Î²
                                                  //ʱ£¬µ±Ç°´ØÎªÄ©´Ø¡£ÕâÖÖÔ¼¶¨±ãÓÚznFATµÄÊý¾ÝдÈ빦ÄÜÔÚ¡°¾½¾³´Ø¡±
                                                  //Çé¿öϵÄÕýÈ·ÐÔ
    pfi->File_Size+=len;

    #ifdef RT_UPDATE_FILESIZE
    Update_File_Size(pfi); //¸üÎļþĿ¼ÏîÖеÄÎļþ´óС×Ö¶Î
    #endif
    printf("hhh\n");
    printf("len = %d\n",len);
    return len;
    }
    #endif

    我调用这个函数znFAT_WriteData(&fileinfo,20,buf);  最后给我返回的是 20 ,就是写入的值~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2016-4-6 10:34:54 | 显示全部楼层
    小恩GG 发表于 2016-4-5 17:20
    znFAT我到没有用过,不过我用过fatfs文件,都是可以的。
    你写入的时候,写入函数读写有没有问题呢?比如 ...

    ??????????
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2016-4-6 11:10:20 | 显示全部楼层

    实际给的buff值有没有20个字节呢?
    znfat的程序你是在哪里下的?他们这个驱动是否有问题?
    如果你的block读写都没有问题,那么应该和芯片级关系不大,应该找znfat文件的问题,你可以咨询下znfat的工程师,看看他们软件是否有这样的问题?
    后续我会在论坛分享一个基于fatfs的KL工程给大家参考。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2016-4-6 14:09:49 | 显示全部楼层
    小恩GG 发表于 2016-4-6 11:10
    实际给的buff值有没有20个字节呢?
    znfat的程序你是在哪里下的?他们这个驱动是否有问题?
    如果你的block ...

    好的,谢谢,我已经在咨询znfat的工程师了,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24874
    最后登录
    2025-7-18
    发表于 2016-4-6 15:05:50 | 显示全部楼层
    最后无事 发表于 2016-4-6 14:09
    好的,谢谢,我已经在咨询znfat的工程师了,

    好的,如果和znfat文件工程师确认是znfat文件的问题,也欢迎你把具体细节分享出来。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 04:33 , Processed in 0.110836 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表