ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1322851 Топик полностью
SciFi (22.06.2023 09:15, просмотров: 204) ответил yни на Кто как переходит из загрузчика в приложение (Cortex-M)? Хочу более менее универсальный вариант, чтобы и стек настраивался, и чтобы для разных компиляторов, и чтобы с включением/выключением прерываний была определённость. Что нашёл кто как делает:
вот так: 
#define MAGIC    0x28469173
#define FW_START 0x08010000

int volatile reboot_magic;

void
Reset_Handler(void)
{
    if ((RCC->CSR & RCC_CSR_SFTRSTF) != 0 && reboot_magic == MAGIC)
    {
        RCC->CSR |= RCC_CSR_RMVF; // clear reset source flag
        reboot_magic = 0;
        static const uint16_t jump2fw[] = {
            0xc806, // ldmia r0!, {r1, r2}
            0x468d, // mov sp, r1
            0x4710  // bx r2
        };
        // jump to main application
        ((void (*)(int))(1 + (int)jump2fw))(FW_START);
    }
    // continue executing bootloader
    ...
}

void
start_app(void)
{
    reboot_magic = MAGIC;
    NVIC_SystemReset();
}
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้