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://forums.raspberrypi.com/viewtopic.php?t=357243
https://github.com/pimoroni/pimoroni-pico/blob/main/setting-up-the-pico-sdk.md
2 comments
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’
Ok, i’ll explain better, i’ll update the post. Thanks