Pico SDK on OSX

Before starting to use Swift to build embedded software, it is essential to install the native SDK for the Raspberry Pico so that we have a basic toolchain installed. In the next post, we’ll see how to use Swift.

In this post we’ll learn how to:

  • Install the Pico SDK
  • Run a native example

Install the Pico SDK

First step:

cd ~
mkdir pico
cd pico

Second step:

git clone -b master https://github.com/raspberrypi/pico-sdk.git

# Set the PICO_SDK_PATH environment variable to where you just cloned the repo.
export PICO_SDK_PATH=/path/to/pico-sdk

cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git

Third step:

# Install cmake
brew install cmake

# Install the arm eabi toolchain
brew install --cask gcc-arm-embedded

xcode-select --install

Fourth step:

git clone https://github.com/pimoroni/pimoroni-pico.git
cd pimoroni-pico
git submodule update --init
mkdir build

Fifth step:

cd build
cmake ..
make

Run a tative example

Create a directory for the project, in this directory create this main.c

#include <stdio.h>
#include "pico/stdlib.h"

int main() {

    const uint led_pin = 25;

    // Initialize LED pin
    gpio_init(led_pin);
    gpio_set_dir(led_pin, GPIO_OUT);

    // Initialize chosen serial port
    stdio_init_all();

    // Loop forever
    while (true) {

        // Blink LED
        printf("Blinking!\r\n");
        gpio_put(led_pin, true);
        sleep_ms(1000);
        gpio_put(led_pin, false);
        sleep_ms(1000);
    }
}

Now the CMakeLists.txt

# Set minimum required version of CMake
cmake_minimum_required(VERSION 3.12)

# Include build functions from Pico SDK
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

# Set name of project (as PROJECT_NAME) and C/C   standards
project(blink C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

# Creates a pico-sdk subdirectory in our project for the libraries
pico_sdk_init()

# Tell CMake where to find the executable source file
add_executable(${PROJECT_NAME}
    main.c
)

# Create map/bin/hex/uf2 files
pico_add_extra_outputs(${PROJECT_NAME})

# Link to pico_stdlib (gpio, time, etc. functions)
target_link_libraries(${PROJECT_NAME}
    pico_stdlib
)

# Enable usb output, disable uart output
pico_enable_stdio_usb(${PROJECT_NAME} 1)
pico_enable_stdio_uart(${PROJECT_NAME} 0)

To compile:

mkdir build
cd build
cmake ..
make

After that, we should have the file blink.uf2 in the build directory. Connect your Pico to the computer, open it like a pendrive, and copy the file. Reboot the Pico; it should now blink.

External source that i used for this post:

https://www.digikey.com/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-1-blink-and-vs-code/7102fb8bca95452e9df6150f39ae8422

https://forums.raspberrypi.com/viewtopic.php?t=357243

https://github.com/pimoroni/pimoroni-pico/blob/main/setting-up-the-pico-sdk.md

2 thoughts on “Pico SDK on OSX”

  1. Thanks for this to-the-point writeup – one thing where I’m doubting the process is where you say ‘run a tative example’ – how does the directory structure look? What is the proper place to ;create a directory for the project’

    Reply

Leave a Comment