首页 > 代码库 > FATFS 初学之 磁盘 I/O接口
FATFS 初学之 磁盘 I/O接口
详见:嵌入式大讲堂
由于FatFs模块完全与磁盘I/O层分开,因此底层磁盘I/O需要下列函数去读/写物理磁盘以及获取当前时间。由于底层磁盘I/O模块并不是FatFs的一部分,因此它必须由用户提供。
disk_initialize:
1 /*-----------------------------------------------------------------------*/ 2 /* Inidialize a Drive */ 3 4 DSTATUS disk_initialize ( 5 BYTE drv /* Physical drive nmuber (0..) */ 6 ) 7 { 8 SD_Error Status; 9 /* Supports only single drive */10 if (drv)11 {12 return STA_NOINIT;13 }14 /*-------------------------- SD Init ----------------------------- */15 Status = SD_Init();16 if (Status!=SD_OK )17 {18 return STA_NOINIT;19 }20 else21 {22 return RES_OK;23 }24 25 }
函数功能:初始化磁盘驱动器
描述:
disk_initialize函数初始化一个物理驱动器。函数成功后,返回值中的STA_NOINIT标志被清除。
disk_initialize函数被FatFs模块在卷挂载过程中调用,去管理存储介质的改变。当FatFs模块起作用时,或卷上的FAT结构可以被瓦解时,应用程序不能调用该函数。可以使用f_mount函数去重新初始化文件系统。
disk_status:
1 /*-----------------------------------------------------------------------*/2 /* Return Disk Status */3 4 DSTATUS disk_status (5 BYTE drv /* Physical drive nmuber (0..) */6 )7 {8 return RES_OK;9 }
函数功能:获取当前磁盘的状态
disk_read:
1 /*-----------------------------------------------------------------------*/ 2 /* Read Sector(s) */ 3 4 DRESULT disk_read ( 5 BYTE drv, /* Physical drive nmuber (0..) */ 6 BYTE *buff, /* Data buffer to store read data */ 7 DWORD sector, /* Sector address (LBA) */ 8 BYTE count /* Number of sectors to read (1..255) */ 9 )10 {11 return RES_OK;12 }
函数功能:从磁盘驱动器中读取扇区
disk_write:
1 /*-----------------------------------------------------------------------*/ 2 /* Write Sector(s) */ 3 4 #if _READONLY == 0 5 DRESULT disk_write ( 6 BYTE drv, /* Physical drive nmuber (0..) */ 7 const BYTE *buff, /* Data to be written */ 8 DWORD sector, /* Sector address (LBA) */ 9 BYTE count /* Number of sectors to write (1..255) */10 )11 {12 return RES_OK;13 }14 #endif /* _READONLY */
函数功能:向磁盘驱动器中写入扇区
disk_ioctl:
1 /*-----------------------------------------------------------------------*/ 2 /* Miscellaneous Functions */ 3 4 DRESULT disk_ioctl ( 5 BYTE drv, /* Physical drive nmuber (0..) */ 6 BYTE ctrl, /* Control code */ 7 void *buff /* Buffer to send/receive control data */ 8 ) 9 {10 return RES_OK;11 }
get_fattime:
1 /*-----------------------------------------------------------------------*/2 /* Get current time */3 /*-----------------------------------------------------------------------*/ 4 DWORD get_fattime(void)5 {6 7 return 0;8 9 }
函数功能:获取当前时间
描述:get_fattime函数必须返回任何有效的时间,即使系统不支持实时时钟。如果返回一个0,则文件将没有一个有效的时间。在只读配置中,不需要此函数。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。