aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/stm32f4.c
diff options
context:
space:
mode:
authorArksine <arksine.code@gmail.com>2020-04-25 14:20:25 -0400
committerKevinOConnor <kevin@koconnor.net>2020-05-28 14:44:51 -0400
commitab87af90a391e842c3d2e76c7a2dad5d5db0ad5a (patch)
tree71c528e511262e05204b4ddc32a2055b5558a888 /src/stm32/stm32f4.c
parent380ba2a618ed3ccacc79ded93f44d80cc93a2894 (diff)
downloadkutter-ab87af90a391e842c3d2e76c7a2dad5d5db0ad5a.tar.gz
kutter-ab87af90a391e842c3d2e76c7a2dad5d5db0ad5a.tar.xz
kutter-ab87af90a391e842c3d2e76c7a2dad5d5db0ad5a.zip
stm32f4: Add support for HID bootloader
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Diffstat (limited to 'src/stm32/stm32f4.c')
-rw-r--r--src/stm32/stm32f4.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/stm32/stm32f4.c b/src/stm32/stm32f4.c
index f8b5ab2d..9b5433af 100644
--- a/src/stm32/stm32f4.c
+++ b/src/stm32/stm32f4.c
@@ -98,7 +98,18 @@ void
usb_request_bootloader(void)
{
irq_disable();
- *(uint64_t*)USB_BOOT_FLAG_ADDR = USB_BOOT_FLAG;
+ if (CONFIG_STM32_FLASH_START_4000) {
+ // HID Bootloader
+ RCC->APB1ENR |= RCC_APB1ENR_PWREN;
+ RCC->APB1ENR;
+ PWR->CR |= PWR_CR_DBP;
+ // HID Bootloader magic key
+ RTC->BKP4R = 0x424C;
+ PWR->CR &= ~PWR_CR_DBP;
+ } else {
+ // System DFU Bootloader
+ *(uint64_t*)USB_BOOT_FLAG_ADDR = USB_BOOT_FLAG;
+ }
NVIC_SystemReset();
}