Skip to content

Commit 6c2c3c3

Browse files
committed
Add CATWAN Usb Stick rp2040
1 parent 5766a12 commit 6c2c3c3

File tree

16 files changed

+154
-125
lines changed

16 files changed

+154
-125
lines changed

boards.txt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,59 @@ bombercat.bootloader.tool.default=openocd
107107
bombercat.bootloader.config=-f target/rp2040.cfg
108108
bombercat.bootloader.programmer=-f interface/cmsis-dap.cfg
109109
##############################################################
110+
# CATWAN USB STICK RP2040
111+
#############################################################
112+
catwan_usb_stick_2040.name=Electronic Cats CatWAN USB Stick 2040
113+
catwan_usb_stick_2040.build.core=arduino
114+
catwan_usb_stick_2040.build.crossprefix=arm-none-eabi-
115+
catwan_usb_stick_2040.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/
116+
catwan_usb_stick_2040.build.variant=CATWAN_USB_2040
117+
catwan_usb_stick_2040.build.mcu=cortex-m0plus
118+
catwan_usb_stick_2040.build.extra_flags=
119+
catwan_usb_stick_2040.build.fpu=
120+
catwan_usb_stick_2040.build.float-abi=
121+
catwan_usb_stick_2040.build.architecture=cortex-m0plus
122+
catwan_usb_stick_2040.build.board=CATWAN_USB_2040
123+
catwan_usb_stick_2040.build.ldscript=linker_script.ld
124+
catwan_usb_stick_2040.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit
125+
catwan_usb_stick_2040.compiler.mbed.arch.define=-DARDUINO_ARCH_RP2040
126+
catwan_usb_stick_2040.compiler.mbed.defines={build.variant.path}/defines.txt
127+
catwan_usb_stick_2040.compiler.mbed.ldflags={build.variant.path}/ldflags.txt
128+
catwan_usb_stick_2040.compiler.mbed.cflags={build.variant.path}/cflags.txt
129+
catwan_usb_stick_2040.compiler.mbed.cxxflags={build.variant.path}/cxxflags.txt
130+
catwan_usb_stick_2040.compiler.mbed.includes={build.variant.path}/includes.txt
131+
catwan_usb_stick_2040.compiler.mbed.extra_ldflags=-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
132+
catwan_usb_stick_2040.compiler.mbed="{build.variant.path}/libs/libmbed.a"
133+
catwan_usb_stick_2040.vid.0=0x1209
134+
catwan_usb_stick_2040.pid.0=0x005e
135+
catwan_usb_stick_2040.vid.1=0x1209
136+
catwan_usb_stick_2040.pid.1=0x805e
137+
catwan_usb_stick_2040.vid.2=0x1209
138+
catwan_usb_stick_2040.pid.2=0x015e
139+
catwan_usb_stick_2040.vid.3=0x1209
140+
catwan_usb_stick_2040.pid.3=0x025e
141+
catwan_usb_stick_2040.upload_port.0.vid=0x1209
142+
catwan_usb_stick_2040.upload_port.0.pid=0x005e
143+
catwan_usb_stick_2040.upload_port.1.vid=0x1209
144+
catwan_usb_stick_2040.upload_port.1.pid=0x805e
145+
catwan_usb_stick_2040.upload_port.2.vid=0x1209
146+
catwan_usb_stick_2040.upload_port.2.pid=0x015e
147+
catwan_usb_stick_2040.upload_port.3.vid=0x1209
148+
catwan_usb_stick_2040.upload_port.3.pid=0x025e
149+
catwan_usb_stick_2040.upload.tool=picotool
150+
catwan_usb_stick_2040.upload.tool.default=picotool
151+
catwan_usb_stick_2040.upload.protocol=
152+
catwan_usb_stick_2040.upload.transport=
153+
catwan_usb_stick_2040.upload.use_1200bps_touch=true
154+
catwan_usb_stick_2040.upload.wait_for_upload_port=false
155+
catwan_usb_stick_2040.upload.native_usb=true
156+
catwan_usb_stick_2040.upload.maximum_size=16777216
157+
catwan_usb_stick_2040.upload.maximum_data_size=270336
158+
catwan_usb_stick_2040.bootloader.tool=openocd
159+
catwan_usb_stick_2040.bootloader.tool.default=openocd
160+
catwan_usb_stick_2040.bootloader.config=-f target/rp2040.cfg
161+
catwan_usb_stick_2040.bootloader.programmer=-f interface/cmsis-dap.cfg
162+
##############################################################
110163
# BAST BLE
111164
bastble.name=Electronic Cats Bast BLE
112165
bastble.build.core=arduino

variants/RASPBERRY_PI_PICO/defines.txt renamed to variants/CATWAN_USB_2040/defines.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
-DDEVICE_USTICKER=1
2121
-DDEVICE_WATCHDOG=1
2222
-D__MBED__=1
23-
-DMBED_BUILD_TIMESTAMP=1648633283.9288557
23+
-DMBED_BUILD_TIMESTAMP=1648633222.737337
2424
-D__MBED_CMSIS_RTOS_CM
2525
-DMBED_MPU_CUSTOM
26+
-DPICO_FLASH_SIZE_BYTES=16*1024*1024
2627
-DPICO_NO_BINARY_INFO=1
2728
-DPICO_ON_DEVICE=1
2829
-DPICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1
@@ -34,9 +35,9 @@
3435
-DTARGET_LIKE_MBED
3536
-DTARGET_M0P
3637
-DTARGET_memmap_default
37-
-DTARGET_NAME=RASPBERRY_PI_PICO
38+
-DTARGET_NAME=NANO_RP2040_CONNECT
39+
-DTARGET_NANO_RP2040_CONNECT
3840
-DTARGET_RASPBERRYPI
39-
-DTARGET_RASPBERRY_PI_PICO
4041
-DTARGET_RELEASE
4142
-DTARGET_RP2040
4243
-DTOOLCHAIN_GCC

variants/RASPBERRY_PI_PICO/double_tap_usb_boot.cpp renamed to variants/CATWAN_USB_2040/double_tap_usb_boot.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ extern "C" {
66
#include "macros.h"
77
#include "pins_arduino.h"
88

9+
// Allow user override of the LED mask
10+
#ifndef USB_BOOT_LED_ACTIVITY_MASK
11+
#define USB_BOOT_LED_ACTIVITY_MASK 1
12+
#endif
13+
914
// Doesn't make any sense for a RAM only binary
1015
#if !PICO_NO_FLASH
1116

@@ -23,14 +28,14 @@ static void boot_double_tap_check() {
2328
for (i = 0; i < count_of(magic_token); i++) {
2429
magic_location[i] = magic_token[i];
2530
}
26-
busy_wait_us(100000);
31+
busy_wait_us(500000);
2732
magic_location[0] = 0;
2833
return;
2934
}
3035
}
3136

3237
magic_location[0] = 0;
33-
reset_usb_boot(1 << LED_BUILTIN, 0);
38+
reset_usb_boot(1 << digitalPinToPinName(LED_BUILTIN), 0);
3439
}
3540

3641
class DoubleTap {

variants/RASPBERRY_PI_PICO/includes.txt renamed to variants/CATWAN_USB_2040/includes.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@
203203
-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include/tdbstore
204204
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI
205205
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040
206-
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TARGET_RASPBERRY_PI_PICO
206+
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TARGET_NANO_RP2040_CONNECT
207207
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk
208208
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/boards
209209
-iwithprefixbefore/mbed/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/boards/include

variants/RASPBERRY_PI_PICO/linker_script.ld renamed to variants/CATWAN_USB_2040/linker_script.ld

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
MEMORY
22
{
3-
FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2048k
3+
FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 16*1024*1024
44
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 256k
55
SCRATCH_X(rwx) : ORIGIN = 0x20040000, LENGTH = 4k
66
SCRATCH_Y(rwx) : ORIGIN = 0x20041000, LENGTH = 4k
77
}
88
ENTRY(_entry_point)
99
SECTIONS
1010
{
11+
.second_stage_ota : {
12+
KEEP (*(.second_stage_ota))
13+
} > FLASH
1114
.flash_begin : {
1215
__flash_binary_start = .;
1316
} > FLASH

variants/RASPBERRY_PI_PICO/pins_arduino.h renamed to variants/CATWAN_USB_2040/pins_arduino.h

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,59 +12,44 @@ extern "C" unsigned int PINCOUNT_fn();
1212
// Pin count
1313
// ----
1414
#define PINS_COUNT (PINCOUNT_fn())
15-
#define NUM_DIGITAL_PINS (30u)
16-
#define NUM_ANALOG_INPUTS (4u)
15+
#define NUM_DIGITAL_PINS (10u)
16+
#define NUM_ANALOG_INPUTS (1u)
1717
#define NUM_ANALOG_OUTPUTS (0u)
1818

1919
extern PinName digitalPinToPinName(pin_size_t P);
2020

2121
// LEDs
2222
// ----
23-
#define PIN_LED (25u)
23+
#define PIN_LED (4u)
2424
#define LED_BUILTIN PIN_LED
2525

2626
// Analog pins
2727
// -----------
28-
#define PIN_A0 (26u)
29-
#define PIN_A1 (27u)
30-
#define PIN_A2 (28u)
31-
#define PIN_A3 (29u)
28+
#define PIN_A0 (10u)
3229

3330
static const uint8_t A0 = PIN_A0;
34-
static const uint8_t A1 = PIN_A1;
35-
static const uint8_t A2 = PIN_A2;
36-
static const uint8_t A3 = PIN_A3;
3731

3832
#define ADC_RESOLUTION 12
3933

40-
// Serial
41-
#define PIN_SERIAL_TX (0ul)
42-
#define PIN_SERIAL_RX (1ul)
43-
4434
// SPI
45-
#define PIN_SPI_MISO (16u)
46-
#define PIN_SPI_MOSI (19u)
47-
#define PIN_SPI_SCK (18u)
48-
#define PIN_SPI_SS (17u)
35+
#define PIN_SPI_MISO (6u)
36+
#define PIN_SPI_MOSI (8u)
37+
#define PIN_SPI_SCK (9u)
38+
#define PIN_SPI_SS (7u)
4939

5040
static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference.
5141
static const uint8_t MOSI = PIN_SPI_MOSI;
5242
static const uint8_t MISO = PIN_SPI_MISO;
5343
static const uint8_t SCK = PIN_SPI_SCK;
5444

55-
// Wire
56-
#define PIN_WIRE_SDA (4u)
57-
#define PIN_WIRE_SCL (5u)
45+
#define SERIAL_HOWMANY 0
5846

59-
#define SERIAL_HOWMANY 1
60-
#define SERIAL1_TX (digitalPinToPinName(PIN_SERIAL_TX))
61-
#define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX))
6247

6348
#define SERIAL_CDC 1
6449
#define HAS_UNIQUE_ISERIAL_DESCRIPTOR
65-
#define BOARD_VENDORID 0x2e8a
66-
#define BOARD_PRODUCTID 0x00c0
67-
#define BOARD_NAME "RaspberryPi Pico"
50+
#define BOARD_VENDORID 0x2341
51+
#define BOARD_PRODUCTID 0x005e
52+
#define BOARD_NAME "CatWan USBStick2040"
6853

6954
uint8_t getUniqueSerialNumber(uint8_t* name);
7055
void _ontouch1200bps_();
@@ -74,17 +59,17 @@ void _ontouch1200bps_();
7459
#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI))
7560
#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK))
7661

77-
#define WIRE_HOWMANY (1)
78-
#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA))
79-
#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL))
62+
#define WIRE_HOWMANY (0)
8063

8164
#define digitalPinToPort(P) (digitalPinToPinName(P)/32)
8265

8366
#define SERIAL_PORT_USBVIRTUAL SerialUSB
8467
#define SERIAL_PORT_MONITOR SerialUSB
85-
#define SERIAL_PORT_HARDWARE Serial1
86-
#define SERIAL_PORT_HARDWARE_OPEN Serial1
8768

8869
#define USB_MAX_POWER (500)
8970

71+
#ifdef __cplusplus
72+
#include "nina_pins.h"
73+
#endif
74+
9075
#endif //__PINS_ARDUINO__

variants/CATWAN_USB_2040/variant.cpp

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#include "Arduino.h"
2+
#include "pinDefinitions.h"
3+
4+
AnalogPinDescription g_AAnalogPinDescription[] = {
5+
{ p26, NULL }, // ADC Dummy
6+
};
7+
8+
PinDescription g_APinDescription[] = {
9+
// D0 - D4
10+
// Internal pins Radio LoRa
11+
{ p10, NULL, NULL, NULL }, // D0/DIO0
12+
{ p11, NULL, NULL, NULL }, // D1/DIO1
13+
{ p12, NULL, NULL, NULL }, // D2/DIO2
14+
{ p15, NULL, NULL, NULL }, // D3/DIO5
15+
16+
{ p25, NULL, NULL, NULL }, // D4/RX_LED
17+
18+
{ p21, NULL, NULL, NULL }, // D5/RFM_RESET
19+
{ p16, NULL, NULL, NULL }, // D6/SPI_CIPO
20+
{ p17, NULL, NULL, NULL }, // D7/SPI_CS
21+
{ p19, NULL, NULL, NULL }, // D8/SPI_COPI
22+
{ p18, NULL, NULL, NULL }, // D9/SPI_SCK
23+
24+
{ p26, NULL, NULL, NULL }, // ADC Dummy
25+
};
26+
27+
extern "C" {
28+
unsigned int PINCOUNT_fn() {
29+
return (sizeof(g_APinDescription) / sizeof(g_APinDescription[0]));
30+
}
31+
}
32+
33+
#include "drivers/I2C.h"
34+
35+
36+
void initVariant() {
37+
}
38+
39+
#ifdef SERIAL_CDC
40+
41+
static void utox8(uint32_t val, uint8_t* s) {
42+
for (int i = 0; i < 16; i=i+2) {
43+
int d = val & 0XF;
44+
val = (val >> 4);
45+
46+
s[15 - i -1] = d > 9 ? 'A' + d - 10 : '0' + d;
47+
s[15 - i] = '\0';
48+
}
49+
}
50+
51+
extern "C" {
52+
#include "hardware/flash.h"
53+
#include "pico/bootrom.h"
54+
}
55+
56+
uint8_t getUniqueSerialNumber(uint8_t* name) {
57+
uint32_t id[2];
58+
flash_get_unique_id((uint8_t*)&id[0]);
59+
utox8(id[0], &name[0]);
60+
utox8(id[1], &name[16]);
61+
return 32;
62+
}
63+
64+
void _ontouch1200bps_() {
65+
reset_usb_boot(1 << digitalPinToPinName(LED_BUILTIN), 0);
66+
}
67+
68+
#endif

variants/RASPBERRY_PI_PICO/variant.cpp

Lines changed: 0 additions & 86 deletions
This file was deleted.

0 commit comments

Comments
 (0)