Necesito programar un código de cargador de arranque escrito en C en la sección de arranque de AVR ATmega32A usando un programador en serie. No puedo escribir el código directamente en la sección de inicio de Atmel Studio. Entonces, estoy buscando una manera aquí. Además, ¿hay alguna buena manera de combinar el código de la aplicación y el código de arranque y escribirlos en las secciones respectivas usando el programa C?
La hoja de datos de ATmega32A en la página 245 muestra la siguiente tabla de dónde comienza el área del cargador de arranque según cómo BOOTSZ
se configuren los fusibles:
Entonces, suponiendo que tiene BOOTSZ0
y BOOTSZ1
ambos están autorizados para la sección más grande del gestor de arranque, comenzará en 0x3800
. En la documentación de las secciones de memoria , puede ver que el código entra en el .text
segmento del enlazador y la dirección se puede cambiar yendo a Propiedades del proyecto | Cadena de herramientas | Enlazador AVR/GNU | Configuración de memoria y agregando .text=0x3800
en la sección del segmento FLASH:
Normalmente, si quiero que el cargador de arranque se combine con el firmware de la aplicación para la programación de producción, uso el cargador de arranque para cargar el firmware principal y luego leo el resultado de FLASH. Debería ser técnicamente posible combinarlos utilizando segmentos de enlazadores personalizados, pero debe tener mucho cuidado con la ubicación de elementos como las funciones de biblioteca estándar, por lo que el método anterior probablemente sea más fácil y seguro.
PedroJ
gzix
gzix
gzix
gzix
gzix