diff --git a/example/linux/FatFs/source/diskio.c b/example/linux/FatFs/source/diskio.c deleted file mode 100644 index 581ca29..0000000 --- a/example/linux/FatFs/source/diskio.c +++ /dev/null @@ -1,234 +0,0 @@ -/*-----------------------------------------------------------------------*/ -/* Low level disk I/O module SKELETON for FatFs (C)ChaN, 2019 */ -/*-----------------------------------------------------------------------*/ -/* 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 "ff.h" /* Obtains integer types */ -#include "diskio.h" /* Declarations of disk functions */ -#include "fatfs_port.h" - -/* Definitions of physical drive number for each drive */ -#define DEV_RAM 0 /* Example: Map Ramdisk to physical drive 0 */ -#define DEV_MMC 1 /* Example: Map MMC/SD card to physical drive 1 */ - - -/*-----------------------------------------------------------------------*/ -/* Get Drive Status */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_status ( - BYTE pdrv /* Physical drive nmuber to identify the drive */ -) -{ - DSTATUS stat; - int result; - - switch (pdrv) { - case DEV_RAM : - result = RAM_disk_status(); - if(result == 0) - { - stat = RES_OK; - } - else - { - stat = RES_NOTRDY; - } - return stat; - - case DEV_MMC : - result = MMC_disk_status(); - if(result == 0) - { - stat = RES_OK; - } - else - { - stat = RES_NOTRDY; - } - return stat; - } - return STA_NOINIT; -} - - - -/*-----------------------------------------------------------------------*/ -/* Inidialize a Drive */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_initialize ( - BYTE pdrv /* Physical drive nmuber to identify the drive */ -) -{ - DSTATUS stat; - int result; - - switch (pdrv) { - case DEV_RAM : - result = RAM_disk_initialize(); - result = result; - stat = disk_status(pdrv); - return stat; - - case DEV_MMC : - result = MMC_disk_initialize(); - stat = disk_status(pdrv); - return stat; - } - return STA_NOINIT; -} - - - -/*-----------------------------------------------------------------------*/ -/* Read Sector(s) */ -/*-----------------------------------------------------------------------*/ - -DRESULT disk_read ( - BYTE pdrv, /* Physical drive nmuber to identify the drive */ - BYTE *buff, /* Data buffer to store read data */ - LBA_t sector, /* Start sector in LBA */ - UINT count /* Number of sectors to read */ -) -{ - DRESULT res; - int result; - - switch (pdrv) { - case DEV_RAM : - result = RAM_disk_read(buff, sector, count); - if(result == 0) - { - res = RES_OK; - } - else - { - res = RES_ERROR; - } - return res; - - case DEV_MMC : - result = MMC_disk_read(buff, sector, count); - if(result == 0) - { - res = RES_OK; - } - else - { - res = RES_ERROR; - } - return res; - } - - return RES_PARERR; -} - - - -/*-----------------------------------------------------------------------*/ -/* Write Sector(s) */ -/*-----------------------------------------------------------------------*/ - -#if FF_FS_READONLY == 0 - -DRESULT disk_write ( - BYTE pdrv, /* Physical drive nmuber to identify the drive */ - const BYTE *buff, /* Data to be written */ - LBA_t sector, /* Start sector in LBA */ - UINT count /* Number of sectors to write */ -) -{ - DRESULT res; - int result; - - switch (pdrv) { - case DEV_RAM : - result = RAM_disk_write(buff, sector, count); - if(result == 0) - { - res = RES_OK; - } - else - { - res = RES_ERROR; - } - return res; - - case DEV_MMC : - result = MMC_disk_write(buff, sector, count); - if(result == 0) - { - res = RES_OK; - } - else - { - res = RES_ERROR; - } - return res; - } - return RES_PARERR; -} - -#endif - - -/*-----------------------------------------------------------------------*/ -/* Miscellaneous Functions */ -/*-----------------------------------------------------------------------*/ - -DRESULT disk_ioctl ( - BYTE pdrv, /* Physical drive nmuber (0..) */ - BYTE cmd, /* Control code */ - void *buff /* Buffer to send/receive control data */ -) -{ - DRESULT res; - - switch (pdrv) { - case DEV_RAM : - switch(cmd) - { - case CTRL_SYNC: - break; - case GET_SECTOR_COUNT: - *(WORD*)buff = RAM_DISK_SECTION_COUNT; - break; - case GET_SECTOR_SIZE: - *(WORD*)buff = RAM_DISK_SECTION_SIZE; - break; - case GET_BLOCK_SIZE: - *(WORD*)buff = 1; - break; - case CTRL_TRIM: - break; - } - res = RES_OK; - return res; - case DEV_MMC : - switch(cmd) - { - case CTRL_SYNC: - break; - case GET_SECTOR_COUNT: - *(WORD*)buff = MMC_DISK_SECTION_COUNT; - break; - case GET_SECTOR_SIZE: - *(WORD*)buff = MMC_DISK_SECTION_SIZE; - break; - case GET_BLOCK_SIZE: - *(WORD*)buff = 1; - break; - case CTRL_TRIM: - break; - } - res = RES_OK; - return res; - } - return RES_PARERR; -} - diff --git a/example/linux/Makefile b/example/linux/Makefile index 61fa7f5..b49f556 100755 --- a/example/linux/Makefile +++ b/example/linux/Makefile @@ -13,7 +13,9 @@ OBJ += xcmd.o \ ff.o \ ffunicode.o \ fatfs_port.o \ - fs_cmds.o + fs_cmds.o\ + fatfs_disk_mmc.o\ + fatfs_disk_ram.o VPATH := ../../src \ ../../extensions/test \ @@ -21,8 +23,8 @@ VPATH := ../../src \ ../../extensions/ex_list \ ../../extensions/ex_cmds \ ../../extensions/net_cmds \ - ./FatFs/source \ ../../extensions/fs_cmds \ + ../../extensions/fs_cmds/FatFs/source \ INC += -I./ \ -I../../inc \ @@ -31,7 +33,7 @@ INC += -I./ \ -I../../extensions/ex_list \ -I../../extensions/ex_cmds \ -I../../extensions/net_cmds \ - -IFatFs/source \ + -I../../extensions/fs_cmds/FatFs/source \ -I../../extensions/fs_cmds \ OBJ_WITH_BUILD_DIR:=$(addprefix build/,$(OBJ)) diff --git a/example/linux/fatfs_disk_mmc.c b/example/linux/fatfs_disk_mmc.c new file mode 100644 index 0000000..2b7efc8 --- /dev/null +++ b/example/linux/fatfs_disk_mmc.c @@ -0,0 +1,133 @@ +#include "fatfs_disk_mmc.h" +#include "fatfs_port.h" +#include +#include +#include +#include +#include +#include +#include "diskio.h" + +#define MMC_DISK_SECTION_SIZE (512) +#define MMC_DISK_SECTION_COUNT (1024) + +static int mmc_fd = -1; +static DiskIo_t disk; +static FATFS g_fs; +static BYTE g_work[FF_MAX_SS]; + +static DSTATUS m_disk_status(void) +{ + return RES_OK; +} + +static DSTATUS m_disk_initialize(void) +{ + if(access("./fatfs.img", F_OK) != 0) + { + mmc_fd = open("./fatfs.img", O_CREAT|O_RDWR); + if(mmc_fd >= 0) + { + char buf[MMC_DISK_SECTION_SIZE] = {0}; + for(DWORD i=0; i= 0) + { + lseek(mmc_fd, sector*MMC_DISK_SECTION_SIZE, L_SET); + int read_len = read(mmc_fd, buff, count*MMC_DISK_SECTION_SIZE); + if(read_len == count*MMC_DISK_SECTION_SIZE) + { + ret = RES_OK; + } + } + close(mmc_fd); + return ret; +} + +static DRESULT m_disk_write(const BYTE *buff, LBA_t sector, UINT count) +{ + DRESULT ret = RES_ERROR; + mmc_fd = open("./fatfs.img", O_RDWR); + if(mmc_fd >= 0) + { + lseek(mmc_fd, sector*MMC_DISK_SECTION_SIZE, L_SET); + int write_len = write(mmc_fd, buff, count*MMC_DISK_SECTION_SIZE); + if(write_len == count*MMC_DISK_SECTION_SIZE) + { + ret = RES_OK; + } + } + close(mmc_fd); + return ret; +} + +static DRESULT m_disk_ioctl(BYTE cmd, void *buff) +{ + switch(cmd) + { + case CTRL_SYNC: + break; + case GET_SECTOR_COUNT: + *(WORD*)buff = MMC_DISK_SECTION_COUNT; + break; + case GET_SECTOR_SIZE: + *(WORD*)buff = MMC_DISK_SECTION_SIZE; + break; + case GET_BLOCK_SIZE: + *(WORD*)buff = 1; + break; + case CTRL_TRIM: + break; + } + return RES_OK; +} + +int mmc_disk_init(void) +{ + FRESULT res; + disk.disk_name = "MMC Disk"; + disk.disk_initialize = m_disk_initialize; + disk.disk_ioctl = m_disk_ioctl; + disk.disk_read = m_disk_read; + disk.disk_status = m_disk_status; + disk.disk_write = m_disk_write; + if(f_disk_regist(&disk, 1) == -1) + { + printf("MMC disk regist ERROR!\r\n"); + return FR_DISK_ERR; + } + + res = f_mount(&g_fs, "1:", 1); //挂载文件系统 , "1:"就是挂载的设备号为1的设备 + if (res == FR_NO_FILESYSTEM) //FR_NO_FILESYSTEM值为13,表示没有有效的设备 + { + res = f_mkfs("1:", 0, g_work, sizeof(g_work)); + res = f_mount(NULL, "1:", 1); //取消文件系统 + res = f_mount(&g_fs, "1:", 1); //挂载文件系统 + } + + if(res == FR_OK) + { + printf("MMC fs init OK!\r\n"); + } + else + { + printf("MMC fs init ERROR!\r\n"); + } + return res; +} \ No newline at end of file diff --git a/example/linux/fatfs_disk_mmc.h b/example/linux/fatfs_disk_mmc.h new file mode 100644 index 0000000..482737f --- /dev/null +++ b/example/linux/fatfs_disk_mmc.h @@ -0,0 +1,8 @@ +#ifndef FATFS_DISK_MMC_H +#define FATFS_DISK_MMC_H + +#include "ff.h" + +int mmc_disk_init(void); + +#endif \ No newline at end of file diff --git a/example/linux/fatfs_disk_ram.c b/example/linux/fatfs_disk_ram.c new file mode 100644 index 0000000..3163f7f --- /dev/null +++ b/example/linux/fatfs_disk_ram.c @@ -0,0 +1,88 @@ +#include "fatfs_disk_mmc.h" +#include "fatfs_port.h" +#include + +static DiskIo_t disk; + +#define RAM_DISK_SECTION_SIZE (512) +#define RAM_DISK_SECTION_COUNT (1024) +static char *ram_buf[RAM_DISK_SECTION_COUNT][RAM_DISK_SECTION_SIZE]; +static FATFS g_fs; +static BYTE g_work[FF_MAX_SS]; + +static DSTATUS m_disk_status(void) +{ + return 0; +} + +static DSTATUS m_disk_initialize(void) +{ + return 0; +} + +static DRESULT m_disk_read(BYTE *buff, LBA_t sector, UINT count) +{ + memcpy(buff, &ram_buf[sector], count * RAM_DISK_SECTION_SIZE); + return 0; +} + +static DRESULT m_disk_write(const BYTE *buff, LBA_t sector, UINT count) +{ + memcpy(&ram_buf[sector], buff, count * RAM_DISK_SECTION_SIZE); + return 0; +} + +static DRESULT m_disk_ioctl(BYTE cmd, void *buff) +{ + switch(cmd) + { + case CTRL_SYNC: + break; + case GET_SECTOR_COUNT: + *(WORD*)buff = RAM_DISK_SECTION_COUNT; + break; + case GET_SECTOR_SIZE: + *(WORD*)buff = RAM_DISK_SECTION_SIZE; + break; + case GET_BLOCK_SIZE: + *(WORD*)buff = 1; + break; + case CTRL_TRIM: + break; + } + return RES_OK; +} + +int ram_disk_init(void) +{ + FRESULT res; + disk.disk_name = "RAM Disk"; + disk.disk_initialize = m_disk_initialize; + disk.disk_ioctl = m_disk_ioctl; + disk.disk_read = m_disk_read; + disk.disk_status = m_disk_status; + disk.disk_write = m_disk_write; + if(f_disk_regist(&disk, 0) == -1) + { + printf("RAM disk regist ERROR!\r\n"); + return FR_DISK_ERR; + } + + res = f_mount(&g_fs, "0:", 1); //挂载文件系统 , "1:"就是挂载的设备号为1的设备 + if (res == FR_NO_FILESYSTEM) //FR_NO_FILESYSTEM值为13,表示没有有效的设备 + { + res = f_mkfs("0:", 0, g_work, sizeof(g_work)); + res = f_mount(NULL, "0:", 1); //取消文件系统 + res = f_mount(&g_fs, "0:", 1); //挂载文件系统 + } + + if(res == FR_OK) + { + printf("RAM fs init OK!\r\n"); + } + else + { + printf("RAM fs init ERROR!\r\n"); + } + return res; +} \ No newline at end of file diff --git a/example/linux/fatfs_disk_ram.h b/example/linux/fatfs_disk_ram.h new file mode 100644 index 0000000..e2c4b82 --- /dev/null +++ b/example/linux/fatfs_disk_ram.h @@ -0,0 +1,8 @@ +#ifndef FATFS_DISK_RAM_H +#define FATFS_DISK_RAM_H + +#include "ff.h" + +int ram_disk_init(void); + +#endif \ No newline at end of file diff --git a/example/linux/fatfs_port.c b/example/linux/fatfs_port.c deleted file mode 100644 index ed24c42..0000000 --- a/example/linux/fatfs_port.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * @Author: your name - * @Date: 2021-10-09 13:55:09 - * @LastEditTime: 2021-10-09 17:04:56 - * @LastEditors: Please set LastEditors - * @Description: In User Settings Edit - * @FilePath: /xcmd/example/linux/fatfs_port.c - */ -#include "fatfs_port.h" -#include -#include -#include -#include -#include -#include - -char *ram_buf[RAM_DISK_SECTION_COUNT][RAM_DISK_SECTION_SIZE]; -int mmc_fd = -1; - -int RAM_disk_status(void) -{ - return 0; -} - -int MMC_disk_status(void) -{ - return 0; -} - -int RAM_disk_initialize(void) -{ - return 0; -} - -int MMC_disk_initialize(void) -{ - if(access("./fatfs.img", F_OK) != 0) - { - mmc_fd = open("./fatfs.img", O_CREAT|O_RDWR); - if(mmc_fd >= 0) - { - char buf[MMC_DISK_SECTION_SIZE] = {0}; - for(DWORD i=0; i= 0) - { - lseek(mmc_fd, sector*MMC_DISK_SECTION_SIZE, L_SET); - int read_len = read(mmc_fd, buff, count*MMC_DISK_SECTION_SIZE); - if(read_len == count*MMC_DISK_SECTION_SIZE) - { - ret = 0; - } - } - close(mmc_fd); - return ret; -} - -int RAM_disk_write(const BYTE *buff, LBA_t sector, UINT count) -{ - memcpy(&ram_buf[sector], buff, count * RAM_DISK_SECTION_SIZE); - return 0; -} - -int MMC_disk_write(const BYTE *buff, LBA_t sector, UINT count) -{ - int ret = -1; - mmc_fd = open("./fatfs.img", O_RDWR); - if(mmc_fd >= 0) - { - lseek(mmc_fd, sector*MMC_DISK_SECTION_SIZE, L_SET); - int write_len = write(mmc_fd, buff, count*MMC_DISK_SECTION_SIZE); - if(write_len == count*MMC_DISK_SECTION_SIZE) - { - ret = 0; - } - } - close(mmc_fd); - return ret; -} diff --git a/example/linux/fatfs_port.h b/example/linux/fatfs_port.h deleted file mode 100644 index 6b04272..0000000 --- a/example/linux/fatfs_port.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * @Author: your name - * @Date: 2021-10-09 13:55:20 - * @LastEditTime: 2021-10-09 15:51:46 - * @LastEditors: Please set LastEditors - * @Description: In User Settings Edit - * @FilePath: /xcmd/example/linux/fatfs_port.h - */ - -#ifndef FATFS_PORT_H -#define FATFS_PORT_H - -#include "ff.h" - -#define RAM_DISK_SECTION_SIZE (512) -#define RAM_DISK_SECTION_COUNT (1024) - -#define MMC_DISK_SECTION_SIZE (512) -#define MMC_DISK_SECTION_COUNT (1024) - -int RAM_disk_status(void); -int MMC_disk_status(void); - -int RAM_disk_initialize(void); -int MMC_disk_initialize(void); - -int RAM_disk_read(BYTE *buff, LBA_t sector, UINT count); -int MMC_disk_read(BYTE *buff, LBA_t sector, UINT count); - -int RAM_disk_write(const BYTE *buff, LBA_t sector, UINT count); -int MMC_disk_write(const BYTE *buff, LBA_t sector, UINT count); - -#endif \ No newline at end of file diff --git a/example/linux/linux_main.c b/example/linux/linux_main.c index 840a2c8..cbd1190 100755 --- a/example/linux/linux_main.c +++ b/example/linux/linux_main.c @@ -18,11 +18,9 @@ #include "fs_cmds.h" #include "socket_cmds.h" #include "ff.h" +#include "fatfs_disk_mmc.h" +#include "fatfs_disk_ram.h" -FATFS g_fs_ram; -FATFS g_fs_mmc; -BYTE g_work_ram[FF_MAX_SS]; //一定是一个全局变量 -BYTE g_work_mmc[FF_MAX_SS]; //一定是一个全局变量 FIL g_fp; int getch(void) @@ -98,56 +96,11 @@ void fatfs_test(char* path) } } -int ram_fatfs_init(void) -{ - FRESULT res; //局部变量 - res = f_mount(&g_fs_ram, "0:", 1); //挂载文件系统 , "1:"就是挂载的设备号为1的设备 - if (res == FR_NO_FILESYSTEM) //FR_NO_FILESYSTEM值为13,表示没有有效的设备 - { - res = f_mkfs("0:", 0, g_work_ram, sizeof(g_work_ram)); - res = f_mount(NULL, "0:", 1); //取消文件系统 - res = f_mount(&g_fs_ram, "0:", 1); //挂载文件系统 - } - - if(res == FR_OK) - { - printf("RAM fs init OK!\r\n"); - } - else - { - printf("RAM fs init ERROR!\r\n"); - } - - return res; -} - -int mmc_fatfs_init(void) -{ - FRESULT res; //局部变量 - res = f_mount(&g_fs_mmc, "1:", 1); //挂载文件系统 , "1:"就是挂载的设备号为1的设备 - if (res == FR_NO_FILESYSTEM) //FR_NO_FILESYSTEM值为13,表示没有有效的设备 - { - res = f_mkfs("1:", 0, g_work_mmc, sizeof(g_work_mmc)); - res = f_mount(NULL, "1:", 1); //取消文件系统 - res = f_mount(&g_fs_mmc, "1:", 1); //挂载文件系统 - } - - if(res == FR_OK) - { - printf("MMC fs init OK!\r\n"); - } - else - { - printf("MMC fs init ERROR!\r\n"); - } - return res; -} - int main(void) { xcmd_init(cmd_get_char, cmd_put_char); - ram_fatfs_init(); - mmc_fatfs_init(); + ram_disk_init(); + mmc_disk_init(); test_cmd_init(); test_keys_init(); user_keys_init(); diff --git a/example/linux/FatFs/LICENSE.txt b/extensions/fs_cmds/FatFs/LICENSE.txt similarity index 100% rename from example/linux/FatFs/LICENSE.txt rename to extensions/fs_cmds/FatFs/LICENSE.txt diff --git a/example/linux/FatFs/documents/00index_e.html b/extensions/fs_cmds/FatFs/documents/00index_e.html similarity index 100% rename from example/linux/FatFs/documents/00index_e.html rename to extensions/fs_cmds/FatFs/documents/00index_e.html diff --git a/example/linux/FatFs/documents/css_e.css b/extensions/fs_cmds/FatFs/documents/css_e.css similarity index 100% rename from example/linux/FatFs/documents/css_e.css rename to extensions/fs_cmds/FatFs/documents/css_e.css diff --git a/example/linux/FatFs/documents/doc/appnote.html b/extensions/fs_cmds/FatFs/documents/doc/appnote.html similarity index 100% rename from example/linux/FatFs/documents/doc/appnote.html rename to extensions/fs_cmds/FatFs/documents/doc/appnote.html diff --git a/example/linux/FatFs/documents/doc/chdir.html b/extensions/fs_cmds/FatFs/documents/doc/chdir.html similarity index 100% rename from example/linux/FatFs/documents/doc/chdir.html rename to extensions/fs_cmds/FatFs/documents/doc/chdir.html diff --git a/example/linux/FatFs/documents/doc/chdrive.html b/extensions/fs_cmds/FatFs/documents/doc/chdrive.html similarity index 100% rename from example/linux/FatFs/documents/doc/chdrive.html rename to extensions/fs_cmds/FatFs/documents/doc/chdrive.html diff --git a/example/linux/FatFs/documents/doc/chmod.html b/extensions/fs_cmds/FatFs/documents/doc/chmod.html similarity index 100% rename from example/linux/FatFs/documents/doc/chmod.html rename to extensions/fs_cmds/FatFs/documents/doc/chmod.html diff --git a/example/linux/FatFs/documents/doc/close.html b/extensions/fs_cmds/FatFs/documents/doc/close.html similarity index 100% rename from example/linux/FatFs/documents/doc/close.html rename to extensions/fs_cmds/FatFs/documents/doc/close.html diff --git a/example/linux/FatFs/documents/doc/closedir.html b/extensions/fs_cmds/FatFs/documents/doc/closedir.html similarity index 100% rename from example/linux/FatFs/documents/doc/closedir.html rename to extensions/fs_cmds/FatFs/documents/doc/closedir.html diff --git a/example/linux/FatFs/documents/doc/config.html b/extensions/fs_cmds/FatFs/documents/doc/config.html similarity index 100% rename from example/linux/FatFs/documents/doc/config.html rename to extensions/fs_cmds/FatFs/documents/doc/config.html diff --git a/example/linux/FatFs/documents/doc/dinit.html b/extensions/fs_cmds/FatFs/documents/doc/dinit.html similarity index 100% rename from example/linux/FatFs/documents/doc/dinit.html rename to extensions/fs_cmds/FatFs/documents/doc/dinit.html diff --git a/example/linux/FatFs/documents/doc/dioctl.html b/extensions/fs_cmds/FatFs/documents/doc/dioctl.html similarity index 100% rename from example/linux/FatFs/documents/doc/dioctl.html rename to extensions/fs_cmds/FatFs/documents/doc/dioctl.html diff --git a/example/linux/FatFs/documents/doc/dread.html b/extensions/fs_cmds/FatFs/documents/doc/dread.html similarity index 100% rename from example/linux/FatFs/documents/doc/dread.html rename to extensions/fs_cmds/FatFs/documents/doc/dread.html diff --git a/example/linux/FatFs/documents/doc/dstat.html b/extensions/fs_cmds/FatFs/documents/doc/dstat.html similarity index 100% rename from example/linux/FatFs/documents/doc/dstat.html rename to extensions/fs_cmds/FatFs/documents/doc/dstat.html diff --git a/example/linux/FatFs/documents/doc/dwrite.html b/extensions/fs_cmds/FatFs/documents/doc/dwrite.html similarity index 100% rename from example/linux/FatFs/documents/doc/dwrite.html rename to extensions/fs_cmds/FatFs/documents/doc/dwrite.html diff --git a/example/linux/FatFs/documents/doc/eof.html b/extensions/fs_cmds/FatFs/documents/doc/eof.html similarity index 100% rename from example/linux/FatFs/documents/doc/eof.html rename to extensions/fs_cmds/FatFs/documents/doc/eof.html diff --git a/example/linux/FatFs/documents/doc/error.html b/extensions/fs_cmds/FatFs/documents/doc/error.html similarity index 100% rename from example/linux/FatFs/documents/doc/error.html rename to extensions/fs_cmds/FatFs/documents/doc/error.html diff --git a/example/linux/FatFs/documents/doc/expand.html b/extensions/fs_cmds/FatFs/documents/doc/expand.html similarity index 100% rename from example/linux/FatFs/documents/doc/expand.html rename to extensions/fs_cmds/FatFs/documents/doc/expand.html diff --git a/example/linux/FatFs/documents/doc/fattime.html b/extensions/fs_cmds/FatFs/documents/doc/fattime.html similarity index 100% rename from example/linux/FatFs/documents/doc/fattime.html rename to extensions/fs_cmds/FatFs/documents/doc/fattime.html diff --git a/example/linux/FatFs/documents/doc/fdisk.html b/extensions/fs_cmds/FatFs/documents/doc/fdisk.html similarity index 100% rename from example/linux/FatFs/documents/doc/fdisk.html rename to extensions/fs_cmds/FatFs/documents/doc/fdisk.html diff --git a/example/linux/FatFs/documents/doc/filename.html b/extensions/fs_cmds/FatFs/documents/doc/filename.html similarity index 100% rename from example/linux/FatFs/documents/doc/filename.html rename to extensions/fs_cmds/FatFs/documents/doc/filename.html diff --git a/example/linux/FatFs/documents/doc/findfirst.html b/extensions/fs_cmds/FatFs/documents/doc/findfirst.html similarity index 100% rename from example/linux/FatFs/documents/doc/findfirst.html rename to extensions/fs_cmds/FatFs/documents/doc/findfirst.html diff --git a/example/linux/FatFs/documents/doc/findnext.html b/extensions/fs_cmds/FatFs/documents/doc/findnext.html similarity index 100% rename from example/linux/FatFs/documents/doc/findnext.html rename to extensions/fs_cmds/FatFs/documents/doc/findnext.html diff --git a/example/linux/FatFs/documents/doc/forward.html b/extensions/fs_cmds/FatFs/documents/doc/forward.html similarity index 100% rename from example/linux/FatFs/documents/doc/forward.html rename to extensions/fs_cmds/FatFs/documents/doc/forward.html diff --git a/example/linux/FatFs/documents/doc/getcwd.html b/extensions/fs_cmds/FatFs/documents/doc/getcwd.html similarity index 100% rename from example/linux/FatFs/documents/doc/getcwd.html rename to extensions/fs_cmds/FatFs/documents/doc/getcwd.html diff --git a/example/linux/FatFs/documents/doc/getfree.html b/extensions/fs_cmds/FatFs/documents/doc/getfree.html similarity index 100% rename from example/linux/FatFs/documents/doc/getfree.html rename to extensions/fs_cmds/FatFs/documents/doc/getfree.html diff --git a/example/linux/FatFs/documents/doc/getlabel.html b/extensions/fs_cmds/FatFs/documents/doc/getlabel.html similarity index 100% rename from example/linux/FatFs/documents/doc/getlabel.html rename to extensions/fs_cmds/FatFs/documents/doc/getlabel.html diff --git a/example/linux/FatFs/documents/doc/gets.html b/extensions/fs_cmds/FatFs/documents/doc/gets.html similarity index 100% rename from example/linux/FatFs/documents/doc/gets.html rename to extensions/fs_cmds/FatFs/documents/doc/gets.html diff --git a/example/linux/FatFs/documents/doc/lseek.html b/extensions/fs_cmds/FatFs/documents/doc/lseek.html similarity index 100% rename from example/linux/FatFs/documents/doc/lseek.html rename to extensions/fs_cmds/FatFs/documents/doc/lseek.html diff --git a/example/linux/FatFs/documents/doc/mkdir.html b/extensions/fs_cmds/FatFs/documents/doc/mkdir.html similarity index 100% rename from example/linux/FatFs/documents/doc/mkdir.html rename to extensions/fs_cmds/FatFs/documents/doc/mkdir.html diff --git a/example/linux/FatFs/documents/doc/mkfs.html b/extensions/fs_cmds/FatFs/documents/doc/mkfs.html similarity index 100% rename from example/linux/FatFs/documents/doc/mkfs.html rename to extensions/fs_cmds/FatFs/documents/doc/mkfs.html diff --git a/example/linux/FatFs/documents/doc/mount.html b/extensions/fs_cmds/FatFs/documents/doc/mount.html similarity index 100% rename from example/linux/FatFs/documents/doc/mount.html rename to extensions/fs_cmds/FatFs/documents/doc/mount.html diff --git a/example/linux/FatFs/documents/doc/open.html b/extensions/fs_cmds/FatFs/documents/doc/open.html similarity index 100% rename from example/linux/FatFs/documents/doc/open.html rename to extensions/fs_cmds/FatFs/documents/doc/open.html diff --git a/example/linux/FatFs/documents/doc/opendir.html b/extensions/fs_cmds/FatFs/documents/doc/opendir.html similarity index 100% rename from example/linux/FatFs/documents/doc/opendir.html rename to extensions/fs_cmds/FatFs/documents/doc/opendir.html diff --git a/example/linux/FatFs/documents/doc/printf.html b/extensions/fs_cmds/FatFs/documents/doc/printf.html similarity index 100% rename from example/linux/FatFs/documents/doc/printf.html rename to extensions/fs_cmds/FatFs/documents/doc/printf.html diff --git a/example/linux/FatFs/documents/doc/putc.html b/extensions/fs_cmds/FatFs/documents/doc/putc.html similarity index 100% rename from example/linux/FatFs/documents/doc/putc.html rename to extensions/fs_cmds/FatFs/documents/doc/putc.html diff --git a/example/linux/FatFs/documents/doc/puts.html b/extensions/fs_cmds/FatFs/documents/doc/puts.html similarity index 100% rename from example/linux/FatFs/documents/doc/puts.html rename to extensions/fs_cmds/FatFs/documents/doc/puts.html diff --git a/example/linux/FatFs/documents/doc/rc.html b/extensions/fs_cmds/FatFs/documents/doc/rc.html similarity index 100% rename from example/linux/FatFs/documents/doc/rc.html rename to extensions/fs_cmds/FatFs/documents/doc/rc.html diff --git a/example/linux/FatFs/documents/doc/read.html b/extensions/fs_cmds/FatFs/documents/doc/read.html similarity index 100% rename from example/linux/FatFs/documents/doc/read.html rename to extensions/fs_cmds/FatFs/documents/doc/read.html diff --git a/example/linux/FatFs/documents/doc/readdir.html b/extensions/fs_cmds/FatFs/documents/doc/readdir.html similarity index 100% rename from example/linux/FatFs/documents/doc/readdir.html rename to extensions/fs_cmds/FatFs/documents/doc/readdir.html diff --git a/example/linux/FatFs/documents/doc/rename.html b/extensions/fs_cmds/FatFs/documents/doc/rename.html similarity index 100% rename from example/linux/FatFs/documents/doc/rename.html rename to extensions/fs_cmds/FatFs/documents/doc/rename.html diff --git a/example/linux/FatFs/documents/doc/sdir.html b/extensions/fs_cmds/FatFs/documents/doc/sdir.html similarity index 100% rename from example/linux/FatFs/documents/doc/sdir.html rename to extensions/fs_cmds/FatFs/documents/doc/sdir.html diff --git a/example/linux/FatFs/documents/doc/setcp.html b/extensions/fs_cmds/FatFs/documents/doc/setcp.html similarity index 100% rename from example/linux/FatFs/documents/doc/setcp.html rename to extensions/fs_cmds/FatFs/documents/doc/setcp.html diff --git a/example/linux/FatFs/documents/doc/setlabel.html b/extensions/fs_cmds/FatFs/documents/doc/setlabel.html similarity index 100% rename from example/linux/FatFs/documents/doc/setlabel.html rename to extensions/fs_cmds/FatFs/documents/doc/setlabel.html diff --git a/example/linux/FatFs/documents/doc/sfatfs.html b/extensions/fs_cmds/FatFs/documents/doc/sfatfs.html similarity index 100% rename from example/linux/FatFs/documents/doc/sfatfs.html rename to extensions/fs_cmds/FatFs/documents/doc/sfatfs.html diff --git a/example/linux/FatFs/documents/doc/sfile.html b/extensions/fs_cmds/FatFs/documents/doc/sfile.html similarity index 100% rename from example/linux/FatFs/documents/doc/sfile.html rename to extensions/fs_cmds/FatFs/documents/doc/sfile.html diff --git a/example/linux/FatFs/documents/doc/sfileinfo.html b/extensions/fs_cmds/FatFs/documents/doc/sfileinfo.html similarity index 100% rename from example/linux/FatFs/documents/doc/sfileinfo.html rename to extensions/fs_cmds/FatFs/documents/doc/sfileinfo.html diff --git a/example/linux/FatFs/documents/doc/size.html b/extensions/fs_cmds/FatFs/documents/doc/size.html similarity index 100% rename from example/linux/FatFs/documents/doc/size.html rename to extensions/fs_cmds/FatFs/documents/doc/size.html diff --git a/example/linux/FatFs/documents/doc/stat.html b/extensions/fs_cmds/FatFs/documents/doc/stat.html similarity index 100% rename from example/linux/FatFs/documents/doc/stat.html rename to extensions/fs_cmds/FatFs/documents/doc/stat.html diff --git a/example/linux/FatFs/documents/doc/sync.html b/extensions/fs_cmds/FatFs/documents/doc/sync.html similarity index 100% rename from example/linux/FatFs/documents/doc/sync.html rename to extensions/fs_cmds/FatFs/documents/doc/sync.html diff --git a/example/linux/FatFs/documents/doc/tell.html b/extensions/fs_cmds/FatFs/documents/doc/tell.html similarity index 100% rename from example/linux/FatFs/documents/doc/tell.html rename to extensions/fs_cmds/FatFs/documents/doc/tell.html diff --git a/example/linux/FatFs/documents/doc/truncate.html b/extensions/fs_cmds/FatFs/documents/doc/truncate.html similarity index 100% rename from example/linux/FatFs/documents/doc/truncate.html rename to extensions/fs_cmds/FatFs/documents/doc/truncate.html diff --git a/example/linux/FatFs/documents/doc/unlink.html b/extensions/fs_cmds/FatFs/documents/doc/unlink.html similarity index 100% rename from example/linux/FatFs/documents/doc/unlink.html rename to extensions/fs_cmds/FatFs/documents/doc/unlink.html diff --git a/example/linux/FatFs/documents/doc/utime.html b/extensions/fs_cmds/FatFs/documents/doc/utime.html similarity index 100% rename from example/linux/FatFs/documents/doc/utime.html rename to extensions/fs_cmds/FatFs/documents/doc/utime.html diff --git a/example/linux/FatFs/documents/doc/write.html b/extensions/fs_cmds/FatFs/documents/doc/write.html similarity index 100% rename from example/linux/FatFs/documents/doc/write.html rename to extensions/fs_cmds/FatFs/documents/doc/write.html diff --git a/example/linux/FatFs/documents/res/app1.c b/extensions/fs_cmds/FatFs/documents/res/app1.c similarity index 100% rename from example/linux/FatFs/documents/res/app1.c rename to extensions/fs_cmds/FatFs/documents/res/app1.c diff --git a/example/linux/FatFs/documents/res/app2.c b/extensions/fs_cmds/FatFs/documents/res/app2.c similarity index 100% rename from example/linux/FatFs/documents/res/app2.c rename to extensions/fs_cmds/FatFs/documents/res/app2.c diff --git a/example/linux/FatFs/documents/res/app3.c b/extensions/fs_cmds/FatFs/documents/res/app3.c similarity index 100% rename from example/linux/FatFs/documents/res/app3.c rename to extensions/fs_cmds/FatFs/documents/res/app3.c diff --git a/example/linux/FatFs/documents/res/app4.c b/extensions/fs_cmds/FatFs/documents/res/app4.c similarity index 100% rename from example/linux/FatFs/documents/res/app4.c rename to extensions/fs_cmds/FatFs/documents/res/app4.c diff --git a/example/linux/FatFs/documents/res/app5.c b/extensions/fs_cmds/FatFs/documents/res/app5.c similarity index 100% rename from example/linux/FatFs/documents/res/app5.c rename to extensions/fs_cmds/FatFs/documents/res/app5.c diff --git a/example/linux/FatFs/documents/res/app6.c b/extensions/fs_cmds/FatFs/documents/res/app6.c similarity index 100% rename from example/linux/FatFs/documents/res/app6.c rename to extensions/fs_cmds/FatFs/documents/res/app6.c diff --git a/example/linux/FatFs/documents/res/f1.png b/extensions/fs_cmds/FatFs/documents/res/f1.png similarity index 100% rename from example/linux/FatFs/documents/res/f1.png rename to extensions/fs_cmds/FatFs/documents/res/f1.png diff --git a/example/linux/FatFs/documents/res/f2.png b/extensions/fs_cmds/FatFs/documents/res/f2.png similarity index 100% rename from example/linux/FatFs/documents/res/f2.png rename to extensions/fs_cmds/FatFs/documents/res/f2.png diff --git a/example/linux/FatFs/documents/res/f3.png b/extensions/fs_cmds/FatFs/documents/res/f3.png similarity index 100% rename from example/linux/FatFs/documents/res/f3.png rename to extensions/fs_cmds/FatFs/documents/res/f3.png diff --git a/example/linux/FatFs/documents/res/f4.png b/extensions/fs_cmds/FatFs/documents/res/f4.png similarity index 100% rename from example/linux/FatFs/documents/res/f4.png rename to extensions/fs_cmds/FatFs/documents/res/f4.png diff --git a/example/linux/FatFs/documents/res/f5.png b/extensions/fs_cmds/FatFs/documents/res/f5.png similarity index 100% rename from example/linux/FatFs/documents/res/f5.png rename to extensions/fs_cmds/FatFs/documents/res/f5.png diff --git a/example/linux/FatFs/documents/res/f6.png b/extensions/fs_cmds/FatFs/documents/res/f6.png similarity index 100% rename from example/linux/FatFs/documents/res/f6.png rename to extensions/fs_cmds/FatFs/documents/res/f6.png diff --git a/example/linux/FatFs/documents/res/f7.png b/extensions/fs_cmds/FatFs/documents/res/f7.png similarity index 100% rename from example/linux/FatFs/documents/res/f7.png rename to extensions/fs_cmds/FatFs/documents/res/f7.png diff --git a/example/linux/FatFs/documents/res/funcs.png b/extensions/fs_cmds/FatFs/documents/res/funcs.png similarity index 100% rename from example/linux/FatFs/documents/res/funcs.png rename to extensions/fs_cmds/FatFs/documents/res/funcs.png diff --git a/example/linux/FatFs/documents/res/layers.png b/extensions/fs_cmds/FatFs/documents/res/layers.png similarity index 100% rename from example/linux/FatFs/documents/res/layers.png rename to extensions/fs_cmds/FatFs/documents/res/layers.png diff --git a/example/linux/FatFs/documents/res/layers1.png b/extensions/fs_cmds/FatFs/documents/res/layers1.png similarity index 100% rename from example/linux/FatFs/documents/res/layers1.png rename to extensions/fs_cmds/FatFs/documents/res/layers1.png diff --git a/example/linux/FatFs/documents/res/layers2.png b/extensions/fs_cmds/FatFs/documents/res/layers2.png similarity index 100% rename from example/linux/FatFs/documents/res/layers2.png rename to extensions/fs_cmds/FatFs/documents/res/layers2.png diff --git a/example/linux/FatFs/documents/res/layers3.png b/extensions/fs_cmds/FatFs/documents/res/layers3.png similarity index 100% rename from example/linux/FatFs/documents/res/layers3.png rename to extensions/fs_cmds/FatFs/documents/res/layers3.png diff --git a/example/linux/FatFs/documents/res/mkfatimg.zip b/extensions/fs_cmds/FatFs/documents/res/mkfatimg.zip similarity index 100% rename from example/linux/FatFs/documents/res/mkfatimg.zip rename to extensions/fs_cmds/FatFs/documents/res/mkfatimg.zip diff --git a/example/linux/FatFs/documents/res/mkfs.xlsx b/extensions/fs_cmds/FatFs/documents/res/mkfs.xlsx similarity index 100% rename from example/linux/FatFs/documents/res/mkfs.xlsx rename to extensions/fs_cmds/FatFs/documents/res/mkfs.xlsx diff --git a/example/linux/FatFs/documents/res/modules.png b/extensions/fs_cmds/FatFs/documents/res/modules.png similarity index 100% rename from example/linux/FatFs/documents/res/modules.png rename to extensions/fs_cmds/FatFs/documents/res/modules.png diff --git a/example/linux/FatFs/documents/res/rwtest1.png b/extensions/fs_cmds/FatFs/documents/res/rwtest1.png similarity index 100% rename from example/linux/FatFs/documents/res/rwtest1.png rename to extensions/fs_cmds/FatFs/documents/res/rwtest1.png diff --git a/example/linux/FatFs/documents/res/rwtest2.png b/extensions/fs_cmds/FatFs/documents/res/rwtest2.png similarity index 100% rename from example/linux/FatFs/documents/res/rwtest2.png rename to extensions/fs_cmds/FatFs/documents/res/rwtest2.png diff --git a/example/linux/FatFs/documents/res/rwtest3.png b/extensions/fs_cmds/FatFs/documents/res/rwtest3.png similarity index 100% rename from example/linux/FatFs/documents/res/rwtest3.png rename to extensions/fs_cmds/FatFs/documents/res/rwtest3.png diff --git a/example/linux/FatFs/documents/updates.txt b/extensions/fs_cmds/FatFs/documents/updates.txt similarity index 100% rename from example/linux/FatFs/documents/updates.txt rename to extensions/fs_cmds/FatFs/documents/updates.txt diff --git a/example/linux/FatFs/source/00history.txt b/extensions/fs_cmds/FatFs/source/00history.txt similarity index 100% rename from example/linux/FatFs/source/00history.txt rename to extensions/fs_cmds/FatFs/source/00history.txt diff --git a/example/linux/FatFs/source/00readme.txt b/extensions/fs_cmds/FatFs/source/00readme.txt similarity index 100% rename from example/linux/FatFs/source/00readme.txt rename to extensions/fs_cmds/FatFs/source/00readme.txt diff --git a/extensions/fs_cmds/FatFs/source/diskio.c b/extensions/fs_cmds/FatFs/source/diskio.c new file mode 100644 index 0000000..b28a442 --- /dev/null +++ b/extensions/fs_cmds/FatFs/source/diskio.c @@ -0,0 +1,119 @@ +/*-----------------------------------------------------------------------*/ +/* Low level disk I/O module SKELETON for FatFs (C)ChaN, 2019 */ +/*-----------------------------------------------------------------------*/ +/* 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 "ff.h" /* Obtains integer types */ +#include "diskio.h" /* Declarations of disk functions */ +#include "fatfs_port.h" + + +/*-----------------------------------------------------------------------*/ +/* Get Drive Status */ +/*-----------------------------------------------------------------------*/ + +DSTATUS disk_status ( + BYTE pdrv /* Physical drive nmuber to identify the drive */ +) +{ + DiskIo_t * disk = NULL; + disk = f_disk_get(pdrv); + if(disk) + { + return disk->disk_status(); + } + return STA_NOINIT; +} + + + +/*-----------------------------------------------------------------------*/ +/* Inidialize a Drive */ +/*-----------------------------------------------------------------------*/ + +DSTATUS disk_initialize ( + BYTE pdrv /* Physical drive nmuber to identify the drive */ +) +{ + DiskIo_t * disk = NULL; + disk = f_disk_get(pdrv); + if(disk) + { + return disk->disk_initialize(); + } + return STA_NOINIT; +} + + + +/*-----------------------------------------------------------------------*/ +/* Read Sector(s) */ +/*-----------------------------------------------------------------------*/ + +DRESULT disk_read ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + BYTE *buff, /* Data buffer to store read data */ + LBA_t sector, /* Start sector in LBA */ + UINT count /* Number of sectors to read */ +) +{ + DiskIo_t * disk = NULL; + disk = f_disk_get(pdrv); + if(disk) + { + return disk->disk_read(buff, sector, count); + } + + return RES_PARERR; +} + + + +/*-----------------------------------------------------------------------*/ +/* Write Sector(s) */ +/*-----------------------------------------------------------------------*/ + +#if FF_FS_READONLY == 0 + +DRESULT disk_write ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + const BYTE *buff, /* Data to be written */ + LBA_t sector, /* Start sector in LBA */ + UINT count /* Number of sectors to write */ +) +{ + DiskIo_t * disk = NULL; + disk = f_disk_get(pdrv); + if(disk) + { + return disk->disk_write(buff, sector, count); + } + return RES_PARERR; +} + +#endif + + +/*-----------------------------------------------------------------------*/ +/* Miscellaneous Functions */ +/*-----------------------------------------------------------------------*/ + +DRESULT disk_ioctl ( + BYTE pdrv, /* Physical drive nmuber (0..) */ + BYTE cmd, /* Control code */ + void *buff /* Buffer to send/receive control data */ +) +{ + DiskIo_t * disk = NULL; + disk = f_disk_get(pdrv); + if(disk) + { + return disk->disk_ioctl(cmd, buff); + } + return RES_PARERR; +} + diff --git a/example/linux/FatFs/source/diskio.h b/extensions/fs_cmds/FatFs/source/diskio.h similarity index 100% rename from example/linux/FatFs/source/diskio.h rename to extensions/fs_cmds/FatFs/source/diskio.h diff --git a/example/linux/FatFs/source/ff.c b/extensions/fs_cmds/FatFs/source/ff.c similarity index 100% rename from example/linux/FatFs/source/ff.c rename to extensions/fs_cmds/FatFs/source/ff.c diff --git a/example/linux/FatFs/source/ff.h b/extensions/fs_cmds/FatFs/source/ff.h similarity index 100% rename from example/linux/FatFs/source/ff.h rename to extensions/fs_cmds/FatFs/source/ff.h diff --git a/example/linux/FatFs/source/ffconf.h b/extensions/fs_cmds/FatFs/source/ffconf.h similarity index 100% rename from example/linux/FatFs/source/ffconf.h rename to extensions/fs_cmds/FatFs/source/ffconf.h diff --git a/example/linux/FatFs/source/ffsystem.c b/extensions/fs_cmds/FatFs/source/ffsystem.c similarity index 100% rename from example/linux/FatFs/source/ffsystem.c rename to extensions/fs_cmds/FatFs/source/ffsystem.c diff --git a/example/linux/FatFs/source/ffunicode.c b/extensions/fs_cmds/FatFs/source/ffunicode.c similarity index 100% rename from example/linux/FatFs/source/ffunicode.c rename to extensions/fs_cmds/FatFs/source/ffunicode.c diff --git a/extensions/fs_cmds/fatfs_port.c b/extensions/fs_cmds/fatfs_port.c new file mode 100644 index 0000000..39e8e83 --- /dev/null +++ b/extensions/fs_cmds/fatfs_port.c @@ -0,0 +1,50 @@ +/* + * @Author: your name + * @Date: 2021-10-09 13:55:09 + * @LastEditTime: 2021-10-09 17:04:56 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /xcmd/example/linux/fatfs_port.c + */ +#include "fatfs_port.h" +#include + +static DiskIo_t * g_Disks[FF_VOLUMES] = {0}; + +int f_disk_regist(DiskIo_t * disk, int id) +{ + if(!disk) + { + return -1; + } + + if(id<0) + { + for(int i=0; i + +typedef struct __DiskIo +{ + char * disk_name; + DSTATUS (*disk_status)(void); + DSTATUS (*disk_initialize)(void); + DRESULT (*disk_read)(BYTE *buff, LBA_t sector, UINT count); + DRESULT (*disk_write)(const BYTE *buff, LBA_t sector, UINT count); + DRESULT (*disk_ioctl) (BYTE cmd, void *buff); +}DiskIo_t; + +int f_disk_regist(DiskIo_t * disk, int id); +DiskIo_t * f_disk_get(int id); + +#endif \ No newline at end of file