From 3c8256df7de49a4fb64cdbcdea46ff471ff5f846 Mon Sep 17 00:00:00 2001 From: Kshitij Sisodia Date: Mon, 24 May 2021 16:12:40 +0100 Subject: MLECO-1948: Fix for SysTick init and GNU's stdout The counter val could have been 0 when read the first time quickly after the init function. The init function will now wait for the SysTick counter to start before returning. Also included are some minor changes to get around GNU's file stream implementation being line buffered. Change-Id: I8d51fef5d85f1261a6a5710608349d7ecc19ad62 --- .../hal/platforms/bare-metal/bsp/bsp-packs/mps3/timer_mps3.c | 11 +++++------ .../hal/platforms/bare-metal/bsp/cmsis-device/irqs.c | 8 +++++++- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'source/application/hal') diff --git a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/mps3/timer_mps3.c b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/mps3/timer_mps3.c index a72103c..c0c3bdf 100644 --- a/source/application/hal/platforms/bare-metal/bsp/bsp-packs/mps3/timer_mps3.c +++ b/source/application/hal/platforms/bare-metal/bsp/bsp-packs/mps3/timer_mps3.c @@ -41,12 +41,11 @@ mps3_time_counter get_time_counter(void) .counter_fpga = MPS3_FPGAIO->COUNTER, .counter_systick = Get_SysTick_Cycle_Count() }; - debug("Timestamp:" - "\n\tCounter 1 Hz: %" PRIu32 - "\n\tCounter 100 Hz: %" PRIu32 - "\n\tCounter FPGA: %" PRIu32 - "\n\tCounter CPU: %" PRIu64 "\n", - t.counter_1Hz, t.counter_100Hz, t.counter_fpga, t.counter_systick); + debug("Timestamp:\n"); + debug("\tCounter 1 Hz: %" PRIu32 "\n", t.counter_1Hz); + debug("\tCounter 100 Hz: %" PRIu32 "\n", t.counter_100Hz); + debug("\tCounter FPGA: %" PRIu32 "\n", t.counter_fpga); + debug("\tCounter CPU: %" PRIu64 "\n", t.counter_systick); return t; } diff --git a/source/application/hal/platforms/bare-metal/bsp/cmsis-device/irqs.c b/source/application/hal/platforms/bare-metal/bsp/cmsis-device/irqs.c index 7c9f4b8..7d8aa06 100644 --- a/source/application/hal/platforms/bare-metal/bsp/cmsis-device/irqs.c +++ b/source/application/hal/platforms/bare-metal/bsp/cmsis-device/irqs.c @@ -71,7 +71,8 @@ __attribute__((noreturn)) static void DefaultHandler(void) #define DEFAULT_HANDLER_CALL(type) \ do { \ - printf("\n%s caught by function %s\n", \ + printf("\n"); \ + printf("%s caught by function %s\n", \ type, __FUNCTION__); \ DefaultHandler(); \ } while (0) @@ -238,6 +239,11 @@ int Init_SysTick(void) /* Enable interrupt again. */ NVIC_EnableIRQ(SysTick_IRQn); + /* Wait for SysTick to kick off */ + while (!err && !SysTick->VAL) { + __NOP(); + } + return err; } -- cgit v1.2.1