I recently purchased a PicoSystem by Pimoroni with the intention of immediately diving in and programming a game; but, I have to admit I got distracted by how much fun Super Square Bros. is to play right out of the box. The overall system feels great as a small portable in the style of the 80s portable LCD based game systems. I’m noticing that the form factor of the system is a bit small for me from a purely functional perspective; but, again, I really like the overall aesthetic and the case is absolutely stellar.

As much fun as I’m having playing the shipped game, I decided the weekend was definitely the time to get a small hello world up and running. I’m using Vagrant in order to keep my dev environment consistent and source controlled. Starting from the guide on Pimoroni, I ran into this issue:
CMake Error at examples/snake/CMakeLists.txt:10 (find_package):
By not providing "FindPICOSYSTEM.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"PICOSYSTEM", but CMake did not find one.
Could not find a package configuration file provided by "PICOSYSTEM" with
any of the following names:
PICOSYSTEMConfig.cmake
picosystem-config.cmake
Add the installation prefix of "PICOSYSTEM" to CMAKE_PREFIX_PATH or set
"PICOSYSTEM_DIR" to a directory containing one of the above files. If
"PICOSYSTEM" provides a separate development package or SDK, be sure it has
been installed.
-- Configuring incomplete, errors occurred!
Which has a workaround listed in issue 4 on the PicoSystem SDK project of providing the path to the PicoSystem SDK via PICOSYSTEM_DIR
like so:
git clone https://github.com/pimoroni/picosystem.git ~/picosystem
mkdir ~/picosystem/build
cd picosystem/build
cmake -DPICOSYSTEM_DIR:PATH=~/picosystem ..
make
The next error I hit was:
default: CMake Error at CMakeLists.txt:2 (project):
default: No CMAKE_CXX_COMPILER could be found.
default:
default: Tell CMake where to find the compiler by setting either the environment
default: variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
default: to the compiler, or to the compiler name if it is in the PATH.
default:
default: -- Configuring incomplete, errors occurred!
This was addressed by revisiting the initial package installs and adding build-essential
like so:
apt-get -y install build-essential \
cmake \
gcc-arm-none-eabi \
libnewlib-arm-none-eabi \
libstdc++-arm-none-eabi-newlib
At this point, the snake example built and I was able to transfer it to my PicoSystem in DFU mode. I’m including the current working version of my Vagrantfile below in case it is useful to others:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get upgrade -y
# pico requirements
apt-get -y install build-essential \
cmake \
gcc-arm-none-eabi \
libnewlib-arm-none-eabi \
libstdc++-arm-none-eabi-newlib
SHELL
config.vm.provision "shell", privileged: false, env: {"PICO_SDK_PATH" => "~vagrant/pico-sdk"}, inline: <<-SHELL
# pico sdk
git clone https://github.com/raspberrypi/pico-sdk.git ~/pico-sdk
echo 'export PICO_SDK_PATH="~vagrant/pico-sdk"' >> ~/.bashrc
cd ~/pico-sdk && \
git submodule update --init
# pico system
git clone https://github.com/pimoroni/picosystem.git ~/picosystem
mkdir ~/picosystem/build
cd ~/picosystem/build && \
cmake -DPICOSYSTEM_DIR:PATH=~/picosystem .. && \
make
SHELL
end