kfs嵌入式文件系统应用指南(二)

       4。如何在你的系统中使用kfs文件系统
       要在你的系统中使用kfs文件系统你只需要简单的几步:
       第一步,就是按照《kfs嵌入式文件系统应用指南(一)》中的方法建立基于你系统的驱动。
       第二步,在你的程序主入口函数中对文件系统进行初始化。你需要提供用于建立文件系统的存储器的起始地址和结束地址,并使用kfs初始化函数进行初始化。
       r_fsinit(fs_start_address,fs_end_address);
       注:其中fs_start_address为文件系统在存储器中的首地址,fs_end_address为文件系统在存储器中的尾地址,文件系统信息
       初始化之后就可以在你的系统中使用kfs提供的文件操作函数来进行基本的文件操作。

       5。kfs提供的文件操作函数说明如下
       /****************************************
       function : r_fopen
       filename : file name less than 12byte
       mode : Type of access permitted.
       return : point to the opened file
       description : open a file
       ****************************************/
       extern r_FILE * r_fopen(u8 * filename, const u8 mode);
       说明:用于打开或创建一个文件,其中filename是要打开的文件名,按照系统配置的MAX_FLIE_NAME_LEN,确定文件名最长值。mode为r_fopen的操作模式,在1.0.3版本中提供两种模式,O_WRONLY只是打开用于读写,若不存在则返回空文件指针,O_WRONLY|O_CREAT,即打开文件,若不存在则创建新文件,
       注意:文件在打开之后必须执行r_fclose关闭文件,否则在文件读写操作之后,文件信息改变,将不会保存至存储器中,造成信息丢失。还有一点,在创建一个新文件后,文件信息不会立即写入存储器,只有在执行r_fclose操作之后,且文件中写入数据,kfs才会将文件信息写入存储器中。


       /****************************************
       function : r_fdelete
       fp : point to the FILE structure
       return : if file was deleted return 1,/
               else return 0;
       description : delete a file
       ****************************************/
       extern void r_fdelete(r_FILE * *_fp);
       说明:删除文件,在使用此接口时,首先需要用r_fopen打开要删除的文件,然后再执行删除操作,最后还需要关闭文件指针以保存操作结果。
       例:

            ......
          r_FILE * fp=r_fopen("file1",O_WRONLY);
          if(fp){
             r_fdelete(&fp);
          }
          r_fclose(&fp);
          ......

       /****************************************
       function : r_rewind
       fp : point to the FILE structure
       description : rewind a file to head
       ****************************************/
       extern void r_rewind(r_FILE *fp);
       说明:移动文件指针到文件头,在读写文件时使用。

       //从fp指向的用户操作文件中取出当前文件指针指向的数据(u8类型),并将文件指针的当前文件指针地址加1;
       /****************************************
       function : r_fgetc
       fp : point to the FILE structure
       return : the character read from the file
       description : get a character from the file
       ****************************************/
       extern u8 r_fgetc(r_FILE * fp);
       说明:从文件中读取一个字节的数据,并将文件指针向后移动一个字节。     


       //向fp指向的用户操作文件中文件指针指向的数据(u8类型)地址写入一个字符,并将文件指针的当前文件指针地址加1;
       /****************************************
       function : r_fputc
      fp : point to the FILE structure
       ch : character to put to file
       return : if success return 1,else return 0;
       description : put a character to file
       ****************************************/
       extern u8 r_fputc(r_FILE * fp ,u8 ch);
       说明:向文件指针当前指向的位置中写入一个字节的数据,并将文件指针向后移动一个字节,如果操作成功则返回true(1),如果文件空间不够无法正确写入数据则操作失败,返回false(0)。
       注意:当当前文件指针已经到达文件末尾时,会自动为文件重新分配空间,如果分配空间成功,则继续写入数据,如果文件分配失败则返回。由于kfs文件系统是连续分布的,因此,一般情况下只有在文件系统尾部的文件才可成功分配空间。


       //判断是否到达文件末尾;
       /****************************************
       function : r_feof
       fp : point to the FILE structure
       return : if end return 1,else return 0
       description : check if got the end of file
       ****************************************/
       extern u8 r_feof(r_FILE * fp);
       说明:用于判断文件指针是否已经到达文件末尾。



       //关闭fp指向的文件
       /****************************************
       function : r_fclose
       fp : point to the FILE structure
       description : close the file
       ****************************************/
       extern void r_fclose(r_FILE * * fp);
       说明:关闭文件指针。所有打开的文件在操作结束之后必须执行关闭文件操作,否则文件信息无法正确保存,因此一个一般的文件操作过程应该如下:

          ......
          // 打开文件,文件名为"file1",打开方式为读写方式
          r_FILE * fp=r_fopen("file1",O_WRONLY);

          if(fp){
             r_rewind(&fp);
             u8 ch=r_fgetc(fp);
             .......
             // 执行文件操作
          }

          // 关闭文件
          r_fclose(&fp);
          ......



       /****************************************
       function : r_frmhead
       fp : point to the FILE structure
       description : remove the file head from
                       the head table
       ****************************************/
       extern void r_frmhead(r_FILE * fp);
       说明:删除文件头信息,辅助函数,提供更底层的文件头操作       

       /****************************************
       function : r_fsavehead
       fp : point to the FILE structure
       description : save the file head
       ****************************************/
       extern void r_fsavehead(r_FILE * fp);
       说明:保存文件头信息,辅助函数,用于直接操作内存中的文件头信息,本函数将RAM中的文件头信息保存至存储器

       /****************************************
       function : r_format
       _fs_start_add : file systen start address
       _fs_end_add : file system end address
       description : format the file system
       ****************************************/
       extern void r_format(u8 *_fs_start_add,u8 *_fs_end_add);
       说明:格式化文件系统,参数同文件系统初始化接口,辅助函数,通常在文件系统工作不正常时使用。用于强制格式化文件系统。格式化后文件系统中所有的数据将会丢失。
       使用:       

        ......
        r_format(0x00,0xff);
        ......

 

        (未完 ,待续。。。。) 

 

        下载kfs 1.0.3release

 

转载请注明出处,www.embseek.com by Eagle 谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值