#include "znfat.h"
#include "template.h"
#include "gb2uni.h"
#include "deviceio.h"
#include "uart.h"
/*★★★★★★★★★★★★★★★★★★★★★★★★
《振南的znFAT--嵌入式FAT32文件系统设计与实现》
一书[上下册]已经由北航出版社正式出版发行。
此书是振南历经3年多时间潜心编著,是现今市面上唯
一一套讲述FAT32文件系统、SD卡等嵌入式存储技术的
专著。书中还介绍了大量的编程技巧与振南的开发经验。
请在各大网络销售平台搜索“znFAT”,即可购买。
在全国各大书店也有售。
振南的ZN-X开发板,支持51、AVR、STM32(M0/M3/M4)等
CPU。此板可与书配套,板上各种精彩的实验实例请详见
振南网站www.znmcu.cn
★★★★★★★★★★★★★★★★★★★★★★★★*/
/*==================================================================================
振南的znFAT 一种较为完备的嵌入式平台上的FAT32文件系统解决方案 V11.21
敬请关注 振南的znFAT 网站 www.znfat.com
QQ 987582714
===================================================================================*/
/*----------------------------------------------------------------------------/
/ Here is znFAT -- a complete FAT32 FileSystem Solution ver 11.21
/-----------------------------------------------------------------------------/
/ znFAT is a complete FAT FileSystem Code Module for embeded system platform.
/ znFAT is Developped and Coded By ZN China who own the full copyright on it.
/ You are allowed to use it for study,research,and commerce purpose,to modify
/ the code and publish it freely.
/ znFAT is pleasure to be recommended to more E-amateur and Engineer.Thanks!!
/
/ Copyright (C) 2010, ZN, all right reserved.
/
/ Technology Support http://www.znfat.com
/ Welcome to ZN's FAT32 FS World!!
/-----------------------------------------------------------------------------/
/-----------------------------------------------------------------------------/
Function Table(功能函数表):
znFAT_Device_Init : Storage device initialize (存储设备初始化)
znFAT_Init : File system initialize (文件系统初始化)
znFAT_Select_Device: Select storage device (选择存储设备)
znFAT_Open_File : Open a file (打开文件)
znFAT_ReadData : Read data in a file (读取文件数据)
znFAT_ReadDataX : Read data and redirect it (读取文件数据+数据重定向)
znFAT_Enter_Dir : Enter a dir (进入目录)
znFAT_WriteData : Write data to a file,append it to the end (向文件写入数据)
znFAT_Modify_Data : Modify data in a file (修改文件数据)
znFAT_Dump_Data : Dump data of a file (丢弃,截断文件数据)
znFAT_Create_File : Create file (创建文件)
znFAT_Create_Dir : Create dir (创建目录)
znFAT_Delete_File : Delete file (删除文件)
znFAT_Delete_Dir : Delete dir (删除目录)
znFAT_Make_FS : Make a FAT32 FS on a storage device,even Format (格式化)
znFAT_Close_File : Close file (关闭文件)
znFAT_Flush_FS : Flush FS,Update FS information from RAM to Disk (刷新FS)
/----------------------------------------------------------------------------/
Configuration for znFAT's Functions,is necessary before the usage of them.
(对znFAT中功能函数的配置,在使用它们之前请务必对其进行配置)
When you use a function in znFAT(but znFAT_Device_Init znFAT_Init and znFAT_\
Select_Device,because them must be used in every project),you must firstly
OPEN the MACROS as "#define ZNFAT_XXXX",So the relevant code of the function
is added to the compiling.Or,You will get a warning like "XXXX is undefined .."
For example:You now wanna use znFAT_Open_File,You must open the header file
config.h,OPEN the MACRO ZNFAT_OPEN_FILE,even delete the "//" before it.
(当你要使用znFAT中一个函数时(znFAT_Device_Init znFAT_Init and znFAT_Select_\
Device这三个函数除外,因为它们在任何时候都是必然被使用的),必须首先把相应的宏
打开,比如"#define ZNFAT_XXXX",这样与这个函数相关的代码才会被加入到编译之中,
否则,你可能会得到像这样的警告"XXXX is undefined.."。举例说明:要使用znFAT_\
Open_File函数,你必须要打开config.h,打开里面对应的宏ZNFAT_OPEN_FILE,即去掉
前面的"//"。)
Option for znFAT (znFAT中的工作方式选择)
USE_LFN : Use the Long File Name (使用长文件名)
MAX_LFN_LEN : Define the max Long File Name length (定义长文件名最大长度)
USE_OEM_CHAR: Use OEM charactor in LFN,as CHN (在长文件名中使用OEM字符,如中文)
USE_MULTISEC_R : Use hardware continuous Sector Read (使用硬件级连续扇区读)
USE_MULTISEC_W : Use hardware continuous Sector Write (使用硬件级连续扇区写)
USE_MULTISEC_CLEAR : Use hardware continuous Sector Clear (使用硬件级连续扇区清0)
RT_UPDATE_FSINFO : Realtime update the information of FS (实时刷新文件系统信息)
RT_UPDATE_FILESIZE : Realtime update the file size (实时更新文件大小)
RT_UPDATE_CLUSTER_CHAIN : Realtime update the cluster chain (实时更新簇链)
if not define it ,znFAT will use CCCB algorithm
to store the cluster chain in CCCB buffer
(如果没有定义这个宏,则znFAT在数据读写过程中,使用
CCCB算法来将簇链临时性的存储在RAM的缓冲区中,这样
是为了提高数据读写速率,弊端在于缓冲中的簇链不回
写到物理扇区中,会造成数据丢失,因此要及时回写。)
CCCB_LEN (XXX) : Define the size of CCCB buffer (定义CCCB 缓冲区大小)
USE_ALONE_CCCB : Use the alone CCCB buffer (使用独立CCCB 缓冲区,即每一个文件
都会分配一个独立的CCCB缓冲区,数据
读写时,各文件各用各自的CCCB缓冲,
互不干涉。)
if not define it,use the Shared CCCB buffer
(如果此宏没有定义,则znFAT会使用共
CCCB 缓冲区,主要是为了节省RAM资
源,但这样必然招致多个文件对共享
CCCB缓冲的抢夺,在同时操作文件
较多的时候,数据读写效率并不高。)
USE_EXCHANGE_BUFFER : Use the exchange buffer and relevant algorithm (EXB)
(使用EXB扇区交换缓冲及其算法,EXB
缓冲是为了减少扇区数据的读-改-写
操作次数)
USE_ALONE_EXB : Use alone exchange buffer (使用独立的EXB扇区交换缓冲,即每个
文件均有各自独立的EXB缓冲,这样作
会极大的增大RAM开销)
if no define it,use the Shared exchange buffer
(如果此宏没有定义,则使用共享EXB
缓冲,多个文件分时分享一个扇区交换
缓冲,会造成争抢问题)
Data_Redirect : Redirect function name macro defination for read_dataX
(为znFAT_ReadDataX函数所定义的数据
重定向单位字节处理函数)
/---------------------------------------------------------------------------*/
//#pragma udata directive
//#pragma udata BUFFER
UINT8 tmpBuf[ZNFAT_BUF_SIZE];
//#pragma udata
UINT8 *znFAT_Buffer=tmpBuf; //znFAT的内部缓冲区,使用者不可私自使用
//先定义tmpBuf,再用znFAT_Buffer指向它,是因为在一些架构的CPU中
//受限于RAM的特殊结构,只能用指针来访问大数组,比如PIC
//--------------------------------------------------------------------------------------------------
struct znFAT_Init_Args *pInit_Args; //初始化参数结构体指针,用以指向某一存储设备的初始化参数集合
//使用之前*必须*先指向结构化变量
extern struct znFAT_IO_Ctl ioctl;
UINT8 Dev_No=0; //设备号,用于实现多设备
//--------------------------------------------------------------------------------------------------
struct FileInfo *just_file=(struct FileInfo *)0; //用于记录最近操作的文件
//-------------------SCCCB相关变量定义----------------------
#ifndef RT_UPDATE_CLUSTER_CHAIN //用于定义共享CCCB的变量及缓冲实体
#ifndef USE_ALONE_CCCB
UINT32 scccb_buf[CCCB_LEN]; //CCCB的缓冲区,以连续簇段的方式来记录簇链
UINT8 scccb_counter=0;
UINT32 scccb_curval=0;
UINT8 scccb_curdev=(UINT8)(-1);
#endif
#endif
#ifndef RT_UPDATE_CLUSTER_CHAIN
#ifndef USE_ALONE_CCCB //不使用独立簇链缓冲,而是使用共享簇
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
51单片机也可以用上SD卡 (1561个子文件)
deviceio.__i 132B
deviceio.__i 132B
znFAT.__i 123B
znFAT.__i 123B
_main.__i 80B
_main.__i 80B
_main.__i 80B
sd.__i 32B
znfattest.uvgui.Administrator 72KB
znfattest.uvgui.Administrator 71KB
znfattest.uvgui.Administrator 71KB
znfattest.uvgui.Administrator 70KB
znfattest.uvgui.Administrator 70KB
sd.uvgui.Administrator 70KB
znfattest.uvgui.Administrator 70KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
znfattest.uvgui.Administrator 69KB
sd.uvgui_remote.bak 133KB
znfattest.uvgui_Administrator.bak 72KB
sd.uvgui_yzn07.bak 71KB
znfattest.uvgui_Administrator.bak 71KB
znfattest.uvgui_Administrator.bak 71KB
sd.uvgui_Administrator.bak 69KB
znfattest.uvgui_Administrator.bak 69KB
znfattest.uvgui_Administrator.bak 69KB
znfattest.uvgui_yzn07.bak 68KB
znfattest.uvgui_Administrator.bak 68KB
znfattest.uvgui_yzn07.bak 68KB
znfattest.uvgui_remote.bak 68KB
znfattest.uvgui_yzn07.bak 67KB
znfattest.uvgui_remote.bak 67KB
znfattest.uvgui_yzn07.bak 67KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvproj.bak 14KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 8KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
sd_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
znfattest_uvopt.bak 7KB
aaa.bat 355B
aaa.bat 355B
aaa.bat 355B
共 1561 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
资源评论
qq_40512140
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功