aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/stm32f0.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stm32/stm32f0.c')
-rw-r--r--src/stm32/stm32f0.c31
1 files changed, 2 insertions, 29 deletions
diff --git a/src/stm32/stm32f0.c b/src/stm32/stm32f0.c
index e63f1b5b..72fc1645 100644
--- a/src/stm32/stm32f0.c
+++ b/src/stm32/stm32f0.c
@@ -134,39 +134,12 @@ hsi14_setup(void)
* Bootloader
****************************************************************/
-#define USB_BOOT_FLAG_ADDR (CONFIG_RAM_START + CONFIG_RAM_SIZE - 1024)
-#define USB_BOOT_FLAG 0x55534220424f4f54 // "USB BOOT"
-
-// Flag that bootloader is desired and reboot
-static void
-usb_reboot_for_dfu_bootloader(void)
-{
- irq_disable();
- *(uint64_t*)USB_BOOT_FLAG_ADDR = USB_BOOT_FLAG;
- NVIC_SystemReset();
-}
-
-// Check if rebooting into system DFU Bootloader
-static void
-check_usb_dfu_bootloader(void)
-{
- if (!CONFIG_USB || !CONFIG_MACH_STM32F0x2
- || *(uint64_t*)USB_BOOT_FLAG_ADDR != USB_BOOT_FLAG)
- return;
- *(uint64_t*)USB_BOOT_FLAG_ADDR = 0;
- uint32_t *sysbase = (uint32_t*)0x1fffc400;
- if (CONFIG_MACH_STM32F072)
- sysbase = (uint32_t*)0x1fffc800;
- asm volatile("mov sp, %0\n bx %1"
- : : "r"(sysbase[0]), "r"(sysbase[1]));
-}
-
// Handle reboot requests
void
bootloader_request(void)
{
try_request_canboot();
- usb_reboot_for_dfu_bootloader();
+ dfu_reboot();
}
@@ -193,7 +166,7 @@ enable_ram_vectortable(void)
void
armcm_main(void)
{
- check_usb_dfu_bootloader();
+ dfu_reboot_check();
SystemInit();
enable_pclock(SYSCFG_BASE);