add drive to access an area on emmc/sd as disk

This commit is contained in:
Christoph Baumann
2025-04-27 01:05:09 +02:00
parent 0be3fd4f64
commit 31c8ad0d88
5 changed files with 66 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
#include <libs/fatfs/diskio.h> /* FatFs lower layer API */
#include <fatfs_cfg.h>
#include "../../storage/sfd.h"
static u32 sd_rsvd_sectors = 0;
static u32 ramdisk_sectors = 0;
@@ -35,6 +36,7 @@ static bool ensure_partition(BYTE pdrv){
case DRIVE_RAM:
case DRIVE_BIS:
case DRIVE_EMU:
case DRIVE_SFD:
return true;
default:
return false;
@@ -96,6 +98,8 @@ DRESULT disk_read (
return sdmmc_storage_read(&emmc_storage, sector + (0x100000 / 512), count, buff) ? RES_OK : RES_ERROR;
case DRIVE_BOOT1:
return sdmmc_storage_read(&emmc_storage, sector, count, buff) ? RES_OK : RES_ERROR;
case DRIVE_SFD:
return sfd_read(sector, count ,buff) ? RES_OK : RES_ERROR;
}
return RES_ERROR;
@@ -130,6 +134,8 @@ DRESULT disk_write (
return sdmmc_storage_write(&emmc_storage, sector + (0x100000 / 512), count, (void*)buff) ? RES_OK : RES_ERROR;
case DRIVE_BOOT1:
return sdmmc_storage_write(&emmc_storage, sector, count, (void*)buff) ? RES_OK : RES_ERROR;
case DRIVE_SFD:
return sfd_write(sector, count, (void*)buff) ? RES_OK : RES_ERROR;
}
return RES_ERROR;

View File

@@ -179,13 +179,13 @@
/ Drive/Volume Configurations
/---------------------------------------------------------------------------*/
#define FF_VOLUMES 7
#define FF_VOLUMES 8
/* Number of volumes (logical drives) to be used. (1-10) */
#define FF_STR_VOLUME_ID 1
// Order is important. Any change to order, must also be reflected to diskio drive enum.
#define FF_VOLUME_STRS "sd","ram","emmc","bis","emu", "boot1", "boot1_1mb"
#define FF_VOLUME_STRS "sd","ram","emmc","bis","emu", "boot1", "boot1_1mb", "sfd"
/* FF_STR_VOLUME_ID switches support for volume ID in arbitrary strings.
/ When FF_STR_VOLUME_ID is set to 1 or 2, arbitrary strings can be used as drive
/ number in the path name. FF_VOLUME_STRS defines the volume ID strings for each
@@ -309,6 +309,7 @@ typedef enum {
DRIVE_EMU = 4,
DRIVE_BOOT1 = 5,
DRIVE_BOOT1_1MB = 6,
DRIVE_SFD = 7,
} DDRIVE;
/*--- End of configuration options ---*/