From e6d8ab48507358d6cf6ef610183c69d427c8df2e Mon Sep 17 00:00:00 2001 From: Kevin Thomas Date: Sun, 5 Apr 2026 21:29:31 -0400 Subject: [PATCH] refactor: enforce 8-line Reset_Handler limit across CBM drivers Extract _late_init() wrappers in 0x04, 0x05, 0x0b, 0x0d, 0x0e, 0x0f to keep Reset_Handler within the max 8 code-line standard. --- drivers/0x04_pwm_cbm/Src/rp2350_reset_handler.c | 15 ++++++++++++--- drivers/0x05_servo_cbm/Src/rp2350_reset_handler.c | 15 ++++++++++++--- drivers/0x0b_spi_cbm/Src/rp2350_reset_handler.c | 13 +++++++++++-- drivers/0x0d_timer_cbm/Src/rp2350_reset_handler.c | 15 ++++++++++++--- .../0x0e_watchdog_cbm/Src/rp2350_reset_handler.c | 13 +++++++++++-- drivers/0x0f_flash_cbm/Src/rp2350_reset_handler.c | 15 ++++++++++++--- 6 files changed, 70 insertions(+), 16 deletions(-) diff --git a/drivers/0x04_pwm_cbm/Src/rp2350_reset_handler.c b/drivers/0x04_pwm_cbm/Src/rp2350_reset_handler.c index 8edc145..100f99f 100644 --- a/drivers/0x04_pwm_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x04_pwm_cbm/Src/rp2350_reset_handler.c @@ -31,6 +31,17 @@ extern int main(void); +/** + * @brief Initialize late peripherals (PWM and coprocessor). + * @retval None + */ +void _late_init(void) +{ + pwm_release_reset(); + pwm_init(); + coprocessor_enable(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( @@ -40,9 +51,7 @@ void __attribute__((naked, noreturn)) Reset_Handler(void) "bl reset_init_subsystem\n\t" "bl uart_release_reset\n\t" "bl uart_init\n\t" - "bl pwm_release_reset\n\t" - "bl pwm_init\n\t" - "bl coprocessor_enable\n\t" + "bl _late_init\n\t" "b main\n\t" ); } diff --git a/drivers/0x05_servo_cbm/Src/rp2350_reset_handler.c b/drivers/0x05_servo_cbm/Src/rp2350_reset_handler.c index 1bb634e..edd4780 100644 --- a/drivers/0x05_servo_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x05_servo_cbm/Src/rp2350_reset_handler.c @@ -31,6 +31,17 @@ extern int main(void); +/** + * @brief Initialize late peripherals (servo and coprocessor). + * @retval None + */ +void _late_init(void) +{ + servo_release_reset(); + servo_init(); + coprocessor_enable(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( @@ -40,9 +51,7 @@ void __attribute__((naked, noreturn)) Reset_Handler(void) "bl reset_init_subsystem\n\t" "bl uart_release_reset\n\t" "bl uart_init\n\t" - "bl servo_release_reset\n\t" - "bl servo_init\n\t" - "bl coprocessor_enable\n\t" + "bl _late_init\n\t" "b main\n\t" ); } diff --git a/drivers/0x0b_spi_cbm/Src/rp2350_reset_handler.c b/drivers/0x0b_spi_cbm/Src/rp2350_reset_handler.c index 50e5fe9..e01b866 100644 --- a/drivers/0x0b_spi_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x0b_spi_cbm/Src/rp2350_reset_handler.c @@ -31,6 +31,16 @@ extern int main(void); +/** + * @brief Initialize late peripherals (SPI reset and coprocessor). + * @retval None + */ +void _late_init(void) +{ + spi_release_reset(); + coprocessor_enable(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( @@ -38,10 +48,9 @@ void __attribute__((naked, noreturn)) Reset_Handler(void) "bl xosc_init\n\t" "bl xosc_enable_peri_clk\n\t" "bl reset_init_subsystem\n\t" - "bl spi_release_reset\n\t" "bl uart_release_reset\n\t" "bl uart_init\n\t" - "bl coprocessor_enable\n\t" + "bl _late_init\n\t" "b main\n\t" ); } diff --git a/drivers/0x0d_timer_cbm/Src/rp2350_reset_handler.c b/drivers/0x0d_timer_cbm/Src/rp2350_reset_handler.c index abd5558..cbbb213 100644 --- a/drivers/0x0d_timer_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x0d_timer_cbm/Src/rp2350_reset_handler.c @@ -31,6 +31,17 @@ extern int main(void); +/** + * @brief Initialize late peripherals (timer tick and coprocessor). + * @retval None + */ +void _late_init(void) +{ + timer_release_reset(); + timer_tick_init(); + coprocessor_enable(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( @@ -40,9 +51,7 @@ void __attribute__((naked, noreturn)) Reset_Handler(void) "bl reset_init_subsystem\n\t" "bl uart_release_reset\n\t" "bl uart_init\n\t" - "bl timer_release_reset\n\t" - "bl timer_tick_init\n\t" - "bl coprocessor_enable\n\t" + "bl _late_init\n\t" "b main\n\t" ); } diff --git a/drivers/0x0e_watchdog_cbm/Src/rp2350_reset_handler.c b/drivers/0x0e_watchdog_cbm/Src/rp2350_reset_handler.c index 9b47a85..70aae11 100644 --- a/drivers/0x0e_watchdog_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x0e_watchdog_cbm/Src/rp2350_reset_handler.c @@ -31,6 +31,16 @@ extern int main(void); +/** + * @brief Initialize late peripherals (watchdog tick and coprocessor). + * @retval None + */ +void _late_init(void) +{ + watchdog_tick_init(); + coprocessor_enable(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( @@ -40,8 +50,7 @@ void __attribute__((naked, noreturn)) Reset_Handler(void) "bl reset_init_subsystem\n\t" "bl uart_release_reset\n\t" "bl uart_init\n\t" - "bl watchdog_tick_init\n\t" - "bl coprocessor_enable\n\t" + "bl _late_init\n\t" "b main\n\t" ); } diff --git a/drivers/0x0f_flash_cbm/Src/rp2350_reset_handler.c b/drivers/0x0f_flash_cbm/Src/rp2350_reset_handler.c index b1d7e38..811cef1 100644 --- a/drivers/0x0f_flash_cbm/Src/rp2350_reset_handler.c +++ b/drivers/0x0f_flash_cbm/Src/rp2350_reset_handler.c @@ -50,7 +50,7 @@ extern uint32_t __data_end; * @brief Copy initialized data and RAM-resident code from flash to RAM. * @retval None */ -void data_copy_init(void) +static void _data_copy_init(void) { uint32_t *src = &__data_lma; uint32_t *dst = &__data_start; @@ -58,11 +58,20 @@ void data_copy_init(void) *dst++ = *src++; } +/** + * @brief Initialize stack pointers and copy .data section to RAM. + * @retval None + */ +void ram_init(void) +{ + stack_init(); + _data_copy_init(); +} + void __attribute__((naked, noreturn)) Reset_Handler(void) { __asm__ volatile ( - "bl stack_init\n\t" - "bl data_copy_init\n\t" + "bl ram_init\n\t" "bl xosc_init\n\t" "bl xosc_enable_peri_clk\n\t" "bl reset_init_subsystem\n\t"