Esp8266 - Ocupa mucha memoria con código de menos de 20 líneas.

¿Hola!

Estoy comenzando a relacionarme con el ESP8266 y me he encontrado con una gran sorpresa:

Cargué un programa de ejemplo, el que hace parpadear un led. Cuando se termina de compilar (en el Arduino IDE) dice que el programa ocupa el 21% del espacio de almacenamiento de programa, el programa ocupa 222129 bytes, lo cual me parece demasiado, si lo compilo para un avr (atmega 328p) solo acupa 948 bytes. Creo que esto me va a limitar bastante con el tamaño de programa que podré cargar.

¿Alguien sabe por qué los programas para el ESP8266 ocupan tanto espacio?

Gracias de antemano!
 
Última edición:
deberias revisar la libreria como esta construida

por que solo mandas llamar funciones que quien sabe como estan hechas
 
222129B me parece bien, no le veo el problema, debes considerar 2 cosas, la primera es que no estas programando el controlador y la segunda es que esa cosa incluye todo un stack para el manejo del wifi, con 1MB de memoria yo creo que te sobra, por otra parte, a bajo nivel en Arduino (sin el stack de arduino) seguro no ocupas ni 200B
 
Aún creo que el programa es excesivamente grande, aunque no sepa cómo están construidas los funciones que utilicé el programa es muy corto para esa cantidad de bytes:

Código:
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}


void loop() {
  digitalWrite(LED_BUILTIN, LOW);
                                    
                                    
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(2000);



He subido el siguiente programa:

Código:
void setup() {
  
}

void loop() {
}

y ese programa ocupa 221923 bytes y 31488 bytes de la RAM, el programa que le subí solo tiene el void loop y el void setup vacíos. Creo que esto confirma lo que dijo Nuyel sobre el stack.

Pero aún no entiendo, ¿el stack son las librerías con las que utilizamos el wifi?, y si es así, no las he incluido en el código, ¿o es que se incluyen por defecto?.
 
Última edición:
¿Hola!

Estoy comenzando a relacionarme con el ESP8266 y me he encontrado con una gran sorpresa:

Cargué un programa de ejemplo, el que hace parpadear un led. Cuando se termina de compilar (en el Arduino IDE) dice que el programa ocupa el 21% del espacio de almacenamiento de programa, el programa ocupa 222129 bytes, lo cual me parece demasiado, si lo compilo para un avr (atmega 328p) solo acupa 948 bytes. Creo que esto me va a limitar bastante con el tamaño de programa que podré cargar.

¿Alguien sabe por qué los programas para el ESP8266 ocupan tanto espacio?

Gracias de antemano!

hace la prueba de cargarle el mismo programa ( de parpadeo de un led) pero para que a la vez haga parpadear otro pin.
a ver cuanto se te incrementa la memoria.
 
Aqui te lo explican: [NO ME DEJAN PUBLICAR LINKS PORQUE SOY MUY NUEVO]
Lo que tienes que ver ahora es que según añadas código el tamaño del compilado se incrementará mas razonablemente.

Gracias por esa información, eso me ha aclarado mucho. En resumen, aunque sea un programa pequeño ve va a ocupar una parte significativa de la memoria, pero según vaya creciendo el programa, el tamaño del programa en la memoria crecerá de manera razonable.



hace la prueba de cargarle el mismo programa ( de parpadeo de un led) pero para que a la vez haga parpadear otro pin.
a ver cuanto se te incrementa la memoria.

Hola peperc, gracias por responder!

He cambiado LED_BUILTIN por el número cuatro, es decir, que ahora la GPIO 4 va a parpadear, y el programa ocupa el mismo tamaño, también cambié LED_BUINTIN por el número 3, y el resultado fue el mismo. Pero por qué me pediste que haga esta prueba, me da curiosidad, ¿puedes explicármelo? ;)
 
Última edición:
Atrás
Arriba