init
This commit is contained in:
234
HARDWARE/FATFS/diskio.c
Normal file
234
HARDWARE/FATFS/diskio.c
Normal file
@@ -0,0 +1,234 @@
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* If a working storage control module is available, it should be */
|
||||
/* attached to the FatFs via a glue function rather than modifying it. */
|
||||
/* This is an example of glue functions to attach various exsisting */
|
||||
/* storage control modules to the FatFs module with a defined API. */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
#include "diskio.h"
|
||||
#include "sdio.h"
|
||||
#include "malloc.h"
|
||||
|
||||
#define SD_CARD 0 // SD<53><44>,<2C><><EFBFBD><EFBFBD>Ϊ0
|
||||
#define EX_FLASH 1 // <20>ⲿspi flash,<2C><><EFBFBD><EFBFBD>Ϊ1
|
||||
#define USB_DISK 3 // U<><55>,<2C><><EFBFBD><EFBFBD>Ϊ3
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>W25Q128
|
||||
// ǰ8M<38>ֽڸ<D6BD>fatfs<66><73>,8M<38>ֽں<D6BD>,<2C><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ֿ<EFBFBD>,<2C>ֿ<EFBFBD>ռ<EFBFBD><D5BC>6.01M.ʣ<>ಿ<EFBFBD><E0B2BF>1.99M,<2C><><EFBFBD>ͻ<EFBFBD><CDBB>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
#define FLASH_SECTOR_SIZE 512
|
||||
#define FLASH_SECTOR_COUNT 1024*8*2 // W25Q128,ǰ8M<38>ֽڸ<D6BD>FATFSռ<53><D5BC>
|
||||
#define FLASH_BLOCK_SIZE 8 // ÿ<><C3BF>BLOCK<43><4B>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
FATFS fatfs_sd; // SD<53><44><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
FATFS fatfs_flash; // FLASH<53><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
FATFS fatfs_usb; // USB<53><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
FIL file_sd; // SD<53><44><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
FIL file_flash; // FLASH<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
FIL file_usb; // USB<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
// DWORD get_fattime (void)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>庯<EFBFBD><E5BAAF><EFBFBD><EFBFBD>Ϊfatfsģ<73><C4A3>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ǰʱ<C7B0><CAB1>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: <20><>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DWORD get_fattime (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// DSTATUS disk_status (BYTE pdrv)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>״̬
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: BYTE pdrv<72><76><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DSTATUS disk_status(BYTE pdrv)
|
||||
{
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// DSTATUS disk_status (BYTE pdrv)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: BYTE pdrv<72><76><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DSTATUS disk_initialize(BYTE pdrv)
|
||||
{
|
||||
u8 res=0;
|
||||
switch(pdrv)
|
||||
{
|
||||
case SD_CARD: // SD<53><44>
|
||||
res=SD_Init(); // SD<53><44><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
break;
|
||||
case USB_DISK: // U<><55>
|
||||
break;
|
||||
default:
|
||||
res=1;
|
||||
}
|
||||
if(res)
|
||||
return STA_NOINIT;
|
||||
else
|
||||
return 0; // <20><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// DRESULT disk_read (BYTE pdrv,BYTE *buff,DWORD sector,UINT count)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: BYTE pdrv<72><76><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD><CCB1><EFBFBD>0~9
|
||||
// BYTE *buff<66><66><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// DWORD sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// UINT count<6E><74><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DRESULT disk_read (BYTE pdrv,BYTE *buff,DWORD sector,UINT count)
|
||||
{
|
||||
u8 res=0;
|
||||
if (!count)
|
||||
return RES_PARERR;// count<6E><74><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ز<F2B7B5BB><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
switch(pdrv)
|
||||
{
|
||||
case SD_CARD: // SD<53><44>
|
||||
res=SD_ReadDisk(buff,sector,count);
|
||||
while(res) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SD_Init(); // <20><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>SD<53><44>
|
||||
res=SD_ReadDisk(buff,sector,count);
|
||||
}
|
||||
break;
|
||||
case USB_DISK: // U<><55>
|
||||
|
||||
break;
|
||||
default:
|
||||
res=1;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>SPI_SD_driver.c<>ķ<EFBFBD><C4B7><EFBFBD>ֵת<D6B5><D7AA>ff.c<>ķ<EFBFBD><C4B7><EFBFBD>ֵ
|
||||
if(res==0x00)
|
||||
return RES_OK;
|
||||
else
|
||||
return RES_ERROR;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// DRESULT disk_write (BYTE pdrv,const BYTE *buff,DWORD sector,UINT count)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: д<><D0B4><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: BYTE pdrv<72><76><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD><CCB1><EFBFBD>0~9
|
||||
// BYTE *buff<66><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// DWORD sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// UINT count<6E><74><EFBFBD><EFBFBD>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DRESULT disk_write (BYTE pdrv,const BYTE *buff,DWORD sector,UINT count)
|
||||
{
|
||||
u8 res=0;
|
||||
if (!count)
|
||||
return RES_PARERR;// count<6E><74><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ز<F2B7B5BB><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
switch(pdrv)
|
||||
{
|
||||
case SD_CARD: // SD<53><44>
|
||||
res=SD_WriteDisk((u8*)buff,sector,count);
|
||||
while(res) // д<><D0B4><EFBFBD><EFBFBD>
|
||||
{
|
||||
SD_Init(); //<2F><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>SD<53><44>
|
||||
res=SD_WriteDisk((u8*)buff,sector,count);
|
||||
//printf("sd wr error:%d\r\n",res);
|
||||
}
|
||||
break;
|
||||
case USB_DISK: // U<><55>
|
||||
|
||||
break;
|
||||
default:
|
||||
res=1;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>SPI_SD_driver.c<>ķ<EFBFBD><C4B7><EFBFBD>ֵת<D6B5><D7AA>ff.c<>ķ<EFBFBD><C4B7><EFBFBD>ֵ
|
||||
if(res == 0x00)
|
||||
return RES_OK;
|
||||
else
|
||||
return RES_ERROR;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// DRESULT disk_ioctl (BYTE pdrv,BYTE cmd,void *buff)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: BYTE pdrv<72><76><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD><CCB1><EFBFBD>0~9
|
||||
// BYTE cmd<6D><64><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
|
||||
// void *buff<66><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
DRESULT disk_ioctl (BYTE pdrv,BYTE cmd,void *buff)
|
||||
{
|
||||
DRESULT res;
|
||||
if(pdrv==SD_CARD)// SD<53><44>
|
||||
{
|
||||
switch(cmd)
|
||||
{
|
||||
case CTRL_SYNC:
|
||||
res = RES_OK;
|
||||
break;
|
||||
case GET_SECTOR_SIZE:
|
||||
*(DWORD*)buff = 512;
|
||||
res = RES_OK;
|
||||
break;
|
||||
case GET_BLOCK_SIZE:
|
||||
*(WORD*)buff = SDCardInfo.CardBlockSize;
|
||||
res = RES_OK;
|
||||
break;
|
||||
case GET_SECTOR_COUNT:
|
||||
*(DWORD*)buff = SDCardInfo.CardCapacity/512;
|
||||
res = RES_OK;
|
||||
break;
|
||||
default:
|
||||
res = RES_PARERR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(pdrv==USB_DISK) // U<><55>
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
res=RES_ERROR;// <20><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>֧<EFBFBD><D6A7>
|
||||
|
||||
return res;
|
||||
}
|
||||
void *ff_memalloc (UINT size)
|
||||
{
|
||||
return (void*)mymalloc(SRAMEX,size);
|
||||
}
|
||||
//<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
||||
void ff_memfree (void* mf)
|
||||
{
|
||||
myfree(SRAMEX,mf);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// End Of File
|
||||
//-----------------------------------------------------------------
|
||||
Reference in New Issue
Block a user