es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

avr-gcc: Cómo utilizar __attribute__((address)) con EEMEM?

¿Son estos atributos incompatibles? El atributo de dirección parece ser ignorado, no emite ninguna advertencia (-Wall).

(Para referencia, EEMEM está definido en eeprom.h como: #define EEMEM attribute((section(“.eeprom”))).)

Usando una declaración como:

uint8_t storedFlags EEMEM attribute((address (100)));

(y de manera similar para los demás), los resultados de las variables se colocan en el orden que prefiera el enlazador, ignorando mi atributo. El orden de los atributos no hace ninguna diferencia.

Estoy consciente del método preferido (crear secciones y pasar sus ubicaciones al enlazador). Solo estaba buscando moverlos por el momento, ya que estoy en desarrollo activo y agregando y eliminando asignaciones en EEPROM; preferiría que las cosas no se movieran en cada otra compilación para no tener que reprogramar EEPROM desde valores predeterminados cada vez. Lo peor de todo, estoy seguro de que ya he hecho esto antes y ha funcionado. ¿Diferencias de versión? ¿Asignaciones coincidentes? (Tengo GCC 3.4 y 8.1, no estoy seguro de qué versión usó ese proyecto; estoy usando 8.1 para este).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que el atributo address no está funcionando y está siendo ignorado, sin emitir advertencias. Por lo tanto, se puede inferir que este atributo es actualmente incompatible y no funciona correctamente.

Comments are closed.