Avançar para o conteúdo principal

Flash config wrong real: 4194304 IDE: 16777216 !!!!

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

Mensagens populares deste blogue

3 Formas de configurar o Wi-Fi no ESP8266

3 Formas de  configurar o Wi-Fi no ESP8266 O nosso famoso ESP8266 veio para ficar, cada vez mais este microcontrolador é utilizado para desenvolver dispositivos fantásticos, é verdade que o ESP pode ser utilizado como um simples MCU , mas é a sua capacidade de se ligar a uma rede Wi-Fi, faz dele a escolha perfeita no que toca dipositivos IoT . Este artigo tem foco em três diferentes soluções que permitem programar o ESP de forma a que este se consiga ligar a uma rede Wi-Fi. É sabido que da primeira vez que o ESP é energizado este tem de conhecer ou vir a conhecer o SSID e a Password configurada no Access Point ao qual o queremos conectar de forma a fazer para da rede e ter acesso à Internet se assim for necessário. Vamos então ver como implementar as três soluções, analisar cada uma delas e ponderar os prós e contras e cada uma delas. Passemos ao caso mais simples, ao qual denomino de “Hard Coded” , esta é a forma mais utilizada por quem começa a util...

Instalação do SQLPLUS da ORACLE em LINUX

Bom dia a todos Hoje vou explicar como podemos instalar o SQLPLUS da Oracle em sistemas Linux que utilizem gestão de pacotes RPM, entre eles CENTOS, FEDORA etc.. O SQLPLUS é uma excelente ferramenta de administração de SGDB da Oracle e apresenta-se sob o formato de linha de comandos o que permite aos Administradores de Base de Dados um maior poder sobre o SGDB. Antes de mais é necessário ter uma conta Oracle, esta pode ser feita atraves de um registo no site e é totalmente gratuito. Após termos conta devemos ir à secção de Download -> Databases -> Oracle Instant Client URL:   http://www.oracle.com/technetwork/indexes/downloads/index.html É apresentada uma lista sistemas operativos suportados e no nosso caso vamos escolher    Instant Client for Linux x86-64   para versões 64 Bits Ao escolhermos o Sistema Operativo a Oracle mostra-nos todas aplicações de Cliente para as diversas versões de Base de dados. A ultima versão é a 12 no entanto de...

CNC 2418 Autolevel PINS

Boas, se têm uma CNC 2418 então vão querer ter Autolevel :) Aqui ficam os pinos :) Thanks Nuno Miguel :)