From 8d566bc37e813f8646270b3af982867fe37fb6c8 Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Fri, 25 Nov 2022 09:32:28 +0100 Subject: [PATCH] Flash red when ending in unknown stat Signed-off-by: Daniel Lublin --- hw/application_fpga/fw/tk1/main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/hw/application_fpga/fw/tk1/main.c b/hw/application_fpga/fw/tk1/main.c index eda4491..2a190dd 100644 --- a/hw/application_fpga/fw/tk1/main.c +++ b/hw/application_fpga/fw/tk1/main.c @@ -91,6 +91,17 @@ static void compute_cdi(uint8_t digest[32], uint8_t use_uss, uint8_t uss[32]) wordcpy((void *)cdi, (void *)local_cdi, 8); } +void forever_redflash() +{ + int led_on = 0; + for (;;) { + *led = led_on ? LED_RED : 0; + for (volatile int i = 0; i < 800000; i++) { + } + led_on = !led_on; + } +} + enum state { FW_STATE_INITIAL, FW_STATE_INIT_LOADING, @@ -163,13 +174,10 @@ int main() break; // This is never reached! default: - // Unknown state!? puts("Unknown firmware state 0x"); puthex(state); lf(); - - asm volatile("forever:;" - "j forever;"); + forever_redflash(); break; // Not reached }