ADD minimal bootloader (main.cpp)

This commit is contained in:
Rémi Heredero 2024-12-31 12:02:40 +01:00
parent 890edc211a
commit 6e79ced7ff
Signed by: Klagarge
GPG Key ID: 735B36B074A65F0F
2 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,35 @@
#include "mbed.h"
#include "mbed_trace.h"
#if MBED_CONF_MBED_TRACE_ENABLE
#define TRACE_GROUP "bootloader"
#endif // MBED_CONF_MBED_TRACE_ENABLE
#if MBED_CONF_MBED_TRACE_ENABLE
static UnbufferedSerial g_uart(CONSOLE_TX, CONSOLE_RX);
// Function that directly outputs to an unbuffered serial port in blocking mode.
static void boot_debug(const char *s) {
size_t len = strlen(s);
g_uart.write(s, len);
g_uart.write("\r\n", 2);
}
#endif
int main() {
#if MBED_CONF_MBED_TRACE_ENABLE
mbed_trace_init();
mbed_trace_print_function_set(boot_debug);
#endif // MBED_CONF_MBED_TRACE_ENABLE
tr_debug("BikeComputer bootloader\r\n");
// at this stage we directly branch to the main application
void *sp = *((void **) POST_APPLICATION_ADDR + 0); // NOLINT(readability/casting)
void *pc = *((void **) POST_APPLICATION_ADDR + 1); // NOLINT(readability/casting)
tr_debug("Starting application at address 0x%08x (sp 0x%08x, pc 0x%08x)\r\n", POST_APPLICATION_ADDR, (uint32_t) sp, (uint32_t) pc);
mbed_start_application(POST_APPLICATION_ADDR);
return 0;
}