From e41019e5847d74d2bdec65d4277a8c4960ef40db Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 14 Dec 2023 00:36:07 +0100 Subject: [PATCH] the renumerations of USB seems to time critical. Prolonging the delay seems to improve it. Thanks to @NVX / @HenryGab for looking into it --- bootrom/bootrom.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index 4c87a65b0..f55f3b52b 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -212,6 +212,12 @@ static void UsbPacketReceived(uint8_t *packet) { reply_old(CMD_ACK, arg0, 0, 0, 0, 0); } +// delay_loop(1) = 3.07us +static volatile uint32_t c; +static void __attribute__((optimize("O0"))) delay_loop(uint32_t delay) { + for (c = delay * 2; c; c--) {}; +} + static void flash_mode(void) { start_addr = 0; end_addr = 0; @@ -234,7 +240,7 @@ static void flash_mode(void) { usb_enable(); // wait for reset to be complete? - for (volatile size_t i = 0; i < 0x100000; i++) {}; + delay_loop(100000); for (;;) { WDT_HIT();