Estoy trabajando con Invensense IMU3000 y un microcontrolador PIC18. Estoy migrando una biblioteca, escrita en MSVS2005, a MPLAB, haciendo las modificaciones adecuadas para ejecutarla... el código en sí solo proporciona advertencias, pero cuando se trata de vincular, obtengo esto:
Error: la sección '.idata_dmpDefault.o' no se ajusta a la sección. Sección '.idata_dmpDefault.o' longitud=0x000004b0
¿Qué significa?
Todas las variables en el programa ocupan espacio y está usando demasiado para el chip para el que está tratando de compilarlo. El programa que está tratando de compilar necesita 0x4B0 bytes (1200 en decimal), y tiene algo menos que esto.
Calcule cuánto espacio de RAM tiene su PIC18. Asegúrese de que coincida con lo que está compilando. Es posible que haya un archivo de definición del enlazador en algún lugar que defina los tamaños de las distintas secciones. La sección IDATA es su problema actual.
Alguien más familiarizado con MPLAB puede completar los detalles sobre cuáles son sus restricciones reales y cómo configurar correctamente el compilador para su chip.
La lectura de las Preguntas frecuentes 8 y 10 de la Guía de inicio rápido del compilador C18 de Microchip debería ayudarlo a resolver los problemas. No estoy seguro de si está utilizando C18 o no para compilar su código, pero incluso si no lo está, es probable que deba modificar su secuencia de comandos del enlazador para aumentar el tamaño del banco de RAM.
eres cualquiera
(A) quedarse sin memoria flash para almacenar los valores iniciales de las variables, o
(B) sus variables son más grandes que el segmento.
El vinculador intenta vincular el archivo dmpDefault pero desborda los segmentos de memoria definidos por el vinculador.
O
Con MCC18, cada archivo crea 1 sección de datos con un máximo de 256 bytes (1 banco). .idata_dmpDefault es mucho más grande que eso. Puede crear secciones de datos con nombre combinando bancos en el enlazador y colocando #pragmas alrededor de las variables para ubicar esas variables en esa sección.
¡Gracias a todos por su amable ayuda!
Tal vez una parte de la solución pueda ser de ayuda general: descubrí que tenía matrices constantes grandes (no había escrito el código yo mismo...) y reduje drásticamente la necesidad de RAM poniéndolas en Flash en lugar de RAM usando el palabra clave "rom" en su declaración.
Kortuk
mjh2007
nick t
Stef
Stef
nick t
usuario2974