From 77331cefdc7d2d991c8755d7007d327b720af16e Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 3 Feb 2026 12:13:00 -0800 Subject: [PATCH] Fix issue with debug flash layout and improve hal_prepare_boot to restore more hardware settings --- config/examples/vorago_va416x0.config | 24 +++++++++++++---------- hal/va416x0.c | 28 ++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/config/examples/vorago_va416x0.config b/config/examples/vorago_va416x0.config index bb2d6beb05..cb73890a38 100644 --- a/config/examples/vorago_va416x0.config +++ b/config/examples/vorago_va416x0.config @@ -52,19 +52,19 @@ WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x9800 WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x24800 WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x3F800 -# ML-DSA 5: 36KB boot, 104KB partitions, 12KB swap +# ML-DSA 5: 36KB boot, 96KB partitions, 12KB swap #WOLFBOOT_SECTOR_SIZE?=0x3000 -#WOLFBOOT_PARTITION_SIZE?=0x1A000 +#WOLFBOOT_PARTITION_SIZE?=0x18000 #WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x9000 -#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x23000 -#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x3D000 +#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x21000 +#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x39000 -# Debug: 64KB boot, 95KB partitions, 2KB swap +# Debug: 64KB boot, 94KB partitions, 2KB swap #WOLFBOOT_SECTOR_SIZE?=0x800 -#WOLFBOOT_PARTITION_SIZE?=0x18000 -#WOLFBOOT_PARTITION_BOOT_ADDRESS?=0xFC00 -#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x27C00 -#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x3FC00 +#WOLFBOOT_PARTITION_SIZE?=0x17800 +#WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x10000 +#WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x27800 +#WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x3F000 # Vorago SDK common drivers directory VORAGO_SDK_DIR?=$(PWD)/../VA416xx_SDK/ @@ -76,4 +76,8 @@ USE_HAL_SPI_FRAM=1 #CFLAGS_EXTRA+=-DWOLFBOOT_EDAC_ROM_SCRUB=125 # Leave clock at 100MHz (to restore clock to heart beat oscillator use =1) -WOLFBOOT_RESTORE_CLOCK?=0 +WOLFBOOT_RESTORE_CLOCK?=1 + +# Optional debugging +#CFLAGS_EXTRA+=-DDEBUG_EXT_FLASH +#CFLAGS_EXTRA+=-DTEST_EXT_FLASH diff --git a/hal/va416x0.c b/hal/va416x0.c index d1d321cdc7..d3c638f291 100644 --- a/hal/va416x0.c +++ b/hal/va416x0.c @@ -426,7 +426,6 @@ static int test_ext_flash(void) int ret; uint32_t i; uint8_t pageData[WOLFBOOT_SECTOR_SIZE]; - uint32_t wait = 0; #ifndef READONLY /* Erase sector */ @@ -547,6 +546,20 @@ void hal_prepare_boot(void) { #ifdef DEBUG_UART uart_flush(); + + /* Disable UART to give app a clean state */ + DEBUG_UART_BASE->IRQ_ENB = 0; + DEBUG_UART_BASE->ENABLE = 0; + #if defined(DEBUG_UART_NUM) && DEBUG_UART_NUM == 1 + NVIC_DisableIRQ(UART1_RX_IRQn); + NVIC_ClearPendingIRQ(UART1_RX_IRQn); + #elif defined(DEBUG_UART_NUM) && DEBUG_UART_NUM == 2 + NVIC_DisableIRQ(UART2_RX_IRQn); + NVIC_ClearPendingIRQ(UART2_RX_IRQn); + #else /* default: UART0 */ + NVIC_DisableIRQ(UART0_RX_IRQn); + NVIC_ClearPendingIRQ(UART0_RX_IRQn); + #endif #endif #ifdef WOLFBOOT_RESTORE_CLOCK @@ -554,4 +567,17 @@ void hal_prepare_boot(void) (void)HAL_Clkgen_Init(CLK_CFG_HBO); SystemCoreClockUpdate(); #endif + + /* Disable SysTick - enabled by Vorago SDK HAL_Init() */ + SysTick->CTRL = 0; + SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk; + + /* Disable EDAC interrupts - enabled by ConfigEdac() */ + NVIC_DisableIRQ(EDAC_MBE_IRQn); + NVIC_DisableIRQ(EDAC_SBE_IRQn); + NVIC_ClearPendingIRQ(EDAC_MBE_IRQn); + NVIC_ClearPendingIRQ(EDAC_SBE_IRQn); + + /* Disable system config IRQs */ + VOR_SYSCONFIG->IRQ_ENB = 0; }