Olá malta, hoje foi o dia de partir a cabeça com este erro!!!
Update error: ERROR[8]: Flash config wrong real: 4194304 IDE: 16777216
Tinha terminado de flashar um Wemos D1 com o Arduino Ide, no entanto se olharmos para a lista de placas:
Vemos que existem 4 modelos e por incrível que parece podemos flashar o nosso Wemos D1 com qualquer uma dela que tudo parece ficar bem.....
Bem a verdade é que parece funcionar, o problema é que o endereçamento de memória bem como o tamanho real da mesma pode ficar completamente ERRADO...
Tudo isto pode levar a uma instabilidade do Micro Controlador, mas o pior é quando temos o sistema em funcionamento e queremos fazer updates via Web.
Para isso exportamos o nosso binário a partir do IDE.
Depois tentamos enviar o mesmo pelo browser, e quando o fazemos aparece o grande ERRO
Update error: ERROR[8]: Flash config wrong real: 4194304 IDE: 16777216
Bem... podemos ter tido sorte e ter acertado nas configurações e tudo correr bem.
Agora para que tenhamos a certeza que a nossa configuração é a correcta podemos antes de preparar o nosso sistema saber qual o tamanho da memória real é que o nosso MCU tem e até mesmo outras informações uteis como o Flash Mode, estas são uteis para sistemas já em produção e nós já não sabemos comque configurações fizemos o primeiro UPLOAD.
Por isso resumindo este pedaço de código é bom tanto numa fase inicial como em sistemas em produção.
Podemos ter sempre esta informação disponível via MQTT ou Webserver porque assim da próxima vez que fizermos Updates sabemos com que configurações este deve ser compilado, por outro lado também serve de validação ao tamanho que estamos a definir para a memória no nosso primeiro upload.
Espero que isto ajude e que desenvolvam sistemas ainda mais robustos :), sem reboots fantasmas heheh.
Deixo o código abaixo...
Grande Abraço
void setup(void) {
Serial.begin(115200);
}
void loop() {
uint32_t realSize = ESP.getFlashChipRealSize();
uint32_t ideSize = ESP.getFlashChipSize();
FlashMode_t ideMode = ESP.getFlashChipMode();
Serial.printf("Flash real id: %08X\n", ESP.getFlashChipId());
Serial.printf("Flash real size: %u bytes\n\n", realSize);
Serial.printf("Flash ide size: %u bytes\n", ideSize);
Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed());
Serial.printf("Flash ide mode: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
if (ideSize != realSize) {
Serial.println("Flash Chip configuration wrong!\n");
} else {
Serial.println("Flash Chip configuration ok.\n");
}
delay(5000);
}
Comentários
Enviar um comentário