disable file write function and save 4kb progmem
This commit is contained in:
parent
4a0740dd02
commit
f1f836bdc7
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
#include "fat.h"
|
#include "fat.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "hardware.h"
|
#include "mmc.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
struct Fat fat; // wichtige daten/variablen der fat
|
struct Fat fat; // wichtige daten/variablen der fat
|
||||||
struct File file; // wichtige dateibezogene daten/variablen
|
struct File file; // wichtige dateibezogene daten/variablen
|
||||||
|
|||||||
@ -6,8 +6,8 @@
|
|||||||
// **************************************************************************************************************************
|
// **************************************************************************************************************************
|
||||||
// WICHTIGE SCHLATER: -> hier kann die code größe angepasst werden, zu lasten der funktionalität !
|
// WICHTIGE SCHLATER: -> hier kann die code größe angepasst werden, zu lasten der funktionalität !
|
||||||
#define SMALL_FILE_SYSTEM 0 // wenn 1 dann ist kleines file system, wenn 0 dann komplette file unterstützung !
|
#define SMALL_FILE_SYSTEM 0 // wenn 1 dann ist kleines file system, wenn 0 dann komplette file unterstützung !
|
||||||
#define WRITE 1 // wenn 1 dann ist write an, wenn 0 dann read only !
|
#define WRITE 0 // wenn 1 dann ist write an, wenn 0 dann read only !
|
||||||
#define OVER_WRITE 1 // wenn 1 dann kann ffwrite dateien überschreiben (nicht performant), wenn 0 dann nur normales schreiben !
|
#define OVER_WRITE 0 // wenn 1 dann kann ffwrite dateien überschreiben (nicht performant), wenn 0 dann nur normales schreiben !
|
||||||
#define MAX_CLUSTERS_IN_ROW 256 // gibt an wie viele cluster am stück ohne fat lookup geschrieben bzw gelesen werden können, wenn die fat nicht fragmentiert ist !
|
#define MAX_CLUSTERS_IN_ROW 256 // gibt an wie viele cluster am stück ohne fat lookup geschrieben bzw gelesen werden können, wenn die fat nicht fragmentiert ist !
|
||||||
|
|
||||||
// 1. fat_getFreeRowOfCluster -> fat_getFreeRowOfDir -> fat_makeRowDataEntry -> fat_makeFileEntry -> fat_writeSector "eintrag gemacht !!"
|
// 1. fat_getFreeRowOfCluster -> fat_getFreeRowOfDir -> fat_makeRowDataEntry -> fat_makeFileEntry -> fat_writeSector "eintrag gemacht !!"
|
||||||
|
|||||||
@ -2,11 +2,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "hardware.h"
|
#include "mmc.h"
|
||||||
#include "fat.h"
|
#include "fat.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************************************************************
|
//*******************************************************************************************************************************
|
||||||
// 2 möglichkeiten beim öffnen, datei existiert(return 1) oder muss angelegt werden(return 2)
|
// 2 möglichkeiten beim öffnen, datei existiert(return 1) oder muss angelegt werden(return 2)
|
||||||
@ -27,7 +26,6 @@ unsigned char ffopen(char name[]){
|
|||||||
file.lastCluster=fat_secToClust(fat.endSectors); // letzter bekannter cluster der datei
|
file.lastCluster=fat_secToClust(fat.endSectors); // letzter bekannter cluster der datei
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (WRITE==1) // anlegen ist schreiben !
|
#if (WRITE==1) // anlegen ist schreiben !
|
||||||
else{ /** Datei existiert nicht, also anlegen ! (nur wenn schreiben option an ist)**/
|
else{ /** Datei existiert nicht, also anlegen ! (nur wenn schreiben option an ist)**/
|
||||||
fat_getFreeClustersInRow(2); // leere cluster suchen, ab cluster 2.
|
fat_getFreeClustersInRow(2); // leere cluster suchen, ab cluster 2.
|
||||||
@ -43,7 +41,6 @@ unsigned char ffopen(char name[]){
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************************************************************
|
//*******************************************************************************************************************************
|
||||||
// schließt die datei operation ab. eigentlich nur nötig wenn geschrieben wurde. es gibt 2 möglichkeiten :
|
// schließt die datei operation ab. eigentlich nur nötig wenn geschrieben wurde. es gibt 2 möglichkeiten :
|
||||||
// 1. die datei wird geschlossen und es wurde über die alte datei länge hinaus geschrieben.
|
// 1. die datei wird geschlossen und es wurde über die alte datei länge hinaus geschrieben.
|
||||||
@ -72,6 +69,8 @@ unsigned char ffclose(void){
|
|||||||
// füllt den aktuell beschriebenen sektor mit 0x00, da sonst die datei nicht richtig angezeigt wird.
|
// füllt den aktuell beschriebenen sektor mit 0x00, da sonst die datei nicht richtig angezeigt wird.
|
||||||
// darf nur während schreibe operationen aufgerufen werden !
|
// darf nur während schreibe operationen aufgerufen werden !
|
||||||
// *******************************************************************************************************************************
|
// *******************************************************************************************************************************
|
||||||
|
#if (WRITE==1)
|
||||||
|
|
||||||
void fileUpdate(void){
|
void fileUpdate(void){
|
||||||
|
|
||||||
unsigned int comp_cntOfBytes=file.cntOfBytes; // sicher nötig wegen schleife...
|
unsigned int comp_cntOfBytes=file.cntOfBytes; // sicher nötig wegen schleife...
|
||||||
@ -90,6 +89,8 @@ void fileUpdate(void){
|
|||||||
fat_writeSector(fat.currentSectorNr);
|
fat_writeSector(fat.currentSectorNr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// *******************************************************************************************************************************
|
// *******************************************************************************************************************************
|
||||||
// offset byte wird übergeben. es wird durch die sektoren der datei gespult (gerechnet), bis der sektor mit dem offset byte erreicht
|
// offset byte wird übergeben. es wird durch die sektoren der datei gespult (gerechnet), bis der sektor mit dem offset byte erreicht
|
||||||
@ -98,9 +99,12 @@ void fileUpdate(void){
|
|||||||
// *******************************************************************************************************************************
|
// *******************************************************************************************************************************
|
||||||
void ffseek(unsigned long int offset){
|
void ffseek(unsigned long int offset){
|
||||||
|
|
||||||
|
#if (WRITE==1)
|
||||||
|
|
||||||
#if (OVER_WRITE==1) // man muss den dateieintrag updaten, um die daten zu retten !!
|
#if (OVER_WRITE==1) // man muss den dateieintrag updaten, um die daten zu retten !!
|
||||||
if( file.seek > file.length ) fileUpdate(); // fat verketten und datei update auf der karte !
|
if( file.seek > file.length ) fileUpdate(); // fat verketten und datei update auf der karte !
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
fat_getFatChainClustersInRow(file.firstCluster); // suchen von anfang der cluster chain aus !
|
fat_getFatChainClustersInRow(file.firstCluster); // suchen von anfang der cluster chain aus !
|
||||||
unsigned long int sec=fat.startSectors; // sektor variable zum durchgehen durch die sektoren
|
unsigned long int sec=fat.startSectors; // sektor variable zum durchgehen durch die sektoren
|
||||||
@ -211,6 +215,8 @@ unsigned char ffcdLower(void){
|
|||||||
// der "." hat den 1. cluster des eigenen dirs. der ".." eintrag ist der 1. cluster des parent dirs.
|
// der "." hat den 1. cluster des eigenen dirs. der ".." eintrag ist der 1. cluster des parent dirs.
|
||||||
// ein dir wird immer mit 0x00 initialisiert ! also alle einträge der sektoren des clusters ( bis auf . und .. einträge)!
|
// ein dir wird immer mit 0x00 initialisiert ! also alle einträge der sektoren des clusters ( bis auf . und .. einträge)!
|
||||||
// *******************************************************************************************************************************
|
// *******************************************************************************************************************************
|
||||||
|
#if (WRITE==1)
|
||||||
|
|
||||||
void ffmkdir(char name[]){
|
void ffmkdir(char name[]){
|
||||||
|
|
||||||
unsigned char i;
|
unsigned char i;
|
||||||
@ -240,7 +246,7 @@ void ffmkdir(char name[]){
|
|||||||
fat_makeRowDataEntry(1,".. ",0x10,fat.dir,0); // macht ".." eintrag des dirs
|
fat_makeRowDataEntry(1,".. ",0x10,fat.dir,0); // macht ".." eintrag des dirs
|
||||||
fat_writeSector(fat_clustToSec(file.firstCluster)); // schreibt einträge auf karte !
|
fat_writeSector(fat_clustToSec(file.firstCluster)); // schreibt einträge auf karte !
|
||||||
}
|
}
|
||||||
|
#endif //WRITE
|
||||||
#endif // ffmkdir wegen atmega8
|
#endif // ffmkdir wegen atmega8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
#include "sram.h"
|
#include "sram.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "crc.h"
|
#include "crc.h"
|
||||||
|
#include "config.h"
|
||||||
#include "info.h"
|
#include "info.h"
|
||||||
|
|
||||||
#include "mmc.h"
|
#include "mmc.h"
|
||||||
@ -127,13 +128,18 @@ void test_sdcard(void){
|
|||||||
ffls();
|
ffls();
|
||||||
char datei[12]="test.txt"; // hier muss platz für 11 zeichen sein (8.3), da fat_str diesen string benutzt !!
|
char datei[12]="test.txt"; // hier muss platz für 11 zeichen sein (8.3), da fat_str diesen string benutzt !!
|
||||||
fat_str(datei);
|
fat_str(datei);
|
||||||
|
#if (WRITE==1)
|
||||||
ffrm( datei ); // löschen der datei/ordner falls vorhanden
|
ffrm( datei ); // löschen der datei/ordner falls vorhanden
|
||||||
|
#endif
|
||||||
printf("open %s\n",datei);
|
printf("open %s\n",datei);
|
||||||
ffopen( datei );
|
ffopen( datei );
|
||||||
|
#if (WRITE==1)
|
||||||
printf("write %s\n",datei);
|
printf("write %s\n",datei);
|
||||||
ffwrites((char*)"Hallo Datei :)");
|
ffwrites((char*)"Hallo Datei :)");
|
||||||
ffwrite(0x0D);
|
ffwrite(0x0D);
|
||||||
ffwrite(0x0A);
|
ffwrite(0x0A);
|
||||||
|
#endif
|
||||||
|
|
||||||
printf("close %s\n",datei);
|
printf("close %s\n",datei);
|
||||||
ffclose();
|
ffclose();
|
||||||
printf("open %s\n",datei);
|
printf("open %s\n",datei);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user