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
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