📄 massstorage.h
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: massStorage.h
** Latest modified Date: 2007-10-8
** Latest Version: 1.0
** Descriptions: 大容量类存储器接口函数
**
**--------------------------------------------------------------------------------------------------------
** Created by: Lizhenming
** Created date: 2007-09-9
** Version: 1.0
** Descriptions: The original version
**
*********************************************************************************************************/
#ifndef __MASSSTORAGE_H__
#define __MASSSTORAGE_H__
#define __MASSSTORAGE_ERROR 0xFFFE /* 读写存储器错误 */
#define __MS_NOT_READY 0 /* 存储器未准备好 */
#define __MS_READY 1 /* 存储器准备好 */
typedef struct _DISK_INFO { /* 储存器信息结构体 */
__uint32 uiCapacity; /* 扇区总数 */
__uint32 uiBlockLen; /* 扇区大小 */
} __DISK_INFO, *__PDISK_INFO;
/*
* 最大逻辑单元(取值0~15,表示支持1~16个逻辑单元),由具体存储器接口实现程序定义和初始化
*/
#define __MAXLUN 0 /* 最大逻辑单元 */
extern __uint8 __GbCurLun; /* 当前逻辑单元 */
/*
* 储存器缓冲区首址(缓冲区大小为一个扇区),由具体存储器接口实现程序维护
*/
#define __GpucMassStorageBuf __GpucMassStorageBufs[__GbCurLun] /* 当前逻辑单元缓冲区首址 */
extern __uint8 *__GpucMassStorageBufs[__MAXLUN+1];
/*********************************************************************************************************
接口函数
*********************************************************************************************************/
/*
* 接口函数结构体,按照索引从0开始排序,0-5为必需的接口函数,6-8为可选的接口函数
*/
typedef struct _DISK_OPERATION {
__uint8 (*Init) (void); /* 储存器初始化 */
__uint8 (*Reset) (void); /* 储存器复位 */
__PDISK_INFO (*GetInfo) (void); /* 获取储存器基本信息 */
__uint8 (*GetStatus) (void); /* 获取储存器状态 */
__uint8 (*ReadSector) (__uint32, __uint8*); /* 读储存器扇区 */
__uint8 (*WriteSector) (__uint32, __uint8*); /* 写储存器扇区 */
__uint8 (*ReadSetting) (__uint32, __uint32); /* 读储存器扇区前设置 */
__uint8 (*WriteSetting) (__uint32 , __uint32); /* 写储存器扇区前设置 */
__uint8 (*DeInit) (void); /* 储存器卸载 */
} __DISK_OPERATION;
/*
* 接口函数结构体数组,初始化为具体存储器接口程序(如果可选接口没支持,则需要初始化为0)
*/
extern const __DISK_OPERATION __DiskOpertions[__MAXLUN+1];
/*
* 必需的接口函数(有__的函数在massStorage.c里加了一层封装)
*/
#define __msInit (*__DiskOpertions[__GbCurLun].Init)
#define __msReset (*__DiskOpertions[__GbCurLun].Reset)
#define msGetInfo (*__DiskOpertions[__GbCurLun].GetInfo)
#define msGetStatus (*__DiskOpertions[__GbCurLun].GetStatus)
#define msReadSector (*__DiskOpertions[__GbCurLun].ReadSector)
#define msWriteSector (*__DiskOpertions[__GbCurLun].WriteSector)
/*
* 可选接口函数
*/
#define msReadSetting (*__DiskOpertions[__GbCurLun].ReadSetting)
#define msWriteSetting (*__DiskOpertions[__GbCurLun].WriteSetting)
#define msDeInit (*__DiskOpertions[__GbCurLun].DeInit)
/*********************************************************************************************************
接口函数定义
*********************************************************************************************************/
/*********************************************************************************************************
** Function name: msInit
**
** Descriptions: 初始化存储器
**
** input parameters: 无
** output parameters: 无
** Returned value: __MASS_SUCCESS 初始化成功
** __MASS_FAIL 初始化失败
**
*********************************************************************************************************/
__uint8 msInit (void);
/*********************************************************************************************************
** Function name: msDeInit
**
** Descriptions: 存储器卸载
**
** input parameters: 无
** output parameters: 无
** Returned value: __MASS_SUCCESS 卸载成功
** __MASS_FAIL 卸载失败
**
*********************************************************************************************************/
/*
* __uint8 msDeInit (void);
*/
/*********************************************************************************************************
** Function name: msReset
**
** Descriptions: 复位存储器
**
** input parameters: 无
** output parameters: 无
** Returned value: __MASS_SUCCESS 复位成功
** __MASS_FAIL 复位失败
**
*********************************************************************************************************/
__uint8 msReset (void);
/*********************************************************************************************************
** Function name: msGetInfo
**
** Descriptions: 获取存储器容量,扇区大小等信息
**
** input parameters: 无
** output parameters: 无
** Returned value: 存储器容量(扇区数),扇区大小等信息
**
*********************************************************************************************************/
/*
* PMSINFO msGetInfo (void);
*/
/*********************************************************************************************************
** Function name: msGetStatus
**
** Descriptions: 获取存储器状态
**
** input parameters: 无
** output parameters: 无
** Returned value: __MS_READY -- 存储器准备好
** __MS_NOT_READY -- 存储器未准备好
*********************************************************************************************************/
/*
* __uint8 msGetStatus (void);
*/
/*********************************************************************************************************
** Function name: msReadSector
**
** Descriptions: 读取存储器扇区数据到缓冲区
**
** input parameters: uiLBA 逻辑块地址
pucData 数据指针
** output parameters:
** Returned value: __MASS_SUCCESS 操作成功
** __MASS_FAIL 操作失败
*********************************************************************************************************/
/*
* __uint8 msReadSector (__uint32 uiLBA, __uint8 *pucData);
*/
/*********************************************************************************************************
** Function name: msWriteSector
**
** Descriptions: 把存储器缓冲区数据写回存储器
**
** input parameters: uiLBA 逻辑块地址
pucData 数据指针
** output parameters: 无
** Returned value: __MASS_SUCCESS 操作成功
** __MASS_FAIL 操作失败
**
*********************************************************************************************************/
/*
* __uint8 msWriteSector ( uiLBA, __uint8 *pucData);
*/
/*********************************************************************************************************
** Function name: __msReadSetting
**
** Descriptions: 读存储器之前的设置
**
** input parameters: LBA 逻辑块地址
** uiXferCnt 总共要传输的扇区数
** output parameters: 无
** Returned value: __MASS_SUCCESS 设置成功
** __MASS_FAIL 设置失败
**
*********************************************************************************************************/
__uint8 __msReadSetting ( __uint32 uiLBA, __uint32 uiXferCnt);
/*********************************************************************************************************
** Function name: __msWriteSetting
**
** Descriptions: 写存储器之前的设置
**
** input parameters: LBA 逻辑块地址
** uiXferCnt 总共要传输的扇区数
** output parameters: 无
** Returned value: __MASS_SUCCESS 设置成功
** __MASS_FAIL 设置失败
**
*********************************************************************************************************/
__uint8 __msWriteSetting ( __uint32 uiLBA, __uint32 uiXferCnt);
/*********************************************************************************************************
内部支持函数
*********************************************************************************************************/
/*********************************************************************************************************
** Function name: __msXferPkt2USB
**
** Descriptions: 从存储器读出数据并把数据包发送到USB
**
** input parameters: 无
** output parameters: 无
** Returned value: 返回发送到USB的字节数或__MASSSTORAGE_ERROR
**
*********************************************************************************************************/
__uint16 __msXferPkt2USB (void);
/*********************************************************************************************************
** Function name: __msXferPktFrUSB
**
** Descriptions: 从USB读取数据包并写入存储器
**
** input parameters: 无
** output parameters: 无
** Returned value: 返回写入的字节数或__MASSSTORAGE_ERROR
**
*********************************************************************************************************/
__uint16 __msXferPktFrUSB (void);
#endif
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -