179 Commits
v1.1.0 ... bmp

Author SHA1 Message Date
47763a9948 Enable debugging with BMP 2023-04-09 17:37:30 +02:00
46ae0c828b Experimental BlackMagicProbe support 2023-04-08 22:07:24 +02:00
d9e97a3364 Merge branch 'platformio:develop' into develop 2023-04-04 23:17:27 +02:00
aa10954dab Update Arduino-Pico, sync boards 2023-04-04 23:16:51 +02:00
aeed8d7b45 Merge tag 'v1.9.0' into develop
Bump version to 1.9.0
2023-03-28 14:36:36 +03:00
68e1b5fd82 Merge branch 'release/v1.9.0' 2023-03-28 14:36:36 +03:00
d3b88746db Bump version to 1.9.0 2023-03-28 14:36:19 +03:00
79a7c05b56 Update Arduino core to v4.0.2 2023-03-22 20:26:58 +02:00
5a533d6b36 Update available boards 2023-03-10 18:29:16 +01:00
ddb4335440 Arduino-Pico 3.1.0 2023-03-10 18:27:34 +01:00
8e7f3fcf79 Refactor enable long paths 2023-03-06 11:16:32 +01:00
e9fba631fa Only enable long paths for Windows 2023-03-06 11:14:20 +01:00
139b86b1b4 Enable long paths to hopefully fix TinyUSB clone 2023-03-06 11:12:06 +01:00
090343e447 Update Arduino-Pico (now BLE support) 2023-03-05 22:44:20 +01:00
7921d08c11 Merge branch 'platformio:develop' into develop 2023-03-05 22:43:48 +01:00
41b395f30c Merge branch 'release/v1.8.0' 2023-02-28 12:35:13 +02:00
6499706f58 Merge tag 'v1.8.0' into develop
Bump version to 1.8.0
2023-02-28 12:35:13 +02:00
a2d1cf8e78 Bump version to 1.8.0 2023-02-28 12:34:58 +02:00
19bb196399 Update Arduino-mbed core to v3.5.4 2023-02-22 13:59:21 +02:00
0b2e90a430 Update to Arduino-Pico 2.7.3 2023-02-19 15:21:19 +01:00
b9928a2d11 Generalize used toolchain version
No more strict pinning
2023-02-19 13:10:35 +01:00
11247e9e40 Update to 2.7.2 2023-02-12 15:15:27 +01:00
1b962727b9 Update board definitions 2023-02-10 19:11:13 +01:00
d11b0eebdb Update Arduino-Pico 2023-02-10 19:01:59 +01:00
3cf9e1a265 Update Arduino-Pico 2023-02-08 19:42:55 +01:00
9f8c10e50b Upgrade Arduino-Pico version to latest 2023-01-08 15:56:01 +01:00
9a13c2575e Update toolchain, update arduino-pico (ARMv7l support) 2022-12-23 21:49:19 +01:00
20c7dbfcfe Update to 2.6.5 2022-12-18 16:34:48 +01:00
6ac422138b Update Arduino-Pico commit 2022-12-06 22:45:11 +01:00
2e399c94ed Add SCORPIO and Waveshre RP2040 Zero, update Arduino-Pico 2022-11-23 12:33:48 +01:00
bd485fe9b9 Update to latest board defs and core commit 2022-11-14 19:55:35 +01:00
fec7ed80ec Update Arduino-Pico to bleeding edge
E.g. fixes WiFi RSSI, BSSID and channel reporting
2022-10-31 11:02:22 +01:00
702b36f009 Update to latest release 2022-10-25 18:15:39 +02:00
9a4ef9ff75 Update pimoroni_pga2040.json 2022-10-25 18:15:17 +02:00
19cc4d7502 Update core, pimoroni pga2040 support 2022-10-21 14:42:33 +02:00
4c4ed63756 Prepare pimoroni pga2040 support 2022-10-18 21:07:26 +02:00
4e39c77ce3 Update core, add latest boards 2022-10-18 20:07:11 +02:00
5ce1a228e7 Update Arduino-Pico core commit 2022-10-01 02:22:40 +02:00
aa79bc55cb Update board files + core commit 2022-09-12 11:22:43 +02:00
ef9fd76413 Update to 2.5.2 2022-09-04 19:59:36 +02:00
ff7a675659 Update to 2.4.1 2022-08-22 15:46:47 +02:00
2ace1c26f9 Merge pull request #13 from maxgerhardt/ota
OTA v1
2022-08-22 01:20:16 +02:00
47726da601 Update readmes 2022-08-22 01:05:09 +02:00
4c0d7ea35c Make examples.yml steps more clear 2022-08-22 00:33:05 +02:00
838e9ed8d3 Fix macos runner 2022-08-22 00:25:08 +02:00
42e7c851ca Updated used arduino-pico 2022-08-22 00:22:07 +02:00
f982df23e5 Try fix dependencies 2022-08-22 00:19:44 +02:00
f1d426ef45 Try and install openssl dependency 2022-08-22 00:17:12 +02:00
28ffe07370 Try different build strategy 2022-08-22 00:13:09 +02:00
28b575e364 Dont require gen_header if not expected to be generated 2022-08-21 15:44:54 +02:00
f4a6a4586f Only update signing header if pubkey present 2022-08-21 15:41:43 +02:00
a3c7bc9472 Experiment with OTA support, better mbed upload 2022-08-21 15:35:33 +02:00
5bb8311544 Update Arduino-Pico bleeding-edge version 2022-08-20 13:02:09 +02:00
de1a5ef4fa Use bleeding-edge Arduino-Pico 2022-08-11 00:35:02 +02:00
5397a3854d Fix XIAO typo 2022-08-09 18:59:18 +02:00
5677d9bfdd Use stable Arduino-Pico 2.3.3 core 2022-07-25 18:21:19 +02:00
5a389a61ac Update Arduino-Pico core 2022-07-24 20:28:53 +02:00
0f1e560f0b Add HWIDs, update Arduino-Pico core 2022-07-21 22:18:03 +02:00
bd2f3e756b Use Arduino-Pico with fixed linker logic 2022-07-21 13:50:14 +02:00
227b99ad36 Switch to fixed Arduino-Pico commit 2022-07-19 18:48:36 +02:00
81e537a86e ULTRA-TEMPORARILY point to fixed Arduino-Pico for WiFi build
Until https://github.com/earlephilhower/arduino-pico/pull/686 is merged
2022-07-19 12:02:51 +02:00
dc472b1455 Temporarily use git link for 2.3.2 core
Until the package appears in https://registry.platformio.org/tools/earlephilhower/framework-arduinopico/versions (currently only 2.3.1, needs manual approval)
2022-07-19 11:35:53 +02:00
606fe2d193 Add WiFi example to CI 2022-07-19 11:31:05 +02:00
eb8f864d87 Add Pico W WiFi Scan example 2022-07-19 11:30:51 +02:00
165ade2beb Add RPI Pico W (WiFi) to CI 2022-07-19 11:26:38 +02:00
47b206f084 Update Arduino-Pico board files 2022-07-19 11:25:38 +02:00
488689c592 Update to Arduino-Pico 2.3.1 2022-07-19 11:23:03 +02:00
17cb99f3fb Update platform.json 2022-07-15 18:24:59 +02:00
28e5339cdc Allow GCC 9.3.2 versions for ARM Linux instead of only 9.2.1 2022-07-05 18:46:11 +02:00
5f45696ec1 Reference stable toolchain + framework version for 2.0.2 2022-06-29 23:40:48 +02:00
bc18ccc8ac Minor identiation fix 2022-06-17 18:15:06 +02:00
d24609b89e Add support for filesystem flashing with JLink 2022-06-17 17:59:34 +02:00
e0781a4221 Merge pull request #9 from maxgerhardt/patchup
Second round of fixups
2022-06-17 16:25:18 +02:00
9177e55c7c Inline delay function 2022-06-17 16:16:33 +02:00
97b862c887 Add newline at end of platformio.ini 2022-06-17 16:14:16 +02:00
dc38120b89 Move filesystem funcs higher, use env.Replace 2022-06-17 16:13:38 +02:00
1e709a2f45 Push arduino attribute higher 2022-06-17 16:12:59 +02:00
1b43288ac0 Shift arduino attribute higher in JSON files 2022-06-17 16:08:12 +02:00
baf2bf2f92 Switch back to original core 2022-06-17 04:05:01 +02:00
750f07c05f Merge pull request #8 from maxgerhardt/patchup
Patchup
2022-06-17 03:59:56 +02:00
15497ac540 Temporarily change package to test CI 2022-06-17 03:03:11 +02:00
40aea9c914 Make usage of double quotes consistent 2022-06-17 01:23:51 +02:00
6f7bbd86c8 Revert to using ^ in tool-jlink version 2022-06-17 01:22:41 +02:00
41da472b81 Quote uploader executable 2022-06-17 01:17:29 +02:00
52bb6e5d7f Rename fetch_fs_size in env, simplify mbed upload, remove PIO 3.6 legacy code 2022-06-17 01:10:42 +02:00
ab1e380b64 Use variable name for EEPROM length 2022-06-17 01:02:36 +02:00
47ad4e9090 Reformat and restructure board files 2022-06-17 00:59:59 +02:00
4d9eca0c71 Unify examples, add notes 2022-06-17 00:54:31 +02:00
8d7a063c99 Correct debug logic, exit on unknown core 2022-06-12 18:29:42 +02:00
1b8624b35a Revert back to currently user mbed-builder 2022-06-09 22:28:38 +02:00
e568d578ab Make OpenOCD uploading more robust, respect speed for picoprobe config 2022-06-09 22:05:42 +02:00
4eedf9eac0 Use correct openocd package 2022-06-09 21:37:28 +02:00
ab26ecbf3b ACTUALLY use only earlephilhower core in examples 2022-06-09 21:25:37 +02:00
bbb2b17614 ACtually use referenced board 2022-06-09 21:17:59 +02:00
4d1e3817d7 Fix UF2 mbed uploading again 2022-06-09 21:04:40 +02:00
a587ecab51 Merge latest upstream 2022-06-09 20:58:27 +02:00
c2441e4210 Slight example platformioini refactor 2022-06-09 20:36:24 +02:00
41e26ccd44 Add a new board to CI 2022-06-09 20:04:04 +02:00
936b8d35df Sync all Arduino-Pico boards 2022-06-09 20:03:13 +02:00
5ab36c45d8 Filesystem code cleanup 2022-06-09 20:02:33 +02:00
096f514e83 Adapt to work with registry packages 2022-06-09 19:53:54 +02:00
228b3d28de Merge branch 'release/v1.7.0' 2022-05-30 18:51:14 +03:00
509633a366 Merge tag 'v1.7.0' into develop
Bump version to 1.7.0
2022-05-30 18:51:14 +03:00
c4349b1634 Bump version to 1.7.0 2022-05-30 18:51:00 +03:00
c97b377c3e Add compatibility with PIO Core 6.0 2022-05-28 15:55:17 +03:00
6caac4d451 Improve support for hand-written asm source files 2022-05-28 15:54:59 +03:00
6de524e45d Update Arduino-mbed core to v3.1.1 2022-05-27 19:48:58 +03:00
7d82e08324 Tidy up platform script 2022-05-27 19:48:26 +03:00
e1204e62e0 Fix double dot 2022-05-16 14:23:30 +02:00
ddcb4a395d Remove argument 2022-05-15 18:34:31 +02:00
3ddcc3aa9a Save function in environment 2022-05-15 16:46:23 +02:00
74a6e8a2cc Merge pull request #4 from dlbogdan/patch-2
Update main.py
2022-05-06 21:17:08 +02:00
9870c4cec4 Update main.py
because of the logic selecting elf or firm (bin), we need to default to no offset on normal firmware upload because we already defaulted to elf a few lines below if upload.offset_address is not user set so when no offset is needed. 
programming fails otherwise
Unfortunately, my way of modifying the code probably sucks because I've never written anything in python but I assumed the second arg is the default n case the first is missing. Haven't had time to dig too much into it.
2022-04-22 09:13:03 +03:00
d20e2ed967 Update README.md 2022-04-13 15:08:30 +02:00
75dffaabf8 Update README.md 2022-04-13 15:08:12 +02:00
8bff1812d8 Update README.md 2022-04-13 15:07:48 +02:00
f48a9b921f Actually use right core in earlephilhower example 2022-04-12 19:54:37 +02:00
a65832bc6b Actually add earlephilhower example to CI 2022-04-12 19:49:59 +02:00
27cbf99620 Fix UF2 + mbed upload 2022-04-12 19:48:58 +02:00
b5359ff956 Only CI on Linux 2022-04-12 19:45:04 +02:00
2b0c071198 Add Arduino-Pico example 2022-04-12 19:44:46 +02:00
2b15f395c7 Merge branch 'platformio-develop' into develop 2022-04-12 19:41:03 +02:00
091af0ecd9 Fix merge conflict 2022-04-12 19:40:50 +02:00
e08da697f0 Symlink dev-platform 2022-04-08 12:17:12 +03:00
e49272f13b Use the latest Github OS images 2022-04-04 12:06:00 +03:00
fbb7cc8183 Merge branch 'release/v1.6.0' 2022-04-01 12:46:07 +03:00
b75e8ddfbe Merge tag 'v1.6.0' into develop
Bump version to 1.6.0
2022-04-01 12:46:07 +03:00
5806c57b9c Bump version to 1.6.0 2022-04-01 12:46:01 +03:00
1a9864187a Merge pull request #29 from episource/feature/no-offset-use-elf
Use *.elf instead of *.bin if no offset given
2022-04-01 12:41:46 +03:00
a05a0c65e3 Update Arduino-mbed core to v3.0.1 2022-03-31 17:29:36 +03:00
458dfacd2f Switch docs to HTTP 2022-03-31 14:23:40 +03:00
7331a756e7 Merge pull request #31 from episource/feature/configure-debug-session-pio-5.2+
Configure debug session as required for pio 5.2+
2022-03-11 12:02:43 +02:00
01a0447aa7 Configure debug session as required for pio 5.2+
See also https://github.com/platformio/platformio-core/issues/4020

Additionally, this commit replaces deprecated openocd option `adapter_khz` with
`adapter speed`
2022-03-11 08:55:44 +01:00
d825c1e531 Use *.elf instead of *.bin if no offset given 2022-02-26 22:19:25 +01:00
eca3b40879 Update Arduino-mbed core to v2.7.2 2022-02-21 16:50:14 +02:00
e920ef32c3 Add all Arduino-Pico board definitions 2022-01-28 09:12:01 +01:00
bda6353697 Typo fix in platform description
Fixes platformio/platformio-docs#229
2022-01-20 20:52:19 +02:00
9811f13f66 Merge upstream 2021-12-29 16:02:30 +01:00
e5579ce8b7 Merge branch 'release/v1.5.0' 2021-11-30 12:34:09 +02:00
7c03bd4909 Merge tag 'v1.5.0' into develop
Bump version to 1.5.0
2021-11-30 12:34:09 +02:00
c7d1a0854c Bump version to 1.5.0 2021-11-30 12:33:48 +02:00
1d9dac6e82 Update Arduino-mbed core to v2.6.1 2021-11-24 16:42:14 +02:00
2f3fcce5e4 Convert README to markdown 2021-11-22 18:33:28 +02:00
17d12fa5db Merge branch 'release/v1.4.0' 2021-10-31 22:35:54 +02:00
b025de9dfe Merge branch 'release/v1.4.0' into develop 2021-10-31 22:35:54 +02:00
829d328321 Bump version to 1.4.0 2021-10-31 22:35:44 +02:00
f2c1d02d2b Update Arduino-mbed core to v2.5.2 2021-10-25 14:45:01 +03:00
b97219d294 Update examples.yml 2021-10-14 14:43:34 +03:00
7186039f68 Sync Arduino-mbed build script // Resolve #20 2021-10-14 14:42:34 +03:00
76011726a9 Merge branch 'release/v1.3.0' into develop 2021-08-31 16:07:15 +03:00
ff7f704a42 Merge branch 'release/v1.3.0' 2021-08-31 16:07:14 +03:00
8e0001450d Bump version to 1.3.0 2021-08-31 16:07:05 +03:00
5fd0124b33 Use full path to upload tools // Issue #16 2021-08-19 12:03:16 +03:00
673d327f62 Hotfix uploading 2021-08-18 19:46:24 +02:00
1a37e2dc73 Merge branch 'platformio-develop' into develop 2021-08-18 19:00:59 +02:00
bb18b728ad Merge 2021-08-18 18:59:38 +02:00
39b2ae9785 Update Arduino-mbed package to v2.4.1
Resolve #17
2021-08-17 13:45:38 +03:00
620fe89831 Make sure toolchain-pico is removed from build for normal core 2021-08-08 14:55:24 +02:00
c0653a3d76 Start adding picoprobe as debug tool 2021-08-08 13:38:31 +02:00
7b48a72f89 Simplify paths to platform tools to handle whitespaces
Resolve #16
2021-08-06 21:07:53 +03:00
08233cd7a7 Merge branch 'release/v1.2.0' 2021-07-26 19:38:29 +03:00
2489c767f4 Merge branch 'release/v1.2.0' into develop 2021-07-26 19:38:29 +03:00
0dbcaf78bf Bump version to 1.2.0 2021-07-26 19:38:17 +03:00
9916b5ef16 Update J-Link package to the latest v7.51 2021-07-22 15:36:05 +03:00
77e0d3a29d Upload filesystem via Picotool working 2021-07-14 23:25:38 +02:00
87f647de63 Minor cleanup 2021-07-14 22:55:11 +02:00
630c935d5d Add LittleFS build support, move filesystem size parser code here 2021-07-14 22:51:58 +02:00
128a0826e1 Update Arduino-mbed package to v2.3.1 // Resove #15 2021-07-14 23:15:25 +03:00
3560177601 Update board info 2021-07-14 19:41:40 +02:00
e3828b361d Use toolchain-pico 2021-07-14 04:29:18 +02:00
4cdb352484 Formatting 2021-07-14 01:30:23 +02:00
a94fd6258a Clean build selector script 2021-07-14 01:29:23 +02:00
580b352086 Add build script selector 2021-07-14 01:28:14 +02:00
ef26f67e95 Rename package 2021-07-14 01:05:15 +02:00
9920da0915 Add pacakge definitions, skeletons for builder script 2021-07-14 01:00:43 +02:00
3c6cc84610 Merge pull request #11 from maxgerhardt/patch-1
Fix wrong board defines
2021-06-07 11:46:45 +03:00
d0ca5176e1 Fix wrong board define for RP2040 Pico board 2021-06-03 21:11:22 +02:00
856d081313 Fix wrong define for Nano RP2040 Connect board 2021-06-03 21:08:33 +02:00
095da74655 Merge branch 'release/v1.1.0' into develop 2021-05-28 14:18:52 +03:00
97 changed files with 10443 additions and 499 deletions

View File

@ -7,25 +7,46 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-16.04, windows-latest, macos-latest] os: [ubuntu-latest, windows-latest, macos-latest]
python-version: [3.7]
example: example:
- "examples/arduino-blink" - "examples/arduino-blink"
- "examples/arduino-wifi-scan"
- "examples/arduino-ota"
- "examples/arduino-signed-ota"
- "examples/arduino-external-libs" - "examples/arduino-external-libs"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
with: with:
submodules: "recursive" submodules: "recursive"
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python
uses: actions/setup-python@v1 uses: actions/setup-python@v3
with: with:
python-version: ${{ matrix.python-version }} python-version: "3.9"
- name: Enable Long Paths
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
git config --system core.longpaths true
fi
shell: bash
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip
pip install -U https://github.com/platformio/platformio/archive/develop.zip pip install -U https://github.com/platformio/platformio/archive/develop.zip
platformio platform install file://. pio pkg install --global --platform symlink://.
# OpenSSL needed for signed OTA update example
- name: Install OpenSSL
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get install -y openssl
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install openssl
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install openssl
else
echo "$RUNNER_OS not supported"
exit 1
fi
shell: bash
- name: Build examples - name: Build examples
run: | run: |
platformio run -d ${{ matrix.example }} pio run -d ${{ matrix.example }}

View File

@ -4,13 +4,13 @@
RP2040 is a low-cost, high-performance microcontroller device with a large on-chip memory, symmetric dual-core processor complex, deterministic bus fabric, and rich peripheral set augmented with a unique Programmable I/O (PIO) subsystem, it provides professional users with unrivalled power and flexibility. RP2040 is a low-cost, high-performance microcontroller device with a large on-chip memory, symmetric dual-core processor complex, deterministic bus fabric, and rich peripheral set augmented with a unique Programmable I/O (PIO) subsystem, it provides professional users with unrivalled power and flexibility.
* [Home](http://platformio.org/platforms/raspberrypi) (home page in PlatformIO Platform Registry) * [Home](https://registry.platformio.org/platforms/platformio/raspberrypi) (home page in the PlatformIO Registry)
* [Documentation](http://docs.platformio.org/page/platforms/raspberrypi.html) (advanced usage, packages, boards, frameworks, etc.) * [Documentation](https://docs.platformio.org/page/platforms/raspberrypi.html) (advanced usage, packages, boards, frameworks, etc.)
# Usage # Usage
1. [Install PlatformIO](http://platformio.org) 1. [Install PlatformIO](https://platformio.org)
2. Create PlatformIO project and configure a platform option in [platformio.ini](http://docs.platformio.org/page/projectconf.html) file: 2. Create PlatformIO project and configure a platform option in [platformio.ini](https://docs.platformio.org/page/projectconf.html) file:
## Stable version ## Stable version
@ -32,4 +32,4 @@ board = ...
# Configuration # Configuration
Please navigate to [documentation](http://docs.platformio.org/page/platforms/raspberrypi.html). Please navigate to [documentation](https://docs.platformio.org/page/platforms/raspberrypi.html).

55
boards/0xcb_helios.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q128jvxq_4_padded_checksum.S",
"usb_vid": "0x1209",
"usb_pid": "0xCB74"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_0XCB_HELIOS -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x1209",
"0xCB74"
]
],
"mcu": "rp2040",
"variant": "0xcb_helios"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Helios",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "0xCB"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25x10cl_4_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x80F1"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x80F1"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8127"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040_DVI -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8127"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather_dvi"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040 DVI",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x812D"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040_RFM -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x812D"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather_rfm"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040 RFM",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8121"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040_SCORPIO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8121"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather_scorpio"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040 SCORPIO",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x812B"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x812B"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather_thinkink"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040 ThinkINK",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8129"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_FEATHER_RP2040_USB_HOST -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8129"
]
],
"mcu": "rp2040",
"variant": "adafruit_feather_usb_host"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2040 USB Host",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x80FD"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_ITSYBITSY_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x80FD"
]
],
"mcu": "rp2040",
"variant": "adafruit_itsybitsy"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "ItsyBitsy RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8105"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_KB2040_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8105"
]
],
"mcu": "rp2040",
"variant": "adafruit_kb2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "KB2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8107"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_MACROPAD_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8107"
]
],
"mcu": "rp2040",
"variant": "adafruit_macropad2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "MacroPad RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

55
boards/adafruit_qtpy.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x80F7"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_QTPY_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x80F7"
]
],
"mcu": "rp2040",
"variant": "adafruit_qtpy"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "QT Py RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x80E3"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_STEMMAFRIEND_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x80E3"
]
],
"mcu": "rp2040",
"variant": "adafruit_stemmafriend"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "STEMMA Friend RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x8109"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ADAFRUIT_TRINKEYQT_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x8109"
]
],
"mcu": "rp2040",
"variant": "adafruit_trinkeyrp2040qt"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Trinkey RP2040 QT",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Adafruit"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2341",
"usb_pid": "0x005E"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_NANO_RP2040_CONNECT -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2341",
"0x005E"
]
],
"mcu": "rp2040",
"variant": "arduino_nano_connect"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Nano RP2040 Connect",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Arduino"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1041"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_BRIDGETEK_IDM2040-7A -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DFT8XX_TYPE=BT817 -DDISPLAY_RES=WVGA -DPLATFORM_RP2040",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1041"
]
],
"mcu": "rp2040",
"variant": "bridgetek_idm2040-7a"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "IDM2040-7A",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "BridgeTek"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1023"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_LORA_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1023"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_lora"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 LoRa",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x100B"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_LTE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x100B"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_lte"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 LTE",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1036"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_NFC_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1036"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_nfc"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 NFC",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x102D"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_SDRTC_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x102D"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_sdrtc"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 SD/RTC",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1032"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_SUBGHZ_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1032"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_subghz"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 SubGHz",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1052"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_UWB_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1052"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_uwb"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 UWB",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1006"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_WIFI_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 -DWIFIESPAT2",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1006"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_wifi"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 WiFi",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x102C"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_2040_WIFI_BLE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 -DWIFIESPAT2",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x102C"
]
],
"mcu": "rp2040",
"variant": "challenger_2040_wifi_ble"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger 2040 WiFi/BLE",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x100D"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CHALLENGER_NB_2040_WIFI_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 -DWIFIESPAT2",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x100D"
]
],
"mcu": "rp2040",
"variant": "challenger_nb_2040_wifi"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Challenger NB 2040 WiFi",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x100F"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CYTRON_MAKER_NANO_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x100F"
]
],
"mcu": "rp2040",
"variant": "cytron_maker_nano_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Maker Nano RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Cytron"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1000"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_CYTRON_MAKER_PI_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1000"
]
],
"mcu": "rp2040",
"variant": "cytron_maker_pi_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Maker Pi RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Cytron"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_DATANOISETV_PICOADK -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "datanoisetv_picoadk"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "PicoADK",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "DatanoiseTV"
}

54
boards/degz_mizu.json Normal file
View File

@ -0,0 +1,54 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_DEGZ_MIZU -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "degz_mizu"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Mizu",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Degz"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x3343",
"usb_pid": "0x4253"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_DFROBOT_BEETLE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x3343",
"0x4253"
]
],
"mcu": "rp2040",
"variant": "dfrobot_beetle_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Beetle RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "DFRobot"
}

View File

@ -0,0 +1,54 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x1209",
"usb_pid": "0x1209"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ELECTRONICCATS_BOMBERCAT -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x1209",
"0x1209"
]
],
"mcu": "rp2040",
"variant": "electroniccats_bombercat"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "HunterCat NFC RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "ElectronicCats"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1037"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ELECTRONICCATS_HUNTERCAT_NFC -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1037"
]
],
"mcu": "rp2040",
"variant": "electroniccats_huntercat_nfc"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "HunterCat NFC RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "ElectronicCats"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0xEE20"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_EXTREMEELEXTRONICS_RC2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0xEE20"
]
],
"mcu": "rp2040",
"variant": "extelec_rc2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RC2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "ExtremeElectronics"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x008A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_FLYBOARD2040_CORE -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x008A"
]
],
"mcu": "rp2040",
"variant": "flyboard2040_core"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "FlyBoard2040Core",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 4194304,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "DeRuiLab"
}

55
boards/generic.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0xF00A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_GENERIC_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0xF00A"
]
],
"mcu": "rp2040",
"variant": "generic"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Generic"
}

55
boards/ilabs_rpico32.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1010"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_ILABS_2040_RPICO32_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1010"
]
],
"mcu": "rp2040",
"variant": "ilabs_rpico32"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RPICO32",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "iLabs"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1011"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_MELOPERO_COOKIE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1011"
]
],
"mcu": "rp2040",
"variant": "melopero_cookie_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Cookie RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Melopero"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1005"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_MELOPERO_SHAKE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1005"
]
],
"mcu": "rp2040",
"variant": "melopero_shake_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Shake RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Melopero"
}

View File

@ -1,8 +1,18 @@
{ {
"build": { "build": {
"arduino": {
"earlephilhower": {
"variant": "arduino_nano_connect",
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_pid": "0x0058",
"usb_vid": "0x2341",
"usb_manufacturer": "Arduino",
"usb_product" : "Arduino Nano RP2040 Connect"
}
},
"core": "arduino", "core": "arduino",
"cpu": "cortex-m0plus", "cpu": "cortex-m0plus",
"extra_flags": "-D NANO_RP2040_CONNECT -DARDUINO_ARCH_RP2040", "extra_flags": "-D ARDUINO_NANO_RP2040_CONNECT -DARDUINO_ARCH_RP2040",
"f_cpu": "133000000L", "f_cpu": "133000000L",
"hwids": [ "hwids": [
[ [
@ -38,7 +48,8 @@
"cmsis-dap", "cmsis-dap",
"jlink", "jlink",
"raspberrypi-swd", "raspberrypi-swd",
"picotool" "picotool",
"picoprobe"
] ]
}, },
"url": "https://blog.arduino.cc/2021/01/20/welcome-raspberry-pi-to-the-world-of-microcontrollers/", "url": "https://blog.arduino.cc/2021/01/20/welcome-raspberry-pi-to-the-world-of-microcontrollers/",

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_NEKOSYSTEMS_BL2040_MINI -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "nekosystems_bl2040_mini"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "BL2040 Mini",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 4194304,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Neko Systems"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25x10cl_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x6E61"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_NULLBITS_BIT_C_PRO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x6E61"
]
],
"mcu": "rp2040",
"variant": "nullbits_bit_c_pro"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Bit-C PRO",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 4194304,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "nullbits"
}

View File

@ -1,8 +1,18 @@
{ {
"build": { "build": {
"arduino": {
"earlephilhower": {
"variant": "rpipico",
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2e8a",
"usb_pid": "0x000a",
"usb_manufacturer": "Raspberry Pi",
"usb_product": "Pico"
}
},
"core": "arduino", "core": "arduino",
"cpu": "cortex-m0plus", "cpu": "cortex-m0plus",
"extra_flags": "-D RASPBERRY_PI_PICO -DARDUINO_ARCH_RP2040", "extra_flags": "-D ARDUINO_RASPBERRY_PI_PICO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L", "f_cpu": "133000000L",
"hwids": [ "hwids": [
[ [
@ -31,10 +41,12 @@
"wait_for_upload_port": false, "wait_for_upload_port": false,
"protocol": "picotool", "protocol": "picotool",
"protocols": [ "protocols": [
"blackmagic",
"cmsis-dap", "cmsis-dap",
"jlink", "jlink",
"raspberrypi-swd", "raspberrypi-swd",
"picotool" "picotool",
"picoprobe"
] ]
}, },
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q64jv_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1008"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_PIMORONI_PGA2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1008"
]
],
"mcu": "rp2040",
"variant": "pimoroni_pga2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "PGA2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Pimoroni"
}

55
boards/rpipico.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_RASPBERRY_PI_PICO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "rpipico"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Pico",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Raspberry Pi"
}

55
boards/rpipicow.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0xF00A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_RASPBERRY_PI_PICO_W -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0xF00A"
]
],
"mcu": "rp2040",
"variant": "rpipicow"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Pico W",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Raspberry Pi"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_SEEED_XIAO_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "seeed_xiao_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "XIAO RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Seeed"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x1209",
"usb_pid": "0xA182"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_SOLDERPARTY_RP2040_STAMP -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x1209",
"0xA182"
]
],
"mcu": "rp2040",
"variant": "solderparty_rp2040_stamp"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 Stamp",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Solder Party"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x1B4F",
"usb_pid": "0x0026"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_SPARKFUN_PROMICRO_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x1B4F",
"0x0026"
]
],
"mcu": "rp2040",
"variant": "sparkfun_promicrorp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "ProMicro RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "SparkFun"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x1B4F",
"usb_pid": "0x0026"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_SPARKFUN_THINGPLUS_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x1B4F",
"0x0026"
]
],
"mcu": "rp2040",
"variant": "sparkfun_thingplusrp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Thing Plus RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "SparkFun"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1007"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_UPESY_RP2040_DEVKIT -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1007"
]
],
"mcu": "rp2040",
"variant": "upesy_rp2040_devkit"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 DevKit",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "uPesy"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x800A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_YD_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x800A"
]
],
"mcu": "rp2040",
"variant": "vccgnd_yd_rp2040"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "YD RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "VCC-GND"
}

55
boards/viyalab_mizu.json Normal file
View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_generic_03h_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x000A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_VIYALAB_MIZU_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x000A"
]
],
"mcu": "rp2040",
"variant": "viyalab_mizu"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "Mizu RP2040",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 8388608,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Viyalab"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q16jvxq_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1021"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_LCD_0_96 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1021"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_lcd_0_96"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 LCD 0.96",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q16jvxq_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1039"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_LCD_1_28 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1039"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_lcd_1_28"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 LCD 1.28",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q16jvxq_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x103A"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_ONE -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x103A"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_one"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 One",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 4194304,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1020"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_PLUS -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1020"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_plus_16mb"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 Plus 16MB",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 16777216,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1020"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_PLUS -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1020"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_plus_4mb"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 Plus 4MB",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 4194304,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q16jvxq_4_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x0003"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WAVESHARE_RP2040_ZERO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x0003"
]
],
"mcu": "rp2040",
"variant": "waveshare_rp2040_zero"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "RP2040 Zero",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "Waveshare"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1027"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WIZNET_5100S_EVB_PICO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1027"
]
],
"mcu": "rp2040",
"variant": "wiznet_5100s_evb_pico"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "W5100S-EVB-Pico",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "WIZnet"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1029"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WIZNET_5500_EVB_PICO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1029"
]
],
"mcu": "rp2040",
"variant": "wiznet_5500_evb_pico"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "W5500-EVB-Pico",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "WIZnet"
}

View File

@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x1028"
}
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-D ARDUINO_WIZNET_WIZFI360_EVB_PICO -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250",
"f_cpu": "133000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x1028"
]
],
"mcu": "rp2040",
"variant": "wiznet_wizfi360_evb_pico"
},
"debug": {
"jlink_device": "RP2040_M0_0",
"openocd_target": "rp2040.cfg",
"svd_path": "rp2040.svd"
},
"frameworks": [
"arduino"
],
"name": "WizFi360-EVB-Pico",
"upload": {
"maximum_ram_size": 270336,
"maximum_size": 2097152,
"require_upload_port": true,
"native_usb": true,
"use_1200bps_touch": true,
"wait_for_upload_port": false,
"protocol": "picotool",
"protocols": [
"blackmagic",
"cmsis-dap",
"jlink",
"raspberrypi-swd",
"picotool",
"picoprobe"
]
},
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
"vendor": "WIZnet"
}

View File

@ -21,7 +21,12 @@ from SCons.Script import DefaultEnvironment
env = DefaultEnvironment() env = DefaultEnvironment()
env.Append( env.Append(
ASFLAGS=["-x", "assembler-with-cpp"], ASFLAGS=[
"-mthumb",
],
ASPPFLAGS=[
"-x", "assembler-with-cpp",
],
CCFLAGS=[ CCFLAGS=[
"-Os", # optimize for size "-Os", # optimize for size
@ -54,6 +59,9 @@ env.Append(
if "BOARD" in env: if "BOARD" in env:
env.Append( env.Append(
ASFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu")
],
CCFLAGS=[ CCFLAGS=[
"-mcpu=%s" % env.BoardConfig().get("build.cpu") "-mcpu=%s" % env.BoardConfig().get("build.cpu")
], ],
@ -61,6 +69,3 @@ if "BOARD" in env:
"-mcpu=%s" % env.BoardConfig().get("build.cpu") "-mcpu=%s" % env.BoardConfig().get("build.cpu")
] ]
) )
# copy CCFLAGS to ASFLAGS (-x assembler-with-cpp mode)
env.Append(ASFLAGS=env.get("CCFLAGS", [])[:])

View File

@ -0,0 +1,39 @@
# Copyright 2021-present Maximilian Gerhardt <maximilian.gerhardt@rub.de>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from os.path import join, isfile
from SCons.Script import DefaultEnvironment, SConscript
env = DefaultEnvironment()
core = env.BoardConfig().get("build.core", "arduino")
build_script = ""
# select build script as either from the Earle Philhower core or
# from the builder script contained in this platform.
if core == "earlephilhower":
build_script = join(
env.PioPlatform().get_package_dir("framework-arduinopico"), "tools", "platformio-build.py")
else:
build_script = join(env.PioPlatform().get_dir(), "builder",
"frameworks", "arduino", "mbed-core", "arduino-core-mbed.py")
if not isfile(build_script):
sys.stderr.write(
"Error: Missing PlatformIO build script %s!\n" % build_script)
env.Exit(1)
SConscript(build_script)

View File

@ -14,14 +14,91 @@
import sys import sys
from platform import system from platform import system
from os import makedirs from os import makedirs, remove
from os.path import isdir, join from os.path import isdir, join, isfile
import re
import time
from shutil import copyfile
from platformio.util import get_serial_ports from platformio.public import list_serial_ports
from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, AlwaysBuild, from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, AlwaysBuild,
Builder, Default, DefaultEnvironment) Builder, Default, DefaultEnvironment)
def convert_size_expression_to_int(expression):
conversion_factors = {
"M": 1024*1024,
"MB": 1024*1024,
"K": 1024,
"KB": 1024,
"B": 1,
"": 1 # giving no conversion factor is factor 1.
}
# match <floating pointer number><conversion factor>.
extract_regex = r'^((?:[0-9]*[.])?[0-9]+)([mkbMKB]*)$'
res = re.findall(extract_regex, expression)
# unparsable expression? Warning.
if len(res) == 0:
sys.stderr.write(
"Error: Could not parse filesystem size expression '%s'."
" Will treat as size = 0.\n" % str(expression))
return 0
# access first result
number, factor = res[0]
number = float(number)
number *= conversion_factors[factor.upper()]
return int(number)
def fetch_fs_size(env):
# follow generation formulas from makeboards.py for Earle Philhower core
# given the total flash size, a user can specify
# the amount for the filesystem (0MB, 2MB, 4MB, 8MB, 16MB)
# via board_build.filesystem_size,
# and we will calculate the flash size and eeprom size from that.
flash_size = board.get("upload.maximum_size")
filesystem_size = board.get("build.filesystem_size", "0MB")
filesystem_size_int = convert_size_expression_to_int(filesystem_size)
# last 4K are allocated for EEPROM emulation in flash.
# see https://github.com/earlephilhower/arduino-pico/blob/3414b73172d307e9dc901f7fee83b41112f73457/libraries/EEPROM/EEPROM.cpp#L43-L46
eeprom_size = 4096
maximum_sketch_size = flash_size - eeprom_size - filesystem_size_int
print("Flash size: %.2fMB" % (flash_size / 1024.0 / 1024.0))
print("Sketch size: %.2fMB" % (maximum_sketch_size / 1024.0 / 1024.0))
print("Filesystem size: %.2fMB" % (filesystem_size_int / 1024.0 / 1024.0))
eeprom_start = 0x10000000 + flash_size - eeprom_size
fs_start = 0x10000000 + flash_size - eeprom_size - filesystem_size_int
fs_end = 0x10000000 + flash_size - eeprom_size
if maximum_sketch_size <= 0:
sys.stderr.write(
"Error: Filesystem too large for given flash. "
"Can at max be flash size - 4096 bytes. "
"Available sketch size with current "
"config would be %d bytes.\n" % maximum_sketch_size)
sys.stderr.flush()
env.Exit(1)
env["PICO_FLASH_LENGTH"] = maximum_sketch_size
env["PICO_EEPROM_START"] = eeprom_start
env["FS_START"] = fs_start
env["FS_END"] = fs_end
# LittleFS configuration parameters taken from
# https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/src/PicoLittleFS.java
env["FS_PAGE"] = 256
env["FS_BLOCK"] = 4096
print("Maximium Sketch size: %d "
"EEPROM start: %s Filesystem start: %s "
"Filesystem end: %s" %
(maximum_sketch_size, hex(eeprom_start), hex(fs_start), hex(fs_end)))
def __fetch_fs_size(target, source, env):
fetch_fs_size(env)
return (target, source)
def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621 def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621
upload_options = {} upload_options = {}
@ -29,7 +106,7 @@ def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621
upload_options = env.BoardConfig().get("upload", {}) upload_options = env.BoardConfig().get("upload", {})
env.AutodetectUploadPort() env.AutodetectUploadPort()
before_ports = get_serial_ports() before_ports = list_serial_ports()
if upload_options.get("use_1200bps_touch", False): if upload_options.get("use_1200bps_touch", False):
env.TouchSerialPort("$UPLOAD_PORT", 1200) env.TouchSerialPort("$UPLOAD_PORT", 1200)
@ -43,7 +120,7 @@ def generate_uf2(target, source, env):
env.Execute( env.Execute(
" ".join( " ".join(
[ [
join(platform.get_package_dir("tool-rp2040tools") or "", "elf2uf2"), "elf2uf2",
'"%s"' % elf_file, '"%s"' % elf_file,
'"%s"' % elf_file.replace(".elf", ".uf2"), '"%s"' % elf_file.replace(".elf", ".uf2"),
] ]
@ -56,6 +133,8 @@ platform = env.PioPlatform()
board = env.BoardConfig() board = env.BoardConfig()
env.Replace( env.Replace(
__fetch_fs_size=fetch_fs_size,
AR="arm-none-eabi-ar", AR="arm-none-eabi-ar",
AS="arm-none-eabi-as", AS="arm-none-eabi-as",
CC="arm-none-eabi-gcc", CC="arm-none-eabi-gcc",
@ -67,6 +146,9 @@ env.Replace(
ARFLAGS=["rc"], ARFLAGS=["rc"],
MKFSTOOL="mklittlefs",
PICO_FS_IMAGE_NAME=env.get("PICO_FS_IMAGE_NAME", "littlefs"),
SIZEPROGREGEXP=r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*", SIZEPROGREGEXP=r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*",
SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*", SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*",
SIZECHECKCMD="$SIZETOOL -A -d $SOURCES", SIZECHECKCMD="$SIZETOOL -A -d $SOURCES",
@ -102,6 +184,22 @@ env.Append(
"$TARGET" "$TARGET"
]), "Building $TARGET"), ]), "Building $TARGET"),
suffix=".hex" suffix=".hex"
),
BinToSignedBin=Builder(
action=env.VerboseAction(" ".join([
'"$PYTHONEXE" "%s"' % join(
platform.get_package_dir("framework-arduinopico") or "",
"tools", "signing.py"),
"--mode",
"sign",
"--privatekey",
'"%s"' % join("$PROJECT_SRC_DIR", "private.key"),
"--bin",
"$SOURCES",
"--out",
"$TARGET"
]), "Building $TARGET"),
suffix=".bin.signed"
) )
) )
) )
@ -109,26 +207,81 @@ env.Append(
if not env.get("PIOFRAMEWORK"): if not env.get("PIOFRAMEWORK"):
env.SConscript("frameworks/_bare.py") env.SConscript("frameworks/_bare.py")
env.Append(
BUILDERS=dict(
DataToBin=Builder(
action=env.VerboseAction(" ".join([
'"$MKFSTOOL"',
"-c", "$SOURCES",
"-p", "$FS_PAGE",
"-b", "$FS_BLOCK",
"-s", "${FS_END - FS_START}",
"$TARGET"
]), "Building file system image from '$SOURCES' directory to $TARGET"),
emitter=__fetch_fs_size,
source_factory=env.Dir,
suffix=".bin"
)
)
)
is_arduino_pico_build = env.BoardConfig().get("build.core", "arduino") == "earlephilhower" and "arduino" in env.get("PIOFRAMEWORK")
if is_arduino_pico_build:
pubkey = join(env.subst("$PROJECT_SRC_DIR"), "public.key")
if isfile(pubkey):
header_file = join(env.subst("$BUILD_DIR"), "core", "Updater_Signing.h")
env.Prepend(CCFLAGS=['-I"%s"' % join("$BUILD_DIR", "core")])
env.Execute(" ".join([
'"$PYTHONEXE" "%s"' % join(
platform.get_package_dir("framework-arduinopico"), "tools", "signing.py"),
"--mode", "header",
"--publickey", '"%s"' % join("$PROJECT_SRC_DIR", "public.key"),
"--out", '"%s"' % join("$BUILD_DIR", "core", "Updater_Signing.h")
]))
# #
# Target: Build executable and linkable firmware # Target: Build executable and linkable firmware
# #
target_elf = None target_elf = None
target_signed_bin = None
if "nobuild" in COMMAND_LINE_TARGETS: if "nobuild" in COMMAND_LINE_TARGETS:
target_elf = join("$BUILD_DIR", "${PROGNAME}.elf") target_elf = join("$BUILD_DIR", "${PROGNAME}.elf")
target_firm = join("$BUILD_DIR", "${PROGNAME}.bin") target_firm = join("$BUILD_DIR", "${PROGNAME}.bin")
target_firm = join("$BUILD_DIR", "${PROGNAME}.bin.signed")
else: else:
target_elf = env.BuildProgram() target_elf = env.BuildProgram()
target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"), target_elf) if set(["buildfs", "uploadfs"]) & set(COMMAND_LINE_TARGETS):
env.Depends(target_firm, "checkprogsize") target_firm = env.DataToBin(
join("$BUILD_DIR", "${PICO_FS_IMAGE_NAME}"), "$PROJECTDATA_DIR")
AlwaysBuild(target_firm)
else:
target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"), target_elf)
if is_arduino_pico_build:
target_signed_bin = env.BinToSignedBin(join("$BUILD_DIR", "${PROGNAME}"), target_firm)
env.Depends(target_signed_bin, "checkprogsize")
env.Depends(target_firm, "checkprogsize")
env.AddPlatformTarget("buildfs", target_firm, target_firm, "Build Filesystem Image")
AlwaysBuild(env.Alias("nobuild", target_firm)) AlwaysBuild(env.Alias("nobuild", target_firm))
target_buildprog = env.Alias("buildprog", target_firm, target_firm) target_buildprog = env.Alias("buildprog", [target_firm, target_signed_bin], target_firm)
env.AddPostAction( env.AddPostAction(
target_elf, env.VerboseAction(generate_uf2, "Generating UF2 image") target_elf, env.VerboseAction(generate_uf2, "Generating UF2 image")
) )
def _update_max_upload_size(env):
fetch_fs_size(env)
env.BoardConfig().update("upload.maximum_size", env["PICO_FLASH_LENGTH"])
# update max upload size based on set sketch size (or raw maximum size)
if env.get("PIOMAINPROG"):
env.AddPreAction(
"checkprogsize",
env.VerboseAction(
lambda source, target, env: _update_max_upload_size(env),
"Retrieving maximum program size $SOURCE"))
# #
# Target: Print binary size # Target: Print binary size
# #
@ -138,6 +291,12 @@ target_size = env.Alias(
env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE")) env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"))
AlwaysBuild(target_size) AlwaysBuild(target_size)
def RebootPico(target, source, env):
time.sleep(0.5)
env.Execute(
'"%s" reboot' %
join(platform.get_package_dir("tool-rp2040tools") or "", "picotool")
)
# #
# Target: Upload by default .bin file # Target: Upload by default .bin file
# #
@ -147,23 +306,157 @@ upload_protocol = env.subst("$UPLOAD_PROTOCOL") or "picotool"
upload_actions = [] upload_actions = []
upload_source = target_firm upload_source = target_firm
def UploadUF2ToDisk(target, source, env):
assert "UPLOAD_PORT" in env
progname = env.subst("$PROGNAME")
ext = "uf2"
fpath = join(env.subst("$BUILD_DIR"), "%s.%s" % (progname, ext))
if not isfile(fpath):
print(
"Firmware file %s not found.\n" % fpath
)
return
copyfile(fpath, join(env.subst("$UPLOAD_PORT"), "%s.%s" % (progname, ext)))
print(
"Firmware has been successfully uploaded.\n"
)
def TryResetPico(target, source, env):
upload_options = {}
if "BOARD" in env:
upload_options = env.BoardConfig().get("upload", {})
ports = list_serial_ports()
if len(ports) != 0:
last_port = ports[-1]["port"]
if upload_options.get("use_1200bps_touch", False):
env.TouchSerialPort(last_port, 1200)
time.sleep(2.0)
from platformio.device.list.util import list_logical_devices
from platformio.device.finder import is_pattern_port
from fnmatch import fnmatch
def find_rpi_disk(initial_port):
msdlabels = ("RPI-RP2")
item:str
for item in list_logical_devices():
if item["path"].startswith("/net"):
continue
if (
initial_port
and is_pattern_port(initial_port)
and not fnmatch(item["path"], initial_port)
):
continue
mbed_pages = [join(item["path"], n) for n in ("INDEX.HTM", "INFO_UF2.TXT")]
if any(isfile(p) for p in mbed_pages):
return item["path"]
if item["name"] and any(l in item["name"].lower() for l in msdlabels):
return item["path"]
return None
def AutodetectPicoDisk(target, source, env):
initial_port = env.subst("$UPLOAD_PORT")
if initial_port and not is_pattern_port(initial_port):
print(env.subst("Using manually specified: $UPLOAD_PORT"))
return
if upload_protocol == "mbed":
env.Replace(UPLOAD_PORT=find_rpi_disk(initial_port))
if env.subst("$UPLOAD_PORT"):
print(env.subst("Auto-detected: $UPLOAD_PORT"))
else:
sys.stderr.write(
"Error: Please specify `upload_port` for environment or use "
"global `--upload-port` option.\n"
"For some development platforms it can be a USB flash "
"drive (i.e. /media/<user>/<device name>)\n"
)
env.Exit(1)
if upload_protocol == "mbed": if upload_protocol == "mbed":
upload_actions = [ upload_actions = [
env.VerboseAction(env.AutodetectUploadPort, "Looking for upload disk..."), env.VerboseAction(TryResetPico, "Trying to reset Pico into bootloader mode..."),
env.VerboseAction(env.UploadToDisk, "Uploading $SOURCE") env.VerboseAction(AutodetectPicoDisk, "Looking for upload disk..."),
env.VerboseAction(UploadUF2ToDisk, "Uploading $SOURCE")
] ]
elif upload_protocol.startswith("blackmagic"):
env.Replace(
UPLOADER="$GDB",
UPLOADERFLAGS=[
"-nx",
"--batch",
"-ex", "target extended-remote $UPLOAD_PORT",
"-ex", "monitor %s_scan" %
("jtag" if upload_protocol == "blackmagic-jtag" else "swdp"),
"-ex", "attach 1",
"-ex", "load",
"-ex", "compare-sections",
"-ex", "kill"
],
UPLOADCMD="$UPLOADER $UPLOADERFLAGS $SOURCE"
)
upload_source = target_elf
upload_actions = [
env.VerboseAction(env.AutodetectUploadPort, "Looking for BlackMagic port..."),
env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")
]
elif upload_protocol == "espota":
if not env.subst("$UPLOAD_PORT"):
sys.stderr.write(
"Error: Please specify IP address or host name of ESP device "
"using `upload_port` for build environment or use "
"global `--upload-port` option.\n"
"See https://docs.platformio.org/page/platforms/"
"espressif8266.html#over-the-air-ota-update\n")
env.Replace(
UPLOADER=join(
platform.get_package_dir("framework-arduinopico") or "",
"tools", "espota.py"),
UPLOADERFLAGS=["--debug", "--progress", "-i", "$UPLOAD_PORT", "-p", "2040"],
UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS -f $SOURCE'
)
if "uploadfs" in COMMAND_LINE_TARGETS:
env.Append(UPLOADERFLAGS=["-s"])
else:
# check if we have a .bin.signed file available.
# since the file may not be build yet, we try to predict that we will
# have that file if they private signing key exists.
if isfile(join(env.subst("$PROJECT_SRC_DIR"), "private.key")):
sys.stdout.write("Using signed OTA update file.")
upload_source = target_signed_bin
upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
elif upload_protocol == "picotool": elif upload_protocol == "picotool":
env.Replace( env.Replace(
UPLOADER=join(platform.get_package_dir("tool-rp2040tools") or "", "rp2040load"), UPLOADER=join(platform.get_package_dir("tool-rp2040tools") or "", "rp2040load"),
UPLOADERFLAGS=["-v", "-D"], UPLOADERFLAGS=["-v", "-D"],
UPLOADCMD="$UPLOADER $UPLOADERFLAGS $SOURCES" UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS $SOURCES'
) )
if "uploadfs" in COMMAND_LINE_TARGETS:
env.Replace(
UPLOADER=join(platform.get_package_dir("tool-rp2040tools") or "", "picotool"),
UPLOADERFLAGS=[
"load",
"--verify"
],
UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS $SOURCES --offset ${hex(FS_START)}',
)
upload_actions = [ upload_actions = [
env.VerboseAction(BeforeUpload, "Looking for upload port..."), env.VerboseAction(BeforeUpload, "Looking for upload port..."),
env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE"), env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE"),
] ]
# picotool seems to need just a tiny bit of delay, but rp2040 load not..
if "uploadfs" in COMMAND_LINE_TARGETS:
upload_actions.insert(1, env.VerboseAction(
lambda source, target, env: time.sleep(0.5), "Delaying a tiny bit..."))
# reboot after filesystem upload
upload_actions.append(env.VerboseAction(RebootPico, "Rebooting device..."))
upload_source = target_elf upload_source = target_elf
elif upload_protocol.startswith("jlink"): elif upload_protocol.startswith("jlink"):
@ -173,10 +466,11 @@ elif upload_protocol.startswith("jlink"):
if not isdir(build_dir): if not isdir(build_dir):
makedirs(build_dir) makedirs(build_dir)
script_path = join(build_dir, "upload.jlink") script_path = join(build_dir, "upload.jlink")
upload_addr = hex(env["FS_START"]) if "uploadfs" in COMMAND_LINE_TARGETS else board.get(
"upload.offset_address", "0x0")
commands = [ commands = [
"h", "h",
"loadbin %s, %s" % (source, board.get( "loadbin %s, %s" % (source, upload_addr),
"upload.offset_address", "0x0")),
"r", "r",
"q" "q"
] ]
@ -205,23 +499,34 @@ elif upload_protocol in debug_tools:
] ]
openocd_args.extend( openocd_args.extend(
debug_tools.get(upload_protocol).get("server").get("arguments", [])) debug_tools.get(upload_protocol).get("server").get("arguments", []))
if env.GetProjectOption("debug_speed"): # always use a default speed directive of 1000khz or an otherwise configured speed
openocd_args.extend( # otherwise, flash failures were observed
["-c", "adapter speed %s" % env.GetProjectOption("debug_speed")] speed = env.GetProjectOption("debug_speed") or "1000"
) openocd_args.extend(
openocd_args.extend([ ["-c", "adapter speed %s" % speed]
"-c", "program {$SOURCE} %s verify reset; shutdown;" % )
board.get("upload.offset_address", "") if "uploadfs" in COMMAND_LINE_TARGETS:
]) # filesystem upload. use FS_START.
openocd_args.extend([
"-c", "program {$SOURCE} ${hex(FS_START)} verify reset; shutdown;"
])
else:
# normal firmware upload. flash starts at 0x10000000
openocd_args.extend([
"-c", "program {$SOURCE} %s verify reset; shutdown;" %
board.get("upload.offset_address", "")
])
openocd_args = [ openocd_args = [
f.replace("$PACKAGE_DIR", platform.get_package_dir( f.replace("$PACKAGE_DIR", platform.get_package_dir(
"tool-openocd-raspberrypi") or "") "tool-openocd-rp2040-earlephilhower") or "")
for f in openocd_args for f in openocd_args
] ]
env.Replace( env.Replace(
UPLOADER="openocd", UPLOADER="openocd",
UPLOADERFLAGS=openocd_args, UPLOADERFLAGS=openocd_args,
UPLOADCMD="$UPLOADER $UPLOADERFLAGS") UPLOADCMD="$UPLOADER $UPLOADERFLAGS")
if not board.get("upload").get("offset_address"):
upload_source = target_elf
upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")] upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
# custom upload tool # custom upload tool
@ -232,9 +537,8 @@ if not upload_actions:
sys.stderr.write("Warning! Unknown upload protocol %s\n" % upload_protocol) sys.stderr.write("Warning! Unknown upload protocol %s\n" % upload_protocol)
AlwaysBuild(env.Alias("upload", upload_source, upload_actions)) AlwaysBuild(env.Alias("upload", upload_source, upload_actions))
env.AddPlatformTarget("uploadfs", target_firm, upload_actions, "Upload Filesystem Image")
# #
# Default targets # Default targets
# #
Default([target_buildprog, target_size]) Default([target_buildprog, target_size])

View File

@ -0,0 +1,29 @@
How to build PlatformIO based project
=====================================
1. [Install PlatformIO Core](https://docs.platformio.org/page/core.html)
2. Download [development platform with examples](https://github.com/platformio/platform-raspberrypi/archive/develop.zip)
3. Extract ZIP archive
4. Run these commands:
```shell
# Change directory to example
$ cd platform-raspberrypi/examples/arduino-blink
# Build project
$ pio run
# Upload firmware
$ pio run --target upload
# Clean build files
$ pio run --target clean
```
## Notes
For Raspberry Pi Pico devices, two Arduino cores exist:
* https://github.com/arduino/ArduinoCore-mbed
* https://github.com/earlephilhower/arduino-pico
This examples showcases how to use both of these cores in the `platformio.ini`.

View File

@ -1,32 +0,0 @@
.. Copyright 2014-present PlatformIO <contact@platformio.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
How to build PlatformIO based project
=====================================
1. `Install PlatformIO Core <http://docs.platformio.org/page/core.html>`_
2. Download `development platform with examples <https://github.com/platformio/platform-raspberrypi/archive/develop.zip>`_
3. Extract ZIP archive
4. Run these commands:
.. code-block:: bash
# Change directory to example
> cd platform-raspberrypi/examples/arduino-blink
# Build project
> platformio run
# Upload firmware
> platformio run --target upload
# Clean build files
> platformio run --target clean

View File

@ -5,7 +5,7 @@
; Library options: dependencies, extra library storages ; Library options: dependencies, extra library storages
; ;
; Please visit documentation for the other options and examples ; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html ; https://docs.platformio.org/page/projectconf.html
[env] [env]
platform = raspberrypi platform = raspberrypi
@ -16,3 +16,32 @@ board = pico
[env:nanorp2040connect] [env:nanorp2040connect]
board = nanorp2040connect board = nanorp2040connect
[env:pico_earle]
board = pico
; "pico" board can use both mbed and earlephilhower core, must select here
board_build.core = earlephilhower
[env:nanorp2040connect_earle]
board = nanorp2040connect
; "nanorp2040connect" board can use both mbed and earlephilhower core, must select here
board_build.core = earlephilhower
; earlephilhower-only boards
[env:rpipico]
board = rpipico
[env:adafruit_feather]
board = adafruit_feather
[env:seeed_xiao_rp2040]
board = seeed_xiao_rp2040
[env:sparkfun_thingplusrp2040]
board = sparkfun_thingplusrp2040
[env:pimoroni_pga2040]
board = pimoroni_pga2040
[env:rpipicow]
board = rpipicow

View File

@ -0,0 +1,27 @@
How to build PlatformIO based project
=====================================
1. [Install PlatformIO Core](https://docs.platformio.org/page/core.html)
2. Download [development platform with examples](https://github.com/platformio/platform-raspberrypi/archive/develop.zip)
3. Extract ZIP archive
4. Run these commands:
```shell
# Change directory to example
$ cd platform-raspberrypi/examples/arduino-external-libs
# Build project
$ pio run
# Upload firmware
$ pio run --target upload
# Build specific environment
$ pio run -e pico
# Upload firmware for the specific environment
$ pio run -e pico --target upload
# Clean build files
$ pio run --target clean
```

View File

@ -1,38 +0,0 @@
.. Copyright 2014-present PlatformIO <contact@platformio.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
How to build PlatformIO based project
=====================================
1. `Install PlatformIO Core <http://docs.platformio.org/page/core.html>`_
2. Download `development platform with examples <https://github.com/platformio/platform-raspberrypi/archive/develop.zip>`_
3. Extract ZIP archive
4. Run these commands:
.. code-block:: bash
# Change directory to example
> cd platform-raspberrypi/examples/arduino-external-libs
# Build project
> platformio run
# Upload firmware
> platformio run --target upload
# Build specific environment
> platformio run -e pico
# Upload firmware for the specific environment
> platformio run -e pico --target upload
# Clean build files
> platformio run --target clean

View File

@ -5,7 +5,7 @@
; Library options: dependencies, extra library storages ; Library options: dependencies, extra library storages
; ;
; Please visit documentation for the other options and examples ; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html ; https://docs.platformio.org/page/projectconf.html
[env] [env]
platform = raspberrypi platform = raspberrypi

1
examples/arduino-ota/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.pio

View File

@ -0,0 +1,33 @@
How to build PlatformIO based project
=====================================
1. [Install PlatformIO Core](https://docs.platformio.org/page/core.html)
2. Download [development platform with examples](https://github.com/platformio/platform-raspberrypi/archive/develop.zip)
3. Extract ZIP archive
4. Run these commands:
```shell
# Change directory to example
$ cd platform-raspberrypi/examples/arduino-ota
# Build project
$ pio run
# Upload firmware
$ pio run --target upload
# Clean build files
$ pio run --target clean
```
## Notes
This examples showcases the usage of Over-The-Air (OTA) updates with the Raspberry Pi Pico W.
For more details, see the [documentation](https://arduino-pico.readthedocs.io/en/latest/ota.html).
For the initial firmware update, use the `rpipicow_via_usb` environment.
Then, open the serial monitor and note down the IP of the Pico that it outputs.
Use this IP as the `upload_port` in the `rpipicow_via_ota` environment and use the "Upload" project task there.

View File

@ -0,0 +1,39 @@
This directory is intended for project header files.
A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.
```src/main.c
#include "header.h"
int main (void)
{
...
}
```
Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.
In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.
Read more about using header files in official GCC documentation:
* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

View File

@ -0,0 +1,46 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html

View File

@ -0,0 +1,23 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter, extra scripting
; Upload options: custom port, speed and extra flags
; Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env]
platform = raspberrypi
framework = arduino
; upload via USB
[env:rpipicow_via_usb]
board = rpipicow
upload_protocol = mbed
; upload via OTA (change IP)
[env:rpipicow_via_ota]
board = rpipicow
upload_protocol = espota
upload_port = 192.168.0.206

View File

@ -0,0 +1,78 @@
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include "Updater_Signing.h"
#ifndef STASSID
#define STASSID "YourSSID"
#define STAPSK "YourPassword"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
void setup() {
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
rp2040.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname("myesp8266");
// No authentication by default
// ArduinoOTA.setPassword("admin");
// Password can be set with it's md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
}

View File

@ -0,0 +1,11 @@
This directory is intended for PIO Unit Testing and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PIO Unit Testing:
- https://docs.platformio.org/page/plus/unit-testing.html

View File

@ -0,0 +1 @@
.pio

View File

@ -0,0 +1,37 @@
How to build PlatformIO based project
=====================================
1. [Install PlatformIO Core](https://docs.platformio.org/page/core.html)
2. Download [development platform with examples](https://github.com/platformio/platform-raspberrypi/archive/develop.zip)
3. Extract ZIP archive
4. Run these commands:
```shell
# Change directory to example
$ cd platform-raspberrypi/examples/arduino-signed-ota
# Build project
$ pio run
# Upload firmware
$ pio run --target upload
# Clean build files
$ pio run --target clean
```
## Notes
This examples showcases the usage of **signed** Over-The-Air (OTA) updates with the Raspberry Pi Pico W.
The difference to regular OTA updates is that update binaries are signed using the `private.key` to produce a `firmware.bin.signed` file.
The firmware then uses the `public.key` file to verify the signature on the binary it receives in an OTA update. It will reject OTA update binaries that were not properly signed.
For more details, see the [documentation](https://arduino-pico.readthedocs.io/en/latest/ota.html).
For the initial firmware update, use the `rpipicow_via_usb` environment.
Then, open the serial monitor and note down the IP of the Pico that it outputs.
Use this IP as the `upload_port` in the `rpipicow_via_ota` environment and use the "Upload" project task there.

View File

@ -0,0 +1,39 @@
This directory is intended for project header files.
A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.
```src/main.c
#include "header.h"
int main (void)
{
...
}
```
Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.
In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.
Read more about using header files in official GCC documentation:
* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

View File

@ -0,0 +1,46 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html

View File

@ -0,0 +1,23 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter, extra scripting
; Upload options: custom port, speed and extra flags
; Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env]
platform = raspberrypi
framework = arduino
; upload via USB
[env:rpipicow_via_usb]
board = rpipicow
upload_protocol = mbed
; upload via OTA (change IP)
[env:rpipicow_via_ota]
board = rpipicow
upload_protocol = espota
upload_port = 192.168.0.206

View File

@ -0,0 +1,78 @@
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include "Updater_Signing.h"
#ifndef STASSID
#define STASSID "YourSSID"
#define STAPSK "YourPassword"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
void setup() {
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
rp2040.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname("myesp8266");
// No authentication by default
// ArduinoOTA.setPassword("admin");
// Password can be set with it's md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
}

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAu1Pt7yEk/xI+6cozLj5Bu4xV8gXDXcHS0rSJFfl4wBTk4UXp
aJRaLfR1k0juEEa5LBRZaoA0iLj2e6kfCibONx0VVoWmeqN2HBc3zkA1eqCksI0Q
Uudzto4KhKHp0odiZ2zo6c/2Tn1zqD/m3OLoSjVTbsJmGuwx8RGMBXozpg/uL0hH
flihX+HND4Xfw92QXv7SaPBhgvM9xyRxn0/w3J2nNjtuPuVN5vcQkd8ncMexVfy9
AWp+HSA5AT5N8CJ/EeIsdDMY1US28bUePzj1WIo75bZHKZNFw/iXe2xoPpm74qri
MNSlW2craFP2K3KYnI28vJeUU6t9I6LS9zt2zQIDAQABAoIBAE5GpuDKb8Qp4qIc
fMBxAVSWMn+cSuONj0O+bp4BDaTt1ioP5ZVukDQtt0ehLOEePFgf9LEc+1a6Ozy3
EaJTTs4W2Ai8djE+xqa8SPRlPjOMluSzPUP3NRHuTpTXd3YiXksrZjP1U02+/Cos
8ZIROtFvcPqSPso3MjMyitjrFFPqEtf1P+UiamjDrMSM72YX4W55kOkiCWCnAOmw
mGTlXOIqDSTBb1lloKWJfpB3RdnNo2izkU1HMBn7hVi433NUBA22o+RZhDFSZdD4
3kbkUqXd4p+vc/sh6muJtWS/COSIPFkLzdEYpBdt3XQ4FhlsRtILJaPWXa4OPjR6
ZoOwMB0CgYEA6OHfIofQiu4+HlTDN5YdyTmtYEYcrtbaQUxuQSEa2mshBphHP8uT
mYRVl2BzuprFmXZPz+FcjnPnfxqEehljvA3wMjA/PE+nQo9yyOC0N4ulXpkkqHdR
f+4KZVR7D+hesGe+57OQmvTqYZSHEt/ubjC9wZ90UFonLjsa4zibbrsCgYEAzexn
XDnThb3ffyBgvprP0IJjgMAEY0pXD++PKPQqPu9JMz68t7roYzkKFCFVOsaWpKxC
vX9mvYjTBjLpWh+ltIAN+EFz6seIbeSJ0RNybsAXYwT/mFWGHx2tMtlW6DgBu3UD
J2Yf76n0JaddBkfNMQI00Dl41+MU+AwwTB9fTBcCgYB2+f6Pm6d1cyYVROS/X1g0
V9011FwPDwFOXwftCka31Ad5YQ71jsIHqk44GjTF3xCYyJMZ917cAGcCzr9jydjk
WJKgcXm9DEy9ep//9Jzdy+BepgrObrcajriM8E424FaP9VDY+yojoICl/cXMZM9h
SFGJvDcmXgiqW9PuxhrSxQKBgAMN2oqXoPd+1W3BQS4ShbqF9IvYTThbxebKmsj0
thuw2NkVuR7Qetnd4rRhui3g/CL9GxBMb22oNdkFsEhR59dBfvOLpPh6dR+MIC8l
prDV0IL7c/8CZbbYbdUvPAa9rejl12IiNZ8MWj6kuNB7CCQN8FKWR6CMEaeMJrs6
S+OJAoGAbehNOUwEzmUKkfxf+279kBkgabcQ3NTaeSx0QOnI9KWHFGLYLQk9cMSu
maQJ1TYpbIoP1njzJ4bI2tynhwEuSMEhh4afP6U5H10NJX4PqSd0Rqc1vSJYcszr
5mUWil8FfbCBZ8jod2NQ55KYMVY5CphCqaK/s2bw2pvIR3uqJGg=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1Pt7yEk/xI+6cozLj5B
u4xV8gXDXcHS0rSJFfl4wBTk4UXpaJRaLfR1k0juEEa5LBRZaoA0iLj2e6kfCibO
Nx0VVoWmeqN2HBc3zkA1eqCksI0QUudzto4KhKHp0odiZ2zo6c/2Tn1zqD/m3OLo
SjVTbsJmGuwx8RGMBXozpg/uL0hHflihX+HND4Xfw92QXv7SaPBhgvM9xyRxn0/w
3J2nNjtuPuVN5vcQkd8ncMexVfy9AWp+HSA5AT5N8CJ/EeIsdDMY1US28bUePzj1
WIo75bZHKZNFw/iXe2xoPpm74qriMNSlW2craFP2K3KYnI28vJeUU6t9I6LS9zt2
zQIDAQAB
-----END PUBLIC KEY-----

View File

@ -0,0 +1,11 @@
This directory is intended for PIO Unit Testing and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PIO Unit Testing:
- https://docs.platformio.org/page/plus/unit-testing.html

View File

@ -0,0 +1,25 @@
How to build PlatformIO based project
=====================================
1. [Install PlatformIO Core](https://docs.platformio.org/page/core.html)
2. Download [development platform with examples](https://github.com/platformio/platform-raspberrypi/archive/develop.zip)
3. Extract ZIP archive
4. Run these commands:
```shell
# Change directory to example
$ cd platform-raspberrypi/examples/arduino-wifi-scan
# Build project
$ pio run
# Upload firmware
$ pio run --target upload
# Clean build files
$ pio run --target clean
```
## Notes
This example is only intended for the Raspberry Pi Pico W with the [Earle Philhower](https://github.com/earlephilhower/arduino-pico) core.

View File

@ -0,0 +1,39 @@
This directory is intended for project header files.
A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.
```src/main.c
#include "header.h"
int main (void)
{
...
}
```
Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.
In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.
Read more about using header files in official GCC documentation:
* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

View File

@ -0,0 +1,46 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html

View File

@ -0,0 +1,15 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter, extra scripting
; Upload options: custom port, speed and extra flags
; Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env]
platform = raspberrypi
framework = arduino
[env:rpipicow]
board = rpipicow

View File

@ -0,0 +1,43 @@
// Simple WiFi network scanner application
// Released to the public domain in 2022 by Earle F. Philhower, III
#include <Arduino.h>
#include <WiFi.h>
void setup() {
Serial.begin(115200);
}
const char *macToString(uint8_t mac[6]) {
static char s[20];
sprintf(s, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return s;
}
const char *encToString(uint8_t enc) {
switch (enc) {
case ENC_TYPE_NONE: return "NONE";
case ENC_TYPE_TKIP: return "WPA";
case ENC_TYPE_CCMP: return "WPA2";
case ENC_TYPE_AUTO: return "AUTO";
}
return "UNKN";
}
void loop() {
delay(5000);
Serial.printf("Beginning scan at %d\n", millis());
auto cnt = WiFi.scanNetworks();
if (!cnt) {
Serial.printf("No networks found\n");
} else {
Serial.printf("Found %d networks\n\n", cnt);
Serial.printf("%32s %5s %17s %2s %4s\n", "SSID", "ENC", "BSSID ", "CH", "RSSI");
for (auto i = 0; i < cnt; i++) {
uint8_t bssid[6];
WiFi.BSSID(i, bssid);
Serial.printf("%32s %5s %17s %2d %4d\n", WiFi.SSID(i), encToString(WiFi.encryptionType(i)), macToString(bssid), WiFi.channel(i), WiFi.RSSI(i));
}
}
Serial.printf("\n--- Sleeping ---\n\n\n");
delay(5000);
}

View File

@ -0,0 +1,11 @@
This directory is intended for PIO Unit Testing and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PIO Unit Testing:
- https://docs.platformio.org/page/plus/unit-testing.html

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{ {
"name": "raspberrypi", "name": "raspberrypi",
"title": "Raspberry Pi RP2040", "title": "Raspberry Pi RP2040",
"description": "RP2040 is a low-cost, high-performance microcontroller device with with a large on-chip memory, symmetric dual-core processor complex, and rich peripheral.", "description": "RP2040 is a low-cost, high-performance microcontroller device with a large on-chip memory, symmetric dual-core processor complex, and rich peripheral.",
"homepage": "https://www.raspberrypi.org/documentation/rp2040/getting-started/", "homepage": "https://www.raspberrypi.org/documentation/rp2040/getting-started/",
"license": "Apache-2.0", "license": "Apache-2.0",
"keywords": [ "keywords": [
@ -12,47 +12,65 @@
"RP2040" "RP2040"
], ],
"engines": { "engines": {
"platformio": "^5" "platformio": "^6"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/platformio/platform-raspberrypi.git" "url": "https://github.com/platformio/platform-raspberrypi.git"
}, },
"version": "1.1.0", "version": "1.9.0",
"frameworks": { "frameworks": {
"arduino": { "arduino": {
"package": "framework-arduino-mbed", "package": "framework-arduino-mbed",
"script": "builder/frameworks/arduino/mbed-core/arduino-core-mbed.py" "script": "builder/frameworks/arduino/arduino.py"
} }
}, },
"packages": { "packages": {
"toolchain-gccarmnoneeabi": { "toolchain-gccarmnoneeabi": {
"type": "toolchain", "type": "toolchain",
"owner": "platformio", "owner": "platformio",
"version": "~1.90201.0" "version": ">=1.90201.0,<1.90302.0"
},
"toolchain-rp2040-earlephilhower": {
"type": "toolchain",
"optional": true,
"owner": "earlephilhower",
"version": "~5.100300.0"
}, },
"framework-arduino-mbed": { "framework-arduino-mbed": {
"type": "framework", "type": "framework",
"optional": true, "optional": true,
"owner": "platformio", "owner": "platformio",
"version": "~2.1.0" "version": "~4.0.2"
},
"framework-arduinopico": {
"type": "framework",
"optional": true,
"owner": "earlephilhower",
"version": "https://github.com/earlephilhower/arduino-pico.git#5bf570c27d40cc2fc2b574661491ff4ccf37c2a"
}, },
"tool-rp2040tools": { "tool-rp2040tools": {
"type": "uploader", "type": "uploader",
"owner": "platformio", "owner": "platformio",
"version": "~1.0.2" "version": "~1.0.2"
}, },
"tool-openocd-raspberrypi": { "tool-openocd-rp2040-earlephilhower": {
"type": "uploader", "type": "uploader",
"optional": true, "optional": true,
"owner": "platformio", "owner": "earlephilhower",
"version": "~2.1100.0" "version": "~5.100300.0"
}, },
"tool-jlink": { "tool-jlink": {
"type": "uploader", "type": "uploader",
"optional": true, "optional": true,
"owner": "platformio", "owner": "platformio",
"version": "~1.72000.0" "version": "^1.72000.0"
},
"tool-mklittlefs-rp2040-earlephilhower": {
"type": "uploader",
"optional": true,
"owner": "earlephilhower",
"version": "~5.100300.0"
} }
} }
} }

View File

@ -12,10 +12,9 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import copy
import platform import platform
from platformio.managers.platform import PlatformBase from platformio.public import PlatformBase
class RaspberrypiPlatform(PlatformBase): class RaspberrypiPlatform(PlatformBase):
@ -24,6 +23,34 @@ class RaspberrypiPlatform(PlatformBase):
return True return True
def configure_default_packages(self, variables, targets): def configure_default_packages(self, variables, targets):
# configure arduino core package.
# select the right one based on the build.core, disable other one.
board = variables.get("board")
board_config = self.board_config(board)
build_core = variables.get(
"board_build.core", board_config.get("build.core", "arduino"))
frameworks = variables.get("pioframework", [])
if "arduino" in frameworks:
if build_core == "arduino":
self.frameworks["arduino"]["package"] = "framework-arduino-mbed"
self.packages["framework-arduinopico"]["optional"] = True
self.packages["toolchain-rp2040-earlephilhower"]["optional"] = True
self.packages.pop("toolchain-rp2040-earlephilhower", None)
elif build_core == "earlephilhower":
self.frameworks["arduino"]["package"] = "framework-arduinopico"
self.packages["framework-arduino-mbed"]["optional"] = True
self.packages.pop("toolchain-gccarmnoneeabi", None)
self.packages["toolchain-rp2040-earlephilhower"]["optional"] = False
else:
sys.stderr.write(
"Error! Unknown build.core value '%s'. Don't know which Arduino core package to use." % build_core)
env.Exit(1)
# if we want to build a filesystem, we need the tools.
if "buildfs" in targets:
self.packages["tool-mklittlefs-rp2040-earlephilhower"]["optional"] = False
# configure J-LINK tool # configure J-LINK tool
jlink_conds = [ jlink_conds = [
"jlink" in variables.get(option, "") "jlink" in variables.get(option, "")
@ -39,16 +66,16 @@ class RaspberrypiPlatform(PlatformBase):
if not any(jlink_conds) and jlink_pkgname in self.packages: if not any(jlink_conds) and jlink_pkgname in self.packages:
del self.packages[jlink_pkgname] del self.packages[jlink_pkgname]
return PlatformBase.configure_default_packages(self, variables, targets) return super().configure_default_packages(variables, targets)
def get_boards(self, id_=None): def get_boards(self, id_=None):
result = PlatformBase.get_boards(self, id_) result = super().get_boards(id_)
if not result: if not result:
return result return result
if id_: if id_:
return self._add_default_debug_tools(result) return self._add_default_debug_tools(result)
else: else:
for key, value in result.items(): for key in result:
result[key] = self._add_default_debug_tools(result[key]) result[key] = self._add_default_debug_tools(result[key])
return result return result
@ -59,11 +86,15 @@ class RaspberrypiPlatform(PlatformBase):
if "tools" not in debug: if "tools" not in debug:
debug["tools"] = {} debug["tools"] = {}
for link in ("cmsis-dap", "jlink", "raspberrypi-swd"): for link in ("blackmagic", "cmsis-dap", "jlink", "raspberrypi-swd", "picoprobe"):
if link not in upload_protocols or link in debug["tools"]: if link not in upload_protocols or link in debug["tools"]:
continue continue
if link == "blackmagic":
if link == "jlink": debug["tools"]["blackmagic"] = {
"hwids": [["0x1d50", "0x6018"]],
"require_debug_port": True
}
elif link == "jlink":
assert debug.get("jlink_device"), ( assert debug.get("jlink_device"), (
"Missed J-Link Device ID for %s" % board.id) "Missed J-Link Device ID for %s" % board.id)
debug["tools"][link] = { debug["tools"][link] = {
@ -84,11 +115,12 @@ class RaspberrypiPlatform(PlatformBase):
} }
else: else:
openocd_target = debug.get("openocd_target") openocd_target = debug.get("openocd_target")
assert openocd_target, ("Missing target configuration for %s" % board.id) assert openocd_target, ("Missing target configuration for %s" %
board.id)
debug["tools"][link] = { debug["tools"][link] = {
"server": { "server": {
"executable": "bin/openocd", "executable": "bin/openocd",
"package": "tool-openocd-raspberrypi", "package": "tool-openocd-rp2040-earlephilhower",
"arguments": [ "arguments": [
"-s", "$PACKAGE_DIR/share/openocd/scripts", "-s", "$PACKAGE_DIR/share/openocd/scripts",
"-f", "interface/%s.cfg" % link, "-f", "interface/%s.cfg" % link,
@ -100,19 +132,15 @@ class RaspberrypiPlatform(PlatformBase):
board.manifest["debug"] = debug board.manifest["debug"] = debug
return board return board
def configure_debug_options(self, initial_debug_options, ide_data): def configure_debug_session(self, debug_config):
debug_options = copy.deepcopy(initial_debug_options) adapter_speed = debug_config.speed or "1000"
adapter_speed = initial_debug_options.get("speed", "5000") server_options = debug_config.server or {}
if adapter_speed: server_arguments = server_options.get("arguments", [])
server_options = debug_options.get("server") or {} if "interface/cmsis-dap.cfg" in server_arguments or "interface/picoprobe.cfg" in server_arguments:
server_executable = server_options.get("executable", "").lower() server_arguments.extend(
if "target/cmsis-dap.cfg" in server_options.get("arguments", []): ["-c", "adapter speed %s" % adapter_speed]
debug_options["server"]["arguments"].extend( )
["-c", "adapter_khz %s" % adapter_speed] elif "jlink" in server_options.get("executable", "").lower():
) server_arguments.extend(
elif "jlink" in server_executable: ["-speed", adapter_speed]
debug_options["server"]["arguments"].extend( )
["-speed", adapter_speed]
)
return debug_options