bool bootloader_update(const void* bootloader_image, unsigned length) { HAL_Bootloader_Lock(false); bool result = (FLASH_CopyMemory(FLASH_INTERNAL, (uint32_t)bootloader_image, FLASH_INTERNAL, 0x8000000, length, MODULE_FUNCTION_BOOTLOADER, MODULE_VERIFY_DESTINATION_IS_START_ADDRESS|MODULE_VERIFY_CRC|MODULE_VERIFY_FUNCTION)); HAL_Bootloader_Lock(true); return result; }
void HAL_Core_Setup(void) { /* Reset system to disable IWDG if enabled in bootloader */ IWDG_Reset_Enable(0); HAL_Core_Setup_finalize(); bootloader_update_if_needed(); HAL_Bootloader_Lock(true); #if !MODULAR_FIRMWARE module_user_init_hook(); #endif }