Initial commit, project files and example
This commit is contained in:
141
libs/BSP/diskio.h
Normal file
141
libs/BSP/diskio.h
Normal file
@@ -0,0 +1,141 @@
|
||||
#ifndef _DISKIO_DEFINED
|
||||
#define _DISKIO_DEFINED
|
||||
/**
|
||||
*****************************************************************************
|
||||
* @addtogroup FatFs FatFs
|
||||
* @{
|
||||
* @defgroup FatFs_DiskIO Disk IO
|
||||
* @brief Low level disk I/O module skeleton for FatFs
|
||||
* @{
|
||||
*
|
||||
* \file diskio.c
|
||||
* \version R0.10
|
||||
* \date 2013-10-02
|
||||
* \author ChaN
|
||||
*
|
||||
* @brief Low level disk I/O module skeleton for FatFs
|
||||
* @note If a working storage control module is available, it should
|
||||
* be attached to the FatFs via a glue function rather than
|
||||
* modifying it.\n
|
||||
* This is an example of glue functions to attach various
|
||||
* exsisting storage control module to the FatFs module with a
|
||||
* defined API.
|
||||
*
|
||||
*****************************************************************************
|
||||
* @copyright
|
||||
* @{
|
||||
*
|
||||
* Copyright © 2013, ChaN, all right reserved.
|
||||
*
|
||||
* FatFs module is a generic FAT file system module for small embedded
|
||||
* systems.
|
||||
* This is a free software that opened for education, research and commercial
|
||||
* developments under license policy of following terms.
|
||||
*
|
||||
* * The FatFs module is a free software and there is NO WARRANTY.
|
||||
* * No restriction on use. You can use, modify and redistribute it for
|
||||
* personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
|
||||
* * Redistributions of source code must retain the above copyright notice.
|
||||
*
|
||||
* @}
|
||||
*****************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*----- Header-Files -------------------------------------------------------*/
|
||||
#include "integer.h"
|
||||
|
||||
/*----- Macros -------------------------------------------------------------*/
|
||||
#define _USE_WRITE 1 /**< 1: Enable disk_write function */
|
||||
#define _USE_IOCTL 1 /**< 1: Enable disk_ioctl function */
|
||||
|
||||
/* Disk Status Bits (DSTATUS) */
|
||||
#define STA_NOINIT 0x01 /**< Drive not initialized */
|
||||
#define STA_NODISK 0x02 /**< No medium in the drive */
|
||||
#define STA_PROTECT 0x04 /**< Write protected */
|
||||
|
||||
/* Command code for disk_ioctrl fucntion */
|
||||
|
||||
/* Generic command (used by FatFs) */
|
||||
#define CTRL_SYNC 0 /**< Flush disk cache (for write functions) */
|
||||
#define GET_SECTOR_COUNT 1 /**< Get media size (for only f_mkfs()) */
|
||||
#define GET_SECTOR_SIZE 2 /**< Get sector size (for multiple sector
|
||||
size (_MAX_SS >= 1024)) */
|
||||
#define GET_BLOCK_SIZE 3 /**< Get erase block size (for only
|
||||
f_mkfs()) */
|
||||
#define CTRL_ERASE_SECTOR 4 /**< Force erased a block of sectors (for
|
||||
only _USE_ERASE) */
|
||||
|
||||
/* Generic command (not used by FatFs) */
|
||||
#define CTRL_POWER 5 /**< Get/Set power status */
|
||||
#define CTRL_LOCK 6 /**< Lock/Unlock media removal */
|
||||
#define CTRL_EJECT 7 /**< Eject media */
|
||||
#define CTRL_FORMAT 8 /**< Create physical format on the media */
|
||||
|
||||
/* MMC/SDC specific ioctl command */
|
||||
#define MMC_GET_TYPE 10 /**< Get card type */
|
||||
#define MMC_GET_CSD 11 /**< Get CSD */
|
||||
#define MMC_GET_CID 12 /**< Get CID */
|
||||
#define MMC_GET_OCR 13 /**< Get OCR */
|
||||
#define MMC_GET_SDSTAT 14 /**< Get SD status */
|
||||
|
||||
/* ATA/CF specific ioctl command */
|
||||
#define ATA_GET_REV 20 /**< Get F/W revision */
|
||||
#define ATA_GET_MODEL 21 /**< Get model name */
|
||||
#define ATA_GET_SN 22 /**< Get serial number */
|
||||
|
||||
|
||||
/* MMC card type flags (MMC_GET_TYPE) */
|
||||
#define CT_MMC 0x01 /**< MMC ver 3 */
|
||||
#define CT_SD1 0x02 /**< SD ver 1 */
|
||||
#define CT_SD2 0x04 /**< SD ver 2 */
|
||||
#define CT_SDC (CT_SD1|CT_SD2) /**< SD */
|
||||
#define CT_BLOCK 0x08 /**< Block addressing */
|
||||
|
||||
/*----- Data types ---------------------------------------------------------*/
|
||||
/**
|
||||
* \brief Status of Disk Functions
|
||||
* \typedef DSTATUS
|
||||
*/
|
||||
typedef BYTE DSTATUS;
|
||||
|
||||
/**
|
||||
* \brief Results of Disk Functions
|
||||
* \typedef DRESULT
|
||||
*/
|
||||
typedef enum {
|
||||
RES_OK = 0, /**< 0: Successful */
|
||||
RES_ERROR, /**< 1: R/W Error */
|
||||
RES_WRPRT, /**< 2: Write Protected */
|
||||
RES_NOTRDY, /**< 3: Not Ready */
|
||||
RES_PARERR /**< 4: Invalid Parameter */
|
||||
} DRESULT;
|
||||
|
||||
/*----- Function prototypes ------------------------------------------------*/
|
||||
DSTATUS disk_initialize (BYTE drv);
|
||||
DSTATUS disk_status (BYTE drv);
|
||||
DRESULT disk_read (BYTE drv, BYTE*buff, DWORD sector, UINT count);
|
||||
#if _USE_WRITE
|
||||
DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, BYTE count);
|
||||
#endif /* _USE_WRITE */
|
||||
#if _USE_IOCTL
|
||||
DRESULT disk_ioctl (BYTE drv, BYTE cmd, void* buff);
|
||||
#endif /* _USE_IOCTL */
|
||||
|
||||
/*----- Data ---------------------------------------------------------------*/
|
||||
|
||||
/*----- Implementation -----------------------------------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/**
|
||||
* \}
|
||||
* \}
|
||||
*/
|
||||
|
||||
#endif /* _DISKIO_DEFINED */
|
||||
Reference in New Issue
Block a user