# raspberrypi/pico-sdk

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/raspberrypi-pico-sdk).**

4,651 stars · 1,204 forks · C · bsd-3-clause

## Links

- GitHub: https://github.com/raspberrypi/pico-sdk
- awesome-repositories: https://awesome-repositories.com/repository/raspberrypi-pico-sdk.md

## Description

The pico-sdk is a software development kit for creating C and C++ applications on RP2040 and RP2350 hardware platforms. It functions as an embedded development kit that provides hardware abstraction layers and drivers to interface with microcontroller peripherals and registers.

The project utilizes a CMake build system to manage the compilation of source code into multiple binary formats, including UF2, ELF, and HEX images. This environment coordinates the build and link processes to ensure the resulting firmware is correctly tailored for the target hardware.

The toolkit covers embedded hardware interfacing and network integration, allowing for the implementation of wireless communication protocols. It also includes tools for managing board-specific configurations, mapping software logic to physical pinouts and wireless hardware.

## Tags

### Education & Learning Resources

- [Microcontroller Development Platforms](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/embedded-systems/microcontroller-development-platforms.md) — Provides a comprehensive SDK and development environment for creating applications on RP2040 and RP2350 platforms.

### Hardware & IoT

- [Microcontroller SDKs](https://awesome-repositories.com/f/hardware-iot/microcontroller-sdks.md) — A set of C/C++ libraries and build tools for developing applications on RP2040 and RP2350 based hardware.
- [Embedded Build Systems](https://awesome-repositories.com/f/hardware-iot/embedded-build-systems.md) — Provides a build engine specialized for compiling source code into firmware tailored for microcontroller targets.
- [Embedded Development Kits](https://awesome-repositories.com/f/hardware-iot/embedded-development-kits.md) — Provides a full kit of hardware abstraction layers and drivers for microcontroller peripheral and register interaction.
- [Hardware Interfacing](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-interfacing.md) — Provides a C interface for interacting with microcontroller peripherals and registers without manual raw register manipulation. ([source](https://rptl.io/pico-doxygen))
- [Peripheral Hardware Controllers](https://awesome-repositories.com/f/hardware-iot/peripheral-hardware-controllers.md) — Offers APIs for managing hardware peripherals including PWM, timers, and analog converters via software libraries.
- [Board Configuration Profiles](https://awesome-repositories.com/f/hardware-iot/board-configuration-profiles.md) — Provides configuration profiles that map software logic to the physical pinouts and wireless hardware of specific boards.

### Development Tools & Productivity

- [Build Orchestrators](https://awesome-repositories.com/f/development-tools-productivity/build-orchestrators.md) — Implements a CMake-based build system to coordinate compilation pipelines and dependency linking for microcontroller targets.
- [Build Systems](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems.md) — Utilizes a CMake build system to manage the transformation of source code into UF2, ELF, and HEX binaries.

### Operating Systems & Systems Programming

- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-abstraction-layers.md) — Implements a hardware abstraction layer that wraps raw register access in C functions for a portable interface.
- [Linker Script Layouts](https://awesome-repositories.com/f/operating-systems-systems-programming/linker-script-layouts.md) — Defines physical memory placement for code and data sections via linker scripts to ensure correct flash and RAM usage.
- [Firmware Deployment Tooling](https://awesome-repositories.com/f/operating-systems-systems-programming/raspberry-pi-systems-programming/firmware-deployment-tooling.md) — Facilitates the creation and flashing of UF2 or binary images for firmware deployment on Raspberry Pi Pico boards.
- [Firmware Image Generators](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/base-image-distributions/customized-installation-media/os-image-flashing/firmware-image-generators.md) — Packages compiled code into binary images formatted for direct writing to microcontroller hardware flash. ([source](https://cdn.jsdelivr.net/gh/raspberrypi/pico-sdk@master/README.md))

### Programming Languages & Runtimes

- [Build Coordination](https://awesome-repositories.com/f/programming-languages-runtimes/build-coordination.md) — Coordinates the compilation and linking process through configuration files to streamline the firmware build pipeline. ([source](https://rptl.io/pico-doxygen))
- [Microcontroller Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/programming-environments-tooling/go-environments/microcontroller-compilers.md) — Translates C and C++ source code into machine-executable binaries tailored for RP2040 and RP2350 microcontroller architectures. ([source](https://cdn.jsdelivr.net/gh/raspberrypi/pico-sdk@master/README.md))
- [Binary Image Generators](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/multi-target-compilers/binary-format-specifications/binary-image-generators.md) — Produces multiple output formats including ELF, HEX, and UF2 to support various flashing and debugging tools.

### Networking & Communication

- [Network Communication Implementations](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-communication-implementations.md) — Implements networking capabilities and communication functions to connect microcontrollers to a local network. ([source](https://rptl.io/pico-doxygen))
- [Embedded Network Driver Integration](https://awesome-repositories.com/f/networking-communication/network-stacks/embedded-network-driver-integration.md) — Integrates hardware-specific drivers with embedded networking protocol stacks for wireless communication.
