‹ Reports
The Dispatch

OSS Report: raspberrypi/pico-sdk


Raspberry Pi Pico SDK Faces Stability Challenges Amidst Active Development

The Raspberry Pi Pico SDK, a comprehensive development kit for RP-series microcontrollers, is grappling with stability issues in I2C and SPI communications, as evidenced by recent user-reported problems, while actively expanding its feature set and hardware support.

Recent Activity

Recent issues and pull requests (PRs) reveal recurring themes of hardware communication challenges and dependency management complexities. Notable issues include I2C slave functionality (#1100) and UART communication (#1144), which suggest potential reliability problems. PRs such as #1865 address library installation path issues, while #1850 enhances firmware update safety. These activities indicate ongoing efforts to stabilize the SDK and enhance its robustness.

Development Team Activities

Of Note

  1. I2C and SPI Communication Failures: Persistent issues suggest underlying protocol handling weaknesses that need addressing for improved reliability.
  2. Dependency Management with Bazel: Challenges in managing dependencies highlight the need for more robust integration processes within the SDK.
  3. Expansion of Hardware Support: New board definitions and features indicate a proactive approach to supporting emerging hardware platforms.
  4. Community Engagement: Active participation from contributors reflects strong community involvement in the project's evolution.
  5. Documentation Enhancements: Continuous updates to documentation emphasize the importance of clear guidance for developers using the SDK.

Quantified Reports

Quantify Issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 9 9 10 8 2
30 Days 44 60 93 42 4
90 Days 81 91 167 73 5
1 Year 242 180 763 145 6
All Time 945 759 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Quantify commits



Quantified Commit Activity Over 30 Days

Developer Avatar Branches PRs Commits Files Changes
Graham Sanderson 3 5/4/0 13 312 417102
Andrew Scheller (lurch) 3 7/6/0 13 61 2686
None (will-v-pi) 2 11/8/2 9 10 163
Scott Shawcroft (tannewt) 1 1/1/0 1 1 85
J (jaguilar) 1 3/2/1 2 4 82
Nikhil Dabas (ndabas) 1 1/1/0 1 1 45
Peter Harper (peterharperuk) 1 3/2/2 2 5 20
Taylor Cramer (cramertj) 1 1/1/0 1 3 17
David Goffredo (dgoffredo) 1 1/1/0 1 1 2
Ikko Eltociear Ashimine (eltociear) 1 1/1/0 1 1 2
Alberto Udrea (U-alb) 0 1/0/1 0 0 0
Jonathan Suite (ai6aj) 0 0/0/1 0 0 0
Dranoel (Dranoel2) 0 1/0/0 0 0 0
Gregory Neverov (gneverov) 0 1/0/0 0 0 0
None (jming912) 0 0/0/1 0 0 0
Stephen Street (sgstreet) 0 1/0/2 0 0 0
None (TheRaf974) 0 0/0/1 0 0 0
Gabriel Marcano (gemarcano) 0 0/0/1 0 0 0
None (shabaz123) 0 1/0/1 0 0 0
Giampiero Baggiani (giampiero7) 0 1/0/0 0 0 0
Sylwester (DatanoiseTV) 0 1/0/0 0 0 0
Earle F. Philhower, III (earlephilhower) 0 1/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

The Raspberry Pi Pico SDK repository has experienced significant activity, with a total of 186 open issues. Recent issues reflect a variety of challenges faced by developers, including hardware integration problems, API enhancements, and requests for additional features. Notably, several issues indicate recurring themes related to I2C and SPI communication failures, which could imply underlying stability concerns in the SDK's handling of these protocols.

Several issues have drawn attention due to their implications for the usability of the SDK. For instance, issues related to I2C slave functionality (#1100) and UART communication (#1144) highlight potential reliability problems that could affect developers' ability to implement robust applications. Additionally, there are multiple requests for enhancements to existing APIs, such as adding support for condition variables (#1093) and improving the ADC module (#1455), indicating a strong demand for more comprehensive functionality.

Issue Details

Most Recently Created Issues

  1. Issue #1861: assertion "!(num < MIN_EXCEPTION_NUM || num >= MAX_EXCEPTION_NUM)" failed

    • Created: 3 days ago
    • Priority: High
    • Status: Open
    • Details: An assertion failure occurs when running FreeRTOS with certain parameters.
  2. Issue #1853: bazel: including bootloader targets in link_extra_lib results in a dependency cycle

    • Created: 5 days ago
    • Priority: Medium
    • Status: Open
    • Details: A dependency cycle is created when linking bootloader targets in Bazel.
  3. Issue #1849: TinyUSB submodule needs a bump in order to get Pico-PIO-USB working

    • Created: 5 days ago
    • Priority: Medium
    • Status: Open
    • Details: The TinyUSB submodule requires an update to ensure compatibility with Pico-PIO-USB.
  4. Issue #1848: Pico 2 board intermittently does not re-enumerate after programming with picotool

    • Created: 6 days ago
    • Priority: High
    • Status: Open
    • Details: The Pico 2 board fails to reliably re-enumerate after programming.
  5. Issue #1842: boot2_name missing in UF2 when compiled with sdk 2.0

    • Created: 7 days ago
    • Priority: Medium
    • Status: Open
    • Details: A custom PCB based on RP2040 fails to start correctly due to missing boot information in the UF2 file.

Most Recently Updated Issues

  1. Issue #1842

    • Last updated 6 days ago.
  2. Issue #1848

    • Last updated 6 days ago.
  3. Issue #1853

    • Last updated 5 days ago.
  4. Issue #1861

    • Last updated 3 days ago.

Analysis of Themes and Commonalities

The recent issues indicate several common themes:

  • Hardware Communication Issues: Multiple reports regarding I2C and SPI communication failures suggest that developers are facing challenges when integrating these protocols into their applications.
  • Dependency Management Problems: Issues related to Bazel and linking dependencies highlight complexities in managing project dependencies effectively within the SDK.
  • Compatibility and Integration Requests: There is a strong demand for updates to existing libraries (e.g., TinyUSB) to ensure compatibility with newer features or external libraries like Pico-PIO-USB.
  • User Experience Enhancements: Requests for additional API features indicate that users are looking for more flexibility and control over hardware interactions, particularly regarding interrupts and GPIO management.

Overall, the current state of open issues reflects both the active engagement of the developer community and the ongoing need for improvements in the SDK's robustness and usability.

Report On: Fetch pull requests



Overview

The dataset contains a comprehensive list of pull requests (PRs) for the Raspberry Pi Pico SDK, including both open and closed PRs. The analysis focuses on the themes, commonalities, and notable aspects of these PRs, highlighting the ongoing development and improvements in the SDK.

Summary of Pull Requests

Open Pull Requests

  1. PR #1865: Use lib instead of CMAKE_INSTALL_LIBDIR for pioasm install

    • Created: 2 days ago
    • Significance: Addresses an issue with CMake's handling of library installation paths, ensuring compatibility with find_package calls.
  2. PR #1850: Add TBYB safe rom_pick_ab_partition function

    • Created: 5 days ago
    • Significance: Enhances safety during firmware updates by preserving critical flash addresses, preventing potential failures during updates.
  3. PR #1845: Update extract configs

    • Created: 6 days ago
    • Significance: Improves config extraction scripts to support multiple chips, ensuring better compatibility and usability.
  4. PR #1822: Improve best_effort_wfe_or_timeout

    • Created: 11 days ago
    • Significance: Fixes a race condition in alarm handling that could lead to incorrect timeout behavior.
  5. PR #1816: Changes for pico2_w

    • Created: 12 days ago
    • Significance: Introduces changes specific to the Pico 2 W board, indicating ongoing hardware support.
  6. PR #1811: Update i2c_slave.c: clock stretching comment fix

    • Created: 12 days ago
    • Significance: Corrects documentation regarding I2C clock stretching behavior.
  7. PR #1795: Fixes to picolibc_interface

    • Created: 15 days ago
    • Significance: Addresses compatibility issues with the C library interface.
  8. PR #1794: Fix typo in documentation of PICO_RAND_ENTROPY_SRC_TRNG

    • Created: 15 days ago
    • Significance: Corrects documentation discrepancies regarding hardware TRNG usage.
  9. PR #1787: Add RP2350 PicoADK variant

    • Created: 17 days ago
    • Significance: Expands board support by adding a new variant for RP2350.
  10. PR #1786: Fix minor unused/uninitialized warnings from GCC 12.3.0

    • Created: 17 days ago
    • Significance: Cleans up code to eliminate compiler warnings, improving code quality.

Closed Pull Requests

  1. PR #1867: Small pico_pre_load_platform.cmake tweak

    • Merged 1 day ago; improves accuracy of messages in platform configuration.
  2. PR #1866: Fix #1861 - incorrect assertion on MAX_EXCEPTION_NUM

    • Merged 1 day ago; corrects logic in exception handling code.
  3. PR #1864: Fix assert in gpio_set_irq_enabled

    • Merged 2 days ago; resolves an assertion issue for GPIO interrupts.
  4. PR #1863: Workaround gcc/newlib issue on Ubuntu 24

    • Merged 2 days ago; addresses compatibility issues with the GCC toolchain.
  5. PR #1859: Add build-essential to README command line install

    • Merged 3 days ago; updates installation instructions for better clarity.
  6. PR #1858: Reorder pins in bi_pins_with_names to be correct

    • Merged 3 days ago; fixes pin ordering issues in binary info structures.
  7. PR #1857: Fix stdio_usb with reset interface disabled on Windows

    • Merged 1 day ago; resolves USB recognition issues on Windows platforms.
  8. PR #1856: Correct flushing of the SMx_SHIFTCTRL FIFOs

    • Not merged; proposes changes to FIFO control logic but did not pass review.
  9. Other notable closed PRs include fixes for documentation errors, enhancements to existing functionality, and updates to maintain compatibility across various platforms and toolchains.

Analysis of Pull Requests

The pull requests reflect a robust development cycle within the Raspberry Pi Pico SDK project, showcasing active engagement from contributors and a focus on enhancing functionality, fixing bugs, and improving documentation.

Themes and Commonalities

  • Bug Fixes and Improvements: A significant number of PRs are dedicated to fixing bugs or improving existing features (e.g., PRs #1864, #1866). This indicates a strong commitment to maintaining code quality and addressing user-reported issues promptly.

  • Enhancements for New Hardware Support: Several PRs introduce support for new hardware variants (e.g., PRs #1787 and #1816), showcasing the project's adaptability as new devices are released or existing ones are updated.

  • Documentation Updates and Clarifications: Many PRs focus on improving documentation clarity (e.g., PRs #1794, #1811). This is crucial for user experience as it helps developers understand how to use the SDK effectively.

  • Community Engagement and Collaboration: The discussions within PR comments reveal a collaborative environment where contributors actively engage in code reviews, provide suggestions, and refine each other's work (e.g., discussions around PRs #1835 and #1821).

Notable Anomalies

  • The presence of several long-standing open PRs (e.g., PR #1495) suggests that some features may be under consideration but have not yet been integrated into the main branch due to potential conflicts or lack of consensus among maintainers.

  • There is a noticeable trend towards addressing compiler-specific issues (e.g., PRs related to GCC warnings), which highlights the importance of cross-platform compatibility in embedded systems development.

Lack of Recent Merge Activity

While there is a steady flow of new contributions, some older PRs remain unmerged or have been converted into drafts without clear resolutions (e.g., PRs like #1495). This could indicate resource constraints or prioritization challenges within the development team.

In summary, the pull request activity within the Raspberry Pi Pico SDK reflects a dynamic project environment focused on continuous improvement and community involvement while also facing challenges typical of open-source software development such as managing contributions and ensuring timely merges.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Their Recent Activities

1. Graham Sanderson (kilograham)

  • Recent Commits: 13 commits with significant changes across multiple files.
  • Key Activities:
    • Released SDK version 2.0.0.
    • Fixed various bugs including issues with hardware_alarm_get_irq_num and CMSIS IRQ regressions.
    • Made improvements to the Bazel build system, particularly for Pico-W support.
    • Addressed documentation typos and improved Doxygen comments.
  • Collaborations: Engaged with multiple team members on various fixes and enhancements.

2. Andrew Scheller (lurch)

  • Recent Commits: 13 commits focused on bug fixes and enhancements.
  • Key Activities:
    • Tweaked board header checks to support both RP2040 and RP2350 boards.
    • Worked on improving the configuration extraction scripts for better compatibility with multiple chips.
    • Made small adjustments to Doxygen documentation.
  • Collaborations: Frequently collaborated with Graham Sanderson on SDK improvements.

3. Will Vinnicombe (will-v-pi)

  • Recent Commits: 9 commits addressing various bugs and enhancements.
  • Key Activities:
    • Fixed issues related to stdio_usb functionality on Windows.
    • Added board definitions for new hardware (Adafruit Feather 2350).
    • Worked on disabling interrupts during certain operations for stability.
  • Collaborations: Collaborated with Graham Sanderson and Andrew Scheller on several fixes.

4. Peter Harper (peterharperuk)

  • Recent Commits: 2 commits involving minor fixes and updates.
  • Key Activities:
    • Addressed bugs in GPIO interrupt handling and updated documentation.
  • Collaborations: Worked closely with Graham Sanderson on various SDK features.

5. Taylor Cramer (cramertj)

  • Recent Commits: 1 commit focused on fixing compilation bugs in the Bazel build system for Pico-W support.

6. Nikhil Dabas (ndabas)

  • Recent Commits: 1 commit enhancing the makefsdata.py script for valid variable names.

7. J (jaguilar)

  • Recent Commits: 2 commits addressing build issues in the Bazel system.

Additional Contributors

Other contributors like dgoffredo, eltociear, and tannewt have made minor contributions focusing on documentation fixes and board definitions.

Patterns, Themes, and Conclusions

  • Active Development: The team is actively working on improving the SDK with a focus on bug fixes, documentation enhancements, and support for new hardware platforms.
  • Collaboration: There is a strong collaborative effort among team members, particularly between Graham Sanderson, Andrew Scheller, and Will Vinnicombe, indicating a cohesive team dynamic.
  • Focus Areas: Recent activities show a clear emphasis on stabilizing the SDK, enhancing compatibility with new hardware, and refining build processes (especially with Bazel).
  • Community Engagement: The ongoing contributions reflect a commitment to maintaining high-quality standards in the SDK, which is crucial given its popularity within the developer community.

Overall, the development team demonstrates a proactive approach in addressing issues while expanding the capabilities of the Raspberry Pi Pico SDK.