/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: file.c
**创 建 人: 陈明计
**最后修改日期: 2004年4月1日
**描 述: 文件系统的文件基本操作程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版 本: v1.00
** 日 期: 2003年9月9日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2004年7月12日
** 描 述: 更正一个BUG
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define IN_FILE
#include "..\ZLGFS_SD\src\config.h"
static MY_FILE FileInfo[MAX_OPEN_FILES]; /* 打开文件信息表 */
extern uint32 _GetFDTInfo(char *FDTName, char *DirFileName);
/*********************************************************************************************************
** 函数名称: FileInit
** 功能描述: 初始化文件指针系统
**
** 输 入: 无
**
** 输 出: 无
**
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void FileInit(void)
{
HANDLE i;
for (i = 0; i < MAX_OPEN_FILES; i++)
{
FileInfo[i].Flags = 0;
}
}
/*********************************************************************************************************
** 函数名称: FindOpenFile
** 功能描述: 查找已打开的指定文件的文件句柄,内部使用
**
** 输 入: Drive:文件所在的逻辑盘号
** DirClus:文件所在目录的开始簇号
** FileName:内部文件名
** 输 出: 文件句柄,Not_Open_FILE为没有打开
**
** 全局变量: FileInfo
** 调用模块: _GetFDTInfo,GetDrive,FindFDTInfo,
**
** 作 者: 陈明计
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
HANDLE FindOpenFile(uint8 Drive, uint32 DirClus, char FileName[11])
{
HANDLE Rt;
MY_FILE *fp;
fp = FileInfo;
for (Rt = 0; Rt < MAX_OPEN_FILES; Rt++)
{
if (fp->Flags != 0)
if (fp->Drive == Drive)
if (fp->DirClus == DirClus)
if (fp->Name[0] == FileName[0])
if (fp->Name[1] == FileName[1])
if (fp->Name[2] == FileName[2])
if (fp->Name[3] == FileName[3])
if (fp->Name[4] == FileName[4])
if (fp->Name[5] == FileName[5])
if (fp->Name[6] == FileName[6])
if (fp->Name[7] == FileName[7])
if (fp->Name[8] == FileName[8])
if (fp->Name[9] == FileName[9])
if (fp->Name[10] == FileName[10])
{
break;
}
fp++;
}
if (Rt >= MAX_OPEN_FILES)
{
Rt = Not_Open_FILE;
}
return Rt;
}
/*********************************************************************************************************
** 函数名称: RemoveFile
** 功能描述: 删除文件
**
** 输 入: DirFileName:用户使用的文件名
**
** 输 出: RETURN_OK:成功
** 其它参考fat.h中关于返回值的说明
** 全局变量: 无
** 调用模块: strupr,_GetFDTInfo,GetDrive,FindFDTInfo,FATDelClusChain,DelFDT
**
** 作 者: 陈明计
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 RemoveFile(char *DirFileName)
{
uint32 ClusIndex, ClusIndex1;
uint8 Drive, Rt;
char DirName[12];
FDT temp;
strupr(DirFileName); /* 变为大写 */
ClusIndex = _GetFDTInfo(DirName, DirFileName);
Rt = PATH_NOT_FIND;
if (ClusIndex != BAD_CLUS)
{
Drive = GetDrive(DirFileName); /* 获取文件所在逻辑盘号 */
Rt = FindFDTInfo(&temp, Drive, ClusIndex, DirName);
if (Rt == RETURN_OK)
{
Rt = NOT_FIND_FILE;
if ((temp.Attr & ATTR_DIRECTORY) == 0) /* 是文件才删除 */
{
Rt = FILE_LOCK;
if (FindOpenFile(Drive, ClusIndex, DirName) < MAX_OPEN_FILES)
{
/* 文件没有打开才删除 */
ClusIndex1 = temp.FstClusLO + ((uint32)(temp.FstClusHI) << 16);
FATDelClusChain(Drive, ClusIndex1);
Rt = DelFDT(Drive, ClusIndex, DirName);
}
}
}
}
return Rt;
}
/*********************************************************************************************************
** 函数名称: FindOpenFileW
** 功能描述: 查找以读写方式打开的指定文件的文件句柄,内部使用
**
** 输 入: Drive:文件所在的逻辑盘号
** DirClus:文件所在目录的开始簇号
** FileName:内部文件名
** 输 出: 文件句柄,Not_Open_FILE为没有打开
**
** 全局变量: FileInfo
** 调用模块: _GetFDTInfo,GetDrive,FindFDTInfo,
**
** 作 者: 陈明计
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
HANDLE FindOpenFileW(uint8 Drive, uint32 DirClus, char FileName[11])
{
HANDLE Rt;
MY_FILE *fp;
fp = FileInfo;
for (Rt = 0; Rt < MAX_OPEN_FILES; Rt++)
{
if ((fp->Flags & FILE_FLAGS_WRITE) != 0)
if (fp->Drive == Drive)
if (fp->DirClus == DirClus)
if (fp->Name[0] == FileName[0])
if (fp->Name[1] == FileName[1])
if (fp->Name[2] == FileName[2])
if (fp->Name[3] == FileName[3])
if (fp->Name[4] == FileName[4])
if (fp->Name[5] == FileName[5])
if (fp->Name[6] == FileName[6])
if (fp->Name[7] == FileName[7])
if (fp->Name[8] == FileName[8])
if (fp->Name[9] == FileName[9])
if (fp->Name[10] == FileName[10])
{
break;
}
fp++;
}
if (Rt >= MAX_OPEN_FILES)
{
Rt = Not_Open_FILE;
}
return Rt;
}
/*********************************************************************************************************
** 函数名称: _FileOpenR
** 功能描述: 只读方式打开文件,内部使用
**
** 输 入: DirFileName:用户使用的文件名
**
** 输 出: 文件句柄,Not_Open_FILE为不能打开
**
** 全局变量: FileInfo
** 调用模块: _GetFDTInfo,GetDrive,FindFDTInfo,
**
** 作 者: 陈明计
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
ARM 驱动 SD 卡
共131个文件
s:17个
dp2:17个
o:16个
5星 · 超过95%的资源 需积分: 9 101 下载量 41 浏览量
2008-11-20
17:53:07
上传
评论 1
收藏 568KB RAR 举报
温馨提示
很好,很全面的ARM驱动SD卡,原理图,源程序,并且带上了文件系统,轻松在电脑上读出数据。
资源推荐
资源详情
资源评论
收起资源包目录
ARM 驱动 SD 卡 (131个子文件)
file._C 30KB
FDT._C 27KB
dir._C 16KB
RWSec._C 13KB
FAT._C 13KB
disk._C 11KB
FAT16._c 10KB
mmc._c 6KB
SD._c 4KB
main._c 2KB
usb._c 1KB
Fat._h 32KB
sdconfig._h 5KB
FAT16._h 4KB
config._h 3KB
mmc._h 522B
usb._h 199B
ZLGFS_SD_cof.aps 4KB
file.C 30KB
FDT.C 27KB
dir.C 16KB
RWSec.C 13KB
FAT.C 13KB
disk.C 11KB
FAT16.c 10KB
mmc.c 6KB
SD.c 4KB
main.c 2KB
usb.c 1KB
ZLGFS_SD.cof 74KB
ZLGFS_SD.dbg 51KB
Last Loaded ZLGFSAVR.DBK 75KB
02.DDB 396KB
ZLGFS_SD.DDB 192KB
sddriver.dp2 795B
sdcmd.dp2 787B
main.dp2 684B
RWSec.dp2 675B
file.dp2 674B
disk.dp2 674B
FAT.dp2 673B
FDT.dp2 673B
dir.dp2 673B
SD.dp2 672B
FAT16.dp2 670B
sdhal.dp2 660B
mmc.dp2 658B
usb.dp2 658B
sdcrc.dp2 626B
OSFile.dp2 495B
spi.dp2 90B
ZLGFSAVR.DSN 75KB
Fat.h 32KB
sdconfig.h 5KB
FAT16.h 4KB
config.h 3KB
mmc.h 473B
usb.h 227B
ZLGFS_SD.hex 64KB
OSFile.i 30KB
sdcrc.i 0B
mmc.i 0B
sddriver.i 0B
sdcmd.i 0B
FDT.i 0B
file.i 0B
usb.i 0B
dir.i 0B
FAT16.i 0B
RWSec.i 0B
disk.i 0B
SD.i 0B
FAT.i 0B
FDT.lis 162KB
file.lis 161KB
sdcmd.lis 138KB
FAT.lis 99KB
FAT16.lis 83KB
dir.lis 77KB
disk.lis 69KB
sddriver.lis 68KB
RWSec.lis 65KB
mmc.lis 36KB
SD.lis 21KB
sdhal.lis 18KB
main.lis 13KB
usb.lis 7KB
spi.lis 4KB
sdcrc.lis 176B
ZLGFS_SD.lk 74B
ZLGFS_SD.lst 541KB
ZLGFS_SD.mak 9KB
ZLGFS_SD.mcp 165KB
cardimage.mmc 15.5MB
ZLGFS_SD.mp 7KB
file.o 35KB
FDT.o 35KB
sdcmd.o 25KB
FAT.o 23KB
FAT16.o 22KB
共 131 条
- 1
- 2
资源评论
- zxk_programmer2012-09-24代码工整,文件系统源代码很不错,sd卡源文件缺失,只有编译后的文件。驱动用处不大,因为是SPI模式的,而且sd spec 2.0以上的命令都不能用。
- xjdx0512012-03-22这个是周立功的ARM驱动,的确很好,很全面的ARM驱动SD卡,原理图,源程序,并且带上了文件系统,不过希望楼主能说一下基于什么系统及芯片的型号,我怎么看感觉都是ARM7的,感觉现在都是用ARM9以上了
- b520352013-07-16还没有用过,不过程序倒是挺规范的
wilson970
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功