Estoy programando un cargador de arranque CDC. Lo que quiero hacer es ejecutar el programa, desde allí escribir una clave del gestor de arranque en el ram en una dirección específica y el watchdog reiniciar la MCU. El cargador de arranque lee exactamente la misma dirección y comprueba si tiene la clave del cargador de arranque. Si es la clave del gestor de arranque, ejecutará el protocolo del gestor de arranque, de lo contrario, volverá a iniciar el boceto.
Ahora la pregunta es: ¿Qué dirección usar? He escuchado que algunas direcciones del puntero del ram están reservadas para algunos registros periféricos. También he oído hablar de la gestión de pila en ram. Entonces, ¿cuál sería el mejor lugar para poner una clave de arranque tan mágica?
Como ejemplo en un Arduino Leonardo (32u4) con un ram de 2,5kb, lo guardan en la dirección de 2kb: enlace
¿Alguna sugerencia para un 16u2 y 32u2 con 500/1000 byte ram? ¿O tal vez otra forma de pasar el gestor de arranque esta información? ¿Alguien me puede explicar por qué usaron 0x0800 para un 32u4 o fue esto quizás un lugar 'aleatorio'? No quiero entrar en conflicto con ningún programa lo menos posible y no quiero interrumpir los programas con este tipo de escritura de ram.
Editar: Es importante encontrar una dirección RAM normalmente no utilizada, ya que puede revertir el reinicio de la vigilancia del gestor de arranque. Mira esto: enlace