Cómo cambiar el directorio de archivos y la tabla de asignación en la tarjeta SD fatfs
FatFS es un módulo de sistema de archivos FAT de uso general diseñado para pequeños sistemas integrados. FatFs es altamente configurable, y la configuración mínima ocupa solo 1K de espacio RAM, lo que lo hace muy adecuado para sistemas integrados. FatFs está escrito en ANSI C y está completamente separado de la capa de E/S del disco. Por lo tanto, es independiente de la arquitectura del hardware (no dependiente). Puede integrarse en microcontroladores de bajo coste como AVR, 8051, PIC, ARM, Z80, 68K, etc. sin ninguna modificación.
Características
Sistema de archivos FAT compatible con Windows
Plataforma independiente y fácil de transportar
Código y espacio de trabajo mínimos
Múltiples opciones de configuración:
Varios volúmenes (unidades físicas y particiones)
Múltiples páginas de códigos ANSI/OEM, incluido DBCS
ANSI/OEM o Unicode Compatibilidad con nombres de archivos largos
Compatibilidad con RTOS
Compatibilidad con tamaños de sectores múltiples
Solo lectura, API mínima, búfer de E/S, etc.
El código fuente de FatFs consta de sólo unos pocos archivos: diskio.c, ff.c, ff_util.c, tff.c y archivos de encabezado. diskio.c es el archivo de código para operaciones de disco (este archivo se implementará durante la migración), ff.c es el archivo de código para FatF generales y tff.c es el archivo de código para micro FatF. integer.h es la definición de tipo básico interno, ff.h es el archivo de encabezado general incluido con FatF y tff.h es el archivo de encabezado incluido con microFatF.
[cpp] Consulte la copia simple en CODE para ver el fragmento de código derivado del mío
#if _FATFS_TINY = 1
#include lt;fatfs/ src/ff.hgt;
#else
#include lt;fatfs/src/tff.hgt
#endif
#include lt; fatfs/src /ff_util.hgt;
La configuración mini-FatFs solo ocupa un mínimo de 1 KB de memoria, pero es un sistema FAT de solo lectura.
El archivo de configuración de FatFs es fatfs_config.h:
[cpp] Vea la copia simple en CODE para ver los fragmentos de código derivados de mi fragmento de código
/ /------------------------------------------------- ------ -----------------------
//Definición general (anteriormente en ff .h)
//-------------------------------- ---- -- ----------------------------------
#define _FATFS_TINY 0
//* Cuando _FATFS_TINY se establece en 1, fatfs se compilará en modo Tiny
/ De lo contrario, se compilará en modo normal
/ Características de Tiny FatFs: Consumo de memoria Extremadamente bajo, adecuado para sistemas con poca memoria
/. (1 KB de RAM). Solo admite una unidad, no admite formato de disco,
/ solo admite la función de lectura, no admite la función de escritura*/
/---------- ------------------------------------------------- ------ ------------------
//Definición de FATFS normal (anteriormente en ff.h)
/---- ---------------------------- ---------------- ------------ --------------------------
#if _FATFS_TINY == 0
#define _MCU_ENDIAN 2
p>
/* _MCU_ENDIAN define el método de acceso a la estructura FAT.
/ 1: Habilitar acceso a palabras.
/ 2: Desactiva el acceso a palabras y utiliza el acceso byte a byte.
// _MCU_ ENDIAN debe establecerse en 2 cuando el orden de bytes de la estructura de la MCU es big-endian y/o el acceso a direcciones desalineadas causaría un comportamiento incorrecto.
// Si este no es el caso, también se puede establecer en 1 para mejorar la eficiencia del código. */
#define _FS_READONLY 0
/* Establezca _FS_READONLY en 1
/* Establezca _FS_READONLY en 1 para definir una configuración de solo lectura. Esto eliminará
/ las funciones de escritura, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename,
/ f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename,
/ f_truncate y f_getfree inútil.
#define _FS_MINIMIZE 0
/* La opción _FS_MINIMIZE define el nivel de minimización que elimina ciertas funciones.
/ 0: Todas las funciones.
/ 1: Se eliminaron f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_truncate y f_rename.
/ 2
/ 2: Se eliminaron f_opendir y f_readdir además del nivel 1.
/ 3: Se eliminó f_lseek además de la capa 2. */
#define _USE_STRFUNC 0
/* Para habilitar funciones de cadena, establezca _USE_STRFUNC en 1 o 2. */
#define _USE_FSINFO 1
/* Para habilitar la compatibilidad con FSInfo en volúmenes FAT32, establezca _USE_FSINFO en 1. */
/* Para habilitar la compatibilidad con FSInfo en volúmenes FAT32, establezca _USE_FSINFO en 2. FSINFO se establece en 1. */
#define _USE_SJIS 1
/* Cuando _USE_SJIS se establece en 1, se habilita la transparencia del código Shift-JIS; de lo contrario,
// Solo EE. UU. - Se aceptan códigos ASCII (7 bits) como nombres de archivos/directorios.
#define _USE_NTFLAG 1
/* Cuando _USE_NTFLAG se establece en 1, se conservarán las mayúsculas y minúsculas del nombre de archivo.
/* Cuando _USE_NTFLAG se establece en 1, se conservarán los nombres de los archivos.
/* Tenga en cuenta que el acceso a archivos siempre no distingue entre mayúsculas y minúsculas. */
#define _USE_MKFS 1
/* Cuando _USE_MKFS se establece en 1 y _FS_READONLY se establece en 0, la función f_mkfs está habilitada.
#define _DRIVES 2
/* Número de unidades lógicas a utilizar. Esto afectará el tamaño de las tablas internas. */
#define _MULTI_PARTITION 0
/* Cuando _MULTI_PARTITION se establece en 0, cada unidad lógica está vinculada al mismo número de unidad física y solo a la primera partición primaria. Cuando se establece en 1, cada unidad lógica puede montar las particiones enumeradas en Unidades [].
//----------------------------------------- -------------------------------
/ Definición de FATFS TINY ordinario (anteriormente en tff.h)
//--------------------------------- - --------------------------------------
#else
# define _MCU_ENDIAN 2
/* _MCU_ENDIAN define el método de acceso utilizado para la estructura FAT.
/ 1: Habilitar acceso a palabras.
/// 2: Desactiva el acceso a palabras y utiliza el acceso byte a byte.
// _MCU_ENDIAN debe establecerse en 2 cuando el orden de bytes arquitectónicos de la MCU es big-endian y/o el acceso desalineado a las direcciones causaría un comportamiento incorrecto.
// Si este no es el caso, también puedes configurarlo en 1 para un buen código
#define _FS_READONLY 1
/* Cambiar _ FS_READONLY Establecer a 1 para definir una configuración de sólo lectura. Esto eliminará las funciones
/ write, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename,
/ f_truncate, f_getfree y el código de escritura interno.
#define _FS _MINIMIZE 0
/* La opción _FS_MINIMIZE define el nivel de minimización que elimina ciertas funciones.
/ 0: Función completa.
/ 1: Se eliminaron f_stat, f_getfree, f_unlink, f_stat, f_truncate, f_getfree y el código escrito internamente getfree, f_unlink, f_mkdir, f_chmod, f_truncate y f_rename.
/ 2: Se eliminaron f_opendir y f_readdir además del nivel 1.
/ 3: Se eliminaron f_libdir y f_readdir excepto para la capa 1.
/ 3: Se eliminó f_libdir excepto para la capa 2.
/ 3: Se eliminó f_lseek además de la capa 2.
#define _USE_STRFUNC 0
/* Para habilitar funciones de cadena, establezca _USE_STRFUNC en 1 o 2.
/* Para habilitar funciones de cadena, establezca _USE_STRFUNC en 1 o 2.
#define _USE_FSINFO 1
/* Para habilitar la compatibilidad con FSInfo en volúmenes FAT32, establezca _USE_FSINFO en 1. */
#define _USE_SJIS 1
/* Cuando _USE_SJIS se establece en 1, establezca _USE_SJIS en 1.
/* Cuando _USE_SJIS se establece en 1, establezca _USE_SJIS en 2. Cuando SJIS se establece en 1, se habilita la transparencia del código Shift-JIS; de lo contrario,
// Los nombres de archivos/directorios solo pueden usar códigos US-ASCII (7 bits). */
#define _USE_NTFLAG 1
/* Cuando _USE_NTFLAG se establece en 1, se conservarán las mayúsculas y minúsculas del nombre de archivo.
/* Tenga en cuenta que el acceso a archivos siempre no distingue entre mayúsculas y minúsculas. Tenga en cuenta que el acceso a los archivos siempre no distingue entre mayúsculas y minúsculas.
#define _USE_FORWARD 0
/* Para habilitar la función f_forward, establezca _USE_FORWARD en 1. */
#define _ FAT32 1
/* Para habilitar la compatibilidad con FAT32 además de FAT12/16, establezca _FAT32 en 1.
*/
#endif
/------------------------------- --- -----------------------------------------------
//Otras definiciones
/------------------------------- --- --------------------- -----------------------
//*------------------------------------------- ------ -----------------------*/
/* Correspondencia entre el número de unidad y la unidad física*/ < / p>
/* Tenga en cuenta que Tiny-FatFs solo admite una única unidad y siempre */
/* accede a la unidad número 0. */ <
#define DRV_MMC 0
#define DRV_SDRAM 1
#define DRV_ATA 2
#define DRV_USB 3
#definir SECTOR_SIZE_SDRAM 512
#definir SECTOR_SIZE_SDRAM 512