diff --git a/MODULE.bazel b/MODULE.bazel index 31d6105cc..111ed24cd 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -1,6 +1,6 @@ module( name = "pico-sdk", - version = "2.2.0", + version = "2.2.1-develop", ) bazel_dep(name = "platforms", version = "0.0.9") diff --git a/pico_sdk_version.cmake b/pico_sdk_version.cmake index 0a3525873..aca3c585e 100644 --- a/pico_sdk_version.cmake +++ b/pico_sdk_version.cmake @@ -7,10 +7,10 @@ if (NOT DEFINED PICO_SDK_VERSION_MAJOR) set(PICO_SDK_VERSION_MINOR 2) # PICO_BUILD_DEFINE: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, default=Current SDK revision, group=pico_base # PICO_CMAKE_CONFIG: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, default=Current SDK revision, group=pico_base - set(PICO_SDK_VERSION_REVISION 0) + set(PICO_SDK_VERSION_REVISION 1) # PICO_BUILD_DEFINE: PICO_SDK_VERSION_PRE_RELEASE_ID, Optional SDK pre-release version identifier, default=Current SDK pre-release identifier, type=string, group=pico_base # PICO_CMAKE_CONFIG: PICO_SDK_VERSION_PRE_RELEASE_ID, Optional SDK pre-release version identifier, default=Current SDK pre-release identifier, type=string, group=pico_base - #set(PICO_SDK_VERSION_PRE_RELEASE_ID develop) + set(PICO_SDK_VERSION_PRE_RELEASE_ID develop) endif() # PICO_BUILD_DEFINE: PICO_SDK_VERSION_STRING, SDK version string, type=string, default=Current SDK version string, group=pico_base diff --git a/src/rp2_common/hardware_dma/include/hardware/dma.h b/src/rp2_common/hardware_dma/include/hardware/dma.h index 2ae64d5fa..316c55842 100644 --- a/src/rp2_common/hardware_dma/include/hardware/dma.h +++ b/src/rp2_common/hardware_dma/include/hardware/dma.h @@ -578,8 +578,8 @@ static inline uint32_t dma_encode_endless_transfer_count(void) { #if PICO_RP2040 panic_unsupported(); #else - static_assert(DMA_CH0_TRANS_COUNT_MODE_VALUE_ENDLESS == 0xf); - static_assert(DMA_CH0_TRANS_COUNT_MODE_LSB == 28); + static_assert(DMA_CH0_TRANS_COUNT_MODE_VALUE_ENDLESS == 0xf, ""); + static_assert(DMA_CH0_TRANS_COUNT_MODE_LSB == 28, ""); return 0xffffffffu; #endif } diff --git a/src/rp2_common/hardware_irq/irq.c b/src/rp2_common/hardware_irq/irq.c index fc3d6f12c..fdcbb00fb 100644 --- a/src/rp2_common/hardware_irq/irq.c +++ b/src/rp2_common/hardware_irq/irq.c @@ -128,6 +128,15 @@ void irq_set_pending(uint num) { #endif } +#if !PICO_NO_RAM_VECTOR_TABLE +static void set_raw_irq_handler_and_unlock(uint num, irq_handler_t handler, uint32_t save) { + // update vtable (vtable_handler may be same or updated depending on cases, but we do it anyway for compactness) + get_vtable()[VTABLE_FIRST_IRQ + num] = handler; + __dmb(); + spin_unlock(spin_lock_instance(PICO_SPINLOCK_ID_IRQ), save); +} +#endif + #if !PICO_DISABLE_SHARED_IRQ_HANDLERS && !PICO_NO_RAM_VECTOR_TABLE // limited by 8 bit relative links (and reality) static_assert(PICO_MAX_SHARED_IRQ_HANDLERS >= 1 && PICO_MAX_SHARED_IRQ_HANDLERS < 0x7f, ""); @@ -202,13 +211,6 @@ bool irq_has_shared_handler(uint irq_num) { return is_shared_irq_raw_handler(handler); } -static void set_raw_irq_handler_and_unlock(uint num, irq_handler_t handler, uint32_t save) { - // update vtable (vtable_handler may be same or updated depending on cases, but we do it anyway for compactness) - get_vtable()[VTABLE_FIRST_IRQ + num] = handler; - __dmb(); - spin_unlock(spin_lock_instance(PICO_SPINLOCK_ID_IRQ), save); -} - #else // PICO_DISABLE_SHARED_IRQ_HANDLERS && PICO_NO_RAM_VECTOR_TABLE #define is_shared_irq_raw_handler(h) false bool irq_has_shared_handler(uint irq_num) { diff --git a/src/rp2_common/hardware_sync_spin_lock/include/hardware/sync/spin_lock.h b/src/rp2_common/hardware_sync_spin_lock/include/hardware/sync/spin_lock.h index 2be493d6f..83ba1e6d8 100644 --- a/src/rp2_common/hardware_sync_spin_lock/include/hardware/sync/spin_lock.h +++ b/src/rp2_common/hardware_sync_spin_lock/include/hardware/sync/spin_lock.h @@ -10,7 +10,7 @@ #include "pico.h" #include "hardware/sync.h" -// PICO_CONFIG: PICO_USE_SW_SPIN_LOCKS, Use software implementation for spin locks, type=bool, default=1 on RP2350 due to errata, group=hardware_sync +// PICO_CONFIG: PICO_USE_SW_SPIN_LOCKS, Use software implementation for spin locks, type=bool, default=1 on RP2350 due to errata E2, group=hardware_sync #ifndef PICO_USE_SW_SPIN_LOCKS #if PICO_RP2350 #define PICO_USE_SW_SPIN_LOCKS 1 @@ -19,53 +19,93 @@ // PICO_CONFIG: PICO_SPINLOCK_ID_IRQ, Spinlock ID for IRQ protection, min=0, max=31, default=9, group=hardware_sync #ifndef PICO_SPINLOCK_ID_IRQ +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_IRQ 5 +#else #define PICO_SPINLOCK_ID_IRQ 9 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_TIMER, Spinlock ID for Timer protection, min=0, max=31, default=10, group=hardware_sync #ifndef PICO_SPINLOCK_ID_TIMER +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_TIMER 6 +#else #define PICO_SPINLOCK_ID_TIMER 10 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_HARDWARE_CLAIM, Spinlock ID for Hardware claim protection, min=0, max=31, default=11, group=hardware_sync #ifndef PICO_SPINLOCK_ID_HARDWARE_CLAIM +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_HARDWARE_CLAIM 7 +#else #define PICO_SPINLOCK_ID_HARDWARE_CLAIM 11 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_RAND, Spinlock ID for Random Number Generator, min=0, max=31, default=12, group=hardware_sync #ifndef PICO_SPINLOCK_ID_RAND +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_RAND 10 +#else #define PICO_SPINLOCK_ID_RAND 12 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_ATOMIC, Spinlock ID for atomics, min=0, max=31, default=13, group=hardware_sync #ifndef PICO_SPINLOCK_ID_ATOMIC +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_ATOMIC 11 +#else #define PICO_SPINLOCK_ID_ATOMIC 13 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_OS1, First Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=14, group=hardware_sync #ifndef PICO_SPINLOCK_ID_OS1 +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_OS1 18 +#else #define PICO_SPINLOCK_ID_OS1 14 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_OS2, Second Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=15, group=hardware_sync #ifndef PICO_SPINLOCK_ID_OS2 +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_OS2 19 +#else #define PICO_SPINLOCK_ID_OS2 15 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_FIRST, Lowest Spinlock ID in the 'striped' range, min=0, max=31, default=16, group=hardware_sync #ifndef PICO_SPINLOCK_ID_STRIPED_FIRST +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_STRIPED_FIRST 20 +#else #define PICO_SPINLOCK_ID_STRIPED_FIRST 16 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_LAST, Highest Spinlock ID in the 'striped' range, min=0, max=31, default=23, group=hardware_sync #ifndef PICO_SPINLOCK_ID_STRIPED_LAST +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_STRIPED_LAST 25 +#else #define PICO_SPINLOCK_ID_STRIPED_LAST 23 #endif +#endif // PICO_CONFIG: PICO_SPINLOCK_ID_CLAIM_FREE_FIRST, Lowest Spinlock ID in the 'claim free' range, min=0, max=31, default=24, group=hardware_sync #ifndef PICO_SPINLOCK_ID_CLAIM_FREE_FIRST +#if PICO_RP2350 && !PICO_USE_SW_SPIN_LOCKS +#define PICO_SPINLOCK_ID_CLAIM_FREE_FIRST 26 +#else #define PICO_SPINLOCK_ID_CLAIM_FREE_FIRST 24 #endif +#endif #ifdef PICO_SPINLOCK_ID_CLAIM_FREE_END #warning PICO_SPINLOCK_ID_CLAIM_FREE_END has been renamed to PICO_SPINLOCK_ID_CLAIM_FREE_LAST diff --git a/src/rp2_common/pico_status_led/CMakeLists.txt b/src/rp2_common/pico_status_led/CMakeLists.txt index c14e607bf..cdc30bdf0 100644 --- a/src/rp2_common/pico_status_led/CMakeLists.txt +++ b/src/rp2_common/pico_status_led/CMakeLists.txt @@ -18,5 +18,3 @@ if (PICO_CYW43_SUPPORTED) ) endif() pico_generate_pio_header(pico_status_led ${CMAKE_CURRENT_LIST_DIR}/ws2812.pio) - -get_target_property(OUT pico_status_led LINK_LIBRARIES) diff --git a/src/rp2_common/pico_status_led/include/pico/status_led.h b/src/rp2_common/pico_status_led/include/pico/status_led.h index be7c0bd49..4870bc9b6 100644 --- a/src/rp2_common/pico_status_led/include/pico/status_led.h +++ b/src/rp2_common/pico_status_led/include/pico/status_led.h @@ -109,7 +109,7 @@ bool status_led_init(void); * * \param context An \ref async_context used to communicate with the status LED (e.g. on Pico W or Pico 2 W) * \return Returns true if the LED was initialized successfully, otherwise false on failure - * \sa status_led_init_with_context + * \sa status_led_init */ bool status_led_init_with_context(struct async_context *context);