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

[Решено] Как программно перейти в системный бутлодер (System Bootloader)?

(@wiseman75)
Level 1

В продолжение темы - ссылка.


Цитата
Создатель темы Размещено : 21.10.2024 12:48
Метки темы
Aveal
(@aveal)
Top level Admin

Вот из одного из проектов выдернул, вариант точно рабочий (STM32F103RB):

#define SYSTEM_MEMORY_ADDRESS                                   0x1FFFF000

static void JumpToSystemBootloader()
{
  HAL_DeInit();
  __disable_irq();
  
  SysTick->CTRL = 0;
  SysTick->LOAD = 0;
  SysTick->VAL = 0;
    
  const uint32_t ptr = (*((uint32_t *)SYSTEM_MEMORY_ADDRESS));
  void (*JumpToSystemMemory)(void);
  
  JumpToSystemMemory = (void (*)(void)) (*((uint32_t *) (SYSTEM_MEMORY_ADDRESS + 4)));
  __set_MSP(ptr);
  JumpToSystemMemory();
  
  while(1);
}

ОтветитьЦитата
Размещено : 21.10.2024 13:27
(@wiseman75)
Level 1

@aveal еще раз пребольшое спасибо, вроде все понял.


ОтветитьЦитата
Создатель темы Размещено : 21.10.2024 16:18
Поделиться:
Обзор конфиденциальности

На этом сайте используются файлы cookie, что позволяет нам обеспечить наилучшее качество обслуживания пользователей. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас при возвращении на наш сайт и помощь нашей команде в понимании того, какие разделы сайта вы считаете наиболее интересными и полезными.