Estoy desarrollando para el STM32F0 usando Keil uVision.
Tengo un cargador de arranque personalizado cargado ejecutándose en la dirección 0x08000000. Necesito el gestor de arranque para saltar a mi aplicación principal, que destello en la dirección 0x08003000. El objetivo final es permitir actualizaciones remotas de la aplicación principal. El código del gestor de arranque que salta a la aplicación es el siguiente:
__disable_irq();
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS+4);
Jump_To_Application = (pFunction) JumpAddress;
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
Jump_To_Application();
Tengo una falla grave en la línea Jump_To_Application (), con el mensaje "No se puede acceder a la memoria" dado por Keil.
Dentro de Keil, configuré la dirección de inicio de IROM1 como 0x08003000 en la configuración del proyecto de mi aplicación principal. Siento que el problema radica en algunas configuraciones adicionales dentro de Keil. Por ejemplo, ¿debería establecerse IROM2 en algo? ¿Debería ajustarse algo de los valores predeterminados en la configuración de Keil dentro del proyecto del gestor de arranque?
¿Alguien tiene alguna recomendación?