extern "C" uint8_t external_psram_size;
#include <spiffs_t4.h>
#include <spiffs.h>
spiffs_t4 eRAM;
//Setup files IO
spiffs_file file1;
#define BYTES 32*1024
DMAMEM uint8_t ocram[BYTES] __attribute__ ((aligned(32)));
PROGMEM uint8_t prog[BYTES] __attribute__ ((aligned(32)));
uint8_t dst[BYTES] __attribute__ ((aligned(32)));
uint8_t src[BYTES] __attribute__ ((aligned(32)));
uint8_t *p = (uint8_t *)0x70800000;
#define DO_DEBUG 1
char buf[512] = "Hello World! What a wonderful World :)";
char fname[32] = "my_file1";
int szLen = strlen( buf );
elapsedMicros my_us;
uint8_t valERAM;
uint8_t *ptrERAM = (uint8_t *)0x70000000; // Set to ERAM
const uint32_t sizeofERAM = 0x7FFFFE / sizeof( valERAM ); // sizeof free RAM in } }
//random address to write from
void setup() {
while (!Serial);
Serial.println("\n" __FILE__ " " __DATE__ " " __TIME__);
Serial.printf("PSRAM: %d MB\n", external_psram_size);
Serial.println("\n Enter 'y' in 6 seconds to format FlashChip - other to skip");
uint32_t pauseS = millis();
char chIn = 9;
while ( pauseS + 6000 > millis() && 9 == chIn ) {
if ( Serial.available() ) {
do {
if ( chIn != 'y' )
chIn = Serial.read();
else
Serial.read();
}
while ( Serial.available() );
}
}
if ( chIn == 'y' ) {
eRAM.begin();
eRAM.eraseFlashChip();
}
Serial.println();
Serial.println("Mount SPIFFS:");
eRAM.begin();
eRAM.fs_mount();
Serial.println("Write file:");
Serial.println(buf);
eRAM.f_writeFile(fname, buf, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR);
Serial.println();
Serial.println("Directory contents:");
eRAM.fs_listDir();
memset(buf, 0, sizeof(buf)); //emtpy buffer
Serial.println("Read file:");
eRAM.f_readFile(fname, buf, sizeof(buf)/sizeof(char), SPIFFS_RDONLY);
Serial.println(buf);
Serial.println();
delay(100);
Serial.println();
Serial.println("Mount SPIFFS:");
eRAM.fs_mount();
Serial.println("Directory contents:");
eRAM.fs_listDir();
[B][COLOR="#FF0000"] eRAM.fs_unmount();[/COLOR][/B]
arm_dcache_delete(p, BYTES);
uint32_t us = micros();
memcpy(dst, p, BYTES);
us = micros() - us;
Serial.printf("%d bytes from 0x70800000 flash %d us\n", BYTES, us);
us = micros();
memcpy(dst, p, BYTES);
us = micros() - us;
Serial.printf("%d bytes from 0x70800000 flash %d us\n", BYTES, us);
}
void loop() {
}