From 8335f15658621c155ec21881d7c7a88f29be78bf Mon Sep 17 00:00:00 2001 From: hathach Date: Sat, 8 May 2021 00:11:18 +0700 Subject: [PATCH 01/12] initial tinyusb lib port --- boards.txt | 43 ++++++++++++++++++++++++++++++++++++++ cores/rp2040/Arduino.h | 9 +++++++- cores/rp2040/SerialUSB.cpp | 4 ++++ cores/rp2040/Stream.h | 2 +- cores/rp2040/delay.cpp | 23 +++++++++++++++----- cores/rp2040/main.cpp | 10 +++++++++ platform.txt | 3 ++- 7 files changed, 86 insertions(+), 8 deletions(-) diff --git a/boards.txt b/boards.txt index b1a643d08..fcce8f79b 100644 --- a/boards.txt +++ b/boards.txt @@ -4,6 +4,8 @@ menu.freq=CPU Speed menu.dbgport=Debug Port menu.dbglvl=Debug Level menu.boot2=Boot Stage 2 +menu.usbstack=USB Stack + rpipico.name=Raspberry Pi Pico rpipico.vid.0=0x2e8a rpipico.pid.0=0x000a @@ -24,6 +26,8 @@ rpipico.build.core=rp2040 rpipico.build.mcu=rp2040 rpipico.build.ldscript=memmap_default.ld rpipico.build.boot2=boot2_w25q080_2_padded_checksum +rpipico.build.vid=0x2e8a +rpipico.build.pid=0x000a rpipico.menu.flash.2097152_0=2MB (no FS) rpipico.menu.flash.2097152_0.upload.maximum_size=2093056 rpipico.menu.flash.2097152_0.build.flash_length=2093056 @@ -102,6 +106,11 @@ rpipico.menu.dbglvl.All=All rpipico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE rpipico.menu.dbglvl.NDEBUG=NDEBUG rpipico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +rpipico.menu.usbstack.picosdk=Built-in +rpipico.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +rpipico.menu.usbstack.tinyusb=TinyUSB +rpipico.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" + rpipicopicoprobe.name=Raspberry Pi Pico (Picoprobe) rpipicopicoprobe.vid.0=0x2e8a rpipicopicoprobe.pid.0=0x0004 @@ -122,6 +131,8 @@ rpipicopicoprobe.build.core=rp2040 rpipicopicoprobe.build.mcu=rp2040 rpipicopicoprobe.build.ldscript=memmap_default.ld rpipicopicoprobe.build.boot2=boot2_w25q080_2_padded_checksum +rpipicopicoprobe.build.vid=0x2e8a +rpipicopicoprobe.build.pid=0x000a rpipicopicoprobe.menu.flash.2097152_0=2MB (no FS) rpipicopicoprobe.menu.flash.2097152_0.upload.maximum_size=2093056 rpipicopicoprobe.menu.flash.2097152_0.build.flash_length=2093056 @@ -200,6 +211,11 @@ rpipicopicoprobe.menu.dbglvl.All=All rpipicopicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE rpipicopicoprobe.menu.dbglvl.NDEBUG=NDEBUG rpipicopicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +rpipicopicoprobe.menu.usbstack.picosdk=Built-in +rpipicopicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +rpipicopicoprobe.menu.usbstack.tinyusb=TinyUSB +rpipicopicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" + adafruitfeather.name=Adafruit Feather RP2040 adafruitfeather.vid.0=0x2e8a adafruitfeather.pid.0=0x000b @@ -220,6 +236,8 @@ adafruitfeather.build.core=rp2040 adafruitfeather.build.mcu=rp2040 adafruitfeather.build.ldscript=memmap_default.ld adafruitfeather.build.boot2=boot2_w25x10cl_4_padded_checksum +adafruitfeather.build.vid=0x239a +adafruitfeather.build.pid=0x80f1 adafruitfeather.menu.flash.8388608_0=8MB (no FS) adafruitfeather.menu.flash.8388608_0.upload.maximum_size=8384512 adafruitfeather.menu.flash.8388608_0.build.flash_length=8384512 @@ -334,6 +352,11 @@ adafruitfeather.menu.dbglvl.All=All adafruitfeather.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE adafruitfeather.menu.dbglvl.NDEBUG=NDEBUG adafruitfeather.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +adafruitfeather.menu.usbstack.picosdk=Built-in +adafruitfeather.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +adafruitfeather.menu.usbstack.tinyusb=TinyUSB +adafruitfeather.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" + adafruitfeatherpicoprobe.name=Adafruit Feather RP2040 (Picoprobe) adafruitfeatherpicoprobe.vid.0=0x2e8a adafruitfeatherpicoprobe.pid.0=0x0004 @@ -354,6 +377,8 @@ adafruitfeatherpicoprobe.build.core=rp2040 adafruitfeatherpicoprobe.build.mcu=rp2040 adafruitfeatherpicoprobe.build.ldscript=memmap_default.ld adafruitfeatherpicoprobe.build.boot2=boot2_w25x10cl_4_padded_checksum +adafruitfeatherpicoprobe.build.vid=0x239a +adafruitfeatherpicoprobe.build.pid=0x80f1 adafruitfeatherpicoprobe.menu.flash.8388608_0=8MB (no FS) adafruitfeatherpicoprobe.menu.flash.8388608_0.upload.maximum_size=8384512 adafruitfeatherpicoprobe.menu.flash.8388608_0.build.flash_length=8384512 @@ -468,6 +493,11 @@ adafruitfeatherpicoprobe.menu.dbglvl.All=All adafruitfeatherpicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG=NDEBUG adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +adafruitfeatherpicoprobe.menu.usbstack.picosdk=Built-in +adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +adafruitfeatherpicoprobe.menu.usbstack.tinyusb=TinyUSB +adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" + generic.name=Generic RP2040 generic.vid.0=0x2e8a generic.pid.0=0xf00a @@ -488,6 +518,8 @@ generic.build.core=rp2040 generic.build.mcu=rp2040 generic.build.ldscript=memmap_default.ld generic.build.boot2=boot2_generic_03h_4_padded_checksum +generic.build.vid=0x2e8a +generic.build.pid=0xf00a generic.menu.flash.2097152_0=2MB (no FS) generic.menu.flash.2097152_0.upload.maximum_size=2093056 generic.menu.flash.2097152_0.build.flash_length=2093056 @@ -594,6 +626,11 @@ generic.menu.boot2.boot2_w25x10cl_2_padded_checksum=W25X10CL QSPI /2 generic.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w25x10cl_2_padded_checksum generic.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 generic.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum +generic.menu.usbstack.picosdk=Built-in +generic.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +generic.menu.usbstack.tinyusb=TinyUSB +generic.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" + genericpicoprobe.name=Generic RP2040 (Picoprobe) genericpicoprobe.vid.0=0x2e8a genericpicoprobe.pid.0=0x0004 @@ -614,6 +651,8 @@ genericpicoprobe.build.core=rp2040 genericpicoprobe.build.mcu=rp2040 genericpicoprobe.build.ldscript=memmap_default.ld genericpicoprobe.build.boot2=boot2_generic_03h_4_padded_checksum +genericpicoprobe.build.vid=0x2e8a +genericpicoprobe.build.pid=0xf00a genericpicoprobe.menu.flash.2097152_0=2MB (no FS) genericpicoprobe.menu.flash.2097152_0.upload.maximum_size=2093056 genericpicoprobe.menu.flash.2097152_0.build.flash_length=2093056 @@ -720,3 +759,7 @@ genericpicoprobe.menu.boot2.boot2_w25x10cl_2_padded_checksum=W25X10CL QSPI /2 genericpicoprobe.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w25x10cl_2_padded_checksum genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum +genericpicoprobe.menu.usbstack.picosdk=Built-in +genericpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +genericpicoprobe.menu.usbstack.tinyusb=TinyUSB +genericpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index 99c1eb85b..2e4b400bb 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -95,7 +95,14 @@ unsigned long millis(); #define HAVE_HWSERIAL2 #ifdef __cplusplus -#include "SerialUSB.h" + +#ifdef USE_TINYUSB + #include "Adafruit_USBD_Interface.h" + #include "Adafruit_USBD_CDC.h" +#else + #include "SerialUSB.h" +#endif + #include "SerialUART.h" #include "RP2040.h" #include "Bootsel.h" diff --git a/cores/rp2040/SerialUSB.cpp b/cores/rp2040/SerialUSB.cpp index 37541a620..7cc645713 100644 --- a/cores/rp2040/SerialUSB.cpp +++ b/cores/rp2040/SerialUSB.cpp @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef USE_TINYUSB + #include #include "CoreMutex.h" @@ -189,3 +191,5 @@ void arduino::serialEventRun(void) serialEvent(); } } + +#endif diff --git a/cores/rp2040/Stream.h b/cores/rp2040/Stream.h index 663db3068..6051689ff 100644 --- a/cores/rp2040/Stream.h +++ b/cores/rp2040/Stream.h @@ -1 +1 @@ -#include "api/String.h" +#include "api/Stream.h" diff --git a/cores/rp2040/delay.cpp b/cores/rp2040/delay.cpp index 6aa63453f..fe115cf35 100644 --- a/cores/rp2040/delay.cpp +++ b/cores/rp2040/delay.cpp @@ -21,12 +21,29 @@ #include #include +extern "C" +{ + +static void __empty(void) { + // NOOP +} + +void yield(void) __attribute__ ((weak, alias("__empty"))); +} + extern "C" void delay( unsigned long ms ) { if (!ms) { return; } - sleep_ms(ms); + // Call wfe/wfi while have pending USB event can starve the task. + // If there is no alarm interrupt to help wake up MCU. + // TODO better implementation later + // More detail https://github.com/adafruit/circuitpython/pull/2956 + while (ms--) { + yield(); + sleep_ms(1); + } } extern "C" void delayMicroseconds( unsigned int usec ) { @@ -36,10 +53,6 @@ extern "C" void delayMicroseconds( unsigned int usec ) { sleep_us(usec); } -extern "C" void yield() { - // NOOP -} - extern "C" uint32_t millis() { return to_ms_since_boot(get_absolute_time()); } diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index 9131c8410..a46f42a6b 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -36,6 +36,12 @@ extern void loop(); void initVariant() __attribute__((weak)); void initVariant() { } +#ifdef USE_TINYUSB +// Called by main.cpp to initialize usb device typically with CDC device for Serial +void TinyUSB_Device_Init(uint8_t rhport) __attribute__((weak)); +#endif + + // Optional 2nd core setup and loop extern void setup1() __attribute__((weak)); @@ -61,10 +67,14 @@ extern "C" int main() { initVariant(); __USBStart(); +#ifdef USE_TINYUSB + TinyUSB_Device_Init(0); +#else #ifndef DISABLE_USB_SERIAL // Enable serial port for reset/upload always Serial.begin(); #endif +#endif #if defined DEBUG_RP2040_PORT DEBUG_RP2040_PORT.begin(); diff --git a/platform.txt b/platform.txt index b30458014..63a95a0b0 100644 --- a/platform.txt +++ b/platform.txt @@ -38,7 +38,7 @@ compiler.warning_flags.default= compiler.warning_flags.more=-Wall compiler.warning_flags.all=-Wall -Wextra -compiler.defines={build.led} +compiler.defines={build.led} {build.flags.usbstack} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" compiler.flags=-Os -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt" @@ -80,6 +80,7 @@ build.flash_length= build.eeprom_start= build.fs_start= build.fs_end= +build.flags.usbstack= build.boot2=boot2_generic_03h_4_padded_checksum From 32817be562700cf8e51442a4df242c99d1a00a6a Mon Sep 17 00:00:00 2001 From: hathach Date: Sat, 8 May 2021 01:25:26 +0700 Subject: [PATCH 02/12] add Adafruit_TinyUSB_Arduino as submodules --- .gitmodules | 3 + boards.txt | 12 ++-- cores/rp2040/TinyUSB/tusb_config.h | 88 ++++++++++++++++++++++++++++++ libraries/Adafruit_TinyUSB_Arduino | 1 + 4 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 cores/rp2040/TinyUSB/tusb_config.h create mode 160000 libraries/Adafruit_TinyUSB_Arduino diff --git a/.gitmodules b/.gitmodules index 1c8548674..9483de234 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "libraries/Mouse"] path = libraries/Mouse url = https://github.com/earlephilhower/Mouse +[submodule "libraries/Adafruit_TinyUSB_Arduino"] + path = libraries/Adafruit_TinyUSB_Arduino + url = https://github.com/adafruit/Adafruit_TinyUSB_Arduino.git diff --git a/boards.txt b/boards.txt index fcce8f79b..a49425c04 100644 --- a/boards.txt +++ b/boards.txt @@ -109,7 +109,7 @@ rpipico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipico.menu.usbstack.picosdk=Built-in rpipico.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" rpipico.menu.usbstack.tinyusb=TinyUSB -rpipico.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +rpipico.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" rpipicopicoprobe.name=Raspberry Pi Pico (Picoprobe) rpipicopicoprobe.vid.0=0x2e8a @@ -214,7 +214,7 @@ rpipicopicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipicopicoprobe.menu.usbstack.picosdk=Built-in rpipicopicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" rpipicopicoprobe.menu.usbstack.tinyusb=TinyUSB -rpipicopicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +rpipicopicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" adafruitfeather.name=Adafruit Feather RP2040 adafruitfeather.vid.0=0x2e8a @@ -355,7 +355,7 @@ adafruitfeather.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruitfeather.menu.usbstack.picosdk=Built-in adafruitfeather.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" adafruitfeather.menu.usbstack.tinyusb=TinyUSB -adafruitfeather.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +adafruitfeather.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" adafruitfeatherpicoprobe.name=Adafruit Feather RP2040 (Picoprobe) adafruitfeatherpicoprobe.vid.0=0x2e8a @@ -496,7 +496,7 @@ adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruitfeatherpicoprobe.menu.usbstack.picosdk=Built-in adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" adafruitfeatherpicoprobe.menu.usbstack.tinyusb=TinyUSB -adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" generic.name=Generic RP2040 generic.vid.0=0x2e8a @@ -629,7 +629,7 @@ generic.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4 generic.menu.usbstack.picosdk=Built-in generic.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" generic.menu.usbstack.tinyusb=TinyUSB -generic.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +generic.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" genericpicoprobe.name=Generic RP2040 (Picoprobe) genericpicoprobe.vid.0=0x2e8a @@ -762,4 +762,4 @@ genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w genericpicoprobe.menu.usbstack.picosdk=Built-in genericpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" genericpicoprobe.menu.usbstack.tinyusb=TinyUSB -genericpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" +genericpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" diff --git a/cores/rp2040/TinyUSB/tusb_config.h b/cores/rp2040/TinyUSB/tusb_config.h new file mode 100644 index 000000000..a31ee58d0 --- /dev/null +++ b/cores/rp2040/TinyUSB/tusb_config.h @@ -0,0 +1,88 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2018, hathach for Adafruit + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef _TUSB_CONFIG_H_ +#define _TUSB_CONFIG_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +//-------------------------------------------------------------------- +// COMMON CONFIGURATION +//-------------------------------------------------------------------- +#ifdef USE_TINYUSB + #define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE +#else + #define CFG_TUSB_RHPORT0_MODE OPT_MODE_NONE +#endif + +// #define CFG_TUSB_MCU OPT_MCU_RP2040 +#define CFG_TUSB_OS OPT_OS_PICO + +#define CFG_TUSB_DEBUG 0 +#if CFG_TUSB_DEBUG + #define tu_printf serial1_printf + extern int serial1_printf(const char *__restrict __format, ...); +#endif + +#define CFG_TUSB_MEM_SECTION +#define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4) + +//-------------------------------------------------------------------- +// DEVICE CONFIGURATION +//-------------------------------------------------------------------- + +#define CFG_TUD_ENDOINT0_SIZE 64 + +//------------- CLASS -------------// +#define CFG_TUD_CDC 1 +#define CFG_TUD_MSC 1 +#define CFG_TUD_HID 1 +#define CFG_TUD_MIDI 1 +#define CFG_TUD_VENDOR 1 + +// CDC FIFO size of TX and RX +#define CFG_TUD_CDC_RX_BUFSIZE 256 +#define CFG_TUD_CDC_TX_BUFSIZE 256 + +// MSC Buffer size of Device Mass storage +#define CFG_TUD_MSC_BUFSIZE 512 + +// HID buffer size Should be sufficient to hold ID (if any) + Data +#define CFG_TUD_HID_BUFSIZE 64 + +// MIDI FIFO size of TX and RX +#define CFG_TUD_MIDI_RX_BUFSIZE 128 +#define CFG_TUD_MIDI_TX_BUFSIZE 128 + +// Vendor FIFO size of TX and RX +#define CFG_TUD_VENDOR_RX_BUFSIZE 64 +#define CFG_TUD_VENDOR_TX_BUFSIZE 64 + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_CONFIG_H_ */ diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino new file mode 160000 index 000000000..2b16928b9 --- /dev/null +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -0,0 +1 @@ +Subproject commit 2b16928b90a764b1e0b5b135d2ebad1518a329b2 From c0b04bcbfc79481cdb0f6f13ac558d00d886d3af Mon Sep 17 00:00:00 2001 From: hathach Date: Sat, 8 May 2021 15:06:00 +0700 Subject: [PATCH 03/12] add yield() to main loop --- cores/rp2040/main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index a46f42a6b..143615d62 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -91,6 +91,11 @@ extern "C" int main() { setup(); while (true) { loop(); + +#ifdef USE_TINYUSB + yield(); +#endif + if (arduino::serialEventRun) { arduino::serialEventRun(); } From c75d1a8627e933f354590c2cf9c3a14b3dd159f9 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 10 May 2021 13:13:44 +0700 Subject: [PATCH 04/12] sync with tinyusb lib latest --- cores/rp2040/Arduino.h | 2 +- cores/rp2040/TinyUSB/tusb_config.h | 8 ++++---- cores/rp2040/delay.cpp | 21 ++++++++++++--------- cores/rp2040/main.cpp | 6 ------ libraries/Adafruit_TinyUSB_Arduino | 2 +- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index 2e4b400bb..5ab8bb877 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -97,7 +97,7 @@ unsigned long millis(); #ifdef __cplusplus #ifdef USE_TINYUSB - #include "Adafruit_USBD_Interface.h" + // Needed for declaring Serial #include "Adafruit_USBD_CDC.h" #else #include "SerialUSB.h" diff --git a/cores/rp2040/TinyUSB/tusb_config.h b/cores/rp2040/TinyUSB/tusb_config.h index a31ee58d0..523af746f 100644 --- a/cores/rp2040/TinyUSB/tusb_config.h +++ b/cores/rp2040/TinyUSB/tusb_config.h @@ -42,10 +42,10 @@ #define CFG_TUSB_OS OPT_OS_PICO #define CFG_TUSB_DEBUG 0 -#if CFG_TUSB_DEBUG - #define tu_printf serial1_printf - extern int serial1_printf(const char *__restrict __format, ...); -#endif +//#if CFG_TUSB_DEBUG +// #define tu_printf serial1_printf +// extern int serial1_printf(const char *__restrict __format, ...); +//#endif #define CFG_TUSB_MEM_SECTION #define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4) diff --git a/cores/rp2040/delay.cpp b/cores/rp2040/delay.cpp index fe115cf35..38c2a540b 100644 --- a/cores/rp2040/delay.cpp +++ b/cores/rp2040/delay.cpp @@ -21,17 +21,19 @@ #include #include +#ifdef USE_TINYUSB +#include "Adafruit_TinyUSB_API.h" +#endif + extern "C" { -static void __empty(void) { - // NOOP -} - -void yield(void) __attribute__ ((weak, alias("__empty"))); +void yield(void) { + TinyUSB_Device_Task(); + TinyUSB_Device_FlushCDC(); } -extern "C" void delay( unsigned long ms ) { +void delay( unsigned long ms ) { if (!ms) { return; } @@ -46,18 +48,19 @@ extern "C" void delay( unsigned long ms ) { } } -extern "C" void delayMicroseconds( unsigned int usec ) { +void delayMicroseconds( unsigned int usec ) { if (!usec) { return; } sleep_us(usec); } -extern "C" uint32_t millis() { +uint32_t millis() { return to_ms_since_boot(get_absolute_time()); } -extern "C" uint32_t micros() { +uint32_t micros() { return to_us_since_boot(get_absolute_time()); } +} diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index 143615d62..53b6102ae 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -36,12 +36,6 @@ extern void loop(); void initVariant() __attribute__((weak)); void initVariant() { } -#ifdef USE_TINYUSB -// Called by main.cpp to initialize usb device typically with CDC device for Serial -void TinyUSB_Device_Init(uint8_t rhport) __attribute__((weak)); -#endif - - // Optional 2nd core setup and loop extern void setup1() __attribute__((weak)); diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino index 2b16928b9..18ea1645f 160000 --- a/libraries/Adafruit_TinyUSB_Arduino +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -1 +1 @@ -Subproject commit 2b16928b90a764b1e0b5b135d2ebad1518a329b2 +Subproject commit 18ea1645f366a1e7dd0d276ce1ea7f483bdf0e13 From e4abb496a1af50f0a24b6eea7035bb4d9e089f1b Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 10 May 2021 15:00:25 +0700 Subject: [PATCH 05/12] add USB manufacturer and product --- boards.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/boards.txt b/boards.txt index a49425c04..22b8535b1 100644 --- a/boards.txt +++ b/boards.txt @@ -26,6 +26,8 @@ rpipico.build.core=rp2040 rpipico.build.mcu=rp2040 rpipico.build.ldscript=memmap_default.ld rpipico.build.boot2=boot2_w25q080_2_padded_checksum +rpipico.build.usb_manufacturer="Raspberry Pi" +rpipico.build.usb_product="Pico" rpipico.build.vid=0x2e8a rpipico.build.pid=0x000a rpipico.menu.flash.2097152_0=2MB (no FS) @@ -131,6 +133,8 @@ rpipicopicoprobe.build.core=rp2040 rpipicopicoprobe.build.mcu=rp2040 rpipicopicoprobe.build.ldscript=memmap_default.ld rpipicopicoprobe.build.boot2=boot2_w25q080_2_padded_checksum +rpipicopicoprobe.build.usb_manufacturer="Raspberry Pi" +rpipicopicoprobe.build.usb_product="Pico (picoprobe)" rpipicopicoprobe.build.vid=0x2e8a rpipicopicoprobe.build.pid=0x000a rpipicopicoprobe.menu.flash.2097152_0=2MB (no FS) @@ -236,6 +240,8 @@ adafruitfeather.build.core=rp2040 adafruitfeather.build.mcu=rp2040 adafruitfeather.build.ldscript=memmap_default.ld adafruitfeather.build.boot2=boot2_w25x10cl_4_padded_checksum +adafruitfeather.build.usb_manufacturer="Adafruit LLC" +adafruitfeather.build.usb_product="Feather RP2040" adafruitfeather.build.vid=0x239a adafruitfeather.build.pid=0x80f1 adafruitfeather.menu.flash.8388608_0=8MB (no FS) @@ -377,6 +383,8 @@ adafruitfeatherpicoprobe.build.core=rp2040 adafruitfeatherpicoprobe.build.mcu=rp2040 adafruitfeatherpicoprobe.build.ldscript=memmap_default.ld adafruitfeatherpicoprobe.build.boot2=boot2_w25x10cl_4_padded_checksum +adafruitfeatherpicoprobe.build.usb_manufacturer="Adafruit LLC" +adafruitfeatherpicoprobe.build.usb_product="Feather RP2040 (picoprobe)" adafruitfeatherpicoprobe.build.vid=0x239a adafruitfeatherpicoprobe.build.pid=0x80f1 adafruitfeatherpicoprobe.menu.flash.8388608_0=8MB (no FS) @@ -518,6 +526,8 @@ generic.build.core=rp2040 generic.build.mcu=rp2040 generic.build.ldscript=memmap_default.ld generic.build.boot2=boot2_generic_03h_4_padded_checksum +generic.build.usb_manufacturer="Generic" +generic.build.usb_product="Generic RP2040" generic.build.vid=0x2e8a generic.build.pid=0xf00a generic.menu.flash.2097152_0=2MB (no FS) @@ -651,6 +661,8 @@ genericpicoprobe.build.core=rp2040 genericpicoprobe.build.mcu=rp2040 genericpicoprobe.build.ldscript=memmap_default.ld genericpicoprobe.build.boot2=boot2_generic_03h_4_padded_checksum +genericpicoprobe.build.usb_manufacturer="Generic" +genericpicoprobe.build.usb_product="Generic RP2040 (picoprobe)" genericpicoprobe.build.vid=0x2e8a genericpicoprobe.build.pid=0xf00a genericpicoprobe.menu.flash.2097152_0=2MB (no FS) From 0de7f3eeb638fe7c053245304a9724cf3df184f9 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 10 May 2021 19:11:14 +0700 Subject: [PATCH 06/12] fix typo in tinyusb lib --- libraries/Adafruit_TinyUSB_Arduino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino index 18ea1645f..a4a93035c 160000 --- a/libraries/Adafruit_TinyUSB_Arduino +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -1 +1 @@ -Subproject commit 18ea1645f366a1e7dd0d276ce1ea7f483bdf0e13 +Subproject commit a4a93035c68e14c13b9a89e6af21ea7c509efb1e From fda1b8f83d3a9b2cbb81d7f1adb011f9f44e59ad Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 18 May 2021 00:56:51 +0700 Subject: [PATCH 07/12] sync with master updating implementation --- cores/rp2040/RP2040USB.cpp | 4 ++++ cores/rp2040/delay.cpp | 4 +++- cores/rp2040/main.cpp | 2 +- libraries/Adafruit_TinyUSB_Arduino | 2 +- platform.txt | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cores/rp2040/RP2040USB.cpp b/cores/rp2040/RP2040USB.cpp index a35ed8588..716ec36a9 100644 --- a/cores/rp2040/RP2040USB.cpp +++ b/cores/rp2040/RP2040USB.cpp @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef USE_TINYUSB + #include #include "CoreMutex.h" #include "RP2040USB.h" @@ -317,3 +319,5 @@ void tud_hid_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uin (void) bufsize; } +#endif + diff --git a/cores/rp2040/delay.cpp b/cores/rp2040/delay.cpp index 38c2a540b..b61a53640 100644 --- a/cores/rp2040/delay.cpp +++ b/cores/rp2040/delay.cpp @@ -29,8 +29,10 @@ extern "C" { void yield(void) { +#ifdef USE_TINYUSB TinyUSB_Device_Task(); TinyUSB_Device_FlushCDC(); +#endif } void delay( unsigned long ms ) { @@ -43,7 +45,7 @@ void delay( unsigned long ms ) { // TODO better implementation later // More detail https://github.com/adafruit/circuitpython/pull/2956 while (ms--) { - yield(); +// yield(); sleep_ms(1); } } diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index 53b6102ae..08be1fbe9 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -59,11 +59,11 @@ extern "C" int main() { mutex_init(&_pioMutex); initVariant(); - __USBStart(); #ifdef USE_TINYUSB TinyUSB_Device_Init(0); #else + __USBStart(); #ifndef DISABLE_USB_SERIAL // Enable serial port for reset/upload always Serial.begin(); diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino index a4a93035c..779dc3f13 160000 --- a/libraries/Adafruit_TinyUSB_Arduino +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -1 +1 @@ -Subproject commit a4a93035c68e14c13b9a89e6af21ea7c509efb1e +Subproject commit 779dc3f13fbf61ef34f8d546d97e820c50bc4db0 diff --git a/platform.txt b/platform.txt index 63a95a0b0..a7e806f83 100644 --- a/platform.txt +++ b/platform.txt @@ -110,7 +110,7 @@ recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compil ## Combine gc-sections, archives, and objects recipe.hooks.linking.prelink.1.pattern="{runtime.tools.pqt-python3.path}/python3" "{runtime.platform.path}/tools/simplesub.py" --input "{runtime.platform.path}/lib/memmap_default.ld" --out "{build.path}/memmap_default.ld" --sub __FLASH_LENGTH__ {build.flash_length} --sub __EEPROM_START__ {build.eeprom_start} --sub __FS_START__ {build.fs_start} --sub __FS_END__ {build.fs_end} -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-Wl,--script={build.path}/memmap_default.ld" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nosys.specs -Wl,--as-needed -Wl,--start-group {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" -Wl,--whole-archive "{runtime.platform.path}/lib/libpico.a" -Wl,--no-whole-archive -lm "-I{runtime.platform.path}/pico-sdk/src/rp2040/hardware_regs/include/" "-I{runtime.platform.path}/pico-sdk/src/common/pico_binary_info/include" "{runtime.platform.path}/assembly/{build.boot2}.S" -lc -lstdc++ -Wl,--end-group +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-Wl,--script={build.path}/memmap_default.ld" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nosys.specs -Wl,--as-needed -Wl,--start-group {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" "{runtime.platform.path}/lib/libpico.a" -lm "-I{runtime.platform.path}/pico-sdk/src/rp2040/hardware_regs/include/" "-I{runtime.platform.path}/pico-sdk/src/common/pico_binary_info/include" "{runtime.platform.path}/assembly/{build.boot2}.S" -lc -lstdc++ -Wl,--end-group ## Create output (UF2 file) recipe.objcopy.uf2.pattern="{runtime.tools.pqt-elf2uf2.path}/elf2uf2" "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.uf2" From 04ceed79a08ca3de16e45ae5ff5f30cb93fa9f3b Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Mon, 17 May 2021 15:23:57 -0700 Subject: [PATCH 08/12] Rationalize link stage command line Make the build process less insane. --- platform.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index b30458014..4b1d76a77 100644 --- a/platform.txt +++ b/platform.txt @@ -42,11 +42,12 @@ compiler.defines={build.led} compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" compiler.flags=-Os -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt" +compiler.libpico="{runtime.platform.path}/lib/libpico.a" compiler.c.cmd=arm-none-eabi-gcc compiler.c.flags=-c {compiler.defines} {compiler.flags} {compiler.includes} -std=gnu17 -g compiler.c.elf.cmd=arm-none-eabi-g++ -compiler.c.elf.flags={compiler.defines} {compiler.flags} -Wl,--gc-sections -u _printf_float -u _scanf_float +compiler.c.elf.flags={compiler.defines} {compiler.flags} -u _printf_float -u _scanf_float compiler.S.cmd=arm-none-eabi-gcc compiler.S.flags=-c -g -x assembler-with-cpp -MMD {compiler.includes} -g compiler.cpp.cmd=arm-none-eabi-g++ @@ -107,9 +108,14 @@ recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.u archive_file_path={build.path}/{archive_file} recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" -## Combine gc-sections, archives, and objects +## Generate the linker map with specific flash sizes/locations recipe.hooks.linking.prelink.1.pattern="{runtime.tools.pqt-python3.path}/python3" "{runtime.platform.path}/tools/simplesub.py" --input "{runtime.platform.path}/lib/memmap_default.ld" --out "{build.path}/memmap_default.ld" --sub __FLASH_LENGTH__ {build.flash_length} --sub __EEPROM_START__ {build.eeprom_start} --sub __FS_START__ {build.fs_start} --sub __FS_END__ {build.fs_end} -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-Wl,--script={build.path}/memmap_default.ld" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nosys.specs -Wl,--as-needed -Wl,--start-group {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" -Wl,--whole-archive "{runtime.platform.path}/lib/libpico.a" -Wl,--no-whole-archive -lm "-I{runtime.platform.path}/pico-sdk/src/rp2040/hardware_regs/include/" "-I{runtime.platform.path}/pico-sdk/src/common/pico_binary_info/include" "{runtime.platform.path}/assembly/{build.boot2}.S" -lc -lstdc++ -Wl,--end-group + +## Compile the boot stage 2 blob +recipe.hooks.linking.prelink.2.pattern="{compiler.path}{compiler.S.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -c "{runtime.platform.path}/assembly/{build.boot2}.S" "-I{runtime.platform.path}/pico-sdk/src/rp2040/hardware_regs/include/" "-I{runtime.platform.path}/pico-sdk/src/common/pico_binary_info/include" -o "{build.path}/boot2.o" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} {compiler.ldflags} "-Wl,--script={build.path}/memmap_default.ld" "-Wl,-Map,{build.path}/{build.project_name}.map" -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{build.path}/{archive_file}" "{build.path}/boot2.o" {compiler.libpico} -lm -lc -lstdc++ -lc -Wl,--end-group ## Create output (UF2 file) recipe.objcopy.uf2.pattern="{runtime.tools.pqt-elf2uf2.path}/elf2uf2" "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.uf2" From f9cc4019b9ab5fb98989d3f7e763df602bfd5d58 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 18 May 2021 15:55:58 +0700 Subject: [PATCH 09/12] clean up delay --- cores/rp2040/TinyUSB/tusb_config.h | 2 ++ cores/rp2040/delay.cpp | 26 ++++++++++---------------- cores/rp2040/main.cpp | 6 ++++-- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/cores/rp2040/TinyUSB/tusb_config.h b/cores/rp2040/TinyUSB/tusb_config.h index 523af746f..cd88643af 100644 --- a/cores/rp2040/TinyUSB/tusb_config.h +++ b/cores/rp2040/TinyUSB/tusb_config.h @@ -38,7 +38,9 @@ #define CFG_TUSB_RHPORT0_MODE OPT_MODE_NONE #endif +//#ifndef CFG_TUSB_MCU // #define CFG_TUSB_MCU OPT_MCU_RP2040 +//#endif #define CFG_TUSB_OS OPT_OS_PICO #define CFG_TUSB_DEBUG 0 diff --git a/cores/rp2040/delay.cpp b/cores/rp2040/delay.cpp index b61a53640..eb5d571ef 100644 --- a/cores/rp2040/delay.cpp +++ b/cores/rp2040/delay.cpp @@ -28,26 +28,12 @@ extern "C" { -void yield(void) { -#ifdef USE_TINYUSB - TinyUSB_Device_Task(); - TinyUSB_Device_FlushCDC(); -#endif -} - void delay( unsigned long ms ) { if (!ms) { return; } - // Call wfe/wfi while have pending USB event can starve the task. - // If there is no alarm interrupt to help wake up MCU. - // TODO better implementation later - // More detail https://github.com/adafruit/circuitpython/pull/2956 - while (ms--) { -// yield(); - sleep_ms(1); - } + sleep_ms(ms); } void delayMicroseconds( unsigned int usec ) { @@ -57,6 +43,14 @@ void delayMicroseconds( unsigned int usec ) { sleep_us(usec); } +void yield() { +#ifdef USE_TINYUSB + TinyUSB_Device_Task(); + TinyUSB_Device_FlushCDC(); +#endif +} + + uint32_t millis() { return to_ms_since_boot(get_absolute_time()); } @@ -65,4 +59,4 @@ uint32_t micros() { return to_us_since_boot(get_absolute_time()); } -} +} // extern C diff --git a/cores/rp2040/main.cpp b/cores/rp2040/main.cpp index 08be1fbe9..44647dec0 100644 --- a/cores/rp2040/main.cpp +++ b/cores/rp2040/main.cpp @@ -62,12 +62,14 @@ extern "C" int main() { #ifdef USE_TINYUSB TinyUSB_Device_Init(0); + #else __USBStart(); -#ifndef DISABLE_USB_SERIAL + + #ifndef DISABLE_USB_SERIAL // Enable serial port for reset/upload always Serial.begin(); -#endif + #endif #endif #if defined DEBUG_RP2040_PORT From b1b3e5d6fdacd0d1aa2887771c80ed727e05a887 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 18 May 2021 16:07:34 +0700 Subject: [PATCH 10/12] clean up platform and board --- boards.txt | 12 ++++++------ platform.txt | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/boards.txt b/boards.txt index 22b8535b1..c89edb1ee 100644 --- a/boards.txt +++ b/boards.txt @@ -109,7 +109,7 @@ rpipico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI rpipico.menu.dbglvl.NDEBUG=NDEBUG rpipico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipico.menu.usbstack.picosdk=Built-in -rpipico.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +rpipico.menu.usbstack.picosdk.build.flags.usbstack= rpipico.menu.usbstack.tinyusb=TinyUSB rpipico.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" @@ -216,7 +216,7 @@ rpipicopicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_R rpipicopicoprobe.menu.dbglvl.NDEBUG=NDEBUG rpipicopicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG rpipicopicoprobe.menu.usbstack.picosdk=Built-in -rpipicopicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +rpipicopicoprobe.menu.usbstack.picosdk.build.flags.usbstack= rpipicopicoprobe.menu.usbstack.tinyusb=TinyUSB rpipicopicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" @@ -359,7 +359,7 @@ adafruitfeather.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP adafruitfeather.menu.dbglvl.NDEBUG=NDEBUG adafruitfeather.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruitfeather.menu.usbstack.picosdk=Built-in -adafruitfeather.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +adafruitfeather.menu.usbstack.picosdk.build.flags.usbstack= adafruitfeather.menu.usbstack.tinyusb=TinyUSB adafruitfeather.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" @@ -502,7 +502,7 @@ adafruitfeatherpicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE - adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG=NDEBUG adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG adafruitfeatherpicoprobe.menu.usbstack.picosdk=Built-in -adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.flags.usbstack= adafruitfeatherpicoprobe.menu.usbstack.tinyusb=TinyUSB adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" @@ -637,7 +637,7 @@ generic.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w25x10cl_2 generic.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 generic.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum generic.menu.usbstack.picosdk=Built-in -generic.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +generic.menu.usbstack.picosdk.build.flags.usbstack= generic.menu.usbstack.tinyusb=TinyUSB generic.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" @@ -772,6 +772,6 @@ genericpicoprobe.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum genericpicoprobe.menu.usbstack.picosdk=Built-in -genericpicoprobe.menu.usbstack.picosdk.build.flags.usbstack="-I{runtime.platform.path}/pico-sdk/lib/tinyusb/src/" +genericpicoprobe.menu.usbstack.picosdk.build.flags.usbstack= genericpicoprobe.menu.usbstack.tinyusb=TinyUSB genericpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" diff --git a/platform.txt b/platform.txt index 5fb88a39a..fe9a60ab1 100644 --- a/platform.txt +++ b/platform.txt @@ -38,7 +38,7 @@ compiler.warning_flags.default= compiler.warning_flags.more=-Wall compiler.warning_flags.all=-Wall -Wextra -compiler.defines={build.led} {build.flags.usbstack} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} +compiler.defines={build.led} {build.flags.usbstack} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" compiler.flags=-Os -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt" From b8272ae37603b1c6bfa3739cc8314c3594fc658e Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 18 May 2021 16:52:01 +0700 Subject: [PATCH 11/12] update makeboards.py for generating usbstack menu --- boards.txt | 100 ++++++++++++++++++++++++++------------------ platform.txt | 4 +- tools/makeboards.py | 33 +++++++++++---- 3 files changed, 86 insertions(+), 51 deletions(-) diff --git a/boards.txt b/boards.txt index c89edb1ee..0cf0d8330 100644 --- a/boards.txt +++ b/boards.txt @@ -6,6 +6,9 @@ menu.dbglvl=Debug Level menu.boot2=Boot Stage 2 menu.usbstack=USB Stack +# ----------------------------------- +# Raspberry Pi Pico +# ----------------------------------- rpipico.name=Raspberry Pi Pico rpipico.vid.0=0x2e8a rpipico.pid.0=0x000a @@ -26,10 +29,10 @@ rpipico.build.core=rp2040 rpipico.build.mcu=rp2040 rpipico.build.ldscript=memmap_default.ld rpipico.build.boot2=boot2_w25q080_2_padded_checksum -rpipico.build.usb_manufacturer="Raspberry Pi" -rpipico.build.usb_product="Pico" rpipico.build.vid=0x2e8a rpipico.build.pid=0x000a +rpipico.build.usb_manufacturer="Raspberry Pi" +rpipico.build.usb_product="Pico" rpipico.menu.flash.2097152_0=2MB (no FS) rpipico.menu.flash.2097152_0.upload.maximum_size=2093056 rpipico.menu.flash.2097152_0.build.flash_length=2093056 @@ -108,11 +111,14 @@ rpipico.menu.dbglvl.All=All rpipico.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE rpipico.menu.dbglvl.NDEBUG=NDEBUG rpipico.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -rpipico.menu.usbstack.picosdk=Built-in -rpipico.menu.usbstack.picosdk.build.flags.usbstack= -rpipico.menu.usbstack.tinyusb=TinyUSB -rpipico.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +rpipico.menu.usbstack.picosdk=Pico SDK +rpipico.menu.usbstack.picosdk.build.usbstack_flags= +rpipico.menu.usbstack.tinyusb=Adafruit TinyUSB +rpipico.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +# ----------------------------------- +# Raspberry Pi Pico (Picoprobe) +# ----------------------------------- rpipicopicoprobe.name=Raspberry Pi Pico (Picoprobe) rpipicopicoprobe.vid.0=0x2e8a rpipicopicoprobe.pid.0=0x0004 @@ -133,10 +139,10 @@ rpipicopicoprobe.build.core=rp2040 rpipicopicoprobe.build.mcu=rp2040 rpipicopicoprobe.build.ldscript=memmap_default.ld rpipicopicoprobe.build.boot2=boot2_w25q080_2_padded_checksum -rpipicopicoprobe.build.usb_manufacturer="Raspberry Pi" -rpipicopicoprobe.build.usb_product="Pico (picoprobe)" rpipicopicoprobe.build.vid=0x2e8a rpipicopicoprobe.build.pid=0x000a +rpipicopicoprobe.build.usb_manufacturer="Raspberry Pi" +rpipicopicoprobe.build.usb_product="Pico (Picoprobe)" rpipicopicoprobe.menu.flash.2097152_0=2MB (no FS) rpipicopicoprobe.menu.flash.2097152_0.upload.maximum_size=2093056 rpipicopicoprobe.menu.flash.2097152_0.build.flash_length=2093056 @@ -215,15 +221,18 @@ rpipicopicoprobe.menu.dbglvl.All=All rpipicopicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE rpipicopicoprobe.menu.dbglvl.NDEBUG=NDEBUG rpipicopicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -rpipicopicoprobe.menu.usbstack.picosdk=Built-in -rpipicopicoprobe.menu.usbstack.picosdk.build.flags.usbstack= -rpipicopicoprobe.menu.usbstack.tinyusb=TinyUSB -rpipicopicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +rpipicopicoprobe.menu.usbstack.picosdk=Pico SDK +rpipicopicoprobe.menu.usbstack.picosdk.build.usbstack_flags= +rpipicopicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB +rpipicopicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +# ----------------------------------- +# Adafruit Feather RP2040 +# ----------------------------------- adafruitfeather.name=Adafruit Feather RP2040 -adafruitfeather.vid.0=0x2e8a -adafruitfeather.pid.0=0x000b -adafruitfeather.build.usbpid=-DSERIALUSB_PID=0x000b +adafruitfeather.vid.0=0x239a +adafruitfeather.pid.0=0x80f1 +adafruitfeather.build.usbpid=-DSERIALUSB_PID=0x80f1 adafruitfeather.build.board=ADAFRUIT_FEATHER_RP2040 adafruitfeather.build.mcu=cortex-m0plus adafruitfeather.build.variant=adafruitfeather @@ -240,10 +249,10 @@ adafruitfeather.build.core=rp2040 adafruitfeather.build.mcu=rp2040 adafruitfeather.build.ldscript=memmap_default.ld adafruitfeather.build.boot2=boot2_w25x10cl_4_padded_checksum -adafruitfeather.build.usb_manufacturer="Adafruit LLC" -adafruitfeather.build.usb_product="Feather RP2040" adafruitfeather.build.vid=0x239a adafruitfeather.build.pid=0x80f1 +adafruitfeather.build.usb_manufacturer="Adafruit" +adafruitfeather.build.usb_product="Feather RP2040" adafruitfeather.menu.flash.8388608_0=8MB (no FS) adafruitfeather.menu.flash.8388608_0.upload.maximum_size=8384512 adafruitfeather.menu.flash.8388608_0.build.flash_length=8384512 @@ -358,15 +367,18 @@ adafruitfeather.menu.dbglvl.All=All adafruitfeather.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE adafruitfeather.menu.dbglvl.NDEBUG=NDEBUG adafruitfeather.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -adafruitfeather.menu.usbstack.picosdk=Built-in -adafruitfeather.menu.usbstack.picosdk.build.flags.usbstack= -adafruitfeather.menu.usbstack.tinyusb=TinyUSB -adafruitfeather.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruitfeather.menu.usbstack.picosdk=Pico SDK +adafruitfeather.menu.usbstack.picosdk.build.usbstack_flags= +adafruitfeather.menu.usbstack.tinyusb=Adafruit TinyUSB +adafruitfeather.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +# ----------------------------------- +# Adafruit Feather RP2040 (Picoprobe) +# ----------------------------------- adafruitfeatherpicoprobe.name=Adafruit Feather RP2040 (Picoprobe) -adafruitfeatherpicoprobe.vid.0=0x2e8a +adafruitfeatherpicoprobe.vid.0=0x239a adafruitfeatherpicoprobe.pid.0=0x0004 -adafruitfeatherpicoprobe.build.usbpid=-DSERIALUSB_PID=0x000b +adafruitfeatherpicoprobe.build.usbpid=-DSERIALUSB_PID=0x80f1 adafruitfeatherpicoprobe.build.board=ADAFRUIT_FEATHER_RP2040 adafruitfeatherpicoprobe.build.mcu=cortex-m0plus adafruitfeatherpicoprobe.build.variant=adafruitfeather @@ -383,10 +395,10 @@ adafruitfeatherpicoprobe.build.core=rp2040 adafruitfeatherpicoprobe.build.mcu=rp2040 adafruitfeatherpicoprobe.build.ldscript=memmap_default.ld adafruitfeatherpicoprobe.build.boot2=boot2_w25x10cl_4_padded_checksum -adafruitfeatherpicoprobe.build.usb_manufacturer="Adafruit LLC" -adafruitfeatherpicoprobe.build.usb_product="Feather RP2040 (picoprobe)" adafruitfeatherpicoprobe.build.vid=0x239a adafruitfeatherpicoprobe.build.pid=0x80f1 +adafruitfeatherpicoprobe.build.usb_manufacturer="Adafruit" +adafruitfeatherpicoprobe.build.usb_product="Feather RP2040 (Picoprobe)" adafruitfeatherpicoprobe.menu.flash.8388608_0=8MB (no FS) adafruitfeatherpicoprobe.menu.flash.8388608_0.upload.maximum_size=8384512 adafruitfeatherpicoprobe.menu.flash.8388608_0.build.flash_length=8384512 @@ -501,11 +513,14 @@ adafruitfeatherpicoprobe.menu.dbglvl.All=All adafruitfeatherpicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG=NDEBUG adafruitfeatherpicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG -adafruitfeatherpicoprobe.menu.usbstack.picosdk=Built-in -adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.flags.usbstack= -adafruitfeatherpicoprobe.menu.usbstack.tinyusb=TinyUSB -adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +adafruitfeatherpicoprobe.menu.usbstack.picosdk=Pico SDK +adafruitfeatherpicoprobe.menu.usbstack.picosdk.build.usbstack_flags= +adafruitfeatherpicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB +adafruitfeatherpicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +# ----------------------------------- +# Generic RP2040 +# ----------------------------------- generic.name=Generic RP2040 generic.vid.0=0x2e8a generic.pid.0=0xf00a @@ -526,10 +541,10 @@ generic.build.core=rp2040 generic.build.mcu=rp2040 generic.build.ldscript=memmap_default.ld generic.build.boot2=boot2_generic_03h_4_padded_checksum -generic.build.usb_manufacturer="Generic" -generic.build.usb_product="Generic RP2040" generic.build.vid=0x2e8a generic.build.pid=0xf00a +generic.build.usb_manufacturer="Generic" +generic.build.usb_product="RP2040" generic.menu.flash.2097152_0=2MB (no FS) generic.menu.flash.2097152_0.upload.maximum_size=2093056 generic.menu.flash.2097152_0.build.flash_length=2093056 @@ -620,6 +635,10 @@ generic.menu.dbglvl.All=All generic.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE generic.menu.dbglvl.NDEBUG=NDEBUG generic.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +generic.menu.usbstack.picosdk=Pico SDK +generic.menu.usbstack.picosdk.build.usbstack_flags= +generic.menu.usbstack.tinyusb=Adafruit TinyUSB +generic.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" generic.menu.boot2.boot2_generic_03h_2_padded_checksum=Generic SPI /2 generic.menu.boot2.boot2_generic_03h_2_padded_checksum.build.boot2=boot2_generic_03h_2_padded_checksum generic.menu.boot2.boot2_generic_03h_4_padded_checksum=Generic SPI /4 @@ -636,11 +655,10 @@ generic.menu.boot2.boot2_w25x10cl_2_padded_checksum=W25X10CL QSPI /2 generic.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w25x10cl_2_padded_checksum generic.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 generic.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum -generic.menu.usbstack.picosdk=Built-in -generic.menu.usbstack.picosdk.build.flags.usbstack= -generic.menu.usbstack.tinyusb=TinyUSB -generic.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +# ----------------------------------- +# Generic RP2040 (Picoprobe) +# ----------------------------------- genericpicoprobe.name=Generic RP2040 (Picoprobe) genericpicoprobe.vid.0=0x2e8a genericpicoprobe.pid.0=0x0004 @@ -661,10 +679,10 @@ genericpicoprobe.build.core=rp2040 genericpicoprobe.build.mcu=rp2040 genericpicoprobe.build.ldscript=memmap_default.ld genericpicoprobe.build.boot2=boot2_generic_03h_4_padded_checksum -genericpicoprobe.build.usb_manufacturer="Generic" -genericpicoprobe.build.usb_product="Generic RP2040 (picoprobe)" genericpicoprobe.build.vid=0x2e8a genericpicoprobe.build.pid=0xf00a +genericpicoprobe.build.usb_manufacturer="Generic" +genericpicoprobe.build.usb_product="RP2040 (Picoprobe)" genericpicoprobe.menu.flash.2097152_0=2MB (no FS) genericpicoprobe.menu.flash.2097152_0.upload.maximum_size=2093056 genericpicoprobe.menu.flash.2097152_0.build.flash_length=2093056 @@ -755,6 +773,10 @@ genericpicoprobe.menu.dbglvl.All=All genericpicoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE genericpicoprobe.menu.dbglvl.NDEBUG=NDEBUG genericpicoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +genericpicoprobe.menu.usbstack.picosdk=Pico SDK +genericpicoprobe.menu.usbstack.picosdk.build.usbstack_flags= +genericpicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB +genericpicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" genericpicoprobe.menu.boot2.boot2_generic_03h_2_padded_checksum=Generic SPI /2 genericpicoprobe.menu.boot2.boot2_generic_03h_2_padded_checksum.build.boot2=boot2_generic_03h_2_padded_checksum genericpicoprobe.menu.boot2.boot2_generic_03h_4_padded_checksum=Generic SPI /4 @@ -771,7 +793,3 @@ genericpicoprobe.menu.boot2.boot2_w25x10cl_2_padded_checksum=W25X10CL QSPI /2 genericpicoprobe.menu.boot2.boot2_w25x10cl_2_padded_checksum.build.boot2=boot2_w25x10cl_2_padded_checksum genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum=W25X10CL QSPI /4 genericpicoprobe.menu.boot2.boot2_w25x10cl_4_padded_checksum.build.boot2=boot2_w25x10cl_4_padded_checksum -genericpicoprobe.menu.usbstack.picosdk=Built-in -genericpicoprobe.menu.usbstack.picosdk.build.flags.usbstack= -genericpicoprobe.menu.usbstack.tinyusb=TinyUSB -genericpicoprobe.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" diff --git a/platform.txt b/platform.txt index fe9a60ab1..538089422 100644 --- a/platform.txt +++ b/platform.txt @@ -38,7 +38,7 @@ compiler.warning_flags.default= compiler.warning_flags.more=-Wall compiler.warning_flags.all=-Wall -Wextra -compiler.defines={build.led} {build.flags.usbstack} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' +compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" compiler.flags=-Os -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt" @@ -81,7 +81,7 @@ build.flash_length= build.eeprom_start= build.fs_start= build.fs_end= -build.flags.usbstack= +build.usbstack_flags= build.boot2=boot2_generic_03h_4_padded_checksum diff --git a/tools/makeboards.py b/tools/makeboards.py index 72681abc9..bf52b4d75 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -44,9 +44,20 @@ def BuildBoot(name): print("%s.menu.boot2.%s=%s" % (name, l[1], l[0])) print("%s.menu.boot2.%s.build.boot2=%s" % (name, l[1], l[1])) -def BuildHeader(name, prettyname, pidtouse, pid, boarddefine, variant, uploadtool, flashsize, boot2): +def BuildUSBStack(name): + print("%s.menu.usbstack.picosdk=Pico SDK" % (name)) + print("%s.menu.usbstack.picosdk.build.usbstack_flags=" % (name)) + print("%s.menu.usbstack.tinyusb=Adafruit TinyUSB" % (name)) + print('%s.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"' % (name)) + +def BuildHeader(name, vendor_name, product_name, pidtouse, vid, pid, boarddefine, variant, uploadtool, flashsize, boot2): + prettyname = vendor_name + " " + product_name + print() + print("# -----------------------------------") + print("# %s" % (prettyname)) + print("# -----------------------------------") print("%s.name=%s" % (name, prettyname)) - print("%s.vid.0=0x2e8a" % (name)) + print("%s.vid.0=%s" % (name, vid)) print("%s.pid.0=%s" % (name, pidtouse)) print("%s.build.usbpid=-DSERIALUSB_PID=%s" % (name, pid)) print("%s.build.board=%s" % (name, boarddefine)) @@ -65,6 +76,10 @@ def BuildHeader(name, prettyname, pidtouse, pid, boarddefine, variant, uploadtoo print("%s.build.mcu=rp2040" % (name)) print("%s.build.ldscript=memmap_default.ld" % (name)) print("%s.build.boot2=%s" % (name, boot2)) + print("%s.build.vid=%s" % (name, vid)) + print("%s.build.pid=%s" % (name, pid)) + print('%s.build.usb_manufacturer="%s"' % (name, vendor_name)) + print('%s.build.usb_product="%s"' % (name, product_name)) def BuildGlobalMenuList(): print("menu.BoardModel=Model") @@ -73,12 +88,13 @@ def BuildGlobalMenuList(): print("menu.dbgport=Debug Port") print("menu.dbglvl=Debug Level") print("menu.boot2=Boot Stage 2") + print("menu.usbstack=USB Stack") -def MakeBoard(name, prettyname, pid, boarddefine, flashsizemb, boot2): +def MakeBoard(name, vendor_name, product_name, vid, pid, boarddefine, flashsizemb, boot2): for a, b, c in [ ["", "", "uf2conv"], ["picoprobe", " (Picoprobe)", "picoprobe"]]: n = name + a - p = prettyname + b + p = product_name + b fssizelist = [ 0, 64 * 1024, 128 * 1024, 256 * 1024, 512 * 1024 ] for i in range(1, flashsizemb): fssizelist.append(i * 1024 * 1024) @@ -86,7 +102,7 @@ def MakeBoard(name, prettyname, pid, boarddefine, flashsizemb, boot2): pidtouse = '0x0004' else: pidtouse = pid - BuildHeader(n, p, pidtouse, pid, boarddefine, name, c, flashsizemb * 1024 * 1024, boot2) + BuildHeader(n, vendor_name, p, pidtouse, vid, pid, boarddefine, name, c, flashsizemb * 1024 * 1024, boot2) if name == "generic": BuildFlashMenu(n, 2*1024*1024, [0, 1*1024*1024]) BuildFlashMenu(n, 4*1024*1024, [0, 2*1024*1024]) @@ -97,12 +113,13 @@ def MakeBoard(name, prettyname, pid, boarddefine, flashsizemb, boot2): BuildFreq(n) BuildDebugPort(n) BuildDebugLevel(n) + BuildUSBStack(n) if name == "generic": BuildBoot(n) BuildGlobalMenuList() -MakeBoard("rpipico", "Raspberry Pi Pico", "0x000a", "RASPBERRY_PI_PICO", 2, "boot2_w25q080_2_padded_checksum") -MakeBoard("adafruitfeather", "Adafruit Feather RP2040", "0x000b", "ADAFRUIT_FEATHER_RP2040", 8, "boot2_w25x10cl_4_padded_checksum") -MakeBoard("generic", "Generic RP2040", "0xf00a", "GENERIC_RP2040", 16, "boot2_generic_03h_4_padded_checksum") +MakeBoard("rpipico", "Raspberry Pi", "Pico", "0x2e8a", "0x000a", "RASPBERRY_PI_PICO", 2, "boot2_w25q080_2_padded_checksum") +MakeBoard("adafruitfeather", "Adafruit", "Feather RP2040", "0x239a", "0x80f1", "ADAFRUIT_FEATHER_RP2040", 8, "boot2_w25x10cl_4_padded_checksum") +MakeBoard("generic", "Generic", "RP2040", "0x2e8a", "0xf00a", "GENERIC_RP2040", 16, "boot2_generic_03h_4_padded_checksum") From 8ffea3211224c2394f7966e2156606c3df34a4fd Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 18 May 2021 17:25:09 +0700 Subject: [PATCH 12/12] update tinyusb lib to 1.0.0 --- libraries/Adafruit_TinyUSB_Arduino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Adafruit_TinyUSB_Arduino b/libraries/Adafruit_TinyUSB_Arduino index 779dc3f13..1b8b9c9b0 160000 --- a/libraries/Adafruit_TinyUSB_Arduino +++ b/libraries/Adafruit_TinyUSB_Arduino @@ -1 +1 @@ -Subproject commit 779dc3f13fbf61ef34f8d546d97e820c50bc4db0 +Subproject commit 1b8b9c9b071065235341d0e503f2d6d05de19524