diff --git a/README.md b/README.md index 5d285e5..96258b9 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Pimoroni PGA2040 * Seeed Indicator RP2040 * Seeed XIAO RP2040 +* Silicognition RP2040-Shim * Solder Party RP2040 Stamp * SparkFun ProMicro RP2040 * SparkFun Thing Plus RP2040 diff --git a/boards.txt b/boards.txt index 5b43cbb..ff20604 100644 --- a/boards.txt +++ b/boards.txt @@ -10964,6 +10964,224 @@ pimoroni_plasma2040.menu.uploadmethod.picodebug.upload.maximum_data_size=245760 pimoroni_plasma2040.menu.uploadmethod.picodebug.upload.tool=picodebug pimoroni_plasma2040.menu.uploadmethod.picodebug.upload.tool.default=picodebug +# ----------------------------------- +# Silicognition RP2040-Shim +# ----------------------------------- +silicognition_rp2040_shim.name=Silicognition RP2040-Shim +silicognition_rp2040_shim.vid.0=0x1209 +silicognition_rp2040_shim.pid.0=0xf502 +silicognition_rp2040_shim.vid.1=0x1209 +silicognition_rp2040_shim.pid.1=0xf502 +silicognition_rp2040_shim.vid.2=0x1209 +silicognition_rp2040_shim.pid.2=0xf502 +silicognition_rp2040_shim.vid.3=0x1209 +silicognition_rp2040_shim.pid.3=0xf502 +silicognition_rp2040_shim.vid.4=0x1209 +silicognition_rp2040_shim.pid.4=0xf502 +silicognition_rp2040_shim.vid.5=0x1209 +silicognition_rp2040_shim.pid.5=0xf502 +silicognition_rp2040_shim.vid.6=0x1209 +silicognition_rp2040_shim.pid.6=0xf502 +silicognition_rp2040_shim.vid.7=0x1209 +silicognition_rp2040_shim.pid.7=0xf502 +silicognition_rp2040_shim.build.usbvid=-DUSBD_VID=0x1209 +silicognition_rp2040_shim.build.usbpid=-DUSBD_PID=0xf502 +silicognition_rp2040_shim.build.usbpwr=-DUSBD_MAX_POWER_MA=500 +silicognition_rp2040_shim.build.board=SILICOGNITION_RP2040_SHIM +silicognition_rp2040_shim.build.mcu=cortex-m0plus +silicognition_rp2040_shim.build.variant=silicognition_rp2040_shim +silicognition_rp2040_shim.upload.maximum_size=4194304 +silicognition_rp2040_shim.upload.wait_for_upload_port=true +silicognition_rp2040_shim.upload.erase_cmd= +silicognition_rp2040_shim.serial.disableDTR=false +silicognition_rp2040_shim.serial.disableRTS=false +silicognition_rp2040_shim.build.f_cpu=125000000 +silicognition_rp2040_shim.build.led= +silicognition_rp2040_shim.build.core=rp2040 +silicognition_rp2040_shim.build.ldscript=memmap_default.ld +silicognition_rp2040_shim.build.boot2=boot2_generic_03h_4_padded_checksum +silicognition_rp2040_shim.build.usb_manufacturer="Silicognition" +silicognition_rp2040_shim.build.usb_product="RP2040-Shim" +silicognition_rp2040_shim.menu.flash.4194304_0=4MB (no FS) +silicognition_rp2040_shim.menu.flash.4194304_0.upload.maximum_size=4190208 +silicognition_rp2040_shim.menu.flash.4194304_0.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_0.build.flash_length=4190208 +silicognition_rp2040_shim.menu.flash.4194304_0.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_0.build.fs_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_0.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_65536=4MB (Sketch: 4032KB, FS: 64KB) +silicognition_rp2040_shim.menu.flash.4194304_65536.upload.maximum_size=4124672 +silicognition_rp2040_shim.menu.flash.4194304_65536.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_65536.build.flash_length=4124672 +silicognition_rp2040_shim.menu.flash.4194304_65536.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_65536.build.fs_start=272560128 +silicognition_rp2040_shim.menu.flash.4194304_65536.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_131072=4MB (Sketch: 3968KB, FS: 128KB) +silicognition_rp2040_shim.menu.flash.4194304_131072.upload.maximum_size=4059136 +silicognition_rp2040_shim.menu.flash.4194304_131072.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_131072.build.flash_length=4059136 +silicognition_rp2040_shim.menu.flash.4194304_131072.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_131072.build.fs_start=272494592 +silicognition_rp2040_shim.menu.flash.4194304_131072.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_262144=4MB (Sketch: 3840KB, FS: 256KB) +silicognition_rp2040_shim.menu.flash.4194304_262144.upload.maximum_size=3928064 +silicognition_rp2040_shim.menu.flash.4194304_262144.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_262144.build.flash_length=3928064 +silicognition_rp2040_shim.menu.flash.4194304_262144.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_262144.build.fs_start=272363520 +silicognition_rp2040_shim.menu.flash.4194304_262144.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_524288=4MB (Sketch: 3584KB, FS: 512KB) +silicognition_rp2040_shim.menu.flash.4194304_524288.upload.maximum_size=3665920 +silicognition_rp2040_shim.menu.flash.4194304_524288.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_524288.build.flash_length=3665920 +silicognition_rp2040_shim.menu.flash.4194304_524288.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_524288.build.fs_start=272101376 +silicognition_rp2040_shim.menu.flash.4194304_524288.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_1048576=4MB (Sketch: 3MB, FS: 1MB) +silicognition_rp2040_shim.menu.flash.4194304_1048576.upload.maximum_size=3141632 +silicognition_rp2040_shim.menu.flash.4194304_1048576.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_1048576.build.flash_length=3141632 +silicognition_rp2040_shim.menu.flash.4194304_1048576.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_1048576.build.fs_start=271577088 +silicognition_rp2040_shim.menu.flash.4194304_1048576.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_2097152=4MB (Sketch: 2MB, FS: 2MB) +silicognition_rp2040_shim.menu.flash.4194304_2097152.upload.maximum_size=2093056 +silicognition_rp2040_shim.menu.flash.4194304_2097152.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_2097152.build.flash_length=2093056 +silicognition_rp2040_shim.menu.flash.4194304_2097152.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_2097152.build.fs_start=270528512 +silicognition_rp2040_shim.menu.flash.4194304_2097152.build.fs_end=272625664 +silicognition_rp2040_shim.menu.flash.4194304_3145728=4MB (Sketch: 1MB, FS: 3MB) +silicognition_rp2040_shim.menu.flash.4194304_3145728.upload.maximum_size=1044480 +silicognition_rp2040_shim.menu.flash.4194304_3145728.build.flash_total=4194304 +silicognition_rp2040_shim.menu.flash.4194304_3145728.build.flash_length=1044480 +silicognition_rp2040_shim.menu.flash.4194304_3145728.build.eeprom_start=272625664 +silicognition_rp2040_shim.menu.flash.4194304_3145728.build.fs_start=269479936 +silicognition_rp2040_shim.menu.flash.4194304_3145728.build.fs_end=272625664 +silicognition_rp2040_shim.menu.freq.133=133 MHz +silicognition_rp2040_shim.menu.freq.133.build.f_cpu=133000000L +silicognition_rp2040_shim.menu.freq.50=50 MHz +silicognition_rp2040_shim.menu.freq.50.build.f_cpu=50000000L +silicognition_rp2040_shim.menu.freq.100=100 MHz +silicognition_rp2040_shim.menu.freq.100.build.f_cpu=100000000L +silicognition_rp2040_shim.menu.freq.120=120 MHz +silicognition_rp2040_shim.menu.freq.120.build.f_cpu=120000000L +silicognition_rp2040_shim.menu.freq.125=125 MHz +silicognition_rp2040_shim.menu.freq.125.build.f_cpu=125000000L +silicognition_rp2040_shim.menu.freq.150=150 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.150.build.f_cpu=150000000L +silicognition_rp2040_shim.menu.freq.175=175 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.175.build.f_cpu=175000000L +silicognition_rp2040_shim.menu.freq.200=200 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.200.build.f_cpu=200000000L +silicognition_rp2040_shim.menu.freq.225=225 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.225.build.f_cpu=225000000L +silicognition_rp2040_shim.menu.freq.240=240 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.240.build.f_cpu=240000000L +silicognition_rp2040_shim.menu.freq.250=250 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.250.build.f_cpu=250000000L +silicognition_rp2040_shim.menu.freq.275=275 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.275.build.f_cpu=275000000L +silicognition_rp2040_shim.menu.freq.300=300 MHz (Overclock) +silicognition_rp2040_shim.menu.freq.300.build.f_cpu=300000000L +silicognition_rp2040_shim.menu.opt.Small=Small (-Os) (standard) +silicognition_rp2040_shim.menu.opt.Small.build.flags.optimize=-Os +silicognition_rp2040_shim.menu.opt.Optimize=Optimize (-O) +silicognition_rp2040_shim.menu.opt.Optimize.build.flags.optimize=-O +silicognition_rp2040_shim.menu.opt.Optimize2=Optimize More (-O2) +silicognition_rp2040_shim.menu.opt.Optimize2.build.flags.optimize=-O2 +silicognition_rp2040_shim.menu.opt.Optimize3=Optimize Even More (-O3) +silicognition_rp2040_shim.menu.opt.Optimize3.build.flags.optimize=-O3 +silicognition_rp2040_shim.menu.opt.Fast=Fast (-Ofast) (maybe slower) +silicognition_rp2040_shim.menu.opt.Fast.build.flags.optimize=-Ofast +silicognition_rp2040_shim.menu.opt.Debug=Debug (-Og) +silicognition_rp2040_shim.menu.opt.Debug.build.flags.optimize=-Og +silicognition_rp2040_shim.menu.rtti.Disabled=Disabled +silicognition_rp2040_shim.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +silicognition_rp2040_shim.menu.rtti.Enabled=Enabled +silicognition_rp2040_shim.menu.rtti.Enabled.build.flags.rtti= +silicognition_rp2040_shim.menu.stackprotect.Disabled=Disabled +silicognition_rp2040_shim.menu.stackprotect.Disabled.build.flags.stackprotect= +silicognition_rp2040_shim.menu.stackprotect.Enabled=Enabled +silicognition_rp2040_shim.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +silicognition_rp2040_shim.menu.exceptions.Disabled=Disabled +silicognition_rp2040_shim.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +silicognition_rp2040_shim.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +silicognition_rp2040_shim.menu.exceptions.Enabled=Enabled +silicognition_rp2040_shim.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +silicognition_rp2040_shim.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +silicognition_rp2040_shim.menu.dbgport.Disabled=Disabled +silicognition_rp2040_shim.menu.dbgport.Disabled.build.debug_port= +silicognition_rp2040_shim.menu.dbgport.Serial=Serial +silicognition_rp2040_shim.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +silicognition_rp2040_shim.menu.dbgport.Serial1=Serial1 +silicognition_rp2040_shim.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +silicognition_rp2040_shim.menu.dbgport.Serial2=Serial2 +silicognition_rp2040_shim.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +silicognition_rp2040_shim.menu.dbglvl.None=None +silicognition_rp2040_shim.menu.dbglvl.None.build.debug_level= +silicognition_rp2040_shim.menu.dbglvl.Core=Core +silicognition_rp2040_shim.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +silicognition_rp2040_shim.menu.dbglvl.SPI=SPI +silicognition_rp2040_shim.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +silicognition_rp2040_shim.menu.dbglvl.Wire=Wire +silicognition_rp2040_shim.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +silicognition_rp2040_shim.menu.dbglvl.All=All +silicognition_rp2040_shim.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE +silicognition_rp2040_shim.menu.dbglvl.NDEBUG=NDEBUG +silicognition_rp2040_shim.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +silicognition_rp2040_shim.menu.usbstack.picosdk=Pico SDK +silicognition_rp2040_shim.menu.usbstack.picosdk.build.usbstack_flags= +silicognition_rp2040_shim.menu.usbstack.tinyusb=Adafruit TinyUSB +silicognition_rp2040_shim.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +silicognition_rp2040_shim.menu.usbstack.nousb=No USB +silicognition_rp2040_shim.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +silicognition_rp2040_shim.menu.ipbtstack.ipv4only=IPv4 Only +silicognition_rp2040_shim.menu.ipbtstack.ipv4only.build.libpicow=libpicow-noipv6-nobtc-noble.a +silicognition_rp2040_shim.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6.build.libpicow=libpicow-ipv6-nobtc-noble.a +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +silicognition_rp2040_shim.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +silicognition_rp2040_shim.menu.ipbtstack.ipv4btcble.build.libpicow=libpicow-noipv6-btc-ble.a +silicognition_rp2040_shim.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libpicow-ipv6-btc-ble.a +silicognition_rp2040_shim.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +silicognition_rp2040_shim.menu.uploadmethod.default=Default (UF2) +silicognition_rp2040_shim.menu.uploadmethod.default.build.ram_length=256k +silicognition_rp2040_shim.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +silicognition_rp2040_shim.menu.uploadmethod.default.upload.maximum_data_size=262144 +silicognition_rp2040_shim.menu.uploadmethod.default.upload.tool=uf2conv +silicognition_rp2040_shim.menu.uploadmethod.default.upload.tool.default=uf2conv +silicognition_rp2040_shim.menu.uploadmethod.default.upload.tool.network=uf2conv-network +silicognition_rp2040_shim.menu.uploadmethod.picotool=Picotool +silicognition_rp2040_shim.menu.uploadmethod.picotool.build.ram_length=256k +silicognition_rp2040_shim.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +silicognition_rp2040_shim.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.tool=picotool +silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.tool.default=picotool +silicognition_rp2040_shim.menu.uploadmethod.picoprobe=Picoprobe +silicognition_rp2040_shim.menu.uploadmethod.picoprobe.build.ram_length=256k +silicognition_rp2040_shim.menu.uploadmethod.picoprobe.build.debugscript=picoprobe.tcl +silicognition_rp2040_shim.menu.uploadmethod.picoprobe.upload.maximum_data_size=262144 +silicognition_rp2040_shim.menu.uploadmethod.picoprobe.upload.tool=picoprobe +silicognition_rp2040_shim.menu.uploadmethod.picoprobe.upload.tool.default=picoprobe +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP) +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +silicognition_rp2040_shim.menu.uploadmethod.picodebug=Pico-Debug +silicognition_rp2040_shim.menu.uploadmethod.picodebug.build.ram_length=240k +silicognition_rp2040_shim.menu.uploadmethod.picodebug.build.debugscript=picodebug.tcl +silicognition_rp2040_shim.menu.uploadmethod.picodebug.build.picodebugflags=-UUSE_TINYUSB -DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico +silicognition_rp2040_shim.menu.uploadmethod.picodebug.upload.maximum_data_size=245760 +silicognition_rp2040_shim.menu.uploadmethod.picodebug.upload.tool=picodebug +silicognition_rp2040_shim.menu.uploadmethod.picodebug.upload.tool.default=picodebug + # ----------------------------------- # Solder Party RP2040 Stamp # ----------------------------------- diff --git a/cores/rp2040/SerialUSB.cpp b/cores/rp2040/SerialUSB.cpp index f0d6249..0c8cf15 100644 --- a/cores/rp2040/SerialUSB.cpp +++ b/cores/rp2040/SerialUSB.cpp @@ -130,7 +130,7 @@ size_t SerialUSB::write(const uint8_t *buf, size_t length) { static uint64_t last_avail_time; int written = 0; - if (tud_cdc_connected()) { + if (tud_cdc_connected() || _ignoreFlowControl) { for (size_t i = 0; i < length;) { int n = length - i; int avail = tud_cdc_write_available(); @@ -171,6 +171,9 @@ SerialUSB::operator bool() { return tud_cdc_connected(); } +void SerialUSB::ignoreFlowControl(bool ignore) { + _ignoreFlowControl = ignore; +} static bool _dtr = false; static bool _rts = false; diff --git a/cores/rp2040/SerialUSB.h b/cores/rp2040/SerialUSB.h index 0e0b6bf..4471cea 100644 --- a/cores/rp2040/SerialUSB.h +++ b/cores/rp2040/SerialUSB.h @@ -44,6 +44,8 @@ public: using Print::write; operator bool() override; + void ignoreFlowControl(bool ignore = true); + // ESP8266 compat void setDebugOutput(bool unused) { (void) unused; @@ -51,6 +53,7 @@ public: private: bool _running = false; + bool _ignoreFlowControl = false; }; extern SerialUSB Serial; diff --git a/docs/serial.rst b/docs/serial.rst index 77bb8c1..c650c30 100644 --- a/docs/serial.rst +++ b/docs/serial.rst @@ -45,3 +45,13 @@ For applications where an IRQ driven serial port is not appropriate, use For detailed information about the Serial ports, see the Arduino `Serial Reference `_ . + + +RP2040 Specific SerialUSB methods +--------------------------------- + +void Serial.ignoreFlowControl(bool ignore) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In some cases, the target application will not assert the DTR virtual line, thus preventing writing operations to succeed. + +For this reason, the SerialUSB::ignoreFlowControl() method disables the connection's state verification, enabling the program to write on the port, even though the data might be lost. diff --git a/package/package_pico_index.template.json b/package/package_pico_index.template.json index 2938a0e..4bc5edc 100644 --- a/package/package_pico_index.template.json +++ b/package/package_pico_index.template.json @@ -152,6 +152,9 @@ { "name": "Pimoroni Plasma2040" }, + { + "name": "Silicognition RP2040-Shim" + }, { "name": "Solder Party RP2040 Stamp" }, diff --git a/tools/json/silicognition_rp2040_shim.json b/tools/json/silicognition_rp2040_shim.json new file mode 100644 index 0000000..9e10912 --- /dev/null +++ b/tools/json/silicognition_rp2040_shim.json @@ -0,0 +1,56 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "boot2_generic_03h_4_padded_checksum.S", + "usb_vid": "0x1209", + "usb_pid": "0xF502" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m0plus", + "extra_flags": "-D ARDUINO_SILICOGNITION_RP2040_SHIM -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500", + "f_cpu": "133000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x1209", + "0xF502" + ] + ], + "mcu": "rp2040", + "variant": "silicognition_rp2040_shim" + }, + "debug": { + "jlink_device": "RP2040_M0_0", + "openocd_target": "rp2040.cfg", + "svd_path": "rp2040.svd" + }, + "frameworks": [ + "arduino" + ], + "name": "RP2040-Shim", + "upload": { + "maximum_ram_size": 270336, + "maximum_size": 4194304, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe", + "pico-debug" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Silicognition" +} diff --git a/tools/makeboards.py b/tools/makeboards.py index ff4dea0..15ee1bb 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -410,6 +410,9 @@ MakeBoard("nullbits_bit_c_pro", "nullbits", "Bit-C PRO", "0x2e8a", "0x6e61", 500 MakeBoard("pimoroni_pga2040", "Pimoroni", "PGA2040", "0x2e8a", "0x1008", 250, "PIMORONI_PGA2040", 8, "boot2_w25q64jv_4_padded_checksum") MakeBoard("pimoroni_plasma2040", "Pimoroni", "Plasma2040", "0x2e8a", "0x100a", 500, "PIMORONI_PLASMA2040", 2, "boot2_w25q080_2_padded_checksum") +# Silicognition +MakeBoard("silicognition_rp2040_shim", "Silicognition", "RP2040-Shim", "0x1209", "0xf502", 500, "SILICOGNITION_RP2040_SHIM", 4, "boot2_generic_03h_4_padded_checksum") + # Solder Party MakeBoard("solderparty_rp2040_stamp", "Solder Party", "RP2040 Stamp", "0x1209", "0xa182", 500, "SOLDERPARTY_RP2040_STAMP", 8, "boot2_generic_03h_4_padded_checksum") diff --git a/variants/silicognition_rp2040_shim/pins_arduino.h b/variants/silicognition_rp2040_shim/pins_arduino.h new file mode 100644 index 0000000..2c408b0 --- /dev/null +++ b/variants/silicognition_rp2040_shim/pins_arduino.h @@ -0,0 +1,81 @@ +#pragma once + +// Pin definitions taken from: +// https://silicognition.com/Products/rp2040-shim/ + +// LEDs +#define LED_BUILTIN (22u) + +// NeoPixel +#define PIN_NEOPIXEL (23u) + +// Serial +#define PIN_SERIAL1_TX (0u) +#define PIN_SERIAL1_RX (1u) + +// Not pinned out +#define PIN_SERIAL2_TX (31u) +#define PIN_SERIAL2_RX (31u) + + +// SPI0 +#define __SPI0_DEVICE spi1 +#define PIN_SPI0_MISO (12u) +#define PIN_SPI0_MOSI (11u) +#define PIN_SPI0_SCK (10u) +#define PIN_SPI0_SS (21u) + +// SPI1 +#define __SPI1_DEVICE spi0 +#define PIN_SPI1_MISO (20u) +#define PIN_SPI1_MOSI (19u) +#define PIN_SPI1_SCK (18u) +#define PIN_SPI1_SS (15u) + +// Wire +#define __WIRE0_DEVICE i2c0 +#define PIN_WIRE0_SDA (16u) +#define PIN_WIRE0_SCL (17u) +#define __WIRE1_DEVICE i2c1 +#define PIN_WIRE1_SDA (31u) +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (2u) +#define SPI_HOWMANY (2u) +#define WIRE_HOWMANY (1u) + +// Defines normally loaded from common.h +// We have custom pin mapping to match Adafruit Feather + +#define PINS_COUNT (30u) +#define NUM_DIGITAL_PINS (30u) +#define NUM_ANALOG_INPUTS (4u) +#define NUM_ANALOG_OUTPUTS (0u) +#define ADC_RESOLUTION (12u) + +static const uint8_t D0 = (1u); +static const uint8_t D1 = (0u); +static const uint8_t D4 = (6u); +static const uint8_t D5 = (18u); +static const uint8_t D6 = (19u); +static const uint8_t D9 = (20u); +static const uint8_t D10 = (21u); +static const uint8_t D11 = (15u); +static const uint8_t D12 = (14u); +static const uint8_t D13 = (22u); +static const uint8_t D24 = (24u); +static const uint8_t D25 = (25u); + +static const uint8_t A0 = (29u); +static const uint8_t A1 = (28u); +static const uint8_t A2 = (27u); +static const uint8_t A3 = (26u); + +static const uint8_t SS = PIN_SPI0_SS; +static const uint8_t MOSI = PIN_SPI0_MOSI; +static const uint8_t MISO = PIN_SPI0_MISO; +static const uint8_t SCK = PIN_SPI0_SCK; + +static const uint8_t SDA = PIN_WIRE0_SDA; +static const uint8_t SCL = PIN_WIRE0_SCL; +