Compare commits

..
26 Commits
Author SHA1 Message Date
Earle F. Philhower, III f49d058477 Update version 2024-09-24 06:59:23 -07:00
Earle F. Philhower, III 777eacdfc3 Wire probe clock stretch up to 500us (#2493)
As reported by @Rasmusfk in #2455, allow for a longer
clock stretch period during probes.
2024-09-24 06:58:41 -07:00
Sylwester 39ad2aeced Add Datanoise PicoADK v2 (RP2350). (#2413) 2024-09-24 06:46:05 -07:00
Earle F. Philhower, III a9fd579ce9 Add new Pico SDK AON_Timer module (#2489)
Fixes #2488
2024-09-22 15:16:28 -07:00
Earle F. Philhower, III a6ab6e1f95 Fix FreeRTOS Flash Freeze, Fastly (#2486)
Fixes #2485
2024-09-20 15:04:56 -07:00
Earle F. Philhower, III b2ec6ecb09 GCC to 12.4, Newlib to 4.3.0, faster RP2350 libs (#2480)
Newlib built using `-Os` causes things like `memcpy` to be very slow on the
RP2350 because it uses byte-wise operations.  On the RP2040 this doesn't
matter because there is a ROM routine we use instead of the library, but on
the Pico 2 it's almost 10x slower than the optimal method.

Update GCC to 12.4
Update Newlib to 4.4.0
Move to -O2 library compilation

New toolchain looks to add ~10K to RP2350 flash usage (less on the RP2040).
2024-09-19 17:03:23 -07:00
Earle F. Philhower, III f18fa88565 Update DMAMemcpy.ino (#2481)
Use 64-bit cycle counts to avoid occasional overflows.
2024-09-19 09:25:29 -07:00
Tom MagnierandTom Magnier 07b7d9748b I2C lib : implement "bus recovery" feature on timeout reset (#2479)
* I2C lib : implement "bus recovery" feature on timeout reset
---------
Co-authored-by: Tom Magnier <tom@tmagnier.fr>
2024-09-19 08:58:47 -07:00
Earle F. Philhower, III 66c1f78f7d Minimize skipped ESPHost CI tests (#2477) 2024-09-18 08:28:05 -07:00
Pontus OldbergandPontus Oldberg f6940cc04e Adds support for ESP Hosted to WiFi/BLE boards and adds a menu item for ESP WiFi selection (#2468)
* Adds a menu item for selecting type of ESP wifi type.

* Updated pin definitions to work with ESP hosted.

* Fixed residual debug modification.

* Added ESPHost support library.

* Removed local cloning of ESPHost and added to excluded from CI

* Updated boards.txt

---------

Co-authored-by: Pontus Oldberg <pontus.oldberg@non.se.com>
2024-09-18 07:16:23 -07:00
Earle F. Philhower, III 5830cd8e7d Clean up libpico Cmakefile, 1 entry per line (#2474)
Split the 1300+ char define-setting line into a multi-line value.
Makes it more maintainable and easier to see when changes needed.
No settings should have been modified.
2024-09-17 18:26:16 -07:00
Earle F. Philhower, III 2063a2d23d Enable OTA support for RP2350 (#2472)
The RP2350 has a different blob header requirement to identify a working
image.  Ensure that header is present in the OTA loader.

Update the PicoOTA examples for the 2350
2024-09-17 15:05:42 -07:00
Earle F. Philhower, III 4504d72972 Don't realloc(nullptr) from PSRAM by default (#2473)
Several Arduino APIs realloc(NULL) which is legal and equivalent to
"malloc()", but the PSRAM logic was placing those malloc calls in PSRAM
and not RAM because "0" < RAM_START.

Ensure the realloc address is non-null and before RAM_START before
using PSRAM.
2024-09-17 14:46:41 -07:00
Yveaux 5db8063756 Also remove CFG_TUSB_DEBUG from platformio-build.py for rp2350 (#2471) 2024-09-17 11:52:30 -07:00
Yveaux 5fbda35282 Remove CFG_TUSB_DEBUG for rp2350 (#2469) 2024-09-17 11:21:16 -07:00
163b209d6c Add Adafruit Feather RP2350 with HSTX (#2459)
* Add xosc delay for RP2350

* init feather rp2350 addition

* Update Feather RP2350 JSON

---------

Co-authored-by: Scott Shawcroft <scott@tannewt.org>
Co-authored-by: ladyada <support@adafruit.com>
2024-09-17 09:45:45 -07:00
Earle F. Philhower, III ccdc76c279 Update freertos.rst - FreeRTOS RP2350 support added 2024-09-16 16:59:19 -07:00
Earle F. Philhower, III e88d2d0469 Update rp2350.rst - FreeRTOS support added 2024-09-16 16:57:32 -07:00
Earle F. Philhower, IIIandfietser28 a0b3876de4 Add FreeRTOS support for RP2350 (#2406)
Pull in Raspberry Pi's custom RP2350 ARM and RISC-V ports for FreeRTOS.

Basic tests run, but stress mutex test is failing in unique and interesting
ways.

* Add simplified switching test catching task swap problem

* Freertosrp2350: use FreeRTOS macros in noInterrupts/interrupts when applicable. (#2456)
* Use FreeRTOS macros in noInterrupts/interrupts when applicable.
* Fixed calling taskEXIT_CRITICAL and taskENTER_CRITICAL
---------

Co-authored-by: fietser28 <fietser28@users.noreply.github.com>
2024-09-16 16:56:22 -07:00
Earle F. Philhower, III 5f6e4aff5c Allow LWIP Ethernet HW IRQs > 32 (#2464)
Allow RP2350B boards to use GPIOs 31+ for the Ethernet HW IRQ line.
Also update SPI debug output with the new registers.
2024-09-16 12:35:46 -07:00
Earle F. Philhower, III 4d1d1d2304 Fix PICO_RP2350B define check for other peripherals (#2463)
Fixes #2461
2024-09-16 11:16:08 -07:00
Earle F. Philhower, III 1f291482cd Fix SerialUART RP2350B define checks
Fixes #2460
2024-09-16 09:27:08 -07:00
Tom MagnierandTom Magnier d26a358055 I2C lib: Handle timeout in write() (#2458)
Co-authored-by: Tom Magnier <tom@tmagnier.fr>
2024-09-16 08:08:21 -07:00
Earle F. Philhower, III aaaa99d969 Support PIO2 for SoftwareSerial/SerialPIO (#2451)
New IRQs and PIO pointers required for the 3rd PIO on the 2350.

Fixes #2447
2024-09-13 12:25:55 -07:00
SamHalvoe 12130eb767 Add "#define PICO_RP2350B 1" since this board is based on RP2350B (#2445) 2024-09-12 12:50:04 -07:00
arturo182 f5c85fa958 Solderparty_rp2350_stamp_xl: Properly mark as using RP2350B (#2446) 2024-09-12 11:52:30 -07:00
85 changed files with 11411 additions and 484 deletions
+3
View File
@@ -46,3 +46,6 @@
[submodule "cores/rp2040/tlsf"]
path = lib/tlsf
url = https://github.com/earlephilhower/tlsf.git
[submodule "libraries/ESPHost"]
path = libraries/ESPHost
url = https://github.com/Networking-for-Arduino/ESPHost.git
+3 -1
View File
@@ -40,7 +40,8 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo
* Cytron Maker Nano RP2040
* Cytron Maker Uno RP2040
* Cytron Motion 2350 Pro
* DatanoiseTV PicoADK+
* Datanoise PicoADK v1
* Datanoise PicoADK v2 (RP2350)
* Degz Suibo RP2040
* DeRuiLab FlyBoard2040 Core
* DFRobot Beetle RP2040
@@ -261,6 +262,7 @@ The installed tools include a version of OpenOCD (in the pqt-openocd directory)
* [Xoshiro-cpp](https://github.com/Reputeless/Xoshiro-cpp) is copyright (c) 2020 Ryo Suzuki and distributed under the MIT license.
* [FatFS low-level filesystem](http://elm-chan.org/fsw/ff/) code is Copyright (C) 2024, ChaN, all rights reserved.
* [TLSF memory manager for PSRAM from Espressif fork](https://github.com/espressif/tlsf) of [original](https://github.com/mattconte/tlsf) by Matthew Conte is copyright Matthew Conte and licensed under the MIT license.
* [ESPHost library](https://github.com/Networking-for-Arduino/ESPHost) is LGPL licensed by its maintainers.
-Earle F. Philhower, III
earlephilhower@yahoo.com
+837 -142
View File
File diff suppressed because it is too large Load Diff
+6 -2
View File
@@ -26,7 +26,9 @@ static bool __no_inline_not_in_flash_func(get_bootsel_button)() {
// Must disable interrupts, as interrupt handlers may be in flash, and we
// are about to temporarily disable flash access!
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
// Set chip select to Hi-Z
@@ -53,7 +55,9 @@ static bool __no_inline_not_in_flash_func(get_bootsel_button)() {
IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_BITS);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
return button_state;
}
+2 -2
View File
@@ -1,5 +1,5 @@
#pragma once
#define ARDUINO_PICO_MAJOR 4
#define ARDUINO_PICO_MINOR 0
#define ARDUINO_PICO_REVISION 2
#define ARDUINO_PICO_VERSION_STR "4.0.2"
#define ARDUINO_PICO_REVISION 3
#define ARDUINO_PICO_VERSION_STR "4.0.3"
+19 -4
View File
@@ -79,9 +79,9 @@ static int _parity(int bits, int data) {
// We need to cache generated SerialPIOs so we can add data to them from
// the shared handler
static SerialPIO *_pioSP[2][4];
static SerialPIO *_pioSP[3][4];
static void __not_in_flash_func(_fifoIRQ)() {
for (int p = 0; p < 2; p++) {
for (int p = 0; p < 3; p++) {
for (int sm = 0; sm < 4; sm++) {
SerialPIO *s = _pioSP[p][sm];
if (s) {
@@ -148,6 +148,21 @@ SerialPIO::~SerialPIO() {
delete[] _queue;
}
static int pio_irq_0(PIO p) {
switch (pio_get_index(p)) {
case 0:
return PIO0_IRQ_0;
case 1:
return PIO1_IRQ_0;
#if defined(PICO_RP2350)
case 2:
return PIO2_IRQ_0;
#endif
default:
return -1;
}
}
void SerialPIO::begin(unsigned long baud, uint16_t config) {
_overflow = false;
_baud = baud;
@@ -247,7 +262,7 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) {
case 2: pio_set_irq0_source_enabled(_rxPIO, pis_sm2_rx_fifo_not_empty, true); break;
case 3: pio_set_irq0_source_enabled(_rxPIO, pis_sm3_rx_fifo_not_empty, true); break;
}
auto irqno = pio_get_index(_rxPIO) == 0 ? PIO0_IRQ_0 : PIO1_IRQ_0;
auto irqno = pio_irq_0(_rxPIO);
irq_set_exclusive_handler(irqno, _fifoIRQ);
irq_set_enabled(irqno, true);
@@ -278,7 +293,7 @@ void SerialPIO::end() {
used = used || !!_pioSP[pioNum][i];
}
if (!used) {
auto irqno = pioNum == 0 ? PIO0_IRQ_0 : PIO1_IRQ_0;
auto irqno = pio_irq_0(_rxPIO);
irq_set_enabled(irqno, false);
}
gpio_set_inover(_rx, 0);
+4 -4
View File
@@ -32,7 +32,7 @@ extern void serialEvent1() __attribute__((weak));
extern void serialEvent2() __attribute__((weak));
bool SerialUART::setRX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({1, 13, 17, 29, 33, 45}) /* UART0 */,
__bitset({5, 9, 21, 25, 37, 41}) /* UART1 */
};
@@ -59,7 +59,7 @@ bool SerialUART::setRX(pin_size_t pin) {
}
bool SerialUART::setTX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({0, 12, 16, 28, 32, 44}) /* UART0 */,
__bitset({4, 8, 20, 24, 36, 40}) /* UART1 */
};
@@ -86,7 +86,7 @@ bool SerialUART::setTX(pin_size_t pin) {
}
bool SerialUART::setRTS(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({3, 15, 19, 31, 35, 47}) /* UART0 */,
__bitset({7, 11, 23, 27, 39, 43}) /* UART1 */
};
@@ -113,7 +113,7 @@ bool SerialUART::setRTS(pin_size_t pin) {
}
bool SerialUART::setCTS(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({2, 14, 18, 30, 34, 46}) /* UART0 */,
__bitset({6, 10, 22, 26, 38, 42}) /* UART1 */
};
+3
View File
@@ -54,5 +54,8 @@ extern "C" {
extern void __freertos_idle_other_core() __attribute__((weak));
extern void __freertos_resume_other_core() __attribute__((weak));
extern void __freertos_task_exit_critical() __attribute__((weak));
extern void __freertos_task_enter_critical() __attribute__((weak));
}
extern SemaphoreHandle_t __get_freertos_mutex_for_ptr(mutex_t *m, bool recursive = false);
+2 -2
View File
@@ -88,7 +88,7 @@ extern "C" void *__wrap_realloc(void *mem, size_t size) {
void *rc;
noInterrupts();
#ifdef RP2350_PSRAM_CS
if (mem < __ram_start) {
if (mem && (mem < __ram_start)) {
rc = __psram_realloc(mem, size);
} else {
rc = __real_realloc(mem, size);
@@ -103,7 +103,7 @@ extern "C" void *__wrap_realloc(void *mem, size_t size) {
extern "C" void __wrap_free(void *mem) {
noInterrupts();
#ifdef RP2350_PSRAM_CS
if (mem < __ram_start) {
if (mem && (mem < __ram_start)) {
__psram_free(mem);
} else {
__real_free(mem);
@@ -49,11 +49,15 @@ static uint32_t pico_flash_bank_get_alignment(void * context) {
static void pico_flash_bank_erase(void * context, int bank) {
(void)(context);
DEBUG_PRINT("erase: bank %d\n", bank);
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
flash_range_erase(PICO_FLASH_BANK_STORAGE_OFFSET + (PICO_FLASH_BANK_SIZE * bank), PICO_FLASH_BANK_SIZE);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
}
static void pico_flash_bank_read(void *context, int bank, uint32_t offset, uint8_t *buffer, uint32_t size) {
@@ -147,11 +151,15 @@ static void pico_flash_bank_write(void * context, int bank, uint32_t offset, con
offset = 0;
// Now program the entire page
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
flash_range_program(bank_start_pos + (page * FLASH_PAGE_SIZE), page_data, FLASH_PAGE_SIZE);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
}
}
+20 -11
View File
@@ -23,6 +23,8 @@
#include <hardware/gpio.h>
#include <hardware/sync.h>
#include <map>
#include "_freertos.h"
// Support nested IRQ disable/re-enable
#ifndef maxIRQs
@@ -32,22 +34,29 @@ static uint32_t _irqStackTop[2] = { 0, 0 };
static uint32_t _irqStack[2][maxIRQs];
extern "C" void interrupts() {
auto core = get_core_num();
if (!_irqStackTop[core]) {
// ERROR
return;
if (__freeRTOSinitted) {
__freertos_task_exit_critical();
} else {
auto core = get_core_num();
if (!_irqStackTop[core]) {
// ERROR
return;
}
restore_interrupts(_irqStack[core][--_irqStackTop[core]]);
}
restore_interrupts(_irqStack[core][--_irqStackTop[core]]);
}
extern "C" void noInterrupts() {
auto core = get_core_num();
if (_irqStackTop[core] == maxIRQs) {
// ERROR
panic("IRQ stack overflow");
if (__freeRTOSinitted) {
__freertos_task_enter_critical();
} else {
auto core = get_core_num();
if (_irqStackTop[core] == maxIRQs) {
// ERROR
panic("IRQ stack overflow");
}
_irqStack[core][_irqStackTop[core]++] = save_and_disable_interrupts();
}
_irqStack[core][_irqStackTop[core]++] = save_and_disable_interrupts();
}
// Only 1 GPIO IRQ callback for all pins, so we need to look at the pin it's for and
+2 -2
View File
@@ -54,9 +54,9 @@ author = u'Earle F. Philhower, III'
# built documents.
#
# The short X.Y version.
version = u'4.0.2'
version = u'4.0.3'
# The full version, including alpha/beta/rc tags.
release = u'4.0.2'
release = u'4.0.3'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
-2
View File
@@ -1,8 +1,6 @@
FreeRTOS SMP
============
**NOTE:** FreeRTOS is not yet supported on the RP2350. PRs gladly accepted!
The SMP (multicore) port of FreeRTOS is included with the core. This allows complex
task operations and real preemptive multithreading in your sketches. While the
``setup1`` and ``loop1`` way of multitasking is simplest for most folks, FreeRTOS
-2
View File
@@ -1,8 +1,6 @@
OTA Updates
===========
**NOTE:** OTA is not yet supported on the RP2350. PRs gladly accepted!
Introduction
------------
-1
View File
@@ -7,7 +7,6 @@ is supported by the core with some minor caveats:
* PSRAM is supported via a new ``pmalloc`` call and ``PSRAM`` variable decorator.
* Both RP2350A and RP2350B (48 GPIOs) are supported.
* Only ARM mode is available. For RISC-V (Hazard3), please use the raw SDK.
* FreeRTOS and OTA are not yet supported.
P2350-E9 Errata ("Increased leakage current on Bank 0 GPIO when pad input is enabled")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+1
View File
@@ -42,6 +42,7 @@
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_vreg/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_watchdog/include
-iwithprefixbefore/pico-sdk/src/rp2_common/hardware_xosc/include
-iwithprefixbefore/pico-sdk/src/rp2_common/pico_aon_timer/include
-iwithprefixbefore/pico-sdk/src/rp2_common/pico_async_context/include
-iwithprefixbefore/pico-sdk/src/rp2_common/pico_bootrom/include
-iwithprefixbefore/pico-sdk/src/rp2_common/pico_double/include
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+19 -2
View File
@@ -21,6 +21,9 @@
__stack (== StackTop)
*/
MEMORY
{
FLASH(rx) : ORIGIN = 0x10000000, LENGTH = __FLASH_LENGTH__
@@ -42,6 +45,20 @@ SECTIONS
__flash_binary_start = .;
} > FLASH
.ota : {
/* Start image with OTA */
KEEP (*(.OTA))
*ota.o
} > FLASH
.partition : {
. = __flash_binary_start + 0x2ff0;
LONG(__FS_START__)
LONG(__FS_END__)
LONG(__EEPROM_START__)
LONG(__FLASH_LENGTH__)
} > FLASH
/* The bootrom will enter the image at the point indicated in your
IMAGE_DEF, which is usually the reset handler of your vector table.
@@ -53,8 +70,8 @@ SECTIONS
*/
.text : {
__logical_binary_start = .;
KEEP (*(.vectors))
__logical_binary_start = .;
KEEP (*(.binary_info_header))
__binary_info_header_end = .;
KEEP (*(.embedded_block))
@@ -276,7 +293,7 @@ SECTIONS
.flash_end : {
KEEP(*(.embedded_end_block*))
PROVIDE(__flash_binary_end = .);
} > FLASH =0xaa
} > FLASH = 0xaa
.psram (NOLOAD) : {
__psram_start__ = .;
BIN
View File
Binary file not shown.
-1
View File
@@ -1,4 +1,3 @@
-DCFG_TUSB_DEBUG=0
-DCFG_TUSB_MCU=OPT_MCU_RP2040
-DCFG_TUSB_OS=OPT_OS_PICO
-DLIB_BOOT_STAGE2_HEADERS=1
+6 -2
View File
@@ -118,12 +118,16 @@ bool EEPROMClass::commit() {
return false;
}
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
flash_range_erase((intptr_t)_sector - (intptr_t)XIP_BASE, 4096);
flash_range_program((intptr_t)_sector - (intptr_t)XIP_BASE, _data, _size);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
_dirty = false;
return true;
+1
Submodule libraries/ESPHost added at a3184ba0f9
-4
View File
@@ -1,5 +1 @@
#ifdef PICO_RP2350
#error Sorry, FreeRTOS is not yet supported on the RP2350 in this core.
#else
#include "../lib/FreeRTOS-Kernel/include/FreeRTOS.h"
#endif
+9
View File
@@ -200,6 +200,10 @@ extern unsigned long ulMainGetRunTimeCounterValue(void);
#endif
#endif
#define configENABLE_MPU 0
#define configENABLE_TRUSTZONE 0
#define configRUN_FREERTOS_SECURE_ONLY 1
#define configENABLE_FPU 1
/* The lowest interrupt priority that can be used in a call to a "set priority"
function. */
#ifndef configLIBRARY_LOWEST_INTERRUPT_PRIORITY
@@ -219,11 +223,16 @@ extern unsigned long ulMainGetRunTimeCounterValue(void);
#ifndef configKERNEL_INTERRUPT_PRIORITY
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#endif
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#ifndef configMAX_SYSCALL_INTERRUPT_PRIORITY
#ifdef PICO_RP2350
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 16
#else
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#endif
#endif
#ifndef configASSERT
#ifdef __cplusplus
@@ -0,0 +1 @@
#include "../lib/FreeRTOS-Kernel/include/mpu_syscall_numbers.h"
@@ -0,0 +1,3 @@
#ifdef PICO_RP2350
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/mpu_wrappers_v2_asm.c"
#endif
+4
View File
@@ -1 +1,5 @@
#ifdef PICO_RP2040
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/port.c"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/port.c"
#endif
+3
View File
@@ -0,0 +1,3 @@
#ifdef PICO_RP2350
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portasm.c"
#endif
+4
View File
@@ -1 +1,5 @@
#ifdef PICO_RP2350
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure/portmacro.h"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/portmacro.h"
#endif
+4
View File
@@ -1 +1,5 @@
#ifdef PICO_RP2350
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2350_ARM_NTZ/non_secure//rp2040_config.h"
#else
#include "../lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/include/rp2040_config.h"
#endif
+8
View File
@@ -91,6 +91,14 @@ extern "C" {
bool __freertos_check_if_in_isr() {
return portCHECK_IF_IN_ISR();
}
void __freertos_task_exit_critical() {
taskEXIT_CRITICAL();
}
void __freertos_task_enter_critical() {
taskENTER_CRITICAL();
}
}
@@ -0,0 +1,25 @@
#include <Arduino.h>
#include <FreeRTOS.h>
#include "LittleFS.h"
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
LittleFS.format();
}
void setup1() {
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
}
int x = 0;
void loop1() {
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
Serial.printf("%d\n", x++);
}
@@ -0,0 +1,57 @@
// Released to the public domain
#include <FreeRTOS.h>
#include <task.h>
#include <map>
#define STACK_SIZE 512
#define CORE_0 (1 << 0)
#define CORE_1 (1 << 1)
std::map<eTaskState, const char *> eTaskStateName { {eReady, "Ready"}, { eRunning, "Running" }, {eBlocked, "Blocked"}, {eSuspended, "Suspended"}, {eDeleted, "Deleted"} };
void ps() {
int tasks = uxTaskGetNumberOfTasks();
TaskStatus_t *pxTaskStatusArray = new TaskStatus_t[tasks];
unsigned long runtime;
tasks = uxTaskGetSystemState( pxTaskStatusArray, tasks, &runtime );
Serial.printf("# Tasks: %d\n", tasks);
Serial.printf("%-3s %-16s %-10s %s %s\n", "ID", "NAME", "STATE", "PRIO", "CYCLES");
for (int i = 0; i < tasks; i++) {
Serial.printf("%2d: %-16s %-10s %4d %lu\n", i, pxTaskStatusArray[i].pcTaskName, eTaskStateName[pxTaskStatusArray[i].eCurrentState], (int)pxTaskStatusArray[i].uxCurrentPriority, pxTaskStatusArray[i].ulRunTimeCounter);
}
delete[] pxTaskStatusArray;
}
static TaskHandle_t l[16];
void loop() {
ps();
delay(1000);
}
#define LOOP(z) \
void loop##z(void *params) {\
(void) params;\
while (true) {\
srand(z);\
int sum = 0;\
for (int i = 0; i < 500000; i++) sum+= rand();\
Serial.printf("L%d: %08x\n", z, sum);\
delay(1000 + z * 10);\
}\
}
LOOP(0);
LOOP(1);
LOOP(2);
LOOP(3);
void setup() {
xTaskCreate(loop0, "loop0", STACK_SIZE, NULL, 1, &l[0]);
vTaskCoreAffinitySet(l[0], CORE_0);
// xTaskCreate(loop1, "loop1", STACK_SIZE, NULL, 1, &l[1]);
// vTaskCoreAffinitySet(l[1], CORE_0);
// xTaskCreate(loop2, "loop2", STACK_SIZE, NULL, 1, &l[2]);
// vTaskCoreAffinitySet(l[2], CORE_0);
// xTaskCreate(loop3, "loop3", STACK_SIZE, NULL, 1, &l[3]);
// vTaskCoreAffinitySet(l[3], CORE_1);
}
+12 -4
View File
@@ -182,12 +182,16 @@ int LittleFSImpl::lfs_flash_prog(const struct lfs_config *c,
lfs_block_t block, lfs_off_t off, const void *buffer, lfs_size_t size) {
LittleFSImpl *me = reinterpret_cast<LittleFSImpl*>(c->context);
uint8_t *addr = me->_start + (block * me->_blockSize) + off;
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
// Serial.printf("WRITE: %p, $d\n", (intptr_t)addr - (intptr_t)XIP_BASE, size);
flash_range_program((intptr_t)addr - (intptr_t)XIP_BASE, (const uint8_t *)buffer, size);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
return 0;
}
@@ -195,11 +199,15 @@ int LittleFSImpl::lfs_flash_erase(const struct lfs_config *c, lfs_block_t block)
LittleFSImpl *me = reinterpret_cast<LittleFSImpl*>(c->context);
uint8_t *addr = me->_start + (block * me->_blockSize);
// Serial.printf("ERASE: %p, %d\n", (intptr_t)addr - (intptr_t)XIP_BASE, me->_blockSize);
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
flash_range_erase((intptr_t)addr - (intptr_t)XIP_BASE, me->_blockSize);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
return 0;
}
@@ -12,7 +12,8 @@
#include <PicoOTA.h>
#include <LittleFS.h>
#include "blink_100_1000.h"
#include "blink_100_1000_rp2040.h"
#include "blink_500_500_rp2350.h"
void setup() {
Serial.begin(115200);
@@ -1,3 +1,4 @@
#ifdef PICO_RP2040
const unsigned char blink_gz[] = {
0x1f, 0x8b, 0x08, 0x08, 0x86, 0x7e, 0xf3, 0x62, 0x02, 0x03, 0x73, 0x6b,
0x65, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x75, 0x67, 0x31, 0x30, 0x61, 0x2e,
@@ -3896,3 +3897,4 @@ const unsigned char blink_gz[] = {
0x03, 0xeb, 0x79, 0x7c, 0xf6, 0x3f, 0x01, 0xa8, 0x7b, 0x69, 0xf7, 0x10,
0x11, 0x01, 0x00
};
#endif
File diff suppressed because it is too large Load Diff
@@ -9,7 +9,8 @@
#include <PicoOTA.h>
#include <LittleFS.h>
#include "blink_100_1000.h"
#include "blink_100_1000_rp2040.h"
#include "blink_500_500_rp2350.h"
void setup() {
Serial.begin(115200);
@@ -1,3 +1,4 @@
#ifdef PICO_RP2040
const unsigned char blink[] = {
0x00, 0xb5, 0x32, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21,
0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2e, 0x4b,
@@ -5826,3 +5827,4 @@ const unsigned char blink[] = {
0xc1, 0x45, 0x00, 0x10, 0x9d, 0x48, 0x00, 0x10, 0xad, 0x4b, 0x00, 0x10,
0xed, 0x63, 0x00, 0x10
};
#endif
File diff suppressed because it is too large Load Diff
+13 -7
View File
@@ -179,6 +179,12 @@ void SPIClassRP2040::transfer(const void *txbuf, void *rxbuf, size_t count) {
DEBUGSPI("SPI::transfer completed\n");
}
#ifdef PICO_RP2350B
#define GPIOIRQREGS 6
#else
#define GPIOIRQREGS 4
#endif
void SPIClassRP2040::beginTransaction(SPISettings settings) {
noInterrupts(); // Avoid possible race conditions if IRQ comes in while main app is in middle of this
DEBUGSPI("SPI::beginTransaction(clk=%lu, bo=%s)\n", settings.getClockFreq(), (settings.getBitOrder() == MSBFIRST) ? "MSB" : "LSB");
@@ -201,7 +207,7 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) {
}
// Disable any IRQs that are being used for SPI
io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl;
DEBUGSPI("SPI: IRQ masks before = %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3]);
DEBUGSPI("SPI: IRQ masks before = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0);
for (auto entry : _usingIRQs) {
int gpio = entry.first;
@@ -212,7 +218,7 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) {
DEBUGSPI("SPI: GPIO %d = %lu\n", gpio, val);
(*en_reg) ^= val << (4 * (gpio % 8));
}
DEBUGSPI("SPI: IRQ masks after = %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3]);
DEBUGSPI("SPI: IRQ masks after = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0);
interrupts();
}
@@ -227,7 +233,7 @@ void SPIClassRP2040::endTransaction(void) {
}
io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl;
(void) irq_ctrl_base;
DEBUGSPI("SPI: IRQ masks = %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3]);
DEBUGSPI("SPI: IRQ masks = %08x %08x %08x %08x %08x %08x\n", (unsigned)irq_ctrl_base->inte[0], (unsigned)irq_ctrl_base->inte[1], (unsigned)irq_ctrl_base->inte[2], (unsigned)irq_ctrl_base->inte[3], (GPIOIRQREGS > 4) ? (unsigned)irq_ctrl_base->inte[4] : 0, (GPIOIRQREGS > 5) ? (unsigned)irq_ctrl_base->inte[5] : 0);
interrupts();
}
@@ -329,7 +335,7 @@ void SPIClassRP2040::abortAsync() {
bool SPIClassRP2040::setRX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */,
__bitset({8, 12, 24, 28, 40, 44}) /* SPI1 */
};
@@ -356,7 +362,7 @@ bool SPIClassRP2040::setRX(pin_size_t pin) {
}
bool SPIClassRP2040::setCS(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({1, 5, 17, 21, 33, 37}) /* SPI0 */,
__bitset({9, 13, 25, 29, 41, 45}) /* SPI1 */
};
@@ -383,7 +389,7 @@ bool SPIClassRP2040::setCS(pin_size_t pin) {
}
bool SPIClassRP2040::setSCK(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({2, 6, 18, 22, 34, 38}) /* SPI0 */,
__bitset({10, 14, 26, 30, 42, 46}) /* SPI1 */
};
@@ -410,7 +416,7 @@ bool SPIClassRP2040::setSCK(pin_size_t pin) {
}
bool SPIClassRP2040::setTX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({3, 7, 19, 23, 35, 39}) /* SPI0 */,
__bitset({11, 15, 27, 31, 43, 47}) /* SPI1 */
};
+4 -4
View File
@@ -79,7 +79,7 @@ inline spi_cpha_t SPISlaveClass::cpha(SPISettings _spis) {
}
bool SPISlaveClass::setRX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */,
__bitset({8, 12, 24, 28, 40, 44}) /* SPI1 */
};
@@ -106,7 +106,7 @@ bool SPISlaveClass::setRX(pin_size_t pin) {
}
bool SPISlaveClass::setCS(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({1, 5, 17, 21, 33, 37}) /* SPI0 */,
__bitset({9, 13, 25, 29, 41, 45}) /* SPI1 */
};
@@ -133,7 +133,7 @@ bool SPISlaveClass::setCS(pin_size_t pin) {
}
bool SPISlaveClass::setSCK(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({2, 6, 18, 22, 34, 38}) /* SPI0 */,
__bitset({10, 14, 26, 30, 42, 46}) /* SPI1 */
};
@@ -160,7 +160,7 @@ bool SPISlaveClass::setSCK(pin_size_t pin) {
}
bool SPISlaveClass::setTX(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({3, 7, 19, 23, 35, 39}) /* SPI0 */,
__bitset({11, 15, 27, 31, 43, 47}) /* SPI1 */
};
+6 -2
View File
@@ -291,12 +291,16 @@ bool UpdaterClass::_writeBuffer() {
return false;
}
} else {
noInterrupts();
if (!__isFreeRTOS) {
noInterrupts();
}
rp2040.idleOtherCore();
flash_range_erase((intptr_t)_currentAddress - (intptr_t)XIP_BASE, 4096);
flash_range_program((intptr_t)_currentAddress - (intptr_t)XIP_BASE, _buffer, 4096);
rp2040.resumeOtherCore();
interrupts();
if (!__isFreeRTOS) {
interrupts();
}
}
if (!_verify) {
_md5.add(_buffer, _bufferLen);
+41 -7
View File
@@ -49,7 +49,7 @@ TwoWire::TwoWire(i2c_inst_t *i2c, pin_size_t sda, pin_size_t scl) {
}
bool TwoWire::setSDA(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44}) /* I2C0 */,
__bitset({2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46}) /* I2C1 */
};
@@ -76,7 +76,7 @@ bool TwoWire::setSDA(pin_size_t pin) {
}
bool TwoWire::setSCL(pin_size_t pin) {
#ifdef RP2350B
#ifdef PICO_RP2350B
constexpr uint64_t valid[2] = { __bitset({1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45}) /* I2C0 */,
__bitset({3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47}) /* I2C1 */
};
@@ -291,7 +291,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity) {
}
static bool _clockStretch(pin_size_t pin) {
auto end = time_us_64() + 100;
auto end = time_us_64() + 500;
while ((time_us_64() < end) && (!digitalRead(pin))) { /* noop */ }
return digitalRead(pin);
}
@@ -366,6 +366,33 @@ void TwoWire::_handleTimeout(bool reset) {
} else {
int prev_clkHz = _clkHz;
end();
// Attempt bus recovery if SDA is held LOW by another device
// See RP2040 datasheet "Bus clear feature" (not implemented in HW)
int delay = 5; //5us LOW/HIGH -> 10us period -> 100kHz freq
pinMode(_sda, INPUT_PULLUP);
pinMode(_scl, INPUT_PULLUP);
gpio_set_function(_scl, GPIO_FUNC_SIO);
gpio_set_function(_sda, GPIO_FUNC_SIO);
if (digitalRead(_sda) == LOW) {
int sclPulseCount = 0;
while (sclPulseCount < 9 && digitalRead(_sda) == LOW) {
sclPulseCount++;
digitalWrite(_scl, LOW);
sleep_us(delay);
digitalWrite(_scl, HIGH);
sleep_us(delay);
}
if (digitalRead(_sda) == HIGH) {
// Bus recovered : send a STOP
digitalWrite(_sda, LOW);
sleep_us(delay);
digitalWrite(_sda, HIGH);
}
}
setClock(prev_clkHz);
begin();
}
@@ -409,10 +436,17 @@ size_t TwoWire::write(uint8_t ucData) {
}
if (_slave) {
// Wait for a spot in the TX FIFO
while (0 == (_i2c->hw->status & (1 << 1))) { /* noop wait */ }
_i2c->hw->data_cmd = ucData;
return 1;
// Wait for a spot in the TX FIFO and return in case of timeout
auto end = make_timeout_time_ms(_timeout);
while ((i2c_get_write_available(_i2c) == 0) && !time_reached(end)) { /* noop wait */ }
if (i2c_get_write_available(_i2c) > 0) {
_i2c->hw->data_cmd = ucData;
return 1;
} else {
_handleTimeout(_reset_with_timeout);
return 0;
}
} else {
if (!_txBegun || (_buffLen == sizeof(_buff))) {
return 0;
+14 -6
View File
@@ -75,14 +75,22 @@ void __removeEthernetPacketHandler(int id) {
}
#define GPIOSTACKSIZE 8
static uint32_t gpioMaskStack[GPIOSTACKSIZE][4];
static uint32_t gpioMask[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff};
#ifdef PICO_RP2350B
#define GPIOIRQREGS 6
#define GPIOIRQREGSINIT 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
#else
#define GPIOIRQREGS 4
#define GPIOIRQREGSINIT 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
#endif
static uint32_t gpioMaskStack[GPIOSTACKSIZE][GPIOIRQREGS];
static uint32_t gpioMask[GPIOIRQREGS] = {GPIOIRQREGSINIT};
void ethernet_arch_lwip_gpio_mask() {
noInterrupts();
memmove(gpioMaskStack[1], gpioMaskStack[0], 4 * sizeof(uint32_t) * (GPIOSTACKSIZE - 1)); // Push down the stack
memmove(gpioMaskStack[1], gpioMaskStack[0], GPIOIRQREGS * sizeof(uint32_t) * (GPIOSTACKSIZE - 1)); // Push down the stack
io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &io_bank0_hw->proc1_irq_ctrl : &io_bank0_hw->proc0_irq_ctrl;
for (int i = 0; i < 4; i++) {
for (int i = 0; i < GPIOIRQREGS; i++) {
gpioMaskStack[0][i] = irq_ctrl_base->inte[i];
irq_ctrl_base->inte[i] = irq_ctrl_base->inte[i] & gpioMask[i];
}
@@ -92,10 +100,10 @@ void ethernet_arch_lwip_gpio_mask() {
void ethernet_arch_lwip_gpio_unmask() {
noInterrupts();
io_bank0_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? &io_bank0_hw->proc1_irq_ctrl : &io_bank0_hw->proc0_irq_ctrl;
for (int i = 0; i < 4; i++) {
for (int i = 0; i < GPIOIRQREGS; i++) {
irq_ctrl_base->inte[i] = gpioMaskStack[0][i];
}
memmove(gpioMaskStack[0], gpioMaskStack[1], 4 * sizeof(uint32_t) * (GPIOSTACKSIZE - 1)); // Pop up the stack
memmove(gpioMaskStack[0], gpioMaskStack[1], GPIOIRQREGS * sizeof(uint32_t) * (GPIOSTACKSIZE - 1)); // Pop up the stack
interrupts();
}
@@ -28,22 +28,22 @@ void verify(const char *name, uint32_t *src) {
void loop() {
uint64_t start, stop;
start = rp2040.getCycleCount();
start = rp2040.getCycleCount64();
for (int i = 0; i < 1000; i++) {
memcpy(dest, src, 4 * 1024);
memcpy(src, dest, 4 * 1024);
}
stop = rp2040.getCycleCount();
stop = rp2040.getCycleCount64();
verify("CPU", src);
verify("CPU", dest);
Serial.printf("CPU: %lld clock cycles for 4K\n", (stop - start) / 1000);
start = rp2040.getCycleCount();
start = rp2040.getCycleCount64();
for (int i = 0; i < 1000; i++) {
rp2040.memcpyDMA(dest, src, 4 * 1024);
rp2040.memcpyDMA(src, dest, 4 * 1024);
}
stop = rp2040.getCycleCount();
stop = rp2040.getCycleCount64();
verify("DMA", src);
verify("DMA", dest);
Serial.printf("DMA: %lld clock cycles for 4K\n\n\n", (stop - start) / 1000);
+6 -2
View File
@@ -7,10 +7,14 @@ if (${cpu} MATCHES "rp2040")
set(PICO_BOARD pico)
set(PICO_PLATFORM rp2040)
set(PICO_CYW43_SUPPORTED 0)
set(OBJARCH armv6-m)
set(WRAP -Wl,--wrap=clocks_init)
elseif(${cpu} MATCHES "rp2350")
set(PICO_BOARD pico2)
set(PICO_PLATFORM rp2350)
set(PICO_CYW43_SUPPORTED 0)
set(OBJARCH armv8-m)
set(WRAP )
else()
message(FATAL_ERROR "Unknown CPU, '${cpu}'")
endif()
@@ -71,7 +75,7 @@ target_compile_options(ota PUBLIC
)
target_link_options(ota PUBLIC
-Wl,--wrap=clocks_init
${WRAP}
-Wl,--wrap=exit
-Wl,--wrap=atexit
-Wl,--wrap=panic_unsupported
@@ -97,7 +101,7 @@ target_link_libraries(ota
)
add_custom_command(TARGET ota POST_BUILD
COMMAND ../../system/arm-none-eabi/bin/arm-none-eabi-ld -r -A armv6-m -b binary -o ota.o ota.bin
COMMAND ../../system/arm-none-eabi/bin/arm-none-eabi-ld -r -A ${OBJARCH} -b binary -o ota.o ota.bin
COMMAND ../../system/arm-none-eabi/bin/arm-none-eabi-objcopy --rename-section .data=.OTA ota.o ../../lib/${cpu}/ota.o
COMMAND cp ../ota_command.h ../../include/${cpu}/pico_base/pico/.
)
+104 -48
View File
@@ -23,19 +23,17 @@
MEMORY
{
FLASH(rx) : ORIGIN = 0x10000100, LENGTH = 16384k
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 212k
/* We split RAM into main (where the flash->ram code will be copied) and GLOBALS which has all large arrays */
/* By placing those arrays at the end of RAM we can avoid overwriting uninitialize_ram from the main app as */
/* long as those vars are stored after 12K by using an alignment value in the main app linker file. */
INCLUDE "pico_flash_region.ld"
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 212k
GLOBALS(rwx) : ORIGIN = 0x20035000, LENGTH = 44k
SCRATCH_X(rwx) : ORIGIN = 0x20040000, LENGTH = 4k
SCRATCH_Y(rwx) : ORIGIN = 0x20041000, LENGTH = 4k
SCRATCH_X(rwx) : ORIGIN = 0x20080000, LENGTH = 4k
SCRATCH_Y(rwx) : ORIGIN = 0x20081000, LENGTH = 4k
}
ENTRY(_entry_point)
SECTIONS {
SECTIONS
{
/* Second stage bootloader is prepended to the image. It must be 256 bytes big
and checksummed. It is usually built by the boot_stage2 target
in the Raspberry Pi Pico SDK
@@ -45,24 +43,19 @@ SECTIONS {
.globals (NOLOAD) : {
} > GLOBALS
.flash_begin : {
__flash_binary_start = .;
} > FLASH
/*
.boot2 : {
__boot2_start__ = .;
KEEP (*(.boot2))
__boot2_end__ = .;
} > FLASH
ASSERT(__boot2_end__ - __boot2_start__ == 256,
"ERROR: Pico second stage bootloader must be 256 bytes in size")
*/
/* The second stage will always enter the image at the start of .text.
/* The bootrom will enter the image at the point indicated in your
IMAGE_DEF, which is usually the reset handler of your vector table.
The debugger will use the ELF entry point, which is the _entry_point
symbol if present, otherwise defaults to start of .text.
This can be used to transfer control back to the bootrom on debugger
launches only, to perform proper flash setup.
symbol, and in our case is *different from the bootrom's entry point.*
This is used to go back through the bootrom on debugger launches only,
to perform the same initial flash setup that would be performed on a
cold boot.
*/
.flashtext : {
@@ -70,8 +63,11 @@ SECTIONS {
KEEP (*(.vectors))
KEEP (*(.binary_info_header))
__binary_info_header_end = .;
KEEP (*(.embedded_block))
__embedded_block_end = .;
KEEP (*(.reset))
}
. = ALIGN(4);
} > FLASH
.rodata : {
/* segments not marked as .flashdata are instead pulled into .data (in RAM) to avoid accidental flash accesses */
@@ -79,23 +75,39 @@ SECTIONS {
. = ALIGN(4);
} > FLASH
.ARM.extab : {
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
__exidx_start = .;
.ARM.exidx : {
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;
/* Machine inspectable binary information */
. = ALIGN(4);
__binary_info_start = .;
.binary_info :
{
KEEP(*(.binary_info.keep.*))
*(.binary_info.*)
} > FLASH
__binary_info_end = .;
. = ALIGN(4);
/* Vector table goes first in RAM, to avoid large alignment hole */
.ram_vector_table (COPY): {
.ram_vector_table (NOLOAD): {
*(.ram_vector_table)
} > RAM
.uninitialized_data (NOLOAD): {
. = ALIGN(4);
*(.uninitialized_data*)
} > RAM
.text : {
__ram_text_start__ = .;
*(.init)
@@ -119,7 +131,7 @@ SECTIONS {
__ram_text_end__ = .;
} > RAM AT> FLASH
__ram_text_source__ = LOADADDR(.text);
. = ALIGN(4);
.data : {
__data_start__ = .;
@@ -176,6 +188,50 @@ SECTIONS {
*(.uninitialized_data*)
} > RAM
.tdata : {
. = ALIGN(4);
*(.tdata .tdata.* .gnu.linkonce.td.*)
/* All data end */
__tdata_end = .;
} > RAM AT> FLASH
PROVIDE(__data_end__ = .);
/* __etext is (for backwards compatibility) the name of the .data init source pointer (...) */
__etext = LOADADDR(.data);
.tbss (NOLOAD) : {
. = ALIGN(4);
__bss_start__ = .;
__tls_base = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon)
__tls_end = .;
} > RAM
.bss : {
. = ALIGN(4);
__tbss_end = .;
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*)))
*(COMMON)
PROVIDE(__global_pointer$ = . + 2K);
*(.sbss*)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap (NOLOAD):
{
__end__ = .;
end = __end__;
KEEP(*(.heap*))
/* historically on GCC sbrk was growing past __HeapLimit to __StackLimit, however
to be more compatible, we now set __HeapLimit explicitly to where the end of the heap is */
. = ORIGIN(RAM) + LENGTH(RAM);
__HeapLimit = .;
} > RAM
/* Start and end symbols must be word-aligned */
.scratch_x : {
__scratch_x_start__ = .;
@@ -193,22 +249,6 @@ SECTIONS {
} > SCRATCH_Y AT > FLASH
__scratch_y_source__ = LOADADDR(.scratch_y);
.bss : {
. = ALIGN(4);
__bss_start__ = .;
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*)))
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap (COPY): {
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM
/* .stack*_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later
@@ -218,16 +258,19 @@ SECTIONS {
/* by default we put core 0 stack at the end of scratch Y, so that if core 1
* stack is not used then all of SCRATCH_X is free.
*/
.stack1_dummy (COPY): {
.stack1_dummy (NOLOAD):
{
*(.stack1*)
} > SCRATCH_X
.stack_dummy (COPY): {
*(.stack*)
.stack_dummy (NOLOAD):
{
KEEP(*(.stack*))
} > SCRATCH_Y
.flash_end : {
__flash_binary_end = .;
} > FLASH
KEEP(*(.embedded_end_block*))
PROVIDE(__flash_binary_end = .);
} > FLASH =0xaa
/* stack limit is poorly named, but historically is maximum heap ptr */
__StackLimit = ORIGIN(RAM) + LENGTH(RAM);
@@ -237,10 +280,23 @@ SECTIONS {
__StackBottom = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* picolibc and LLVM */
PROVIDE (__heap_start = __end__);
PROVIDE (__heap_end = __HeapLimit);
PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1));
PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
/* llvm-libc */
PROVIDE (_end = __end__);
PROVIDE (__llvm_libc_heap_limit = __HeapLimit);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed")
/* ASSERT( __binary_info_header_end - __logical_binary_start <= 256, "Binary info must be in first 256 bytes of the binary")*/
ASSERT( __binary_info_header_end - __logical_binary_start <= 1024, "Binary info must be in first 1024 bytes of the binary")
ASSERT( __embedded_block_end - __logical_binary_start <= 4096, "Embedded block must be in first 4096 bytes of the binary")
/* todo assert on extra code */
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "framework-arduinopico",
"version": "1.40002.0",
"version": "1.40003.0",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040, RP2350)",
"keywords": [
"framework",
+178 -172
View File
@@ -77,6 +77,9 @@
{
"name": "Adafruit KB2040"
},
{
"name": "Adafruit Feather RP2350 HSTX"
},
{
"name": "Amken BunnyBoard"
},
@@ -122,6 +125,9 @@
{
"name": "DatanoiseTV PicoADK"
},
{
"name": "DatanoiseTV PicoADK v2"
},
{
"name": "Degz Robotics Suibo RP2040"
},
@@ -327,32 +333,32 @@
"toolsDependencies": [
{
"packager": "rp2040",
"version": "2.2.0-d04e724",
"version": "2.3.0-dfd82b2",
"name": "pqt-gcc"
},
{
"packager": "rp2040",
"version": "2.2.0-d04e724",
"version": "2.3.0-dfd82b2",
"name": "pqt-mklittlefs"
},
{
"packager": "rp2040",
"version": "2.2.0-efe2103",
"version": "2.3.0-dfd82b2",
"name": "pqt-pioasm"
},
{
"packager": "rp2040",
"version": "1.0.1-base-3a57aed",
"version": "1.0.1-base-3a57aed-1",
"name": "pqt-python3"
},
{
"packager": "rp2040",
"version": "2.2.0-8a9af99-2",
"version": "2.3.0-dfd82b2",
"name": "pqt-openocd"
},
{
"packager": "rp2040",
"version": "2.2.0-8a9af99-2",
"version": "2.3.0-dfd82b2",
"name": "pqt-picotool"
}
],
@@ -363,131 +369,131 @@
],
"tools": [
{
"version": "2.2.0-8a9af99-2",
"version": "2.3.0-dfd82b2",
"name": "pqt-picotool",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-apple-darwin20.4.picotool-8a9af99.240827.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.picotool-8a9af99.240827.tar.gz",
"checksum": "SHA-256:56495b3b5cd9b2b124c2ac9d9592d07a802c70a46b4453bbf890021475467ce7",
"size": "856307"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:3e20acb5e8c97448a5ffa316cfc74307df0fd887cf4364d787956ddc359608c1",
"size": "856203"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-linux-gnu.picotool-8a9af99.240818.tar.gz",
"archiveFileName": "aarch64-linux-gnu.picotool-8a9af99.240818.tar.gz",
"checksum": "SHA-256:e13186190e58b8b71689e80caf7942cdbd4276dae3e9f6197a3ea0c006e1723f",
"size": "896500"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:67a912dd712a1717bf850205aff9ee4b3f0a289c4d0a87ab62e9f71c433e6d38",
"size": "896504"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/arm-linux-gnueabihf.picotool-8a9af99.240818.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.picotool-8a9af99.240818.tar.gz",
"checksum": "SHA-256:1c45155bcd93adc63d740053b55b25310c317ba6a1f4d0ef0cbc8ce52fea565a",
"size": "840251"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:2fa0a0a2affa8991b917c06b89cb3c4be597d120bd920b6258a4f7ce041c877b",
"size": "840245"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-linux-gnu.picotool-8a9af99.240818.tar.gz",
"archiveFileName": "i686-linux-gnu.picotool-8a9af99.240818.tar.gz",
"checksum": "SHA-256:81c1492af8859be13f5a276831b566c18e8316d65b493ddc121637301cc37fc9",
"size": "984659"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:b0c8018a58c3d3b1e72698326a38f660c9dbc535a393179a92a009a24a22e90a",
"size": "984649"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-w64-mingw32.picotool-8a9af99.240827.zip",
"archiveFileName": "i686-w64-mingw32.picotool-8a9af99.240827.zip",
"checksum": "SHA-256:72519eed61cc01f211fc55d98751c09701a7323ba17b9c1b5d02d29de76c1777",
"size": "1995431"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.picotool-8a9af99.240919.zip",
"archiveFileName": "i686-w64-mingw32.picotool-8a9af99.240919.zip",
"checksum": "SHA-256:f23a2a4b3994b80f885e28050f5559a2875294a62de431d7e0d254a800caece2",
"size": "1335369"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-apple-darwin20.4.picotool-8a9af99.240827.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.picotool-8a9af99.240827.tar.gz",
"checksum": "SHA-256:54d920cd1731d1f33a63d004b3f26170ff357bc620b5f3172329096d4b461e03",
"size": "831575"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:86b55d51fc9e154ce209a067afac54116bce2bac823f5f3ec3687b7a021230a5",
"size": "829476"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-linux-gnu.picotool-8a9af99.240818.tar.gz",
"archiveFileName": "x86_64-linux-gnu.picotool-8a9af99.240818.tar.gz",
"checksum": "SHA-256:7e1d95abece12a5a05e9c299d9e6f5cc2f944c6ccd16b140e257f4e7ac8edbfa",
"size": "926049"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.picotool-8a9af99.240919.tar.gz",
"checksum": "SHA-256:1192b43bcacfa33cc5b2d58e4686c7cbf3e4e77fd819d2fbf2cc797a3e174bb8",
"size": "926046"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-w64-mingw32.picotool-8a9af99.240827.zip",
"archiveFileName": "x86_64-w64-mingw32.picotool-8a9af99.240827.zip",
"checksum": "SHA-256:5e77c4d624526b8c1afb930acf3e9efd9761176f75eb6f258a0d4b49beaa965c",
"size": "1881720"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.picotool-8a9af99.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.picotool-8a9af99.240919.zip",
"checksum": "SHA-256:86a95cae6edfbefe1725f66fcea9ebe20d19bdc8708371d32a21473ca197967d",
"size": "1270392"
}
]
},
{
"version": "2.2.0-8a9af99-2",
"version": "2.3.0-dfd82b2",
"name": "pqt-openocd",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-apple-darwin20.4.openocd-ebec9504d.240827.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.openocd-ebec9504d.240827.tar.gz",
"checksum": "SHA-256:7abbab14197005e9ae5f0a497fcefea420b8cf22f8be6d118f8549787f10c3ce",
"size": "1974865"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:eb89c3fb9d797e6dadbc14a866d1cfe27b425689a32687773aef6bf3dbe8d855",
"size": "1981014"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"checksum": "SHA-256:608b3d5a04b36b7a5e85dd63a27dc1c531f19fa0d4410ea7617497c45f05401c",
"size": "7480356"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:845e7a4918b8ee0fea7854b0d7b973009390b245560fc1699be71d0c5470ff71",
"size": "7440912"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/arm-linux-gnueabihf.openocd-ebec9504d.240818.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-ebec9504d.240818.tar.gz",
"checksum": "SHA-256:08db61afd26571eef18a53b926b5ad617319383c01731d178fc2efc900bda124",
"size": "7335490"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:4e9278e8777af01f90c51dc7fb9d5c8c912c11a9c3597a3d8b4f314d17f17ed4",
"size": "7296425"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"checksum": "SHA-256:9c54e61c9f7637eab8e3e1cbd2a6f5727759aa0224e1aeeb1a8e46a76ddaa78e",
"size": "7070681"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:ace2a6c14e7c1e89921b50e1e0735ac2999b193d8baf9e9d35fbdb2b6a870d20",
"size": "7031049"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-w64-mingw32.openocd-ebec9504d.240827.zip",
"archiveFileName": "i686-w64-mingw32.openocd-ebec9504d.240827.zip",
"checksum": "SHA-256:c5755e4e7fc008ac8486e9aa085a1e0b486732b70dcd37f9b2953104a0881541",
"size": "3577865"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.openocd-ebec9504d.240919.zip",
"archiveFileName": "i686-w64-mingw32.openocd-ebec9504d.240919.zip",
"checksum": "SHA-256:0082def9373e56608c584e94c8c199c44f8fd00153557878478edaf383d496a9",
"size": "2597198"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-apple-darwin20.4.openocd-ebec9504d.240827.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.openocd-ebec9504d.240827.tar.gz",
"checksum": "SHA-256:2382f02b6171268c87409d998f8e9a844a70b9a5d6a40690bdaa8301fda8fbd4",
"size": "3192645"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:1e0fe05bed6ab8d4e41898496b45940893fe308d1b66c49448fefa9c67d41024",
"size": "3193799"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-ebec9504d.240818.tar.gz",
"checksum": "SHA-256:dbaeaa695359fcac00b6e5aa3b26e9c5880c66b14c110a98d931b4f29dd0de7a",
"size": "7501850"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-ebec9504d.240919.tar.gz",
"checksum": "SHA-256:8ddae277a21f485636989903b2ae0dbf98e5ae8d58c80bf73782bef217cf151b",
"size": "7462299"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-w64-mingw32.openocd-ebec9504d.240827.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-ebec9504d.240827.zip",
"checksum": "SHA-256:ceaa6aa57be394e853470337d0fa76af3b8f744b3ea7dd45b8325fff4bd824a9",
"size": "3456764"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.openocd-ebec9504d.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-ebec9504d.240919.zip",
"checksum": "SHA-256:a5d27ca4f6fa1e05f55d287c2cfdb124c47b3c064bf10c4f660ddd97dda8ed23",
"size": "2541780"
}
]
},
{
"version": "1.0.1-base-3a57aed",
"version": "1.0.1-base-3a57aed-1",
"name": "pqt-python3",
"systems": [
{
@@ -556,188 +562,188 @@
]
},
{
"version": "2.2.0-d04e724",
"version": "2.3.0-dfd82b2",
"name": "pqt-gcc",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-apple-darwin20.4.arm-none-eabi-d04e724.240127.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.arm-none-eabi-d04e724.240127.tar.gz",
"checksum": "SHA-256:f70431e62a1d64b43d8730911be6b6f18ece3b91a216ce6c40d5318ad263756f",
"size": "86285430"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:9a0bce8ae3d28489cdc2bf4d1d849b7b9c93f13b74f2449d07499f224801ed99",
"size": "96802517"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-linux-gnu.arm-none-eabi-d04e724.240125.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-d04e724.240125.tar.gz",
"checksum": "SHA-256:752be9aebf0f040794232a331bd6fd17a8843f7ebe819c73e728d1a9fe8de3c3",
"size": "93501390"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:04dfe507037553fb5b0844bfc674d7f39cb8fa30fedbd72739b4c5324b260e04",
"size": "103997060"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/arm-linux-gnueabihf.arm-none-eabi-d04e724.240125.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-d04e724.240125.tar.gz",
"checksum": "SHA-256:494dc88980d0f1e2cc0ac10f0bd3adb5d6964cc31b43f44a14b8a167781a0316",
"size": "87330830"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:365dd442d1d2cc284ddc7c1df7f96620e4b9169de268f4c2c2dd85f515724838",
"size": "97831453"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-linux-gnu.arm-none-eabi-d04e724.240125.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-d04e724.240125.tar.gz",
"checksum": "SHA-256:b00b8e138886c7957b28615762285c70b8ac84172c32b189a673bc33c2f29e2d",
"size": "96150883"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:8844d6c9f9040a673c0354b9fdc413faaa8f4075292f8b9fdefca020c0a7cd03",
"size": "106646523"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-w64-mingw32.arm-none-eabi-d04e724.240125.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-d04e724.240125.zip",
"checksum": "SHA-256:f9b35511c2385b9351f70d5503b1e7f86ab4e47035402749ea7220175c9bf7fa",
"size": "102603587"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"checksum": "SHA-256:11ff0b24c557cf8334450c6f4826230ec2f25efbf0792f506c3009e2663205ea",
"size": "113765075"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-apple-darwin20.4.arm-none-eabi-d04e724.240125.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.arm-none-eabi-d04e724.240125.tar.gz",
"checksum": "SHA-256:a2d9ea24986973c31082b35ada0fe9d1577167e6a68a908b69aa6d99490b2499",
"size": "97543047"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:c11b7f19751a13ba2fb456eaf209472666d77dec8720d51ef44091b8a6fadfa9",
"size": "108052800"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-linux-gnu.arm-none-eabi-028e019.240125.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-028e019.240125.tar.gz",
"checksum": "SHA-256:447951503effc0238cdc83b23b5253909b4b9d9f1175f4cc6c29169927fa0964",
"size": "96301885"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-dfd82b2.240919.tar.gz",
"checksum": "SHA-256:1f37b78a9d371659e2a45b8c602046ec6a1c920f36959fc702db9c68cc2c778c",
"size": "106789920"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-w64-mingw32.arm-none-eabi-d04e724.240125.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-d04e724.240125.zip",
"checksum": "SHA-256:f8f79b3da6b4997dc30c91689e6aeb126a37eb034b51c9f9356b382f1982c075",
"size": "106485317"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-dfd82b2.240919.zip",
"checksum": "SHA-256:ee3ed6354ccf71fcfdb2083859ffafc0e2dd6982906f14d3cdb501a85db6cbd8",
"size": "117655702"
}
]
},
{
"version": "2.2.0-efe2103",
"version": "2.3.0-dfd82b2",
"name": "pqt-pioasm",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-apple-darwin20.4.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:18524d6e5960c3e82dfbfd23686caf1ef36a665a2e29ee11fef0d3848a78707b",
"size": "267870"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:7db03dddebe3f2d736fb88fd1435076b0874667a9be8cfc18a273acc75067a11",
"size": "267871"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-linux-gnu.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:0687769c3b5e528b6ba74d522410d0dd65a3ebef1f9f90cf0cd067c1bc8234dc",
"size": "644211"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:d71c165b8ac243c578c3615f7a74857a6131c235bbf623b55437f3716d0d3097",
"size": "644219"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/arm-linux-gnueabihf.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:414f43667ec91f93e03cb498172de9b0e5bd188c7f4f2dd4963a0052e4e47675",
"size": "576898"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:c8bed422247870a1163fa0fa967b4c49432dbdb2bf4b4a058f6bcfa03eaba637",
"size": "576895"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-linux-gnu.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:e8c778c799f525474e981b185e4e13176f7b306bb93dd6799c3e540665d8f6ac",
"size": "703366"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:12774501242f8d20d29a3d5461326ede3ab6906a98e55539aa908d9574994285",
"size": "703370"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-w64-mingw32.pioasm-efe2103.240818.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-efe2103.240818.zip",
"checksum": "SHA-256:5e88b20ec966fa0e5d8af71d1ef1e8e6db55bf8bca922589de9203d638815d1d",
"size": "797523"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.pioasm-efe2103.240919.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-efe2103.240919.zip",
"checksum": "SHA-256:be3705551828925cde12e59ee6ae54d9de4c0fea862f4def00f72d8ea4792c49",
"size": "797522"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-apple-darwin20.4.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:7bdc0d97f796000ed6d4b62d3fcbb73c4839ef3653d83f6cc33a087daf8a115a",
"size": "780426"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:c4f24d6cb591c3e9b9e9d99a3b207e941e8ed0d27810a322ce94da18554ea47c",
"size": "780427"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-linux-gnu.pioasm-efe2103.240818.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-efe2103.240818.tar.gz",
"checksum": "SHA-256:96736ee95e8a97acbfe0ff3476838cd25a2ca217d982a39cb4bc34acb9ec83b1",
"size": "649753"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-efe2103.240919.tar.gz",
"checksum": "SHA-256:7827603f11dd3bcda23c92440913980ee7eff6e867f686aa8188de7dea7dbb6d",
"size": "649758"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-w64-mingw32.pioasm-efe2103.240818.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-efe2103.240818.zip",
"checksum": "SHA-256:1bb59e542650e3873cd2e1a7911e671944f4f7e523e4f5f2e2988dd1ccbfeb87",
"size": "929507"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.pioasm-efe2103.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-efe2103.240919.zip",
"checksum": "SHA-256:ad047233dd4522474723e59e4b627d3f85ac3bdda75a32abd9797895f170909d",
"size": "929506"
}
]
},
{
"version": "2.2.0-d04e724",
"version": "2.3.0-dfd82b2",
"name": "pqt-mklittlefs",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-apple-darwin20.4.mklittlefs-6e2fa17.240127.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.mklittlefs-6e2fa17.240127.tar.gz",
"checksum": "SHA-256:ad46da0560569a97edd11490829479e70aa3c53b4525c5a8f6ae154f2d41c0bb",
"size": "70714"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "aarch64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:fe35b65fd8d9c03dfcd754f10c3e1ca0c750e850ce9a86302ab1e141d1ea8709",
"size": "72514"
},
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/aarch64-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"checksum": "SHA-256:63e549d45addddc0e029efed36fdf4684cb4b9f3f965426c56282fef890f7a3f",
"size": "68800"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/aarch64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:bc97b86b60a1f03635a9f387f64c61a0ad2192a1f7fb4ade60d606921d6ab548",
"size": "684061"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/arm-linux-gnueabihf.mklittlefs-6e2fa17.240125.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-6e2fa17.240125.tar.gz",
"checksum": "SHA-256:79746a9b44590ab132c03f686529c3894caf557a15720b2d9e4d64c91742093d",
"size": "59810"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/arm-linux-gnueabihf.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:96fde072a3b5951a3539baaaf47d9c1a8520f2757b6377ef58b7f2c0da4abd2b",
"size": "632931"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"checksum": "SHA-256:084c016bf074b028cb40471b2087a6d54ef31a3d34709f5879b86e9577bff44d",
"size": "76575"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:ea520bf89f4596c0d06d68c47f26a4ce0a181458f0845330f95e38c4e9772d4c",
"size": "665586"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/i686-w64-mingw32.mklittlefs-6e2fa17.240125.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-6e2fa17.240125.zip",
"checksum": "SHA-256:35c1bcdd05be6389992e78fdb890e81cdd9c298408d811293a2bc7605ac59e7a",
"size": "369155"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/i686-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"checksum": "SHA-256:c5782c8cb3cdeb03abda4fd2fed1dd1655c422920d407845bd85ec007af9f4ef",
"size": "1232207"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-apple-darwin20.4.mklittlefs-6e2fa17.240125.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.mklittlefs-6e2fa17.240125.tar.gz",
"checksum": "SHA-256:5d0eb016a0712b17f3178acf835590557a6a4990c0400e325f27db4fc9d9813c",
"size": "508017"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "x86_64-apple-darwin20.4.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:7c1732e98752f2b8a6d11f8f058c2a3cf426fa070d730e27d3c15d41bbde0376",
"size": "621579"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-6e2fa17.240125.tar.gz",
"checksum": "SHA-256:91efeabcd4765d4f6a8e07b1561a226aaaf176abacee3d5f879e94c68dcc5617",
"size": "71165"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-2f7654f.240919.tar.gz",
"checksum": "SHA-256:e194f6c9d0b2e02c6b6cc326ad083581801ecf8f616da44d1755fbec5646b127",
"size": "690458"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.2.0/x86_64-w64-mingw32.mklittlefs-6e2fa17.240125.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-6e2fa17.240125.zip",
"checksum": "SHA-256:cf7291de4633f3a041f38973771a4298128b7641c4c65a94f080fd13cbd50275",
"size": "381186"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/2.3.0/x86_64-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-2f7654f.240919.zip",
"checksum": "SHA-256:bd080b5b4ec7df84d444c72260010905a13744afca79f13e4017e658a56b4005",
"size": "1328982"
}
]
}
+4 -3
View File
@@ -20,7 +20,7 @@
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=Raspberry Pi RP2040/RP2350 Boards
version=4.0.2
version=4.0.3
# Required discoveries and monitors
# ---------------------------------
@@ -108,6 +108,7 @@ build.libpicow=libipv4.a
build.boot2=boot2_generic_03h_4_padded_checksum
build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
build.espwifitype=
build.debugscript=picoprobe_cmsis_dap.tcl
build.picodebugflags=
build.variantdefines=
@@ -126,10 +127,10 @@ pluggable_discovery.rp2040.pattern="{runtime.platform.path}/system/python3/pytho
recipe.hooks.sketch.prebuild.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/signing.py" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h"
## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} {build.espwifitype} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.espwifitype} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {includes} "{source_file}" -o "{object_file}"
-2
View File
@@ -8,7 +8,6 @@ function skip_ino()
local skiplistrp2350=""
if [ "$PICO_BOARD" == "rp2350" ]; then
read -d '' skiplistrp2350 << EOL || true
/FreeRTOS/
/BTstackLib/
/JoystickBT/
/KeyboardBT/
@@ -188,7 +187,6 @@ function install_libraries()
{ test -r Adafruit_CircuitPlayground-1.11.3.zip || curl -sS --output Adafruit_CircuitPlayground-1.11.3.zip -L https://github.com/adafruit/Adafruit_CircuitPlayground/archive/refs/tags/1.11.3.zip; } && unzip -qo Adafruit_CircuitPlayground-1.11.3.zip
{ test -r Adafruit_NeoPixel-1.8.1.zip || curl -sS --output Adafruit_NeoPixel-1.8.1.zip -L https://github.com/adafruit/Adafruit_NeoPixel/archive/refs/tags/1.8.1.zip; } && unzip -qo Adafruit_NeoPixel-1.8.1.zip
{ test -r Arduino_MIDI_Library-5.0.2.zip || curl -sS --output Arduino_MIDI_Library-5.0.2.zip -L https://github.com/FortySevenEffects/arduino_midi_library/archive/refs/tags/5.0.2.zip; } && unzip -qo Arduino_MIDI_Library-5.0.2.zip
git clone https://github.com/JAndrassy/ESPHost.git
popd
}
+4 -1
View File
@@ -51,7 +51,10 @@ def unpack(filename, destination):
if filename.endswith('tar.gz'):
tfile = tarfile.open(filename, 'r:gz')
os.chdir("../system/")
tfile.extractall(destination)
try:
tfile.extractall(destination, filter='fully_trusted')
except TypeError:
tfile.extractall(destination)
dirname= tfile.getnames()[0]
elif filename.endswith('zip'):
zfile = zipfile.ZipFile(filename)
@@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x239A",
"usb_pid": "0x814F"
}
},
"core": "earlephilhower",
"cpu": "cortex-m33",
"extra_flags": "-DARDUINO_ADAFRUIT_FEATHER_RP2350_HSTX -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ",
"f_cpu": "150000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x239A",
"0x814F"
]
],
"mcu": "rp2350",
"variant": "adafruit_feather_rp2350_hstx"
},
"debug": {
"jlink_device": "RP2350_0",
"openocd_target": "rp2350.cfg",
"svd_path": "rp2350.svd"
},
"frameworks": [
"arduino"
],
"name": "Feather RP2350 HSTX",
"upload": {
"maximum_ram_size": 524288,
"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"
}
+1 -1
View File
@@ -9,7 +9,7 @@
},
"core": "earlephilhower",
"cpu": "cortex-m0plus",
"extra_flags": "-DARDUINO_CHALLENGER_2040_WIFI_BLE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 -DWIFIESPAT2",
"extra_flags": "-DARDUINO_CHALLENGER_2040_WIFI_BLE_RP2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ",
"f_cpu": "133000000L",
"hwids": [
[
+1 -1
View File
@@ -9,7 +9,7 @@
},
"core": "earlephilhower",
"cpu": "cortex-m33",
"extra_flags": "-DARDUINO_CHALLENGER_2350_WIFI_BLE_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 -DWIFIESPAT2",
"extra_flags": "-DARDUINO_CHALLENGER_2350_WIFI_BLE_RP2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ",
"f_cpu": "150000000L",
"hwids": [
[
+55
View File
@@ -0,0 +1,55 @@
{
"build": {
"arduino": {
"earlephilhower": {
"boot2_source": "boot2_w25q080_2_padded_checksum.S",
"usb_vid": "0x2E8A",
"usb_pid": "0x10AE"
}
},
"core": "earlephilhower",
"cpu": "cortex-m33",
"extra_flags": "-DARDUINO_DATANOISETV_PICOADK_V2 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=250 ",
"f_cpu": "150000000L",
"hwids": [
[
"0x2E8A",
"0x00C0"
],
[
"0x2E8A",
"0x10AE"
]
],
"mcu": "rp2350",
"variant": "datanoisetv_picoadk_v2"
},
"debug": {
"jlink_device": "RP2350_0",
"openocd_target": "rp2350.cfg",
"svd_path": "rp2350.svd"
},
"frameworks": [
"arduino"
],
"name": "PicoADK v2",
"upload": {
"maximum_ram_size": 524288,
"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": "DatanoiseTV"
}
+1 -1
View File
@@ -11,7 +11,7 @@ install: all version-header
cp bearssl/inc/bearssl*.h ../../include/bearssl/.
all2: bearssl/README.txt
PATH="$(PWD)/../../system/arm-none-eabi/bin/:$(PATH)" && arm-none-eabi-gcc --version && cd bearssl && $(MAKE) CONF=pico2 all
PATH="$(PWD)/../../system/arm-none-eabi/bin/:$(PATH)" && arm-none-eabi-gcc --version && cd bearssl && $(MAKE) CONF=pico2 clean all
install2: all2 version-header
cp bearssl/pico/libbearssl.a ../../lib/rp2350/.
+71 -3
View File
@@ -29,9 +29,75 @@ pico_sdk_init()
add_library(common-${cpu} INTERFACE)
if (${cpu} MATCHES "rp2040")
set(xcd PICO_RP2040_B0_SUPPORTED=1 PICO_RP2040_B1_SUPPORTED=1 PICO_RP2040_B2_SUPPORTED=1 PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 CYW43_WARN=// PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64 PICO_FLOAT_SUPPORT_ROM_V1=1 PICO_DOUBLE_SUPPORT_ROM_V1=1 PICO_RP2040=1 PICO_PLATFORM=rp2040 PICO_CYW43_SUPPORTED=1)
set(xcd
PICO_RP2040_B0_SUPPORTED=1
PICO_RP2040_B1_SUPPORTED=1
PICO_RP2040_B2_SUPPORTED=1
PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1
CYW43_WARN=//
PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
PICO_FLOAT_SUPPORT_ROM_V1=1
PICO_DOUBLE_SUPPORT_ROM_V1=1
PICO_RP2040=1
PICO_PLATFORM=rp2040
PICO_CYW43_SUPPORTED=1)
elseif(${cpu} MATCHES "rp2350")
set(xcd CFG_TUSB_DEBUG=0 CFG_TUSB_MCU=OPT_MCU_RP2040 CFG_TUSB_OS=OPT_OS_PICO LIB_BOOT_STAGE2_HEADERS=1 LIB_PICO_ATOMIC=1 LIB_PICO_BIT_OPS=1 LIB_PICO_BIT_OPS_PICO=1 LIB_PICO_CLIB_INTERFACE=1 LIB_PICO_CRT0=1 LIB_PICO_CXX_OPTIONS=1 LIB_PICO_DIVIDER=1 LIB_PICO_DIVIDER_COMPILER=1 LIB_PICO_DOUBLE=1 LIB_PICO_DOUBLE_PICO=1 LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1 LIB_PICO_FLOAT=1 LIB_PICO_FLOAT_PICO=1 LIB_PICO_FLOAT_PICO_VFP=1 LIB_PICO_INT64_OPS=1 LIB_PICO_INT64_OPS_COMPILER=1 LIB_PICO_MEM_OPS=1 LIB_PICO_MEM_OPS_COMPILER=1 LIB_PICO_NEWLIB_INTERFACE=1 LIB_PICO_PLATFORM=1 LIB_PICO_PLATFORM_COMPILER=1 LIB_PICO_PLATFORM_PANIC=1 LIB_PICO_PLATFORM_SECTIONS=1 LIB_PICO_RUNTIME=1 LIB_PICO_RUNTIME_INIT=1 LIB_PICO_STANDARD_BINARY_INFO=1 LIB_PICO_STANDARD_LINK=1 LIB_PICO_SYNC=1 LIB_PICO_SYNC_CRITICAL_SECTION=1 LIB_PICO_SYNC_MUTEX=1 LIB_PICO_SYNC_SEM=1 LIB_PICO_TIME=1 LIB_PICO_TIME_ADAPTER=1 LIB_PICO_UNIQUE_ID=1 LIB_PICO_UTIL=1 LIB_TINYUSB_BOARD=1 LIB_TINYUSB_DEVICE=1 PICO_32BIT=1 PICO_BOARD=\"solderparty_rp2350_stamp_xl\" PICO_BUILD=1 PICO_COPY_TO_RAM=0 PICO_CXX_ENABLE_EXCEPTIONS=0 PICO_NO_FLASH=0 PICO_NO_HARDWARE=0 PICO_ON_DEVICE=1 PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1 PICO_RP2040_USB_DEVICE_UFRAME_FIX=1 PICO_RP2350=1 PICO_USE_BLOCKED_RAM=0 PICO_PLATFORM=rp2350)
set(xcd
CFG_TUSB_DEBUG=0
CFG_TUSB_MCU=OPT_MCU_RP2040
CFG_TUSB_OS=OPT_OS_PICO
LIB_BOOT_STAGE2_HEADERS=1
LIB_PICO_ATOMIC=1
LIB_PICO_BIT_OPS=1
LIB_PICO_BIT_OPS_PICO=1
LIB_PICO_CLIB_INTERFACE=1
LIB_PICO_CRT0=1
LIB_PICO_CXX_OPTIONS=1
LIB_PICO_DIVIDER=1
LIB_PICO_DIVIDER_COMPILER=1
LIB_PICO_DOUBLE=1
LIB_PICO_DOUBLE_PICO=1
LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1
LIB_PICO_FLOAT=1
LIB_PICO_FLOAT_PICO=1
LIB_PICO_FLOAT_PICO_VFP=1
LIB_PICO_INT64_OPS=1
LIB_PICO_INT64_OPS_COMPILER=1
LIB_PICO_MEM_OPS=1
LIB_PICO_MEM_OPS_COMPILER=1
LIB_PICO_NEWLIB_INTERFACE=1
LIB_PICO_PLATFORM=1
LIB_PICO_PLATFORM_COMPILER=1
LIB_PICO_PLATFORM_PANIC=1
LIB_PICO_PLATFORM_SECTIONS=1
LIB_PICO_RUNTIME=1
LIB_PICO_RUNTIME_INIT=1
LIB_PICO_STANDARD_BINARY_INFO=1
LIB_PICO_STANDARD_LINK=1
LIB_PICO_SYNC=1
LIB_PICO_SYNC_CRITICAL_SECTION=1
LIB_PICO_SYNC_MUTEX=1
LIB_PICO_SYNC_SEM=1
LIB_PICO_TIME=1
LIB_PICO_TIME_ADAPTER=1
LIB_PICO_UNIQUE_ID=1
LIB_PICO_UTIL=1
LIB_TINYUSB_BOARD=1
LIB_TINYUSB_DEVICE=1
PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
PICO_32BIT=1
PICO_BOARD=\"solderparty_rp2350_stamp_xl\"
PICO_BUILD=1
PICO_COPY_TO_RAM=0
PICO_CXX_ENABLE_EXCEPTIONS=0
PICO_NO_FLASH=0
PICO_NO_HARDWARE=0
PICO_ON_DEVICE=1
PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1
PICO_RP2040_USB_DEVICE_UFRAME_FIX=1
PICO_RP2350=1
PICO_USE_BLOCKED_RAM=0
PICO_PLATFORM=rp2350)
endif()
# Use a longer XOSC startup time, to accommodate Adafruit and other boards that may need it.
@@ -62,7 +128,8 @@ target_compile_definitions(pico-${cpu} PUBLIC
if (${cpu} MATCHES "rp2040")
set(xll1)
elseif(${cpu} MATCHES "rp2350")
set(xll1 pico_sha256)
set(xll1
pico_sha256)
endif()
target_link_libraries(pico-${cpu}
@@ -93,6 +160,7 @@ target_link_libraries(pico-${cpu}
hardware_watchdog
hardware_xosc
cmsis
pico_aon_timer
pico_bit_ops
pico_bootrom
pico_bootsel_via_double_reset
+16 -2
View File
@@ -274,9 +274,16 @@ def BuildGlobalMenuList():
print("menu.boot2=Boot Stage 2")
print("menu.wificountry=WiFi Region")
print("menu.usbstack=USB Stack")
print("menu.espwifitype=ESP Wifi Type")
print("menu.ipbtstack=IP/Bluetooth Stack")
print("menu.uploadmethod=Upload Method")
def BuildWifiType(name):
print("%s.menu.espwifitype.esp_at=ESP AT" % (name))
print("%s.menu.espwifitype.esp_at.build.espwifitype=-DWIFIESPAT2" % (name))
print("%s.menu.espwifitype.esp_hosted=ESP Hosted" % (name))
print("%s.menu.espwifitype.esp_hosted.build.espwifitype=-DESPHOSTSPI=SPI1" % (name))
def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine, flashsizemb, psramsize, boot2, extra = None, board_url = None):
fssizelist = [ 0, 64 * 1024, 128 * 1024, 256 * 1024, 512 * 1024 ]
for i in range(1, flashsizemb):
@@ -305,6 +312,11 @@ def MakeBoard(name, chip, vendor_name, product_name, vid, pid, pwr, boarddefine,
BuildFlashMenu(name, chip, 2*1024*1024, [0, 1*1024*1024])
BuildFlashMenu(name, chip, 8*1024*1024, [0, 7*1024*1024, 4*1024*1024, 2*1024*1024])
BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024])
elif (name == "challenger_2350_wifi6_ble5") or (name == "challenger_2040_wifi_ble"):
BuildWifiType(name)
BuildCountry(name)
BuildFlashMenu(name, chip, 8*1024*1024, [0, 7*1024*1024, 4*1024*1024, 2*1024*1024])
BuildFlashMenu(name, chip, 16*1024*1024, [0, 15*1024*1024, 14*1024*1024, 12*1024*1024, 8*1024*1024, 4*1024*1024, 2*1024*1024])
else:
BuildFlashMenu(name, chip, flashsizemb * 1024 * 1024, fssizelist)
if chip == "rp2350":
@@ -459,6 +471,7 @@ MakeBoard("adafruit_stemmafriend", "rp2040", "Adafruit", "STEMMA Friend RP2040",
MakeBoard("adafruit_trinkeyrp2040qt", "rp2040", "Adafruit", "Trinkey RP2040 QT", "0x239a", "0x8109", 250, "ADAFRUIT_TRINKEYQT_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_macropad2040", "rp2040", "Adafruit", "MacroPad RP2040", "0x239a", "0x8107", 250, "ADAFRUIT_MACROPAD_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_kb2040", "rp2040", "Adafruit", "KB2040", "0x239a", "0x8105", 250, "ADAFRUIT_KB2040_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_feather_rp2350_hstx", "rp2350", "Adafruit", "Feather RP2350 HSTX", "0x239a", "0x814f", 250, "ADAFRUIT_FEATHER_RP2350_HSTX", 8, 0, "boot2_w25q080_2_padded_checksum")
#Amken
@@ -489,6 +502,7 @@ MakeBoard("cytron_motion_2350_pro", "rp2350", "Cytron", "Motion 2350 Pro", "0x2e
# DatanoiseTV
MakeBoard("datanoisetv_picoadk", "rp2040", "DatanoiseTV", "PicoADK", "0x2e8a", "0x000a", 250, "DATANOISETV_PICOADK", 2, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("datanoisetv_picoadk_v2", "rp2350", "DatanoiseTV", "PicoADK v2", "0x2e8a", "0x10ae", 250, "DATANOISETV_PICOADK_V2", 4, 0, "boot2_w25q080_2_padded_checksum")
# Degz Robotics
MakeBoard("degz_suibo", "rp2040", "Degz Robotics", "Suibo RP2040", "0x2e8a", "0xf00a", 250, "DEGZ_SUIBO_RP2040", 16, 0, "boot2_generic_03h_4_padded_checksum", board_url="https://www.degzrobotics.com/suibo")
@@ -519,7 +533,7 @@ MakeBoard("challenger_2040_lte", "rp2040", "iLabs", "Challenger 2040 LTE", "0x2e
MakeBoard("challenger_2040_lora", "rp2040", "iLabs", "Challenger 2040 LoRa", "0x2e8a", "0x1023", 250, "CHALLENGER_2040_LORA_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("challenger_2040_subghz", "rp2040", "iLabs", "Challenger 2040 SubGHz", "0x2e8a", "0x1032", 250, "CHALLENGER_2040_SUBGHZ_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("challenger_2040_wifi", "rp2040", "iLabs", "Challenger 2040 WiFi", "0x2e8a", "0x1006", 250, "CHALLENGER_2040_WIFI_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2040_wifi_ble", "rp2040", "iLabs", "Challenger 2040 WiFi/BLE", "0x2e8a", "0x102C", 500, "CHALLENGER_2040_WIFI_BLE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2040_wifi_ble", "rp2040", "iLabs", "Challenger 2040 WiFi/BLE", "0x2e8a", "0x102C", 500, "CHALLENGER_2040_WIFI_BLE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("challenger_2040_wifi6_ble", "rp2040", "iLabs", "Challenger 2040 WiFi6/BLE", "0x2e8a", "0x105F", 500, "CHALLENGER_2040_WIFI6_BLE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_nb_2040_wifi", "rp2040", "iLabs", "Challenger NB 2040 WiFi", "0x2e8a", "0x100d", 500, "CHALLENGER_NB_2040_WIFI_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2040_sdrtc", "rp2040", "iLabs", "Challenger 2040 SD/RTC", "0x2e8a", "0x102d", 250, "CHALLENGER_2040_SDRTC_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
@@ -527,7 +541,7 @@ MakeBoard("challenger_2040_nfc", "rp2040", "iLabs", "Challenger 2040 NFC", "0x2e
MakeBoard("challenger_2040_uwb", "rp2040", "iLabs", "Challenger 2040 UWB", "0x2e8a", "0x1052", 500, "CHALLENGER_2040_UWB_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum")
MakeBoard("connectivity_2040_lte_wifi_ble", "rp2040", "iLabs", "Connectivity 2040 LTE/WiFi/BLE", "0x2e8a", "0x107b", 500, "CONNECTIVITY_2040_LTE_WIFI_BLE_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("ilabs_rpico32", "rp2040", "iLabs", "RPICO32", "0x2e8a", "0x1010", 250, "ILABS_2040_RPICO32_RP2040", 8, 0, "boot2_w25q080_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2350_wifi6_ble5", "rp2350", "iLabs", "Challenger 2350 WiFi/BLE", "0x2e8a", "0x109a", 500, "CHALLENGER_2350_WIFI_BLE_RP2350", 8, 8, "boot2_generic_03h_2_padded_checksum", ["WIFIESPAT2"])
MakeBoard("challenger_2350_wifi6_ble5", "rp2350", "iLabs", "Challenger 2350 WiFi/BLE", "0x2e8a", "0x109a", 500, "CHALLENGER_2350_WIFI_BLE_RP2350", 8, 8, "boot2_generic_03h_2_padded_checksum")
MakeBoard("challenger_2350_bconnect", "rp2350", "iLabs", "Challenger 2350 BConnect", "0x2e8a", "0x109b", 500, "CHALLENGER_2350_BCONNECT_RP2350", 8, 8, "boot2_generic_03h_2_padded_checksum")
# Melopero
-1
View File
@@ -127,7 +127,6 @@ elif chip == "rp2350":
"ARDUINO_ARCH_RP2040",
("F_CPU", "$BOARD_F_CPU"),
("BOARD_NAME", '\\"%s\\"' % env.subst("$BOARD")),
("CFG_TUSB_DEBUG", "0"),
("CFG_TUSB_MCU", "OPT_MCU_RP2040"),
("CFG_TUSB_OS", "OPT_OS_PICO"),
("LIB_BOOT_STAGE2_HEADERS", "1"),
@@ -0,0 +1,39 @@
#pragma once
// LEDs
#define PIN_LED (7u)
#define PIN_NEOPIXEL (21)
#define NUM_NEOPIXEL (1)
// UARTs
#define PIN_SERIAL1_TX (0u)
#define PIN_SERIAL1_RX (1u)
#define PIN_SERIAL2_TX (31u) // not pinned out
#define PIN_SERIAL2_RX (31u)
// SPI
#define PIN_SPI0_MISO (20u)
#define PIN_SPI0_MOSI (23u)
#define PIN_SPI0_SCK (22u)
#define PIN_SPI0_SS (21u)
#define PIN_SPI1_MISO (31u) // not pinned out
#define PIN_SPI1_MOSI (31u)
#define PIN_SPI1_SCK (31u)
#define PIN_SPI1_SS (31u)
// Wire
#define PIN_WIRE0_SDA (2u)
#define PIN_WIRE0_SCL (3u)
#define PIN_WIRE1_SDA (31u) // not pinned out
#define PIN_WIRE1_SCL (31u)
#define SERIAL_HOWMANY (1u)
#define SPI_HOWMANY (1u)
#define WIRE_HOWMANY (1u)
// PSRAM
#define RP2350_PSRAM_CS (8u)
#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000)
#include "../generic/common.h"
@@ -38,8 +38,13 @@
#define PIN_SPI1_SCK (14u)
#define PIN_SPI1_SS (13u)
// Handshake signal from ESP32C3
#define ESP32_HS (18u)
#define PIN_ESP32_HS (18u)
#define ESP32_SPI SPI1
// Definitions for ESP hosted
#define ESPHOST_DATA_READY PIN_ESP_MODE
#define ESPHOST_RESET PIN_ESP_RST
#define ESPHOST_HANDSHAKE PIN_ESP32_HS
#define ESPHOST_CS PIN_SPI1_SS
// Wire
#define PIN_WIRE0_SDA (0u)
@@ -85,3 +90,14 @@ static const uint8_t A2 = (28u);
static const uint8_t A3 = (29u);
static const uint8_t A4 = (25u);
static const uint8_t A5 = (21u);
static const uint8_t SS = PIN_SPI0_SS;
static const uint8_t MOSI = PIN_SPI0_MOSI;
static const uint8_t MISO = PIN_SPI0_MISO;
static const uint8_t SCK = PIN_SPI0_SCK;
static const uint8_t SDA = PIN_WIRE0_SDA;
static const uint8_t SCL = PIN_WIRE0_SCL;
static const uint8_t RX = PIN_SERIAL1_RX;
static const uint8_t TX = PIN_SERIAL1_TX;
@@ -69,19 +69,11 @@ bool Challenger2040WiFiClass::waitForReady() {
return false;
}
int esp_host_spi_init(void);
// Reset the ESP and wait for the "ready" prompt to be returned.
bool Challenger2040WiFiClass::reset() {
#if defined(WIFIESPAT2)
runReset();
delay(100);
_serial->begin(DEFAULT_ESP_BAUDRATE);
return waitForReady();
#else
esp_host_spi_init();
return true;
#endif
}
// Checks to see if the modem responds to the "AT" poll command.
@@ -37,16 +37,14 @@
#define PIN_SPI1_MOSI (11u)
#define PIN_SPI1_SCK (10u)
#define PIN_SPI1_SS (9u)
// Handshake signal from ESP32C3
#define ESP32_HS (22u)
// Handshake signal from ESP32C6
#define PIN_ESP32_HS (22u)
#define ESP32_SPI SPI1
// Declarations for ESPHOSTSPI
// -DESPHOST_RESET=D5 -DESPHOST_HANDSHAKE=D7 -DESPHOST_DATA_READY=D6 -DESPHOST_CS=D1 -DESPHOSTSPI=SPI
#define ESPHOST_RESET PIN_ESP_RST
#define ESPHOST_HANDSHAKE ESP32_HS
// Definitions for ESP hosted
#define ESPHOST_DATA_READY PIN_ESP_MODE
#define ESPHOST_RESET PIN_ESP_RST
#define ESPHOST_HANDSHAKE PIN_ESP32_HS
#define ESPHOST_CS PIN_SPI1_SS
#define ESPHOSTSPI_MHZ 1
// Wire
#define PIN_WIRE0_SDA (20u)
@@ -0,0 +1,63 @@
#pragma once
// DatanoiseTV PicoADK v2 - Audio Development Kit with RP2350A
// https://github.com/DatanoiseTV/PicoDSP-Hardware
// LEDs
#define PIN_LED (2u)
#define LED_BUILTIN PIN_LED
// Serial - relocated
#define PIN_SERIAL1_TX (12u)
#define PIN_SERIAL1_RX (13u)
// Serial 2 - relocated
#define PIN_SERIAL2_TX (27u)
#define PIN_SERIAL2_RX (28u)
// SPI0
#define PIN_SPI0_MISO (8u)
#define PIN_SPI0_MOSI (7u)
#define PIN_SPI0_SCK (6u)
#define PIN_SPI0_SS (5u)
// SPI1
#define PIN_SPI1_MISO (12u)
#define PIN_SPI1_MOSI (11u)
#define PIN_SPI1_SCK (10u)
#define PIN_SPI1_SS (13u)
// Wire
#define PIN_WIRE0_SDA (8u)
#define PIN_WIRE0_SCL (9u)
#define PIN_WIRE1_SDA (6u)
#define PIN_WIRE1_SCL (7u)
// I2S
#define PIN_I2S_BCLK (17u)
#define PIN_I2S_LRCLK (18u)
#define PIN_I2S_DOUT (16u)
#define PIN_I2S_DIN (15u)
#define SERIAL_HOWMANY (3u)
#define SPI_HOWMANY (2u)
#define WIRE_HOWMANY (2u)
// PSRAM
#define RP2350_PSRAM_CS (0u)
#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000)
#define PIN_PSRAM_CS RP2350_PSRAM_CS
// SDIO for SD Card
#define PIN_SDIO_CLK (20u)
#define PIN_SDIO_CMD (21u)
#define PIN_SDIO_D0 (22u)
#define PIN_SDIO_D1 (23u)
#define PIN_SDIO_D2 (24u)
#define PIN_SDIO_D3 (25u)
// MIDI
#define PIN_MIDI_RX (1u)
#include "../generic/common.h"
+11 -4
View File
@@ -49,6 +49,8 @@
#define RP2350_PSRAM_CS (47u)
#define RP2350_PSRAM_MAX_SCK_HZ (109*1000*1000)
#define PICO_RP2350B 1
/* Pins mappings for marked pins on the board */
static const uint8_t D0 = (0u);
static const uint8_t D1 = (1u);
@@ -74,10 +76,15 @@ static const uint8_t D20 = (20u);
static const uint8_t D21 = (21u);
static const uint8_t D22 = (22u);
static const uint8_t A0 = (26u);
static const uint8_t A1 = (27u);
static const uint8_t A2 = (28u);
static const uint8_t A3 = (22u);
static const uint8_t D26 = (40u);
static const uint8_t D27 = (41u);
static const uint8_t D28 = (42u);
static const uint8_t A0 = (40u);
static const uint8_t A1 = (41u);
static const uint8_t A2 = (42u);
static const uint8_t A3 = (43u);
static const uint8_t SS = PIN_SPI0_SS;
static const uint8_t MOSI = PIN_SPI0_MOSI;
@@ -3,6 +3,8 @@
// Pin definitions taken from:
// https://rp2xxx-stamp-carrier-xl.solder.party/
#define PICO_RP2350B 1
// LEDs
#define PIN_LED (3u)