📄 seedvmp642_fat32.h
字号:
/*H**************************************************************************
* NAME: fat32.h
********************************************************************/
/* Copyright 2004 by SEED Incorporated. */
/* All rights reserved. Property of SEED Incorporated. */
/* Restricted rights to use, duplicate or disclose this code are */
/* granted through contract. */
/* */
/********************************************************************/
/*
* PURPOSE:
* FAT32 file-system basic functions definition
*****************************************************************************/
#ifndef _FAT_H_
#define _FAT_H_
/*--------------typedifne---------------------*/
typedef unsigned int fat32_file_handle;
/*****************总体说明*******************************************/
/*本程序是SEEDVPM642上fat32文件系统函数库的测试程序。 */
/*本系统仅支持硬盘存储、仅支持硬盘为主模式。 */
/*仅支持硬盘第一卷(第一分区),卷大小需小于32G字节。 */
/*文件大小需要小于4G。仅支持扇区大小固定为512字节。 */
/*仅支持同时只能打开一个文件。 */
/*读、写、文件内位置指针等文件内部操作必须先打开一个文件。 */
/*文件外部操作,如创建文件必须在无文件打开时进行操作。 */
/*仅支持在根目录下的文件操作。 只支持8.3短文件名 */
/********************************************************************/
/****************函数列表********************************************/
/* NAME: Bool fat32_install (void)
*---------------------------------------------------------------------
* PARAMS:
* return:
* - TRUE: 安装成功
* - FALSE: - 分区1不存在
* - 文件系统不是fat32
* - 扇区大小不是512字节
* - MBR或者PBR 特征字不正确
* - 底层读扇区错误
*--------------------------------------------------------------------
* PURPOSE:
* 安装fat32文件系统, 读 mbr, bootrecords等
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:
*--------------------------------------------------------------------
* REQUIREMENTS:
********************************************************************/
Bool fat32_install(void);
/*******************************************************************
* NAME: Uint32 fat32_file_open (char *file_name)
*--------------------------------------------------------------------
* PARAMS:
* - 文件名,只支持8.3短文件名
* return:一个文件指针,如果错误则返回0。
*--------------------------------------------------------------------
* PURPOSE:
* 打开一个文件,若文件不存在则创建文件。
*--------------------------------------------------------------------
* NOTE:文件位置指针将指向文件开始处。如果直接写将覆盖原有文件。
* 如果需要在文件最后接着写,需要使用fat32_seek函数将位置指针指向相应地方。
*********************************************************************/
fat32_file_handle fat32_file_open (char *file_name);
/*******************************************************************
* NAME: Uint32 fat32_file_write(fat32_file_handle file_handle,
* Byte *sorce_addr,
* Uint32 write_count)
*--------------------------------------------------------------------
* PARAMS:
* - 写入数据源的地址
* - 写入数据长度,单位:字节
* - 文件指针
* return:实际写入字节数目
*--------------------------------------------------------------------
* PURPOSE:
* 写文件
*--------------------------------------------------------------------
* NOTE:
* 以字节为单位。必须在执行fat32_file_open函数后执行。
* 从文件位置指针所指位置开始写。最后文件位置指针位于
* 所写最后一个字节的下一个字节处。
*********************************************************************/
Uint32 fat32_file_write(fat32_file_handle file_handle,
Byte *sorce_addr,
Uint32 write_count);
/*******************************************************************
* NAME: Uint32 fat32_file_read(fat32_file_handle file_handle,
* Byte *destination_addr,
* Uint32 read_count)
*--------------------------------------------------------------------
* PARAMS:
* - 读入数据源的地址
* - 读入数据长度,单位:字节
* - 文件指针
* return:实际读字节数目
*--------------------------------------------------------------------
* PURPOSE:
* 读文件
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:
* 以字节为单位。必须在执行fat32_file_open函数后执行。从文件位置指针
* 所指位置开始读。最后文件位置指针位于所读最后一个字节的下一个字节处。
*--------------------------------------------------------------------
* REQUIREMENTS:
*********************************************************************/
Uint32 fat32_file_read(fat32_file_handle file_handle,
Byte *destination_addr,
Uint32 read_count);
/*******************************************************************
* Name: Uint32 fat32_file_seek(Uint32 file_handle,
* Byte start_point,
* int direction,
* Uint32 offset);
*--------------------------------------------------------------------
* PARAMS:
* - 文件指针 fat32_file_handle类型
* - 起始点 0,表示文件开始位置,即0位置;1,表示文件当前位置;
* 2表示文件末尾位置,即size.l位置 Byte类型
*
* - 位移方向 -1,表示向后,即文件开始的方向;
* 1,表示向前,即文件结束的方向
* - 位移长度 Uint32,单位:字节。表位移长度
*--------------------------------------------------------------------
* RETURN:函数执行后的文件当前位置
*--------------------------------------------------------------------
* PURPOSE:
* 改变当前文件的位置指针,并返回函数执行后的当前位置。
*--------------------------------------------------------------------
* EXAMPLE:
* 几个特殊用法
* fp=fat32_file_open("test1.txt");
*
* 位置指针指向文件开头,如果文件大小为0,则指向位置0
* fat32_file_seek(fp,0,1,0);
* 返回当前指针的位置
* fat32_file_seek(fp,1,1,0);
* 位置指针指向文件末尾位置前1个位置,即文件本身最后一个字节处
* fat32_file_seek(fp,2,-1,1);
*--------------------------------------------------------------------
* NOTE:
* 文件末尾位置不在文件内。而是文件外第一个字节位置。
* 文件位置指针向后不会超过文件开始位置,向前不会超过文件末尾位置。
* 如果超出将不返回错误,并指向文件开始位置或者文件末尾位置
*********************************************************************/
Uint32 fat32_file_seek(fat32_file_handle file_handle,
Byte start_point,
int direction,
Uint32 offset);
/*******************************************************************
* NAME: Bool fat32_file_close (Uint32 file_handle);
*--------------------------------------------------------------------
* PARAMS:
* - 文件指针
* return:正确关闭返回1,如果错误则返回0。
*--------------------------------------------------------------------
* PURPOSE:
* 关闭一个打开的文件,若文件未被打开则返回0。
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:将当前文件的结构内容置零
---------------------------------------------------------------------
* REQUIREMENTS:
*********************************************************************/
Bool fat32_file_close (fat32_file_handle file_handle);
/*******************************************************************
* NAME: Bool fat32_create (char *file_name);
*--------------------------------------------------------------------
* PARAMS:文件名
* return:
*--------------------------------------------------------------------
* PURPOSE:
* 创建文件。如果该文件已经存在,则返回FALSE。
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:
* 属于文件外函数,不能在有文件被打开是执行
*--------------------------------------------------------------------
* REQUIREMENTS:
********************************************************************/
Bool fat32_create (char *file_name);
#endif /* _FAT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -