5 #include "sw/device/silicon_creator/lib/stack_utilization.h"
7 #include "sw/device/silicon_creator/lib/drivers/uart.h"
9 #ifdef STACK_UTILIZATION_CHECK
10 void stack_utilization_print(
void) {
11 extern uint32_t _stack_start[], _stack_end[];
15 const uint32_t *sp = _stack_start + 1;
17 uint32_t total = (uintptr_t)_stack_end - (uintptr_t)_stack_start;
18 while (sp < _stack_end && *sp == STACK_UTILIZATION_FREE_PATTERN) {
19 free +=
sizeof(uint32_t);
22 uint32_t used = total - free;
24 const uint32_t kPrefix = 0x3a4b5453;
25 uart_write_imm(kPrefix);
26 uart_write_hex(used,
sizeof(used),
'/');
27 uart_write_hex(total,
sizeof(total),
'\r');