Skip to content

An event-driven architecture library for interacting with a RP2040 Pico host.

License

Notifications You must be signed in to change notification settings

mutablelogic/pico-fuse

Repository files navigation

pico-fuse

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.

Dependencies

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.

Configuration

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.

References