From 251b53f1036e64afcc683e1967bdf68ec963ef0d Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Tue, 9 Jul 2019 22:52:19 +0200 Subject: [PATCH] fix(pycardium): Ensure printf output is sent to Epicardium API Previously, printf would output directly to UART, which led to race conditions. With removing card10-board from pycardium and implementing _write() directly, this can be fixed. Now printf & co will output via Epicardium API. Signed-off-by: Rahix <rahix@rahix.de> --- pycardium/meson.build | 4 ++-- pycardium/mphalport.c | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pycardium/meson.build b/pycardium/meson.build index 7e76d925f..608d9cce2 100644 --- a/pycardium/meson.build +++ b/pycardium/meson.build @@ -71,9 +71,9 @@ elf = executable( modsrc, mp_headers, include_directories: micropython_includes, - dependencies: [max32665_startup_core1, board_card10, periphdriver, api_caller], + dependencies: [max32665_startup_core1, periphdriver, api_caller], link_with: upy, - link_whole: [max32665_startup_core1_lib, board_card10_lib], + link_whole: [max32665_startup_core1_lib], link_args: [ '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', ], diff --git a/pycardium/mphalport.c b/pycardium/mphalport.c index 91064177f..b8ae7ec38 100644 --- a/pycardium/mphalport.c +++ b/pycardium/mphalport.c @@ -41,6 +41,13 @@ int DEBUG_printf(const char *fmt, ...) return ret; } +/* newlib syscall to allow printf to work */ +long _write(int fd, const char *buf, size_t cnt) +{ + epic_uart_write_str(buf, cnt); + return cnt; +} + bool do_interrupt = false; /* Timer Interrupt used for control char notification */ -- GitLab