Я хочу иметь возможность запускать загрузчик непосредственно из кода без необходимости иметь высокий контакт и сбрасывать микроконтроллер для доступа к нему. Идея ниже заключается в том, что двоичный файл загрузчика хранится в массиве символов. При вызове Start_BootLoader() загрузчик копируется в SRAM и выполняется.
Однако код копируется в ОЗУ, но когда он пытается выполнить код в том месте, куда я его скопировал, он ничего не делает.
Микро. это Energy Micro EFM32380f1024. Приведенный ниже код, который я использую, основан на примечаниях по применению Energy Micro AN0042.
void Start_Bootloader(void)
{
/* Diable interrupts */
INT_Disable();
__set_MSP( ( 0x20000000 + sizeof( bootloader ) + 0x400 ) & 0xFFFFFFF0 );
/* Load the entire bootloader into SRAM. */
memcpy( (void*)0x20000000, bootloader, sizeof( bootloader ) );
/* Start executing the bootloader. */
BOOT_jump( *(uint32_t*)0x20000000, *(uint32_t*)0x20000004 );
}
BOOT_jump()
Очищает ли кэш инструкций? - person mfro   schedule 25.03.2014