From a734ee9057a760b0316eca110d71db1524142fec Mon Sep 17 00:00:00 2001 From: robert-hh Date: Wed, 17 Jul 2024 20:43:51 +0200 Subject: shared/tinyusb/mp_usbd_cdc: Skip writing to an uninitialized USB device. During execution of `boot.py` the USB device is not yet initialized. Any attempt to write to the CDC (eg calling `print()`) would lock up the device. This commit skips writing when the USB device is not initialized. Any output from `boot.py` is lost, but the device does not lock up. Also removed unnecessary declaration of `tusb_init()`. Signed-off-by: robert-hh --- shared/tinyusb/mp_usbd.h | 1 - shared/tinyusb/mp_usbd_cdc.c | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'shared/tinyusb') diff --git a/shared/tinyusb/mp_usbd.h b/shared/tinyusb/mp_usbd.h index ef32348451..31234566b6 100644 --- a/shared/tinyusb/mp_usbd.h +++ b/shared/tinyusb/mp_usbd.h @@ -125,7 +125,6 @@ inline static bool mp_usb_device_builtin_enabled(const mp_obj_usb_device_t *usbd static inline void mp_usbd_init(void) { // Without runtime USB support, this can be a thin wrapper wrapper around tusb_init() - extern bool tusb_init(void); tusb_init(); } diff --git a/shared/tinyusb/mp_usbd_cdc.c b/shared/tinyusb/mp_usbd_cdc.c index 63d015cb46..c6a88e467d 100644 --- a/shared/tinyusb/mp_usbd_cdc.c +++ b/shared/tinyusb/mp_usbd_cdc.c @@ -95,6 +95,9 @@ void tud_cdc_rx_cb(uint8_t itf) { } mp_uint_t mp_usbd_cdc_tx_strn(const char *str, mp_uint_t len) { + if (!tusb_inited()) { + return 0; + } size_t i = 0; while (i < len) { uint32_t n = len - i; -- cgit v1.2.3