Top.Mail.Ru
Уведомления
Очистить все

[Решено] Программный переход в System Bootloader STM32

Страница 2 / 2
Aveal
(@aveal)
Top level Admin

Для теста, что-то в этом роде должно работать:

void jumpToBootloader(void)
{
    // Due to bootloder banks check
    // Erase bank1 start address
    // Erase bank2 start address

    __disable_irq();

    HAL_RCC_DeInit();
    HAL_DeInit();

    SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;

    for (int i = 0; i < 8; i++) 
    {
        NVIC->ICER[i] = 0xFFFFFFFF;
        NVIC->ICPR[i] = 0xFFFFFFFF;
    }
    
    __HAL_RCC_SYSCFG_CLK_ENABLE();
    __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();
  
    SCB->VTOR = 0x1FF00000;    
    __enable_irq();
    
    __set_MSP(*(__IO uint32_t*)0x1FF00000);
    (*(__IO uint32_t*)0x1FF00004)();

    while(1);
}

ОтветитьЦитата
Размещено : 22.09.2025 19:04
(@xdriver)
Level 1

@aveal 

спасибо, как попробую отпишусь!


ОтветитьЦитата
Размещено : 22.09.2025 20:18
(@xdriver)
Level 1

ну вообщем нет!

происходит перезагрузка и исполняется прошивка из банка 1.

вот кстати что там писали

Thanks for your help. I have my answer !

The v4.0 bootloader (initial version) does not implement the dual bank mechanism but this feature is supported by v4.1.

Software can jump to bootloader but it will execute the dual boot mechanism. So the bootloader goes back to bank1 (or bank2 if a code is "valid").

Today it is not possible to bypass the dual bank mechanism to execute the bootloader with my configuration: The boot0 pin is reset and the protection level is 0 (see "Table 11. Boot pin and BFB2 bit configuration" in the reference manual).


ОтветитьЦитата
Размещено : 22.09.2025 20:41
(@xdriver)
Level 1

ладно, спасибо за помощь, я в принципе аппаратно этот вопрос решил, но хотелось красоты))

на F401/411 камне работает без проблем.


ОтветитьЦитата
Размещено : 22.09.2025 20:45
Aveal
(@aveal)
Top level Admin

Запись от: @xdriver

происходит перезагрузка и исполняется прошивка из банка 1.

Так там где я коммент написал надо очистить стартовые адреса из памяти, то есть она уже не сможет выполняться оттуда.


ОтветитьЦитата
Размещено : 22.09.2025 20:58
Страница 2 / 2
Поделиться: