Yao Chang
Yao Chang

Reputation: 31

I could not read memory data from ESP8266 Flash memory

I write a Arduino program in WeMos D1 board and try to write and read the data to SPIFFS flash memory. I can write to flash but i can not read the data from Flash. Below is the write method program:

void writeToFlash(char ssid[], char pwd[]) {

  const uint32_t addrstart = 0x3FA000; //定義開始的flash記憶體位址
  const uint32_t addrend   = 0x3FB000; //定義結束的flash記憶體位址

  char ssidbuff[ sizeof(ssid) ];
  char pwdbuff[ sizeof(pwd) ];

  //ERASE 必須先抹除記憶體,addrstart是4169728除以2的12次方得出第1018個磁區位置,1019是EEPROM的磁區位置
  if ( !ESP.flashEraseSector( addrstart >> 12 ) ) {
    Serial.println( "\n\nErase error\n");
    return;
  } else {
    Serial.println( "\n\nErase OK\n----------------");
  }
  // WRITE
  uint32_t flash_address;
  int i = 0;
  int j = 1;
  //處理SSID
  flash_address = addrstart + i * 64;
  if ( !ESP.flashWrite( flash_address, (uint32_t*)ssid, sizeof(ssid) - 1 ) ) {
    Serial.printf( "%2d: [error] write addr: %p\n", i, flash_address );
  } else Serial.printf( "%2d: addr: %p write [%s] OK\n", i, flash_address, ssid );

  //將buff指向的記憶體設置為0
  memset( ssidbuff, '\0', sizeof( ssidbuff ) );
  if ( !ESP.flashRead( flash_address, (uint32_t*)ssidbuff, sizeof(ssid) - 1 ) ) {
    printf( "%2d: [error] read addr: %p\n", i, flash_address );
  } else Serial.printf( "%2d: addr: %p read [%s] OK\n", i, flash_address, ssidbuff );

  if ( memcmp( ssid, ssidbuff, sizeof( ssidbuff ) ) != 0 ) {
    printf( "%2d: addr: %p, In != Out\n", i, flash_address );
  } else Serial.printf( "%2d: addr: %p compare OK\n", i, flash_address );
  Serial.print("讀取記憶體的值: ");
  Serial.println(ssidbuff);

below is the Serial port message:

Erase OK
----------------
 0: addr: 0x3fa000 write [Raden-External] OK
 0: [error] read addr: 0x3fa000
 0: addr: 0x3fa000, In != Out
讀取記憶體的值: 
 1: addr: 0x3fa040 write [+23277176+] OK
 1: [error] read addr: 0x3fa040
 1: addr: 0x3fa040, In != Out
讀取記憶體的值: 

I have no idea why i can not read successfully? Could anyone can help?

Upvotes: 0

Views: 146

Answers (0)

Related Questions