This is a library to use with the Raspberry Pi Pico boards using the RP2040 microprocessor, which provides an event-driven architecture for interacting with devices in C. The API documentation is available here:
The library consists of fuse
which provides data structures and methods for memory pools,
hash maps, linked lists and strings, plus picofuse
which contains device- and platform-
specific code for the Raspberry Pi Pico. It's possible to use fuse
on its own, but
picofuse
depends on fuse
.
The following sections provide more information on how to use this library:
The library is published under the Apache license, so feel free to use and fork it, but please acknowledge the source in any forks. See the LICENSE file for more information.
On Fedora Linux, the following packages need installed:
sudo dnf install cmake gcc-arm-linux-gnu \
arm-none-eabi-gcc-cs-c++ \
arm-none-eabi-gcc-cs \
arm-none-eabi-binutils \
arm-none-eabi-newlib \
libusb1-devel
On Debian Linux, the following packages need to be installed:
sudo apt install cmake gcc-arm-none-eabi libusb-1.0-0-dev
On Mac with homebrew, the following packages need installed:
brew install make cmake libusb git
brew install --cask gcc-arm-embedded
If you haven't done so already, create an ssh key and add it to your github account.
Download and configure the toolchain using the following set of commands in your terminal:
install -d ${HOME}/projects && cd ${HOME}/projects
git clone [email protected]:mutablelogic/pico-fuse.git
cd pico-fuse
PICO_BOARD=pico_w make config
make picotool
If this completes successfully then congratulations. If you are targetting a different board then the Pico W then here are some values for PICO_BOARD you can use instead:
Configuration Command | Board |
---|---|
PICO_BOARD=pico make config |
Raspberry Pi Pico |
PICO_BOARD=pico_w make config |
Raspberry Pi Pico W |
PICO_BOARD=pimoroni_picolipo_4mb make config |
Pimironi Lipo with 4MB flash |
PICO_BOARD=pimoroni_picolipo_16mb make config |
Pimironi Lipo with 16MB flash |
Whenever you target a different board, use make clean
before make picotool
and make config
.
- Pico SDK
- Repository https://github.com/raspberrypi/pico-sdk
- Documentation (in PDF) https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf