Compare commits

..
7 Commits
Author SHA1 Message Date
Earle F. Philhower, III 9d17f42a35 Update version 2024-10-02 10:26:19 -07:00
Earle F. Philhower, III 1f1fa11216 Allow IDE install to call RISC-V compiler (#2513)
Released packages have a post-processing step to allow them to work with IDE
installed toolchains.  This was not updated for the RISC-V compiler, so R5 compiles
fail under the release IDE package.  Update to call proper compiler path.

Fixes #2510
2024-10-02 10:25:32 -07:00
Earle F. Philhower, III 690293e7e1 RP2350B additional ADC inputs for ADCInput (#2509)
Fix pin offset and maximum count of ADC inputs for the RP2350B variant.
2024-10-01 18:22:11 -07:00
Earle F. Philhower, III 500fcf2513 Update version 2024-10-01 09:25:29 -07:00
Maximilian Gerhardt a2164a5b10 Update PIO USB docs, fixup used VID/PID macros (#2505) 2024-09-30 09:57:21 -07:00
Maximilian Gerhardt 25501953df Update PIO platform before compile, add RISC-V PIO build to CI (#2504) 2024-09-30 09:41:16 -07:00
Earle F. Philhower, III f6973fc64d Add RISC-V support, GCC 14 move (#2491)
* Adds RISC-V compilation option to the IDE and Platform.IO.
* Build RP2350-RISCV libpico, libbearssl
* Fix RP2350 BearSSL library (was copied from RP2040, now built for M33)
* New GCC 14.2 toolchain is required (12.4 RISC-V support is borked)
* Newlib locking fixed prototypes
* Manually force all runtime init code into RP2350 binaries
* Add RISC-V to CI
* Remove RP2350 BOOT2.S files, binaries (not used)
* Clean up minor GCC 14.x warnings
* Add RP2350-RISCV OTA build, link
* Add RISC-V FreeRTOS files (configuration still not running, but builds)
* Add basic documentation
2024-09-29 15:10:36 -07:00
94 changed files with 11416 additions and 474 deletions
+35 -1
View File
@@ -17,7 +17,7 @@ jobs:
with:
submodules: false
- name: Run codespell
uses: codespell-project/actions-codespell@master
uses: codespell-project/actions-codespell@v2
with:
skip: ./ArduinoCore-API,./libraries/ESP8266SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api,./libraries/FreeRTOS,./tools/libbearssl/bearssl,./include,./libraries/WiFi/examples/BearSSL_Server,./ota/uzlib,./libraries/http-parser/lib,./libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino,./libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino,./.git,./libraries/FatFS/lib/fatfs,./libraries/FatFS/src/diskio.h,./libraries/FatFS/src/ff.cpp,./libraries/FatFS/src/ffconf.h,./libraries/FatFS/src/ffsystem.cpp,./libraries/FatFS/src/ff.h,./libraries/lwIP_WINC1500/src/driver,./libraries/lwIP_WINC1500/src/common,./libraries/lwIP_WINC1500/src/bus_wrapper,./libraries/lwIP_WINC1500/src/spi_flash
ignore_words_list: ser,dout,shiftIn,acount
@@ -101,6 +101,37 @@ jobs:
cd ..
bash ./tests/build-rp2350.sh
# Build all rp2350-riscv examples on linux (core and Arduino IDE)
build-rp2350-riscv-linux:
name: Build RP2350-RISCV ${{ matrix.chunk }}
runs-on: ubuntu-latest
strategy:
matrix:
chunk: [0, 1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Cache Linux toolchain
id: cache-linux
uses: actions/cache@v4
with:
path: ./tools/dist
key: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
- name: Build Sketches
env:
BUILD_PARITY: custom
mod: 6
rem: ${{ matrix.chunk }}
run: |
cd pico-sdk
git submodule update --init
cd ..
bash ./tests/build-rp2350-riscv.sh
# Build TinyUSB examples, requires custom build command line
build-tinyusb:
name: Build TinyUSB Examples
@@ -234,10 +265,13 @@ jobs:
python -m pip install --upgrade pip
pip install --upgrade platformio
pio pkg install --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git
pio pkg update --global --platform https://github.com/maxgerhardt/platform-raspberrypi.git
pio pkg install --global --tool symlink://.
cp -f /home/runner/work/arduino-pico/arduino-pico/tools/json/*.json /home/runner/.platformio/platforms/raspberrypi/boards/.
- name: Build Multicore Example
run: pio ci -v --board=rpipico --board=rpipico2 --board=adafruit_feather -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Multicore/Multicore.ino
- name: Build Multicore Example (RISC-V)
run: pio ci -v --board=rpipico2 -O "board_build.mcu = rp2350-riscv" -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Multicore/Multicore.ino
- name: Build Fade Example
run: pio ci --board=rpipico --board=adafruit_feather -O "platform_packages=framework-arduinopico@symlink:///home/runner/work/arduino-pico/arduino-pico" libraries/rp2040/examples/Fade/Fade.ino
- name: Build TinyUSB Example
+2 -1
View File
@@ -4,7 +4,7 @@
Raspberry Pi Pico Arduino core, for all RP2040 and RP2350 boards
This is a port of Arduino to the RP2040 (Raspberry Pi Pico processor) and RP2350 (Raspberry Pi Pico 2 processor). It uses the bare Raspberry Pi Pico SDK and a custom GCC 12.3/Newlib 4.0 toolchain.
This is a port of Arduino to the RP2040 (Raspberry Pi Pico processor) and RP2350 (Raspberry Pi Pico 2 processor). It uses the bare Raspberry Pi Pico SDK and a custom GCC 14.2/Newlib 4.3 toolchain and supports ARM and RISC-V cores.
# Documentation
See https://arduino-pico.readthedocs.io/en/latest/ along with the examples for more detailed usage information.
@@ -126,6 +126,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
* Peripherals: SPI master/slave, Wire(I2C) master/slave, dual UART, emulated EEPROM, I2S audio input/output, Servo
* printf (i.e. debug) output over USB serial
* Transparent use of PSRAM globals and heap (RP2350 only)
* ARM or RISC-V (Hazard3) support for The RP2350
The RP2040 PIO state machines (SMs) are used to generate jitter-free:
* Servos
+273 -74
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
@@ -1,25 +0,0 @@
// Padded and checksummed version of: boot2_generic_03h.2.bin
.cpu cortex-m0plus
.thumb
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
.byte 0x00, 0xb5, 0x05, 0x4b, 0x05, 0x48, 0xd8, 0x60, 0x4f, 0xf0, 0x03, 0x00, 0x58, 0x61, 0x4f, 0xf4
.byte 0x80, 0x50, 0x18, 0x61, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x40, 0x02, 0x01, 0x00, 0x40
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -1,25 +0,0 @@
// Padded and checksummed version of: boot2_generic_03h.4.bin
.cpu cortex-m0plus
.thumb
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
.byte 0x00, 0xb5, 0x05, 0x4b, 0x05, 0x48, 0xd8, 0x60, 0x4f, 0xf0, 0x03, 0x00, 0x58, 0x61, 0x4f, 0xf4
.byte 0x80, 0x50, 0x18, 0x61, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x40, 0x04, 0x01, 0x00, 0x40
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -1,25 +0,0 @@
// Padded and checksummed version of: boot2_w25q080.2.bin
.cpu cortex-m0plus
.thumb
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
.byte 0x00, 0xb5, 0x24, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x13, 0xf5, 0x40, 0x53, 0x02, 0x20, 0x98, 0x60
.byte 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x13, 0xf5, 0x0d, 0x23, 0x1f, 0x49, 0x19, 0x60, 0x18, 0x68
.byte 0x10, 0xf0, 0x02, 0x0f, 0xfb, 0xd1, 0x35, 0x20, 0x00, 0xf0, 0x2c, 0xf8, 0x02, 0x28, 0x14, 0xd0
.byte 0x06, 0x20, 0x58, 0x60, 0x00, 0xf0, 0x22, 0xf8, 0x98, 0x68, 0x01, 0x20, 0x58, 0x60, 0x00, 0x20
.byte 0x58, 0x60, 0x02, 0x20, 0x58, 0x60, 0x00, 0xf0, 0x19, 0xf8, 0x98, 0x68, 0x98, 0x68, 0x98, 0x68
.byte 0x05, 0x20, 0x00, 0xf0, 0x17, 0xf8, 0x40, 0x08, 0xfa, 0xd2, 0x31, 0xf0, 0x01, 0x01, 0x19, 0x60
.byte 0x0e, 0x48, 0xd8, 0x60, 0x4a, 0xf2, 0xeb, 0x00, 0x58, 0x61, 0x0d, 0x48, 0x18, 0x61, 0x4f, 0xf0
.byte 0xa0, 0x51, 0x09, 0x78, 0x20, 0xf4, 0x80, 0x50, 0x18, 0x61, 0x00, 0xbd, 0x18, 0x68, 0x80, 0x08
.byte 0xfc, 0xd2, 0x70, 0x47, 0x00, 0xb5, 0x58, 0x60, 0x58, 0x60, 0xff, 0xf7, 0xf7, 0xff, 0x98, 0x68
.byte 0x98, 0x68, 0x00, 0xbd, 0x00, 0x00, 0x04, 0x40, 0x41, 0x00, 0x80, 0x07, 0x02, 0x02, 0x00, 0x40
.byte 0xa8, 0x92, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -1,25 +0,0 @@
// Padded and checksummed version of: boot2_w25q080.4.bin
.cpu cortex-m0plus
.thumb
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
.byte 0x00, 0xb5, 0x24, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x13, 0xf5, 0x40, 0x53, 0x02, 0x20, 0x98, 0x60
.byte 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x13, 0xf5, 0x0d, 0x23, 0x1f, 0x49, 0x19, 0x60, 0x18, 0x68
.byte 0x10, 0xf0, 0x02, 0x0f, 0xfb, 0xd1, 0x35, 0x20, 0x00, 0xf0, 0x2c, 0xf8, 0x02, 0x28, 0x14, 0xd0
.byte 0x06, 0x20, 0x58, 0x60, 0x00, 0xf0, 0x22, 0xf8, 0x98, 0x68, 0x01, 0x20, 0x58, 0x60, 0x00, 0x20
.byte 0x58, 0x60, 0x02, 0x20, 0x58, 0x60, 0x00, 0xf0, 0x19, 0xf8, 0x98, 0x68, 0x98, 0x68, 0x98, 0x68
.byte 0x05, 0x20, 0x00, 0xf0, 0x17, 0xf8, 0x40, 0x08, 0xfa, 0xd2, 0x31, 0xf0, 0x01, 0x01, 0x19, 0x60
.byte 0x0e, 0x48, 0xd8, 0x60, 0x4a, 0xf2, 0xeb, 0x00, 0x58, 0x61, 0x0d, 0x48, 0x18, 0x61, 0x4f, 0xf0
.byte 0xa0, 0x51, 0x09, 0x78, 0x20, 0xf4, 0x80, 0x50, 0x18, 0x61, 0x00, 0xbd, 0x18, 0x68, 0x80, 0x08
.byte 0xfc, 0xd2, 0x70, 0x47, 0x00, 0xb5, 0x58, 0x60, 0x58, 0x60, 0xff, 0xf7, 0xf7, 0xff, 0x98, 0x68
.byte 0x98, 0x68, 0x00, 0xbd, 0x00, 0x00, 0x04, 0x40, 0x41, 0x00, 0x80, 0x07, 0x04, 0x02, 0x00, 0x40
.byte 0xa8, 0x92, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+4
View File
@@ -0,0 +1,4 @@
.section .boot2, "ax"
.global __boot2_entry_point
__boot2_entry_point:
+1 -1
View File
@@ -37,7 +37,7 @@
#ifdef abs
#undef abs
#endif // abs
#ifdef __cplusplus
#if defined(__cplusplus) && !defined(__riscv)
using std::abs;
using std::round;
#else
+12
View File
@@ -175,18 +175,22 @@ public:
void begin() {
_epoch = 0;
#if !defined(__riscv)
if (!__isFreeRTOS) {
// Enable SYSTICK exception
exception_set_exclusive_handler(SYSTICK_EXCEPTION, _SystickHandler);
systick_hw->csr = 0x7;
systick_hw->rvr = 0x00FFFFFF;
} else {
#endif
int off = 0;
_ccountPgm = new PIOProgram(&ccount_program);
_ccountPgm->prepare(&_pio, &_sm, &off);
ccount_program_init(_pio, _sm, off);
pio_sm_set_enabled(_pio, _sm, true);
#if !defined(__riscv)
}
#endif
}
// Convert from microseconds to PIO clock cycles
@@ -208,6 +212,7 @@ public:
// Get CPU cycle count. Needs to do magic to extens 24b HW to something longer
volatile uint64_t _epoch = 0;
inline uint32_t getCycleCount() {
#if !defined(__riscv)
if (!__isFreeRTOS) {
uint32_t epoch;
uint32_t ctr;
@@ -217,11 +222,15 @@ public:
} while (epoch != (uint32_t)_epoch);
return epoch + (1 << 24) - ctr; /* CTR counts down from 1<<24-1 */
} else {
#endif
return ccount_read(_pio, _sm);
#if !defined(__riscv)
}
#endif
}
inline uint64_t getCycleCount64() {
#if !defined(__riscv)
if (!__isFreeRTOS) {
uint64_t epoch;
uint64_t ctr;
@@ -231,8 +240,11 @@ public:
} while (epoch != _epoch);
return epoch + (1LL << 24) - ctr;
} else {
#endif
return ccount_read(_pio, _sm);
#if !defined(__riscv)
}
#endif
}
inline int getFreeHeap() {
+3 -3
View File
@@ -1,5 +1,5 @@
#pragma once
#define ARDUINO_PICO_MAJOR 4
#define ARDUINO_PICO_MINOR 0
#define ARDUINO_PICO_REVISION 3
#define ARDUINO_PICO_VERSION_STR "4.0.3"
#define ARDUINO_PICO_MINOR 1
#define ARDUINO_PICO_REVISION 1
#define ARDUINO_PICO_VERSION_STR "4.1.1"
+1 -1
View File
@@ -31,7 +31,7 @@ typedef struct {
static FMMap *_map = nullptr;
SemaphoreHandle_t __get_freertos_mutex_for_ptr(mutex_t *m, bool recursive) {
if (!_map) {
_map = (FMMap *)calloc(sizeof(FMMap), 16);
_map = (FMMap *)calloc(16, sizeof(FMMap));
}
// Pre-existing map
for (int i = 0; i < 16; i++) {
+2 -2
View File
@@ -99,7 +99,7 @@ static SemaphoreHandle_t __getFreeRTOSRecursiveMutex(_LOCK_T lock) {
return __get_freertos_mutex_for_ptr((mutex_t *)l, true);
}
void __retarget_lock_init(_LOCK_T *lock) {
void __retarget_lock_init(_LOCK_T lock) {
if (__freeRTOSinitted) {
mutex_t *l = (mutex_t *)lock;
if ((l == &__lock___at_quick_exit_mutex) || (l == &__lock___tz_mutex) || (l == &__lock___dd_hash_mutex) || (l == &__lock___arc4random_mutex)) {
@@ -113,7 +113,7 @@ void __retarget_lock_init(_LOCK_T *lock) {
}
}
void __retarget_lock_init_recursive(_LOCK_T *lock) {
void __retarget_lock_init_recursive(_LOCK_T lock) {
if (__freeRTOSinitted) {
recursive_mutex_t *l = (recursive_mutex_t *)lock;
if ((l == &__lock___sinit_recursive_mutex) || (l == &__lock___sfp_recursive_mutex) || (l == &__lock___atexit_recursive_mutex) || (l == &__lock___malloc_recursive_mutex) || (l == &__lock___env_recursive_mutex)) {
+1 -2
View File
@@ -88,7 +88,7 @@ extern "C" int main() {
// Allocate impure_ptr (newlib temps) if there is a 2nd core running
if (!__isFreeRTOS && (setup1 || loop1)) {
_impure_ptr1 = (struct _reent*)calloc(sizeof(struct _reent), 1);
_impure_ptr1 = (struct _reent*)calloc(1, sizeof(struct _reent));
_REENT_INIT_PTR(_impure_ptr1);
}
@@ -134,7 +134,6 @@ extern "C" int main() {
}
rp2040.fifo.registerCore();
}
if (!__isFreeRTOS) {
if (setup1 || loop1) {
delay(1); // Needed to make Picoprobe upload start 2nd core
+2 -2
View File
@@ -54,9 +54,9 @@ author = u'Earle F. Philhower, III'
# built documents.
#
# The short X.Y version.
version = u'4.0.3'
version = u'4.1.1'
# The full version, including alpha/beta/rc tags.
release = u'4.0.3'
release = u'4.1.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
+1 -1
View File
@@ -7,7 +7,7 @@ RP2040 (Raspberry Pi Pico processor) and RP2350 (Raspberry Pi Pico 2
processor), intended to make it easier and more fun to use and
program the Raspberry Pi Pico / RP2040 / RP2350 based boards.
This Arduino core uses a custom toolset with GCC 12.3 and Newlib 4.0.0
This Arduino core uses a custom toolset with GCC 14.2 and Newlib 4.3
and doesn't require any system-installed prerequisites.
For the latest version, always check https://github.com/earlephilhower/arduino-pico
+25
View File
@@ -262,6 +262,18 @@ default Pico SDK USB stack. To change it, add
Note that the special "No USB" setting is also supported, through the
shortcut-define ``PIO_FRAMEWORK_ARDUINO_NO_USB``.
USB Customization
-----------------
If you want to change the USB VID, PID, product or manufacturer name that the device will appear under, configure them as follows:
.. code:: ini
board_build.arduino.earlephilhower.usb_manufacturer = Custom Manufacturer
board_build.arduino.earlephilhower.usb_product = Ultra Cool Product
board_build.arduino.earlephilhower.usb_vid = 0xABCD
board_build.arduino.earlephilhower.usb_pid = 0x1337
IP Stack
--------
@@ -309,6 +321,19 @@ local copy of the core (with e.g. some modifications) on disk (`see documentatio
Note that this can only be done for versions that have the PlatformIO
builder script it in, so versions before 1.9.2 are not supported.
Selecting the CPU architecture
------------------------------
By default Platform.IO will build for the onboard ARM cores on the RP2350. To build RISC-V binaries
adjust the ``board_build.mcu`` option accordingly:
.. code:: ini
; RP2350 based (RISC-V)
[env:rpipico2-riscv]
board = rpipico2
board_build.mcu = rp2350-riscv
Examples
--------
+8 -1
View File
@@ -6,7 +6,14 @@ is supported by the core with some minor caveats:
* PSRAM is supported via a new ``pmalloc`` call and ``PSRAM`` variable decorator.
* Both RP2350A and RP2350B (48 GPIOs) are supported.
* Only ARM mode is available. For RISC-V (Hazard3), please use the raw SDK.
ARM and RISC-V Modes
~~~~~~~~~~~~~~~~~~~~
Either set of cores can be used on the RP2350, ARM Cortex-M33 or RISC-V Hazard3.
Select the desired core from the IDE menus under ``Tools->CPU Architecture``.
As of the initial release, all libraries should work under the new RISC-V mode with
the exception of FreeRTOS. If not, patches are always welcome.
P2350-E9 Errata ("Increased leakage current on Bank 0 GPIO when pad input is enabled")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+1 -1
View File
@@ -1,2 +1,2 @@
// Do not edit -- Automatically generated by tools/sdk/ssl/bearssl/Makefile
#define BEARSSL_GIT c2c9d9d
#define BEARSSL_GIT 5b7f3d5
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+336
View File
@@ -0,0 +1,336 @@
/* Based on GCC ARM embedded samples.
Defines the following symbols for use by code:
__exidx_start
__exidx_end
__etext
__data_start__
__preinit_array_start
__preinit_array_end
__init_array_start
__init_array_end
__fini_array_start
__fini_array_end
__data_end__
__bss_start__
__bss_end__
__end__
end
__HeapLimit
__StackLimit
__StackTop
__stack (== StackTop)
*/
MEMORY
{
FLASH(rx) : ORIGIN = 0x10000000, LENGTH = __FLASH_LENGTH__
PSRAM(rwx) : ORIGIN = 0x11000000, LENGTH = __PSRAM_LENGTH__
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = __RAM_LENGTH__
SCRATCH_X(rwx) : ORIGIN = 0x20080000, LENGTH = 4k
SCRATCH_Y(rwx) : ORIGIN = 0x20081000, LENGTH = 4k
}
PROVIDE ( _EEPROM_start = __EEPROM_START__ );
PROVIDE ( _FS_start = __FS_START__ );
PROVIDE ( _FS_end = __FS_END__ );
ENTRY(_entry_point)
SECTIONS
{
.flash_begin : {
__flash_binary_start = .;
} > FLASH
.ota : {
/* Start image with OTA */
KEEP (*(.OTA))
*ota.o
} > FLASH
.partition : {
. = __flash_binary_start + 0x2ff0;
LONG(__FS_START__)
LONG(__FS_END__)
LONG(__EEPROM_START__)
LONG(__FLASH_LENGTH__)
} > FLASH
/* The bootrom will enter the image at the point indicated in your
IMAGE_DEF, which is usually the reset handler of your vector table.
The debugger will use the ELF entry point, which is the _entry_point
symbol, and in our case is *different from the bootrom's entry point.*
This is used to go back through the bootrom on debugger launches only,
to perform the same initial flash setup that would be performed on a
cold boot.
*/
.text : {
KEEP (*(.vectors))
__logical_binary_start = .;
KEEP (*(.binary_info_header))
__binary_info_header_end = .;
KEEP (*(.embedded_block))
__embedded_block_end = .;
KEEP (*(.reset))
/* TODO revisit this now memset/memcpy/float in ROM */
/* bit of a hack right now to exclude all floating point and time critical (e.g. memset, memcpy) code from
* FLASH ... we will include any thing excluded here in .data below by default */
*(.init)
*libgcc.a:cmse_nonsecure_call.o
*(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .text*)
*(.fini)
/* Pull all c'tors into .text */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* Followed by destructors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(SORT(.preinit_array.*)))
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
*(SORT(.fini_array.*))
*(.fini_array)
PROVIDE_HIDDEN (__fini_array_end = .);
*(.eh_frame*)
. = ALIGN(4);
} > FLASH
/* Note the boot2 section is optional, and should be discarded if there is
no reference to it *inside* the binary, as it is not called by the
bootrom. (The bootrom performs a simple best-effort XIP setup and
leaves it to the binary to do anything more sophisticated.) However
there is still a size limit of 256 bytes, to ensure the boot2 can be
stored in boot RAM.
Really this is a "XIP setup function" -- the name boot2 is historic and
refers to its dual-purpose on RP2040, where it also handled vectoring
from the bootrom into the user image.
*/
/*
.boot2 : {
__boot2_start__ = .;
*(.boot2)
__boot2_end__ = .;
} > FLASH
ASSERT(__boot2_end__ - __boot2_start__ <= 256,
"ERROR: Pico second stage bootloader must be no more than 256 bytes in size")
*/
.rodata : {
*(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .rodata*)
*(.srodata*)
. = ALIGN(4);
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.flashdata*)))
. = ALIGN(4);
} > FLASH
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;
/* Machine inspectable binary information */
. = ALIGN(4);
__binary_info_start = .;
.binary_info :
{
KEEP(*(.binary_info.keep.*))
*(.binary_info.*)
} > FLASH
__binary_info_end = .;
. = ALIGN(4);
.ram_vector_table (NOLOAD): {
*(.ram_vector_table)
} > RAM
.uninitialized_data (NOLOAD): {
. = ALIGN(4);
*(.uninitialized_data*)
} > RAM
.data : {
__data_start__ = .;
*(vtable)
*(.time_critical*)
/* remaining .text and .rodata; i.e. stuff we exclude above because we want it in RAM */
*(.text*)
. = ALIGN(4);
*(.rodata*)
. = ALIGN(4);
*(.data*)
*(.sdata*)
. = ALIGN(4);
*(.after_data.*)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__mutex_array_start = .);
KEEP(*(SORT(.mutex_array.*)))
KEEP(*(.mutex_array))
PROVIDE_HIDDEN (__mutex_array_end = .);
*(.jcr)
. = ALIGN(4);
} > RAM AT> FLASH
.tdata : {
. = ALIGN(4);
*(.tdata .tdata.* .gnu.linkonce.td.*)
/* All data end */
__tdata_end = .;
} > RAM AT> FLASH
PROVIDE(__data_end__ = .);
/* __etext is (for backwards compatibility) the name of the .data init source pointer (...) */
__etext = LOADADDR(.data);
.tbss (NOLOAD) : {
. = ALIGN(4);
__bss_start__ = .;
__tls_base = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon)
__tls_end = .;
} > RAM
.bss (NOLOAD) : {
. = ALIGN(4);
__tbss_end = .;
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*)))
*(COMMON)
PROVIDE(__global_pointer$ = . + 2K);
*(.sbss*)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap (NOLOAD):
{
__end__ = .;
end = __end__;
KEEP(*(.heap*))
/* historically on GCC sbrk was growing past __HeapLimit to __StackLimit, however
to be more compatible, we now set __HeapLimit explicitly to where the end of the heap is */
. = ORIGIN(RAM) + LENGTH(RAM);
__HeapLimit = .;
} > RAM
/* Start and end symbols must be word-aligned */
.scratch_x : {
__scratch_x_start__ = .;
*(.scratch_x.*)
. = ALIGN(4);
__scratch_x_end__ = .;
} > SCRATCH_X AT > FLASH
__scratch_x_source__ = LOADADDR(.scratch_x);
.scratch_y : {
__scratch_y_start__ = .;
*(.scratch_y.*)
. = ALIGN(4);
__scratch_y_end__ = .;
} > SCRATCH_Y AT > FLASH
__scratch_y_source__ = LOADADDR(.scratch_y);
/* .stack*_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later
*
* stack1 section may be empty/missing if platform_launch_core1 is not used */
/* by default we put core 0 stack at the end of scratch Y, so that if core 1
* stack is not used then all of SCRATCH_X is free.
*/
.stack1_dummy (NOLOAD):
{
*(.stack1*)
} > SCRATCH_X
.stack_dummy (NOLOAD):
{
KEEP(*(.stack*))
} > SCRATCH_Y
.flash_end : {
KEEP(*(.embedded_end_block*))
PROVIDE(__flash_binary_end = .);
} > FLASH = 0xaa
.psram (NOLOAD) : {
__psram_start__ = .;
*(.psram*)
. = ALIGN(4096);
__psram_heap_start__ = .;
} > PSRAM
/* stack limit is poorly named, but historically is maximum heap ptr */
__StackLimit = ORIGIN(RAM) + LENGTH(RAM);
__StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X);
__StackTop = ORIGIN(SCRATCH_Y) + LENGTH(SCRATCH_Y);
__StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy);
__StackBottom = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* picolibc and LLVM */
PROVIDE (__heap_start = __end__);
PROVIDE (__heap_end = __HeapLimit);
PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1));
PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
/* TLSF */
PROVIDE (__psram_start = __psram_start__);
PROVIDE (__psram_heap_start = __psram_heap_start__);
/* llvm-libc */
PROVIDE (_end = __end__);
PROVIDE (__llvm_libc_heap_limit = __HeapLimit);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed")
ASSERT( __binary_info_header_end - __logical_binary_start <= 1024, "Binary info must be in first 1024 bytes of the binary")
ASSERT( __embedded_block_end - __logical_binary_start <= 4096, "Embedded block must be in first 4096 bytes of the binary")
/* todo assert on extra code */
}
Binary file not shown.
+53
View File
@@ -0,0 +1,53 @@
-DCFG_TUSB_MCU=OPT_MCU_RP2040
-DCFG_TUSB_OS=OPT_OS_PICO
-DLIB_BOOT_STAGE2_HEADERS=1
-DLIB_PICO_ATOMIC=1
-DLIB_PICO_BIT_OPS=1
-DLIB_PICO_BIT_OPS_PICO=1
-DLIB_PICO_CLIB_INTERFACE=1
-DLIB_PICO_CRT0=1
-DLIB_PICO_CXX_OPTIONS=1
-DLIB_PICO_DIVIDER=1
-DLIB_PICO_DIVIDER_COMPILER=1
-DLIB_PICO_DOUBLE=1
-DLIB_PICO_DOUBLE_PICO=1
-DLIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1
-DLIB_PICO_FLOAT=1
-DLIB_PICO_FLOAT_PICO=1
-DLIB_PICO_FLOAT_PICO_VFP=1
-DLIB_PICO_INT64_OPS=1
-DLIB_PICO_INT64_OPS_COMPILER=1
-DLIB_PICO_MEM_OPS=1
-DLIB_PICO_MEM_OPS_COMPILER=1
-DLIB_PICO_NEWLIB_INTERFACE=1
-DLIB_PICO_PLATFORM=1
-DLIB_PICO_PLATFORM_COMPILER=1
-DLIB_PICO_PLATFORM_PANIC=1
-DLIB_PICO_PLATFORM_SECTIONS=1
-DLIB_PICO_RUNTIME=1
-DLIB_PICO_RUNTIME_INIT=1
-DLIB_PICO_STANDARD_BINARY_INFO=1
-DLIB_PICO_STANDARD_LINK=1
-DLIB_PICO_SYNC=1
-DLIB_PICO_SYNC_CRITICAL_SECTION=1
-DLIB_PICO_SYNC_MUTEX=1
-DLIB_PICO_SYNC_SEM=1
-DLIB_PICO_TIME=1
-DLIB_PICO_TIME_ADAPTER=1
-DLIB_PICO_UNIQUE_ID=1
-DLIB_PICO_UTIL=1
-DLIB_TINYUSB_BOARD=1
-DLIB_TINYUSB_DEVICE=1
-DPICO_32BIT=1
-DPICO_BOARD=\"solderparty_rp2350_stamp_xl\"
-DPICO_BUILD=1
-DPICO_COPY_TO_RAM=0
-DPICO_CXX_ENABLE_EXCEPTIONS=0
-DPICO_NO_FLASH=0
-DPICO_NO_HARDWARE=0
-DPICO_ON_DEVICE=1
-DPICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1
-DPICO_RP2040_USB_DEVICE_UFRAME_FIX=1
-DPICO_RP2350=1
-DPICO_RISCV=1
-DPICO_USE_BLOCKED_RAM=0
+10
View File
@@ -0,0 +1,10 @@
-iwithprefixbefore/include/rp2350
-iwithprefixbefore/include/rp2350/pico_base
-iwithprefixbefore/pico-sdk/src/rp2350/hardware_regs/include
-iwithprefixbefore/pico-sdk/src/rp2350/hardware_structs/include
-iwithprefixbefore/pico-sdk/src/rp2350/pico_platform/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_riscv/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_riscv_platform_timer/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_hazard3/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_sha256/include
-iwithprefixbefore/pico-sdk/src/rp2_common/pico_sha256/include
+1
View File
@@ -0,0 +1 @@
-Wl,--wrap=__ctzdi2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -133,7 +133,7 @@ SECTIONS
refers to its dual-purpose on RP2040, where it also handled vectoring
from the bootrom into the user image.
*/
/*
.boot2 : {
__boot2_start__ = .;
*(.boot2)
@@ -142,7 +142,7 @@ SECTIONS
ASSERT(__boot2_end__ - __boot2_start__ <= 256,
"ERROR: Pico second stage bootloader must be no more than 256 bytes in size")
*/
.rodata : {
*(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .rodata*)
*(.srodata*)
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -39,7 +39,7 @@
-DLIB_TINYUSB_BOARD=1
-DLIB_TINYUSB_DEVICE=1
-DPICO_32BIT=1
-DPICO_BOARD=\"pico2\"
-DPICO_BOARD=\"solderparty_rp2350_stamp_xl\"
-DPICO_BUILD=1
-DPICO_COPY_TO_RAM=0
-DPICO_CXX_ENABLE_EXCEPTIONS=0
+24 -6
View File
@@ -24,9 +24,9 @@
#include "ADCInput.h"
#include <hardware/adc.h>
ADCInput::ADCInput(pin_size_t p0, pin_size_t p1, pin_size_t p2, pin_size_t p3) {
ADCInput::ADCInput(pin_size_t p0, pin_size_t p1, pin_size_t p2, pin_size_t p3, pin_size_t p4, pin_size_t p5, pin_size_t p6, pin_size_t p7) {
_running = false;
setPins(p0, p1, p2, p3);
setPins(p0, p1, p2, p3, p4, p5, p6, p7);
_freq = 48000;
_arb = nullptr;
_cb = nullptr;
@@ -49,19 +49,30 @@ bool ADCInput::setBuffers(size_t buffers, size_t bufferWords) {
int ADCInput::_mask(pin_size_t p) {
switch (p) {
#if !defined(PICO_RP2350B)
case 26: return 1;
case 27: return 2;
case 28: return 4;
case 29: return 8;
#else // Starts at 40 and there are 8 of them
case 40: return 1;
case 41: return 2;
case 42: return 4;
case 43: return 8;
case 44: return 16;
case 45: return 32;
case 46: return 64;
case 47: return 128;
#endif
default: return 0;
}
}
bool ADCInput::setPins(pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3) {
bool ADCInput::setPins(pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3, pin_size_t pin4, pin_size_t pin5, pin_size_t pin6, pin_size_t pin7) {
if (_running) {
return false;
}
_pinMask = _mask(pin0) | _mask(pin1) | _mask(pin2) | _mask(pin3);
_pinMask = _mask(pin0) | _mask(pin1) | _mask(pin2) | _mask(pin3) | _mask(pin4) | _mask(pin5) | _mask(pin6) | _mask(pin7);
return true;
}
@@ -94,10 +105,17 @@ bool ADCInput::begin() {
// Set up the GPIOs to go to ADC
adc_init();
int cnt = 0;
for (int mask = 1, pin = 26; pin <= 29; mask <<= 1, pin++) {
#if !defined(PICO_RP2350B)
int startpin = 26;
int maxpin = 29;
#else
int startpin = 40;
int maxpin = 47;
#endif
for (int mask = 1, pin = startpin; pin <= maxpin; mask <<= 1, pin++) {
if (_pinMask & mask) {
if (!cnt) {
adc_select_input(pin - 26);
adc_select_input(pin - startpin);
}
cnt++;
adc_gpio_init(pin);
+2 -2
View File
@@ -26,12 +26,12 @@
class ADCInput : public Stream {
public:
ADCInput(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255);
ADCInput(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255, pin_size_t pin4 = 255, pin_size_t pin5 = 255, pin_size_t pin6 = 255, pin_size_t pin7 = 255);
virtual ~ADCInput();
bool setBuffers(size_t buffers, size_t bufferWords);
bool setFrequency(int newFreq);
bool setPins(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255);
bool setPins(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255, pin_size_t pin4 = 255, pin_size_t pin5 = 255, pin_size_t pin6 = 255, pin_size_t pin7 = 255);
bool begin(long sampleRate) {
setFrequency(sampleRate);
@@ -1,3 +1,5 @@
#ifdef PICO_RP2350
#ifndef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/mpu_wrappers_v2_asm.c"
#endif
#endif
+4
View File
@@ -1,5 +1,9 @@
#ifdef PICO_RP2040
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/port.c"
#else
#ifndef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/port.c"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/port.c"
#endif
#endif
+5
View File
@@ -0,0 +1,5 @@
#ifdef PICO_RP2350
#ifdef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/portASM.S"
#endif
#endif
+6
View File
@@ -0,0 +1,6 @@
#ifdef PICO_RP2350
#ifdef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portContext.h"
#endif
#endif
+2
View File
@@ -1,3 +1,5 @@
#ifdef PICO_RP2350
#ifndef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portasm.c"
#endif
#endif
+4
View File
@@ -1,5 +1,9 @@
#ifdef PICO_RP2350
#ifndef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portmacro.h"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/portmacro.h"
#endif
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/portmacro.h"
#endif
+4
View File
@@ -1,5 +1,9 @@
#ifdef PICO_RP2350
#ifndef __riscv
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure//rp2040_config.h"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_RISC-V/include/rp2040_config.h"
#endif
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/rp2040_config.h"
#endif
+1 -1
View File
@@ -119,7 +119,7 @@ bool PWMAudio::begin() {
if (_stereo && (_pin & 1)) {
// Illegal, need to have consecutive pins on the same PWM slice
Serial.printf("ERROR: PWMAudio stereo mode requires pin be even\n");
DEBUGV("ERROR: PWMAudio stereo mode requires pin be even\n");
return false;
}
@@ -11,6 +11,7 @@
#include <LittleFS.h>
#include "blink_100_1000_rp2040.h"
#include "blink_500_500_rp2350.h"
#include "blink_250_250_rp2350-riscv.h"
void setup() {
Serial.begin(115200);
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,5 @@
#ifdef PICO_RP2350
#ifndef __riscv
const unsigned char blink[] = {
0x00, 0x20, 0x08, 0x20, 0x49, 0x01, 0x00, 0x10, 0x13, 0x01, 0x00, 0x10,
0x15, 0x01, 0x00, 0x10, 0x11, 0x01, 0x00, 0x10, 0x11, 0x01, 0x00, 0x10,
@@ -5682,3 +5683,4 @@ const unsigned char blink[] = {
0xfc, 0x26, 0xff, 0xff, 0x79, 0x35, 0x12, 0xab
};
#endif
#endif
+12 -3
View File
@@ -9,12 +9,21 @@ if (${cpu} MATCHES "rp2040")
set(PICO_CYW43_SUPPORTED 0)
set(OBJARCH armv6-m)
set(WRAP -Wl,--wrap=clocks_init)
elseif(${cpu} MATCHES "rp2350")
set(TUPLE arm-none-eabi)
elseif(${cpu} MATCHES "rp2350$")
set(PICO_BOARD pico2)
set(PICO_PLATFORM rp2350)
set(PICO_CYW43_SUPPORTED 0)
set(OBJARCH armv8-m)
set(WRAP )
set(TUPLE arm-none-eabi)
elseif(${cpu} MATCHES "rp2350-riscv$")
set(PICO_BOARD pico2)
set(PICO_PLATFORM rp2350-riscv)
set(PICO_CYW43_SUPPORTED 0)
set(OBJARCH rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb)
set(WRAP )
set(TUPLE riscv32-unknown-elf)
else()
message(FATAL_ERROR "Unknown CPU, '${cpu}'")
endif()
@@ -101,7 +110,7 @@ target_link_libraries(ota
)
add_custom_command(TARGET ota POST_BUILD
COMMAND ../../system/arm-none-eabi/bin/arm-none-eabi-ld -r -A ${OBJARCH} -b binary -o ota.o ota.bin
COMMAND ../../system/arm-none-eabi/bin/arm-none-eabi-objcopy --rename-section .data=.OTA ota.o ../../lib/${cpu}/ota.o
COMMAND ../../system/${TUPLE}/bin/${TUPLE}-ld -r -A ${OBJARCH} -b binary -o ota.o ota.bin
COMMAND ../../system/${TUPLE}/bin/${TUPLE}-objcopy --rename-section .data=.OTA ota.o ../../lib/${cpu}/ota.o
COMMAND cp ../ota_command.h ../../include/${cpu}/pico_base/pico/.
)
+8
View File
@@ -4,6 +4,7 @@ set -e # Exit on error
export PICO_SDK_PATH="$(cd ../pico-sdk/; pwd)"
export PATH="$(cd ../system/arm-none-eabi/bin; pwd):$PATH"
export PATH="$(cd ../system/riscv32-unknown-elf/bin; pwd):$PATH"
rm -rf build
mkdir build
@@ -18,3 +19,10 @@ cd build-rp2350
CPU=rp2350 cmake .. -DPICO_RUNTIME_SKIP_INIT_DEFAULT_ALARM_POOL=1
CPU=rp2350 make -j # VERBOSE=1
cd ..
rm -rf build-rp2350-riscv
mkdir build-rp2350-riscv
cd build-rp2350-riscv
CPU=rp2350-riscv cmake .. -DPICO_RUNTIME_SKIP_INIT_DEFAULT_ALARM_POOL=1
CPU=rp2350-riscv make -j # VERBOSE=1
cd ..
+295
View File
@@ -0,0 +1,295 @@
/* Based on GCC ARM embedded samples.
Defines the following symbols for use by code:
__exidx_start
__exidx_end
__etext
__data_start__
__preinit_array_start
__preinit_array_end
__init_array_start
__init_array_end
__fini_array_start
__fini_array_end
__data_end__
__bss_start__
__bss_end__
__end__
end
__HeapLimit
__StackLimit
__StackTop
__stack (== StackTop)
*/
MEMORY
{
INCLUDE "pico_flash_region.ld"
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 212k
GLOBALS(rwx) : ORIGIN = 0x20035000, LENGTH = 44k
SCRATCH_X(rwx) : ORIGIN = 0x20080000, LENGTH = 4k
SCRATCH_Y(rwx) : ORIGIN = 0x20081000, LENGTH = 4k
}
ENTRY(_entry_point)
SECTIONS
{
/* Second stage bootloader is prepended to the image. It must be 256 bytes big
and checksummed. It is usually built by the boot_stage2 target
in the Raspberry Pi Pico SDK
*/
/* Make sure the globals are not copied/etc. They're empty RAM we will init ourselves */
.globals (NOLOAD) : {
} > GLOBALS
.flash_begin : {
__flash_binary_start = .;
} > FLASH
/* The bootrom will enter the image at the point indicated in your
IMAGE_DEF, which is usually the reset handler of your vector table.
The debugger will use the ELF entry point, which is the _entry_point
symbol, and in our case is *different from the bootrom's entry point.*
This is used to go back through the bootrom on debugger launches only,
to perform the same initial flash setup that would be performed on a
cold boot.
*/
.flashtext : {
__logical_binary_start = .;
KEEP (*(.vectors))
KEEP (*(.binary_info_header))
__binary_info_header_end = .;
KEEP (*(.embedded_block))
__embedded_block_end = .;
KEEP (*(.reset))
. = ALIGN(4);
} > FLASH
.rodata : {
/* segments not marked as .flashdata are instead pulled into .data (in RAM) to avoid accidental flash accesses */
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.flashdata*)))
. = ALIGN(4);
} > FLASH
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;
/* Machine inspectable binary information */
. = ALIGN(4);
__binary_info_start = .;
.binary_info :
{
KEEP(*(.binary_info.keep.*))
*(.binary_info.*)
} > FLASH
__binary_info_end = .;
. = ALIGN(4);
/* Vector table goes first in RAM, to avoid large alignment hole */
.ram_vector_table (NOLOAD): {
*(.ram_vector_table)
} > RAM
.uninitialized_data (NOLOAD): {
. = ALIGN(4);
*(.uninitialized_data*)
} > RAM
.text : {
__ram_text_start__ = .;
*(.init)
*(.text*)
*(.fini)
/* Pull all c'tors into .text */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* Followed by destructors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
*(.eh_frame*)
. = ALIGN(4);
__ram_text_end__ = .;
} > RAM AT> FLASH
__ram_text_source__ = LOADADDR(.text);
. = ALIGN(4);
.data : {
__data_start__ = .;
*(vtable)
*(.time_critical*)
. = ALIGN(4);
*(.rodata*)
*(.srodata*)
. = ALIGN(4);
*(.data*)
*(.sdata*)
. = ALIGN(4);
*(.after_data.*)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__mutex_array_start = .);
KEEP(*(SORT(.mutex_array.*)))
KEEP(*(.mutex_array))
PROVIDE_HIDDEN (__mutex_array_end = .);
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(SORT(.preinit_array.*)))
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
*(SORT(.fini_array.*))
*(.fini_array)
PROVIDE_HIDDEN (__fini_array_end = .);
*(.jcr)
. = ALIGN(4);
} > RAM AT> FLASH
.tdata : {
. = ALIGN(4);
*(.tdata .tdata.* .gnu.linkonce.td.*)
/* All data end */
__tdata_end = .;
} > RAM AT> FLASH
PROVIDE(__data_end__ = .);
/* __etext is (for backwards compatibility) the name of the .data init source pointer (...) */
__etext = LOADADDR(.data);
.tbss (NOLOAD) : {
. = ALIGN(4);
__bss_start__ = .;
__tls_base = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon)
__tls_end = .;
} > RAM
.bss : {
. = ALIGN(4);
__tbss_end = .;
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*)))
*(COMMON)
PROVIDE(__global_pointer$ = . + 2K);
*(.sbss*)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap (NOLOAD):
{
__end__ = .;
end = __end__;
KEEP(*(.heap*))
/* historically on GCC sbrk was growing past __HeapLimit to __StackLimit, however
to be more compatible, we now set __HeapLimit explicitly to where the end of the heap is */
. = ORIGIN(RAM) + LENGTH(RAM);
__HeapLimit = .;
} > RAM
/* Start and end symbols must be word-aligned */
.scratch_x : {
__scratch_x_start__ = .;
*(.scratch_x.*)
. = ALIGN(4);
__scratch_x_end__ = .;
} > SCRATCH_X AT > FLASH
__scratch_x_source__ = LOADADDR(.scratch_x);
.scratch_y : {
__scratch_y_start__ = .;
*(.scratch_y.*)
. = ALIGN(4);
__scratch_y_end__ = .;
} > SCRATCH_Y AT > FLASH
__scratch_y_source__ = LOADADDR(.scratch_y);
/* .stack*_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later
*
* stack1 section may be empty/missing if platform_launch_core1 is not used */
/* by default we put core 0 stack at the end of scratch Y, so that if core 1
* stack is not used then all of SCRATCH_X is free.
*/
.stack1_dummy (NOLOAD):
{
*(.stack1*)
} > SCRATCH_X
.stack_dummy (NOLOAD):
{
KEEP(*(.stack*))
} > SCRATCH_Y
.flash_end : {
KEEP(*(.embedded_end_block*))
PROVIDE(__flash_binary_end = .);
} > FLASH =0xaa
/* stack limit is poorly named, but historically is maximum heap ptr */
__StackLimit = ORIGIN(RAM) + LENGTH(RAM);
__StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X);
__StackTop = ORIGIN(SCRATCH_Y) + LENGTH(SCRATCH_Y);
__StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy);
__StackBottom = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* picolibc and LLVM */
PROVIDE (__heap_start = __end__);
PROVIDE (__heap_end = __HeapLimit);
PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1));
PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
/* llvm-libc */
PROVIDE (_end = __end__);
PROVIDE (__llvm_libc_heap_limit = __HeapLimit);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed")
ASSERT( __binary_info_header_end - __logical_binary_start <= 1024, "Binary info must be in first 1024 bytes of the binary")
ASSERT( __embedded_block_end - __logical_binary_start <= 4096, "Embedded block must be in first 4096 bytes of the binary")
/* todo assert on extra code */
PROVIDE(__mainapp = 0x10003022);
}
+8
View File
@@ -178,6 +178,13 @@ int main(int a, char **b) {
do_ota();
#ifdef __riscv
extern void __mainapp();
__mainapp();
// Should never get here!
return 0;
#else
// Reset the interrupt/etc. vectors to the real app. Will be copied to RAM in app's runtime_init
scb_hw->vtor = (uint32_t)0x10003000;
@@ -190,6 +197,7 @@ int main(int a, char **b) {
// Should never get here!
return *sp;
#endif
}
#pragma GCC pop_options
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "framework-arduinopico",
"version": "1.40003.0",
"version": "1.40101.0",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040, RP2350)",
"keywords": [
"framework",
+233 -166
View File
@@ -333,17 +333,22 @@
"toolsDependencies": [
{
"packager": "rp2040",
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-gcc"
},
{
"packager": "rp2040",
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-gcc-riscv"
},
{
"packager": "rp2040",
"version": "4.0.1-8ec9d6f",
"name": "pqt-mklittlefs"
},
{
"packager": "rp2040",
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-pioasm"
},
{
@@ -353,12 +358,12 @@
},
{
"packager": "rp2040",
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-openocd"
},
{
"packager": "rp2040",
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-picotool"
}
],
@@ -369,125 +374,187 @@
],
"tools": [
{
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-gcc",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:cb84f473efda1b8147d552b5e42a20017654fb13ffa8fa6fabdca6b517f0eaa9",
"size": "106002809"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:f80c0bacbb9e522666e2f41a35a8536dfe1b959532062e63dd052a576ba7f418",
"size": "114435949"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:736679d3aa55ba08ca2cfc4e88e1a71eff2bcba7c4d1aed2f9d3e325bf7f362d",
"size": "107960125"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:ba8bfadaa28da88777f95de0f28720d4bc6d24367bacc0751fe7f91fabec543d",
"size": "117654636"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.arm-none-eabi-8ec9d6f.240929.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-8ec9d6f.240929.zip",
"checksum": "SHA-256:3b9672cbd4ebb32cd1510bfd7839ab0b59f6fac3ecd6151aa0d10047a1c2230a",
"size": "124363537"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:509820140252eed71cc4148f89c00318febddea08e500ffaa642cb7b7831ba59",
"size": "118604056"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:ae082491cc07d60c014ca928c406aed72c4b1ead4c33076216c77fd2d242f74d",
"size": "115607420"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.arm-none-eabi-8ec9d6f.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-8ec9d6f.240929.zip",
"checksum": "SHA-256:a1ac18cde856fa01aafc9985a719f3749abd3588ac6725d1781f02da94b84d54",
"size": "128268207"
}
]
},
{
"version": "4.0.1-8ec9d6f",
"name": "pqt-picotool",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:3e20acb5e8c97448a5ffa316cfc74307df0fd887cf4364d787956ddc359608c1",
"size": "856203"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:71eb93270747c5910893f36f5552affd4c254f085b4a7850765b29eec28040ec",
"size": "856205"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:67a912dd712a1717bf850205aff9ee4b3f0a289c4d0a87ab62e9f71c433e6d38",
"size": "896504"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:1f73e2c6ce8c7503678dfacec3d2ea889e0f5a161912eff68b290cf405206094",
"size": "896502"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:2fa0a0a2affa8991b917c06b89cb3c4be597d120bd920b6258a4f7ce041c877b",
"size": "840245"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:6cd60632141f68e1bde7afef93dc5521e78dfff2be421ffddd2da76af5bb3eb1",
"size": "840254"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:b0c8018a58c3d3b1e72698326a38f660c9dbc535a393179a92a009a24a22e90a",
"size": "984649"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:bd5acd7d7085ba01bff07fef6ce4a5ba067abd0b8914c33fae371ec87c846d83",
"size": "984652"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.picotool-8a9af99.240919.zip",
"archiveFileName": "i686-w64-mingw32.picotool-8a9af99.240919.zip",
"checksum": "SHA-256:f23a2a4b3994b80f885e28050f5559a2875294a62de431d7e0d254a800caece2",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.picotool-8a9af99.240929.zip",
"archiveFileName": "i686-w64-mingw32.picotool-8a9af99.240929.zip",
"checksum": "SHA-256:9f7c90c4f05996f5156beb4dc06edfc7e0b36006edd6ad273daca0085ea19ac6",
"size": "1335369"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:86b55d51fc9e154ce209a067afac54116bce2bac823f5f3ec3687b7a021230a5",
"size": "829476"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:a8d30f63e421901000d2b2520f047d1dc586f827f41a3ef52056fd92272ff051",
"size": "829477"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:1192b43bcacfa33cc5b2d58e4686c7cbf3e4e77fd819d2fbf2cc797a3e174bb8",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.picotool-8a9af99.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.picotool-8a9af99.240929.tar.gz",
"checksum": "SHA-256:4c5b43afd1e9dba149753089c9715e110f2612cbd47fa005fb033adbe5237ad8",
"size": "926046"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.picotool-8a9af99.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.picotool-8a9af99.240919.zip",
"checksum": "SHA-256:86a95cae6edfbefe1725f66fcea9ebe20d19bdc8708371d32a21473ca197967d",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.picotool-8a9af99.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.picotool-8a9af99.240929.zip",
"checksum": "SHA-256:d4a43c8172f6b32de412a08e4deac4ef50218f5955c9cda85411b252fcecaea3",
"size": "1270392"
}
]
},
{
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-openocd",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:eb89c3fb9d797e6dadbc14a866d1cfe27b425689a32687773aef6bf3dbe8d855",
"size": "1981014"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:d2f2e615b45cb57dad5bf8cc8637dc047f0e2a2d6d07907b961f82fdc9d9dff1",
"size": "1981025"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:845e7a4918b8ee0fea7854b0d7b973009390b245560fc1699be71d0c5470ff71",
"size": "7440912"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:b9f98837bce6da1e7d2229d8e2a9a2736a433356b82cea678b8fc4e95c3cd30f",
"size": "7354446"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:4e9278e8777af01f90c51dc7fb9d5c8c912c11a9c3597a3d8b4f314d17f17ed4",
"size": "7296425"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:5a13e718029d5b86fef880f78e60e7521fcf1952911cd65b4cbfc8ef09a5d37c",
"size": "7209884"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:ace2a6c14e7c1e89921b50e1e0735ac2999b193d8baf9e9d35fbdb2b6a870d20",
"size": "7031049"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:fa324ab0a8a20dab6335196e6b8ebb5fb0c083dc4d8017140287068bf85b3b5f",
"size": "6944581"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.openocd-ebec9504d.240919.zip",
"archiveFileName": "i686-w64-mingw32.openocd-ebec9504d.240919.zip",
"checksum": "SHA-256:0082def9373e56608c584e94c8c199c44f8fd00153557878478edaf383d496a9",
"size": "2597198"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.openocd-ebec9504d.240929.zip",
"archiveFileName": "i686-w64-mingw32.openocd-ebec9504d.240929.zip",
"checksum": "SHA-256:f0d9cd099bb80d9f68b3554ef9233b2576c4959b4d2ce7444a9a5358d3bd40e0",
"size": "2597199"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:1e0fe05bed6ab8d4e41898496b45940893fe308d1b66c49448fefa9c67d41024",
"size": "3193799"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:e06283df22585bf6a83742d364d3594f7bcd724aa8be83de0446c3d1eaca7a58",
"size": "3193818"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:8ddae277a21f485636989903b2ae0dbf98e5ae8d58c80bf73782bef217cf151b",
"size": "7462299"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-ebec9504d.240929.tar.gz",
"checksum": "SHA-256:d8dd0740e16414488de35f5ca1ddfcfe85763fe25d55a46cb9df8698ea83836d",
"size": "7375538"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.openocd-ebec9504d.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-ebec9504d.240919.zip",
"checksum": "SHA-256:a5d27ca4f6fa1e05f55d287c2cfdb124c47b3c064bf10c4f660ddd97dda8ed23",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.openocd-ebec9504d.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-ebec9504d.240929.zip",
"checksum": "SHA-256:4c6463c2818f7b9623d1c08c17c6e6036bd8d522631098d8befde5b66ab312f9",
"size": "2541780"
}
]
@@ -562,188 +629,188 @@
]
},
{
"version": "2.3.0-dfd82b2",
"name": "pqt-gcc",
"version": "4.0.1-8ec9d6f",
"name": "pqt-gcc-riscv",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:9a0bce8ae3d28489cdc2bf4d1d849b7b9c93f13b74f2449d07499f224801ed99",
"size": "96802517"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:2dc5495acf7de48ce8e1c3f723e78102ad06add8e8e5dee86bf1dc05b25147ad",
"size": "139017383"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:04dfe507037553fb5b0844bfc674d7f39cb8fa30fedbd72739b4c5324b260e04",
"size": "103997060"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:5d70f84ee56d68583ff61eff6461a4f3e2ecfcd445ffecdbb53e944dd229de5e",
"size": "148943445"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:365dd442d1d2cc284ddc7c1df7f96620e4b9169de268f4c2c2dd85f515724838",
"size": "97831453"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:65a3cd450d1b2a18e4bb6192f375e98e82a9808545d517a21357900a931f83f2",
"size": "142237277"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:8844d6c9f9040a673c0354b9fdc413faaa8f4075292f8b9fdefca020c0a7cd03",
"size": "106646523"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:130a9d0e970609dd27f70a27d5d34ed927b6a270f956f52aec3b636a206d86f6",
"size": "153960388"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"checksum": "SHA-256:11ff0b24c557cf8334450c6f4826230ec2f25efbf0792f506c3009e2663205ea",
"size": "113765075"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.riscv32-unknown-elf-8ec9d6f.240929.zip",
"archiveFileName": "i686-w64-mingw32.riscv32-unknown-elf-8ec9d6f.240929.zip",
"checksum": "SHA-256:25f985cd7ff242fa93a808582911545529eeab2d84b16ac96509425c11249c36",
"size": "159523471"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:c11b7f19751a13ba2fb456eaf209472666d77dec8720d51ef44091b8a6fadfa9",
"size": "108052800"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:4144abfef1c69cee272b6621dd995a5e88ff1e3cf646c8da30d64d9b1cd44b47",
"size": "153526986"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:1f37b78a9d371659e2a45b8c602046ec6a1c920f36959fc702db9c68cc2c778c",
"size": "106789920"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.riscv32-unknown-elf-8ec9d6f.240929.tar.gz",
"checksum": "SHA-256:63ed149ba20ddc215479eaae5f1709a6bd882f4cd583a52ac2171f9096fda3a5",
"size": "151383989"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"checksum": "SHA-256:ee3ed6354ccf71fcfdb2083859ffafc0e2dd6982906f14d3cdb501a85db6cbd8",
"size": "117655702"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.riscv32-unknown-elf-8ec9d6f.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.riscv32-unknown-elf-8ec9d6f.240929.zip",
"checksum": "SHA-256:182b38d22b8a4447b8b335c1ce482d16bfb0720be51d6368b404c8628a372dd8",
"size": "163390255"
}
]
},
{
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-pioasm",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:7db03dddebe3f2d736fb88fd1435076b0874667a9be8cfc18a273acc75067a11",
"size": "267871"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:6afebe366be3aefd1caa268ec309bd486d7f1f98eedba033ba3b83a0653f1184",
"size": "267869"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:d71c165b8ac243c578c3615f7a74857a6131c235bbf623b55437f3716d0d3097",
"size": "644219"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:48ca0fe638bf8ccca654c0588678178c3d9c2f933892dbd67244fe5f5637eacb",
"size": "644212"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:c8bed422247870a1163fa0fa967b4c49432dbdb2bf4b4a058f6bcfa03eaba637",
"size": "576895"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:06001c3eaf5fbe29e94634218569d13c8d61d6007f7b8da0cca1e7f1fd9414cc",
"size": "576904"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:12774501242f8d20d29a3d5461326ede3ab6906a98e55539aa908d9574994285",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:09c4db3bf797b2a9f5edc3db05717c32c2fdd045ebca12ffba1c3ba037759470",
"size": "703370"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.pioasm-efe2103.240919.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-efe2103.240919.zip",
"checksum": "SHA-256:be3705551828925cde12e59ee6ae54d9de4c0fea862f4def00f72d8ea4792c49",
"size": "797522"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.pioasm-efe2103.240929.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-efe2103.240929.zip",
"checksum": "SHA-256:50ec452554c000c692e1f8ee6657a5bb47d99aae62ac10cbf2da3e97cdc45db1",
"size": "797527"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:c4f24d6cb591c3e9b9e9d99a3b207e941e8ed0d27810a322ce94da18554ea47c",
"size": "780427"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:9161b685fe394a6bbc19e3f14082d018d230a33941edd523d163d158f0480422",
"size": "780453"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:7827603f11dd3bcda23c92440913980ee7eff6e867f686aa8188de7dea7dbb6d",
"size": "649758"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.pioasm-efe2103.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-efe2103.240929.tar.gz",
"checksum": "SHA-256:974481d6b9678c73cefc3c7df657647bc216f2d6c2bdef12236aa06542246973",
"size": "649767"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.pioasm-efe2103.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-efe2103.240919.zip",
"checksum": "SHA-256:ad047233dd4522474723e59e4b627d3f85ac3bdda75a32abd9797895f170909d",
"size": "929506"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.pioasm-efe2103.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-efe2103.240929.zip",
"checksum": "SHA-256:73cc318e0b1df84fcb661ae9322e22a52f49678f44d3766b4baa82b328b19822",
"size": "929510"
}
]
},
{
"version": "2.3.0-dfd82b2",
"version": "4.0.1-8ec9d6f",
"name": "pqt-mklittlefs",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:fe35b65fd8d9c03dfcd754f10c3e1ca0c750e850ce9a86302ab1e141d1ea8709",
"size": "72514"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-apple-darwin20.4.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:09ddf3f856f2828e94c1e3599021265eb1e69ed84d659604a638af4a010f4f3d",
"size": "72517"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:bc97b86b60a1f03635a9f387f64c61a0ad2192a1f7fb4ade60d606921d6ab548",
"size": "684061"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/aarch64-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:47e276ee0707e78fa4b588ef4346187071ea4be194519d405b8a1da91d34e682",
"size": "684064"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:96fde072a3b5951a3539baaaf47d9c1a8520f2757b6377ef58b7f2c0da4abd2b",
"size": "632931"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/arm-linux-gnueabihf.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:f4fb24a675de0bf3575ed6320ae1053d67355bbd3af116933bb1a90c1989bf57",
"size": "632936"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:ea520bf89f4596c0d06d68c47f26a4ce0a181458f0845330f95e38c4e9772d4c",
"size": "665586"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:29df0ca122767357a7f14a2b5fb6e6d1f912789086dcb5e3c39b9df8d85f908a",
"size": "665594"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"checksum": "SHA-256:c5782c8cb3cdeb03abda4fd2fed1dd1655c422920d407845bd85ec007af9f4ef",
"size": "1232207"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/i686-w64-mingw32.mklittlefs-2f7654f.240929.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-2f7654f.240929.zip",
"checksum": "SHA-256:fa9071ee8f806ca7bf1cc16e1cb2be5588908cff929ec91e007dafa33eb4be1c",
"size": "1232212"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:7c1732e98752f2b8a6d11f8f058c2a3cf426fa070d730e27d3c15d41bbde0376",
"size": "621579"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-apple-darwin20.4.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:50a932d7c0351a70c3ecfce725b2c7bd926ddfb086145c225bb1134ad1b1a5ff",
"size": "621594"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:e194f6c9d0b2e02c6b6cc326ad083581801ecf8f616da44d1755fbec5646b127",
"size": "690458"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-2f7654f.240929.tar.gz",
"checksum": "SHA-256:aec72ad65cec9a96afda0507605661dfd552d5e304dd654c1b1ebb2bcc9f2d76",
"size": "690461"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"checksum": "SHA-256:bd080b5b4ec7df84d444c72260010905a13744afca79f13e4017e658a56b4005",
"size": "1328982"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/4.0.1/x86_64-w64-mingw32.mklittlefs-2f7654f.240929.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-2f7654f.240929.zip",
"checksum": "SHA-256:83f75c88e8e44fa1a38346ccff2e89756ffcfcda96b5d849f9e6563d996081eb",
"size": "1328984"
}
]
}
+5 -4
View File
@@ -20,7 +20,7 @@
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=Raspberry Pi RP2040/RP2350 Boards
version=4.0.3
version=4.1.1
# Required discoveries and monitors
# ---------------------------------
@@ -29,13 +29,14 @@ pluggable_discovery.required.1=builtin:mdns-discovery
pluggable_monitor.required.serial=builtin:serial-monitor
runtime.tools.pqt-gcc.path={runtime.platform.path}/system/arm-none-eabi
runtime.tools.pqt-gcc-riscv.path={runtime.platform.path}/system/riscv32-unknown-elf
runtime.tools.pqt-python3.path={runtime.platform.path}/system/python3
runtime.tools.pqt-mklittlefs.path={runtime.platform.path}/system/mklittlefs
runtime.tools.pqt-pioasm.path={runtime.platform.path}/system/pioasm
runtime.tools.pqt-elf2uf2.path={runtime.platform.path}/system/elf2uf2
runtime.tools.pqt-openocd.path={runtime.platform.path}/system/openocd
runtime.tools.pqt-picotool.path={runtime.platform.path}/system/picotool
compiler.path={runtime.tools.pqt-gcc.path}/bin/
compiler.path={runtime.tools.{build.toolchainpkg}.path}/bin/
compiler.libraries.ldflags=
@@ -61,7 +62,7 @@ compiler.c.flags=-c {compiler.warning_flags} {compiler.defines} {compiler.flags}
compiler.c.elf.cmd={build.toolchain}-g++
compiler.c.elf.flags={compiler.warning_flags} {compiler.defines} {compiler.flags} {build.flags.optimize} -u _printf_float -u _scanf_float
compiler.S.cmd={build.toolchain}-gcc
compiler.S.flags=-c {compiler.warning_flags} {compiler.defines} -g -x assembler-with-cpp -MMD {compiler.includes} -g
compiler.S.flags=-c {compiler.warning_flags} {compiler.defines} -g -x assembler-with-cpp -MMD {compiler.includes} {build.toolchainopts} -g
compiler.cpp.cmd={build.toolchain}-g++
compiler.cpp.flags=-c {compiler.warning_flags} {compiler.defines} {compiler.flags} -MMD {compiler.includes} {build.flags.rtti} -std=gnu++17 -g -pipe
@@ -72,7 +73,7 @@ compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,
compiler.elf2hex.bin.flags=-O binary
compiler.elf2hex.hex.flags=-O ihex -R .eeprom
compiler.elf2hex.cmd={build.toolchain}-objcopy
compiler.ldflags={compiler.wrap} -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--undefined=runtime_init_install_ram_vector_table
compiler.ldflags={compiler.wrap} -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--undefined=runtime_init_install_ram_vector_table -Wl,--undefined=__pre_init_runtime_init_clocks -Wl,--undefined=__pre_init_runtime_init_bootrom_reset -Wl,--undefined=__pre_init_runtime_init_early_resets -Wl,--undefined=__pre_init_runtime_init_usb_power_down -Wl,--undefined=__pre_init_runtime_init_clocks -Wl,--undefined=__pre_init_runtime_init_post_clock_resets -Wl,--undefined=__pre_init_runtime_init_spin_locks_reset -Wl,--undefined=__pre_init_runtime_init_boot_locks_reset -Wl,--undefined=__pre_init_runtime_init_bootrom_locking_enable -Wl,--undefined=__pre_init_runtime_init_mutex -Wl,--undefined=__pre_init_runtime_init_default_alarm_pool -Wl,--undefined=__pre_init_first_per_core_initializer -Wl,--undefined=__pre_init_runtime_init_per_core_bootrom_reset -Wl,--undefined=__pre_init_runtime_init_per_core_h3_irq_registers -Wl,--undefined=__pre_init_runtime_init_per_core_irq_priorities
compiler.size.cmd={build.toolchain}-size
compiler.define=-DARDUINO=
compiler.readelf.cmd={build.toolchain}-readelf
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
cache_dir=$(mktemp -d)
source "$GITHUB_WORKSPACE"/tests/common.sh
if [ -z "$BUILD_PARITY" ]; then
mod=1
rem=0
elif [ "$BUILD_PARITY" = "even" ]; then
mod=2
rem=0
elif [ "$BUILD_PARITY" = "odd" ]; then
mod=2
rem=1
fi
export FQBN=pico:rp2040:rpipico2:flash=4194304_0,arch=riscv,freq=150,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=picosdk,ipbtstack=ipv4only,uploadmethod=default
export PICO_BOARD=rp2350
install_arduino nodebug
build_sketches_with_arduino "$mod" "$rem" ""
rm -rf "$cache_dir"
+1 -1
View File
@@ -15,7 +15,7 @@ elif [ "$BUILD_PARITY" = "odd" ]; then
rem=1
fi
export FQBN=pico:rp2040:rpipico2:flash=4194304_0,freq=150,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=picosdk,ipbtstack=ipv4only,uploadmethod=default
export FQBN=pico:rp2040:rpipico2:flash=4194304_0,arch=arm,freq=150,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=picosdk,ipbtstack=ipv4only,uploadmethod=default
export PICO_BOARD=rp2350
install_arduino nodebug
+1 -1
View File
@@ -234,7 +234,7 @@ function install_ide()
fi
# Set custom warnings for all builds (i.e. could add -Wextra at some point)
echo "compiler.c.extra_flags=-Wall -Wextra -Werror -Wno-ignored-qualifiers $debug_flags" > rp2040/platform.local.txt
echo "compiler.cpp.extra_flags=-Wall -Wextra -Werror -Wno-ignored-qualifiers $debug_flags" >> rp2040/platform.local.txt
echo "compiler.cpp.extra_flags=-Wall -Wextra -Werror -Wno-ignored-qualifiers -Wno-overloaded-virtual $debug_flags" >> rp2040/platform.local.txt
echo -e "\n----platform.local.txt----"
cat rp2040/platform.local.txt
echo -e "\n----\n"
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x239A",
"usb_pid": "0x814F"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x109B"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x109A"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1093"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1096"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x10AE"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0xF00F"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_4_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1018"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x100A"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_4_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x100B"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000F"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x1209",
"usb_pid": "0xA183"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x1209",
"usb_pid": "0xA184"
}
+1 -1
View File
@@ -2,7 +2,7 @@
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"boot2_source": "none.S",
"usb_vid": "0x1B4F",
"usb_pid": "0x0026"
}
+8 -2
View File
@@ -14,11 +14,17 @@ all2: bearssl/README.txt
PATH="$(PWD)/../../system/arm-none-eabi/bin/:$(PATH)" && arm-none-eabi-gcc --version && cd bearssl && $(MAKE) CONF=pico2 clean all
install2: all2 version-header
cp bearssl/pico/libbearssl.a ../../lib/rp2350/.
cp bearssl/pico2/libbearssl.a ../../lib/rp2350/.
ar d ../../lib/rp2350/libbearssl.a `ar t ../../lib/rp2350/libbearssl.a | egrep 'x86|sse|pwr8|i62|m32|m62|m64|ct64|ctmul64'` # Remove unneeded objects
cp bearssl/inc/bearssl*.h ../../include/bearssl/.
bearssl/README.txt:
all2rv: bearssl/README.txt
PATH="$(PWD)/../../system/riscv32-unknown-elf/bin/:$(PATH)" && riscv32-unknown-elf-gcc --version && cd bearssl && $(MAKE) CONF=pico2rv clean all
install2rv: all2rv version-header
cp bearssl/pico2rv/libbearssl.a ../../lib/rp2350-riscv/.
ar d ../../lib/rp2350-riscv/libbearssl.a `ar t ../../lib/rp2350-riscv/libbearssl.a | egrep 'x86|sse|pwr8|i62|m32|m62|m64|ct64|ctmul64'` # Remove unneeded objects
cp bearssl/inc/bearssl*.h ../../include/bearssl/.
bearssl/README.txt:
git submodule update --init --recursive bearssl
+29 -7
View File
@@ -8,10 +8,15 @@ if (${cpu} MATCHES "rp2040")
set(PICO_BOARD pico_w)
set(PICO_PLATFORM rp2040)
set(PICO_CYW43_SUPPORTED 1)
elseif(${cpu} MATCHES "rp2350")
elseif(${cpu} MATCHES "rp2350$")
set(PICO_BOARD solderparty_rp2350_stamp_xl) # Pico2 sets to RP2350A which disables all code for RP2350B
set(PICO_PLATFORM rp2350)
set(PICO_CYW43_SUPPORTED 0)
elseif(${cpu} MATCHES "rp2350-riscv$")
message(INFO "Building RISCV")
set(PICO_BOARD solderparty_rp2350_stamp_xl) # Pico2 sets to RP2350A which disables all code for RP2350B
set(PICO_PLATFORM rp2350-riscv)
set(PICO_CYW43_SUPPORTED 0)
else()
message(FATAL_ERROR "Unknown CPU, '${cpu}'")
endif()
@@ -28,6 +33,18 @@ pico_sdk_init()
add_library(common-${cpu} INTERFACE)
if (${cpu} MATCHES "rp2350$")
set(xcda
LIB_PICO_DOUBLE_PICO=1
LIB_PICO_FLOAT_PICO=1
LIB_PICO_FLOAT_PICO_VFP=1)
elseif (${cpu} MATCHES "rp2350-riscv$")
set(xcda
LIB_PICO_DOUBLE_COMPILER=1
LIB_PICO_FLOAT_COMPILER=1
PICO_RISCV=1)
endif()
if (${cpu} MATCHES "rp2040")
set(xcd
PICO_RP2040_B0_SUPPORTED=1
@@ -39,9 +56,8 @@ if (${cpu} MATCHES "rp2040")
PICO_FLOAT_SUPPORT_ROM_V1=1
PICO_DOUBLE_SUPPORT_ROM_V1=1
PICO_RP2040=1
PICO_PLATFORM=rp2040
PICO_CYW43_SUPPORTED=1)
elseif(${cpu} MATCHES "rp2350")
elseif (${cpu} MATCHES "rp2350")
set(xcd
CFG_TUSB_DEBUG=0
CFG_TUSB_MCU=OPT_MCU_RP2040
@@ -56,11 +72,8 @@ elseif(${cpu} MATCHES "rp2350")
LIB_PICO_DIVIDER=1
LIB_PICO_DIVIDER_COMPILER=1
LIB_PICO_DOUBLE=1
LIB_PICO_DOUBLE_PICO=1
LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1
LIB_PICO_FLOAT=1
LIB_PICO_FLOAT_PICO=1
LIB_PICO_FLOAT_PICO_VFP=1
LIB_PICO_INT64_OPS=1
LIB_PICO_INT64_OPS_COMPILER=1
LIB_PICO_MEM_OPS=1
@@ -97,7 +110,15 @@ elseif(${cpu} MATCHES "rp2350")
PICO_RP2040_USB_DEVICE_UFRAME_FIX=1
PICO_RP2350=1
PICO_USE_BLOCKED_RAM=0
PICO_PLATFORM=rp2350)
${xcda})
endif()
if (${cpu} MATCHES "rp2040")
set(ppp PICO_PLATFORM=rp2040)
elseif(${cpu} MATCHES "rp2350$")
set(ppp PICO_PLATFORM=rp2350)
elseif(${cpu} MATCHES "rp2350-riscv$")
set(ppp PICO_PLATFORM=rp2350-riscv)
endif()
# Use a longer XOSC startup time, to accommodate Adafruit and other boards that may need it.
@@ -110,6 +131,7 @@ target_compile_definitions(common-${cpu} INTERFACE
LWIP_IGMP=1
LWIP_CHECKSUM_CTRL_PER_NETIF=1
${xcd}
${ppp}
)
+7 -36
View File
@@ -5,6 +5,7 @@ set -x
export PICO_SDK_PATH="$(cd ../../pico-sdk/; pwd)"
export PATH="$(cd ../../system/arm-none-eabi/bin; pwd):$PATH"
export PATH="$(cd ../../system/riscv32-unknown-elf/bin; pwd):$PATH"
rm -rf build-rp2040
mkdir build-rp2040
@@ -53,39 +54,9 @@ cd build-rp2350
CPU=rp2350 cmake ..
make -j
rm -rf boot
mkdir boot
cd boot
mkdir -p pico
touch pico/config.h
# Some in the rp2350 boot2 directory don't compile(!?)
for type in boot2_generic_03h boot2_w25q080; do
for div in 2 4; do
arm-none-eabi-gcc -mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse -O3 \
-DNDEBUG -DPICO_FLASH_SPI_CLKDIV=$div \
-DPICO_RP2350 \
-c "$PICO_SDK_PATH/src/rp2350/boot_stage2/$type.S" \
-I "$PICO_SDK_PATH/src/boards/include/boards/" \
-I "$PICO_SDK_PATH/src/rp2350/hardware_regs/include/" \
-I "$PICO_SDK_PATH/src/rp2040/hardware_regs/include/" \
-I "$PICO_SDK_PATH/src/rp2_common/pico_platform/include/" \
-I "$PICO_SDK_PATH/src/rp2_common/boot_stage2/asminclude/" \
-I "$PICO_SDK_PATH/src/rp2350/pico_platform/include/" \
-I "$PICO_SDK_PATH/src/rp2350/boot_stage2/asminclude/" \
-I .
arm-none-eabi-gcc -mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse -O3 \
-DNDEBUG -Wl,--build-id=none --specs=nosys.specs -nostartfiles \
-Wl,--script="$PICO_SDK_PATH/src/rp2350/boot_stage2/boot_stage2.ld" \
-Wl,-Map=$type.$div.elf.map $type.o -o $type.$div.elf
arm-none-eabi-objdump -h $type.$div.elf > $type.$div.dis
arm-none-eabi-objdump -d $type.$div.elf >> $type.$div.dis
arm-none-eabi-objcopy -Obinary $type.$div.elf $type.$div.bin
python3 "$PICO_SDK_PATH/src/rp2350/boot_stage2/pad_checksum" \
-s 0xffffffff $type.$div.bin ${type}_${div}_padded_checksum.S
done
done
mv *.S ../../../../boot2/rp2350/.
cd ..
rm -rf build-rp2350-riscv
mkdir build-rp2350-riscv
cd build-rp2350-riscv
CPU=rp2350-riscv cmake ..
make -j
+49 -28
View File
@@ -48,6 +48,22 @@ def BuildFreq(name, defmhz):
print("%s.menu.freq.%s=%s MHz%s" % (name, f, f, warn))
print("%s.menu.freq.%s.build.f_cpu=%dL" % (name, f, f * 1000000))
def BuildArch(name):
# Cortex M-33
print("%s.menu.arch.arm=ARM" % (name))
print("%s.menu.arch.arm.build.chip=%s" % (name, "rp2350"))
print("%s.menu.arch.arm.build.toolchain=arm-none-eabi" % (name))
print("%s.menu.arch.arm.build.toolchainpkg=pqt-gcc" % (name))
print("%s.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse" % (name))
print("%s.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block" % (name))
# RISC-V Hazard3
print("%s.menu.arch.riscv=RISC-V" % (name))
print("%s.menu.arch.riscv.build.chip=%s" % (name, "rp2350-riscv"))
print("%s.menu.arch.riscv.build.toolchain=riscv32-unknown-elf" % (name))
print("%s.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv" % (name))
print("%s.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32" % (name))
print("%s.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block" % (name))
def BuildPSRAM(name):
for s in [ 0, 2, 4, 8]:
print("%s.menu.psram.%dmb=%dMByte PSRAM" % (name, s, s))
@@ -222,14 +238,12 @@ def BuildHeader(name, chip, chaintuple, chipoptions, vendor_name, product_name,
print("%s.build.usbpwr=-DUSBD_MAX_POWER_MA=%s" % (name, pwr))
print("%s.build.board=%s" % (name, boarddefine))
# print("%s.build.mcu=cortex-m0plus" % (name))
print("%s.build.chip=%s" % (name, chip))
print("%s.build.toolchain=%s" % (name, chaintuple))
print("%s.build.toolchainopts=%s" % (name, chipoptions))
if chip == "rp2350":
uf2family = "--family rp2350-arm-s --abs-block"
elif chip == "rp2040":
uf2family = "--family rp2040"
print("%s.build.uf2family=%s" % (name, uf2family))
if chip == "rp2040": # RP2350 has menu for this later on
print("%s.build.chip=%s" % (name, chip))
print("%s.build.toolchain=%s" % (name, chaintuple))
print("%s.build.toolchainpkg=%s" % (name, "pqt-gcc"))
print("%s.build.toolchainopts=%s" % (name, chipoptions))
print("%s.build.uf2family=%s" % (name, "--family rp2040"))
print("%s.build.variant=%s" % (name, variant))
print("%s.upload.maximum_size=%d" % (name, flashsize))
print("%s.upload.wait_for_upload_port=true" % (name))
@@ -243,7 +257,7 @@ def BuildHeader(name, chip, chaintuple, chipoptions, vendor_name, product_name,
print("%s.build.boot2=%s" % (name, boot2))
print('%s.build.usb_manufacturer="%s"' % (name, vendor_name))
print('%s.build.usb_product="%s"' % (name, product_name))
if (chip == "rp2350") and (name != "generic_rp2350"):
if ((chip == "rp2350") or (chip == "rp2350-riscv")) and (name != "generic_rp2350"):
print("%s.build.psram_length=0x%d00000" % (name, psramsize))
if extra != None:
m_extra = ''
@@ -265,6 +279,7 @@ def BuildGlobalMenuList():
print("menu.psram=PSRAM Size")
print("menu.psramfreq=PSRAM Speed")
print("menu.freq=CPU Speed")
print("menu.arch=CPU Architecture")
print("menu.opt=Optimize")
print("menu.rtti=RTTI")
print("menu.stackprotect=Stack Protector")
@@ -294,9 +309,9 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine,
elif chip == "rp2350":
tup = "arm-none-eabi"
opts = "-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse"
elif chip == "rp2530rv":
tup = "riscv-none-eabi"
opts = "TBD"
elif chip == "rp2350-riscv":
tup = "riscv32-unknown-elf"
opts = "-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32"
else:
raise Exception("Unknown board type " + str(chip));
BuildHeader(name, chip, tup, opts, vendor_name, product_name, vid, pid, pwr, boarddefine, name, flashsizemb * 1024 * 1024, psramsize, boot2, extra)
@@ -319,7 +334,8 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine,
BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024])
else:
BuildFlashMenu(name, chip, flashsizemb * 1024 * 1024, fssizelist)
if chip == "rp2350":
if (chip == "rp2350") or (chip == "rp2350-riscv"):
BuildArch(name)
BuildFreq(name, 150)
if name == "generic_rp2350":
BuildRP2350Variant(name)
@@ -372,6 +388,11 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef
ramsize = 512
jlink = "RP2350_0"
fcpu = "150000000L"
elif chip == "rp2350-riscv":
cpu = "riscv"
ramsize = 512
jlink = "RP2350_0"
fcpu = "150000000L"
j = {
"build": {
"arduino": {
@@ -428,7 +449,7 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef
"vendor": vendor_name,
}
# add nonzero PSRAM sizes of known boards (can still be overwritten in platformio.ini)
if psramsize != 0 and name != "generic_rp2350":
if (psramsize != 0) and (name != "generic_rp2350"):
j["upload"]["psram_length"] = psramsize * 1024 * 1024
jsondir = os.path.abspath(os.path.dirname(__file__)) + "/json"
@@ -449,7 +470,7 @@ BuildGlobalMenuList()
# Raspberry Pi
MakeBoard("rpipico", "rp2040", "Raspberry Pi", "Pico", "0x2e8a", "0x000a", 250, "RASPBERRY_PI_PICO", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("rpipicow", "rp2040", "Raspberry Pi", "Pico W", "0x2e8a", "0xf00a", 250, "RASPBERRY_PI_PICO_W", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("rpipico2", "rp2350", "Raspberry Pi", "Pico 2", "0x2e8a", "0x000f", 250, "RASPBERRY_PI_PICO_2", 4, 0, "boot2_generic_03h_2_padded_checksum")
MakeBoard("rpipico2", "rp2350", "Raspberry Pi", "Pico 2", "0x2e8a", "0x000f", 250, "RASPBERRY_PI_PICO_2", 4, 0, "none")
# 0xCB
MakeBoard("0xcb_helios", "rp2040", "0xCB", "Helios", "0x1209", "0xCB74", 500, "0XCB_HELIOS", 16, 0, "boot2_w25q128jvxq_4_padded_checksum")
@@ -471,7 +492,7 @@ MakeBoard("adafruit_stemmafriend", "rp2040", "Adafruit", "STEMMA Friend RP2040",
MakeBoard("adafruit_trinkeyrp2040qt", "rp2040", "Adafruit", "Trinkey RP2040 QT", "0x239a", "0x8109", 250, "ADAFRUIT_TRINKEYQT_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_macropad2040", "rp2040", "Adafruit", "MacroPad RP2040", "0x239a", "0x8107", 250, "ADAFRUIT_MACROPAD_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_kb2040", "rp2040", "Adafruit", "KB2040", "0x239a", "0x8105", 250, "ADAFRUIT_KB2040_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_feather_rp2350_hstx", "rp2350", "Adafruit", "Feather RP2350 HSTX", "0x239a", "0x814f", 250, "ADAFRUIT_FEATHER_RP2350_HSTX", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_feather_rp2350_hstx", "rp2350", "Adafruit", "Feather RP2350 HSTX", "0x239a", "0x814f", 250, "ADAFRUIT_FEATHER_RP2350_HSTX", 8, 0, "none")
#Amken
@@ -494,15 +515,15 @@ MakeBoard("bridgetek_idm2040_7a", "rp2040", "BridgeTek", "IDM2040-7A", "0x2e8a",
MakeBoard("bridgetek_idm2040_43a", "rp2040", "BridgeTek", "IDM2040-43A", "0x2e8b", "0xf00a", 250, "BRIDGETEK_IDM2040_43A", 8, 0, "boot2_w25q080_2_padded_checksum", ["FT8XX_TYPE=BT883", "DISPLAY_RES=WQVGA", "PLATFORM_RP2040"])
# Cytron
MakeBoard("cytron_iriv_io_controller", "rp2350", "Cytron", "IRIV IO Controller", "0x2e8a", "0x1093", 250, "CYTRON_IRIV_IO_CONTROLLER", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("cytron_iriv_io_controller", "rp2350", "Cytron", "IRIV IO Controller", "0x2e8a", "0x1093", 250, "CYTRON_IRIV_IO_CONTROLLER", 2, 0, "none")
MakeBoard("cytron_maker_nano_rp2040", "rp2040", "Cytron", "Maker Nano RP2040", "0x2e8a", "0x100f", 250, "CYTRON_MAKER_NANO_RP2040", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("cytron_maker_pi_rp2040", "rp2040", "Cytron", "Maker Pi RP2040", "0x2e8a", "0x1000", 250, "CYTRON_MAKER_PI_RP2040", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("cytron_maker_uno_rp2040", "rp2040", "Cytron", "Maker Uno RP2040", "0x2e8a", "0x1071", 250, "CYTRON_MAKER_UNO_RP2040", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("cytron_motion_2350_pro", "rp2350", "Cytron", "Motion 2350 Pro", "0x2e8a", "0x1096", 250, "CYTRON_MOTION_2350_PRO", 2, 0, "boot2_generic_03h_2_padded_checksum")
MakeBoard("cytron_motion_2350_pro", "rp2350", "Cytron", "Motion 2350 Pro", "0x2e8a", "0x1096", 250, "CYTRON_MOTION_2350_PRO", 2, 0, "none")
# DatanoiseTV
MakeBoard("datanoisetv_picoadk", "rp2040", "DatanoiseTV", "PicoADK", "0x2e8a", "0x000a", 250, "DATANOISETV_PICOADK", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("datanoisetv_picoadk_v2", "rp2350", "DatanoiseTV", "PicoADK v2", "0x2e8a", "0x10ae", 250, "DATANOISETV_PICOADK_V2", 4, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("datanoisetv_picoadk_v2", "rp2350", "DatanoiseTV", "PicoADK v2", "0x2e8a", "0x10ae", 250, "DATANOISETV_PICOADK_V2", 4, 0, "none")
# Degz Robotics
MakeBoard("degz_suibo", "rp2040", "Degz Robotics", "Suibo RP2040", "0x2e8a", "0xf00a", 250, "DEGZ_SUIBO_RP2040", 16, 0, "boot2_generic_03h_4_padded_checksum", board_url="https://www.degzrobotics.com/suibo")
@@ -541,8 +562,8 @@ MakeBoard("challenger_2040_nfc", "rp2040", "iLabs", "Challenger 2040 NFC", "0x2e
MakeBoard("challenger_2040_uwb", "rp2040", "iLabs", "Challenger 2040 UWB", "0x2e8a", "0x1052", 500, "CHALLENGER_2040_UWB_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("connectivity_2040_lte_wifi_ble", "rp2040", "iLabs", "Connectivity 2040 LTE/WiFi/BLE", "0x2e8a", "0x107b", 500, "CONNECTIVITY_2040_LTE_WIFI_BLE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("ilabs_rpico32", "rp2040", "iLabs", "RPICO32", "0x2e8a", "0x1010", 250, "ILABS_2040_RPICO32_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2350_wifi6_ble5", "rp2350", "iLabs", "Challenger 2350 WiFi/BLE", "0x2e8a", "0x109a", 500, "CHALLENGER_2350_WIFI_BLE_RP2350", 8, 8, "boot2_generic_03h_2_padded_checksum")
MakeBoard("challenger_2350_bconnect", "rp2350", "iLabs", "Challenger 2350 BConnect", "0x2e8a", "0x109b", 500, "CHALLENGER_2350_BCONNECT_RP2350", 8, 8, "boot2_generic_03h_2_padded_checksum")
MakeBoard("challenger_2350_wifi6_ble5", "rp2350", "iLabs", "Challenger 2350 WiFi/BLE", "0x2e8a", "0x109a", 500, "CHALLENGER_2350_WIFI_BLE_RP2350", 8, 8, "none")
MakeBoard("challenger_2350_bconnect", "rp2350", "iLabs", "Challenger 2350 BConnect", "0x2e8a", "0x109b", 500, "CHALLENGER_2350_BCONNECT_RP2350", 8, 8, "none")
# Melopero
MakeBoard("melopero_cookie_rp2040", "rp2040", "Melopero", "Cookie RP2040", "0x2e8a", "0x1011", 250, "MELOPERO_COOKIE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
@@ -566,11 +587,11 @@ MakeBoard("olimex_rp2040pico30_16mb", "rp2040", "Olimex", "RP2040-Pico30 16MB",
# Pimoroni
MakeBoard("pimoroni_pga2040", "rp2040", "Pimoroni", "PGA2040", "0x2e8a", "0x1008", 250, "PIMORONI_PGA2040", 8, 0, "boot2_w25q64jv_4_padded_checksum")
MakeBoard("pimoroni_pga2350", "rp2350", "Pimoroni", "PGA2350", "0x2e8a", "0x1018", 250, "PIMORONI_PGA2350", 16, 8, "boot2_w25q080_4_padded_checksum")
MakeBoard("pimoroni_pico_plus_2", "rp2350", "Pimoroni", "PicoPlus2", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2", 16, 8, "boot2_generic_03h_4_padded_checksum")
MakeBoard("pimoroni_pga2350", "rp2350", "Pimoroni", "PGA2350", "0x2e8a", "0x1018", 250, "PIMORONI_PGA2350", 16, 8, "none")
MakeBoard("pimoroni_pico_plus_2", "rp2350", "Pimoroni", "PicoPlus2", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2", 16, 8, "none")
MakeBoard("pimoroni_plasma2040", "rp2040", "Pimoroni", "Plasma2040", "0x2e8a", "0x100a", 500, "PIMORONI_PLASMA2040", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("pimoroni_tiny2040", "rp2040", "Pimoroni", "Tiny2040", "0x2e8a", "0x100a", 500, "PIMORONI_TINY2040", 2, 0, "boot2_w25q64jv_4_padded_checksum")
MakeBoard("pimoroni_tiny2350", "rp2350", "Pimoroni", "Tiny2350", "0x2e8a", "0x100b", 500, "PIMORONI_TINY2350", 4, 0, "boot2_w25q080_4_padded_checksum")
MakeBoard("pimoroni_tiny2350", "rp2350", "Pimoroni", "Tiny2350", "0x2e8a", "0x100b", 500, "PIMORONI_TINY2350", 4, 0, "none")
#Pintronix
MakeBoard("pintronix_pinmax", "rp2040", "Pintronix", "PinMax", "0x2e8a", "0x9101", 250, "PINTRONIX_PINMAX", 4, 0, "boot2_w25q080_2_padded_checksum")
@@ -590,13 +611,13 @@ MakeBoard("silicognition_rp2040_shim", "rp2040", "Silicognition", "RP2040-Shim",
# Solder Party
MakeBoard("solderparty_rp2040_stamp", "rp2040", "Solder Party", "RP2040 Stamp", "0x1209", "0xa182", 500, "SOLDERPARTY_RP2040_STAMP", 8, 0, "boot2_generic_03h_4_padded_checksum", None, "https://www.solder.party/docs/rp2040-stamp/")
MakeBoard("solderparty_rp2350_stamp", "rp2350", "Solder Party", "RP2350 Stamp", "0x1209", "0xa183", 500, "SOLDERPARTY_RP2350_STAMP", 16, 0, "boot2_generic_03h_2_padded_checksum", None, "https://www.solder.party/docs/rp2350-stamp/")
MakeBoard("solderparty_rp2350_stamp_xl", "rp2350", "Solder Party", "RP2350 Stamp XL", "0x1209", "0xa184", 500, "SOLDERPARTY_RP2350_STAMP_XL", 16, 0, "boot2_generic_03h_2_padded_checksum", None, "https://www.solder.party/docs/rp2350-stamp-xl/")
MakeBoard("solderparty_rp2350_stamp", "rp2350", "Solder Party", "RP2350 Stamp", "0x1209", "0xa183", 500, "SOLDERPARTY_RP2350_STAMP", 16, 0, "none", None, "https://www.solder.party/docs/rp2350-stamp/")
MakeBoard("solderparty_rp2350_stamp_xl", "rp2350", "Solder Party", "RP2350 Stamp XL", "0x1209", "0xa184", 500, "SOLDERPARTY_RP2350_STAMP_XL", 16, 0, "none", None, "https://www.solder.party/docs/rp2350-stamp-xl/")
# SparkFun
MakeBoard("sparkfun_micromodrp2040", "rp2040", "SparkFun", "MicroMod RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_MICROMOD_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("sparkfun_promicrorp2040", "rp2040", "SparkFun", "ProMicro RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_PROMICRO_RP2040", 16, 0, "boot2_generic_03h_4_padded_checksum")
MakeBoard("sparkfun_promicrorp2350", "rp2350", "SparkFun", "ProMicro RP2350", "0x1b4f", "0x0026", 250, "SPARKFUN_PROMICRO_RP2350", 16, 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("sparkfun_promicrorp2350", "rp2350", "SparkFun", "ProMicro RP2350", "0x1b4f", "0x0026", 250, "SPARKFUN_PROMICRO_RP2350", 16, 8, "none")
MakeBoard("sparkfun_thingplusrp2040", "rp2040", "SparkFun", "Thing Plus RP2040", "0x1b4f", "0x0026", 250, "SPARKFUN_THINGPLUS_RP2040", 16, 0, "boot2_w25q080_2_padded_checksum")
# Upesy
@@ -629,7 +650,7 @@ MakeBoard("wiznet_5500_evb_pico", "rp2040", "WIZnet", "W5500-EVB-Pico", "0x2e8a"
# Generic
MakeBoard("generic", "rp2040", "Generic", "RP2040", "0x2e8a", "0xf00a", 250, "GENERIC_RP2040", 16, 0, "boot2_generic_03h_4_padded_checksum")
MakeBoard("generic_rp2350", "rp2350", "Generic", "RP2350", "0x2e8a", "0xf00f", 250, "GENERIC_RP2350", 16, 8, "boot2_generic_03h_4_padded_checksum")
MakeBoard("generic_rp2350", "rp2350", "Generic", "RP2350", "0x2e8a", "0xf00f", 250, "GENERIC_RP2350", 16, 8, "none")
sys.stdout.close()
with open(os.path.abspath(os.path.dirname(__file__)) + '/../package/package_pico_index.template.json', 'w', newline='\n') as f:
+42 -8
View File
@@ -120,7 +120,7 @@ if chip == "rp2040":
("PICO_FLASH_SIZE_BYTES", board.get("upload.maximum_size"))
]
)
elif chip == "rp2350":
elif (chip == "rp2350") or (chip == "rp2350-riscv"):
env.Append(
CPPDEFINES=[
("ARDUINO", 10810),
@@ -139,11 +139,8 @@ elif chip == "rp2350":
("LIB_PICO_DIVIDER", "1"),
("LIB_PICO_DIVIDER_COMPILER", "1"),
("LIB_PICO_DOUBLE", "1"),
("LIB_PICO_DOUBLE_PICO", "1"),
("LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION", "1"),
("LIB_PICO_FLOAT", "1"),
("LIB_PICO_FLOAT_PICO", "1"),
("LIB_PICO_FLOAT_PICO_VFP", "1"),
("LIB_PICO_INT64_OPS", "1"),
("LIB_PICO_INT64_OPS_COMPILER", "1"),
("LIB_PICO_MEM_OPS", "1"),
@@ -186,11 +183,29 @@ elif chip == "rp2350":
("PICO_FLASH_SIZE_BYTES", board.get("upload.maximum_size"))
]
)
if chip == "rp2350":
env.Append(
CPPDEFINES=[
("LIB_PICO_DOUBLE_PICO", "1"),
("LIB_PICO_FLOAT_PICO", "1"),
("LIB_PICO_FLOAT_PICO_VFP", "1")
]
)
elif chip == "rp2350-riscv":
env.Append(
CPPDEFINES=[
("LIB_PICO_DOUBLE_COMPILER", "1"),
("LIB_PICO_FLOAT_COMPILER", "1"),
("PICO_RISCV", "1")
]
)
if chip == "rp2040":
toolopts = ["-march=armv6-m", "-mcpu=cortex-m0plus", "-mthumb"]
elif chip == "rp2350":
toolopts = ["-mcpu=cortex-m33", "-mthumb", "-march=armv8-m.main+fp+dsp", "-mfloat-abi=softfp", "-mcmse"]
elif chip == "rp2350-riscv":
toolopts = ["-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb", "-mabi=ilp32"]
env.Append(
CCFLAGS=[
@@ -229,7 +244,22 @@ env.Append(
"-Wl,--gc-sections",
"-Wl,--unresolved-symbols=report-all",
"-Wl,--warn-common",
"-Wl,--undefined=runtime_init_install_ram_vector_table"
"-Wl,--undefined=runtime_init_install_ram_vector_table",
"-Wl,--undefined=__pre_init_runtime_init_clocks",
"-Wl,--undefined=__pre_init_runtime_init_bootrom_reset",
"-Wl,--undefined=__pre_init_runtime_init_early_resets",
"-Wl,--undefined=__pre_init_runtime_init_usb_power_down",
"-Wl,--undefined=__pre_init_runtime_init_clocks",
"-Wl,--undefined=__pre_init_runtime_init_post_clock_resets",
"-Wl,--undefined=__pre_init_runtime_init_spin_locks_reset",
"-Wl,--undefined=__pre_init_runtime_init_boot_locks_reset",
"-Wl,--undefined=__pre_init_runtime_init_bootrom_locking_enable",
"-Wl,--undefined=__pre_init_runtime_init_mutex",
"-Wl,--undefined=__pre_init_runtime_init_default_alarm_pool",
"-Wl,--undefined=__pre_init_first_per_core_initializer",
"-Wl,--undefined=__pre_init_runtime_init_per_core_bootrom_reset"
"-Wl,--undefined=__pre_init_runtime_init_per_core_h3_irq_registers",
"-Wl,--undefined=__pre_init_runtime_init_per_core_irq_priorities"
] + toolopts,
LIBSOURCE_DIRS=[os.path.join(FRAMEWORK_DIR, "libraries")],
@@ -263,7 +293,7 @@ else:
"-iprefix" + os.path.join(FRAMEWORK_DIR),
"@%s" % os.path.join(FRAMEWORK_DIR, "lib", chip, "platform_inc.txt"),
"@%s" % os.path.join(FRAMEWORK_DIR, "lib", "core_inc.txt")
])
] + toolopts)
def configure_usb_flags(cpp_defines):
if "USE_TINYUSB" in cpp_defines:
@@ -307,11 +337,15 @@ def configure_usb_flags(cpp_defines):
env.Append(CPPDEFINES=[
("CFG_TUSB_MCU", "OPT_MCU_RP2040"),
# used by TinyUSB stack
("USB_VID", usb_vid),
("USB_PID", usb_pid),
# Used by native USB stack
("USBD_VID", usb_vid),
("USBD_PID", usb_pid),
# Used by both stacks
("USB_MANUFACTURER", '\\"%s\\"' % usb_manufacturer),
("USB_PRODUCT", '\\"%s\\"' % usb_product),
("SERIALUSB_PID", usb_pid)
("USB_PRODUCT", '\\"%s\\"' % usb_product)
])
if "USBD_MAX_POWER_MA" not in env.Flatten(env.get("CPPDEFINES", [])):