diff --git a/firmware/OLIMEX_PICO2_XL/board.json b/firmware/OLIMEX_PICO2_XL/board.json new file mode 100644 index 0000000..f7f6280 --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/board.json @@ -0,0 +1,22 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "Dual-core", + "External Flash", + "USB-C" + ], + "images": [ + "rp2-pico2.jpg" + ], + "mcu": "rp2350", + "product": "PICO2-XL", + "thumbnail": "", + "url": "https://www.olimex.com/Products/RaspberryPi/PICO/PICO2-XXL/open-source-hardware", + "variants": { + "RISCV": "RISC-V CPU mode" + }, + "vendor": "Olimex" +} diff --git a/firmware/OLIMEX_PICO2_XL/mpconfigboard.cmake b/firmware/OLIMEX_PICO2_XL/mpconfigboard.cmake new file mode 100644 index 0000000..a754560 --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/mpconfigboard.cmake @@ -0,0 +1,2 @@ +set(PICO_BOARD "olimex_rp2350_xl") +set(PICO_NUM_GPIOS 48) diff --git a/firmware/OLIMEX_PICO2_XL/mpconfigboard.h b/firmware/OLIMEX_PICO2_XL/mpconfigboard.h new file mode 100644 index 0000000..620f754 --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/mpconfigboard.h @@ -0,0 +1,9 @@ +// Board and hardware specific configuration +#define MICROPY_HW_BOARD_NAME "Olimex PICO2-XL" +#define MICROPY_HW_FLASH_STORAGE_BYTES (PICO_FLASH_SIZE_BYTES - (1 * 1024 * 1024)) + +// USB config +#define MICROPY_HW_USB_MANUFACTURER_STRING "Olimex" +#define MICROPY_HW_USB_PRODUCT_FS_STRING "PICO2-XL" +#define MICROPY_HW_USB_MSC (1) +#define MICROPY_HW_ENABLE_UART_REPL (1) diff --git a/firmware/OLIMEX_PICO2_XL/mpconfigvariant.cmake b/firmware/OLIMEX_PICO2_XL/mpconfigvariant.cmake new file mode 100644 index 0000000..6fe039b --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/mpconfigvariant.cmake @@ -0,0 +1 @@ +set(PICO_PLATFORM "rp2350") diff --git a/firmware/OLIMEX_PICO2_XL/mpconfigvariant_RISCV.cmake b/firmware/OLIMEX_PICO2_XL/mpconfigvariant_RISCV.cmake new file mode 100644 index 0000000..65a97fc --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/mpconfigvariant_RISCV.cmake @@ -0,0 +1 @@ +set(PICO_PLATFORM "rp2350-riscv") diff --git a/firmware/OLIMEX_PICO2_XL/pins.csv b/firmware/OLIMEX_PICO2_XL/pins.csv new file mode 100644 index 0000000..9d41494 --- /dev/null +++ b/firmware/OLIMEX_PICO2_XL/pins.csv @@ -0,0 +1,47 @@ +GP0,GPIO0 +GP1,GPIO1 +GP2,GPIO2 +GP3,GPIO3 +GP4,GPIO4 +GP5,GPIO5 +GP6,GPIO6 +GP7,GPIO7 +GP8,GPIO8 +GP9,GPIO9 +GP10,GPIO10 +GP11,GPIO11 +GP12,GPIO12 +GP13,GPIO13 +GP14,GPIO14 +GP15,GPIO15 +GP16,GPIO16 +GP17,GPIO17 +GP18,GPIO18 +GP19,GPIO19 +GP20,GPIO20 +GP21,GPIO21 +GP22,GPIO22 +GP25,GPIO25 +GP26,GPIO26 +GP27,GPIO27 +GP28,GPIO28 +GP29,GPIO29 +GP30,GPIO30 +GP31,GPIO31 +GP32,GPIO32 +GP33,GPIO33 +GP34,GPIO34 +GP35,GPIO35 +GP36,GPIO36 +GP37,GPIO37 +GP38,GPIO38 +GP39,GPIO39 +GP40,GPIO40 +GP41,GPIO41 +GP42,GPIO42 +GP43,GPIO43 +GP44,GPIO44 +GP45,GPIO45 +GP46,GPIO46 +GP47,GPIO47 +LED,GPIO25 diff --git a/firmware/README.md b/firmware/README.md new file mode 100644 index 0000000..2f4d306 --- /dev/null +++ b/firmware/README.md @@ -0,0 +1,25 @@ +# firmware + +Custom micropython build for the Olimex RP2350B-XL. Comes with some features enabled and modules bundled that are not part of an eventual upstream build. + +## build instructions + +0. Make sure to have a compiler toolchain supporting the RP2 architecture installed (Mac: `brew install gcc-arm-embedded`) +1. Clone the `micropython` repo +2. From within the `micropython` repo root, run `make -C mpy-cross` +3. Copy the `OLIMEX_PICO2_XL` folder to `micropython/ports/rp2/boards` if it doesn't exist; overwrite it if it does +4. Change to the `boards/rp2` folder +5. Run `make BOARD=OLIMEX_PICO2_XL submodules` to install dependencies +6. Run `make BOARD=OLIMEX_PICO2_XL clean` to remove previous build artefacts (if any) +7. Run `make BOARD=OLIMEX_PICO2_XL` to build the firmware + +## flashing + +0. The build output can be found in `micropython/ports/rp2/build-OLIMEX_PICO2_XL` (or in this folder for convenience) +1. Connect the MCU board to your computer using a data-capable USB cable +2. On the MCU board, hold `boot` while pressing `rst` +3. A new removable disk drive should appear. Copy `firmware.uf2` onto this disk drive - this will flash the MCU board with the custom micropython build. + +## using + +Once micropython is flashed, copy `boot.py`, `main.py` and any auxiliary files for the specific hardware type onto the MCU flash. Refer to the micropython docs for further info. diff --git a/firmware/firmware.elf b/firmware/firmware.elf new file mode 100755 index 0000000..0a75800 Binary files /dev/null and b/firmware/firmware.elf differ diff --git a/firmware/firmware.uf2 b/firmware/firmware.uf2 new file mode 100644 index 0000000..6b578ff Binary files /dev/null and b/firmware/firmware.uf2 differ