From 6f830a02501216c70e9ac6004d46722a90ccebcb Mon Sep 17 00:00:00 2001 From: aiminick Date: Sat, 10 Jul 2021 21:07:24 +0800 Subject: [PATCH] Create pico_setup.sh --- docs/notes/pico/pico_setup.sh | 186 ++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 docs/notes/pico/pico_setup.sh diff --git a/docs/notes/pico/pico_setup.sh b/docs/notes/pico/pico_setup.sh new file mode 100644 index 0000000..4a928d7 --- /dev/null +++ b/docs/notes/pico/pico_setup.sh @@ -0,0 +1,186 @@ +#!/bin/bash + +# Exit on error +set -e + +if grep -q Raspberry /proc/cpuinfo; then + echo "Running on a Raspberry Pi" +else + echo "Not running on a Raspberry Pi. Use at your own risk!" +fi + +# Number of cores when running make +JNUM=4 + +# Where will the output go? +OUTDIR="$(pwd)/pico" + +# Install dependencies +GIT_DEPS="git" +SDK_DEPS="cmake gcc-arm-none-eabi gcc g++" +OPENOCD_DEPS="gdb-multiarch automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev" +# Wget to download the deb +VSCODE_DEPS="wget" +UART_DEPS="minicom" + +# Build full list of dependencies +DEPS="$GIT_DEPS $SDK_DEPS" + +if [[ "$SKIP_OPENOCD" == 1 ]]; then + echo "Skipping OpenOCD (debug support)" +else + DEPS="$DEPS $OPENOCD_DEPS" +fi + +if [[ "$SKIP_VSCODE" == 1 ]]; then + echo "Skipping VSCODE" +else + DEPS="$DEPS $VSCODE_DEPS" +fi + +echo "Installing Dependencies" +sudo apt update +sudo apt install -y $DEPS + +echo "Creating $OUTDIR" +# Create pico directory to put everything in +mkdir -p $OUTDIR +cd $OUTDIR + +# Clone sw repos +GITHUB_PREFIX="https://github.com/raspberrypi/" +GITHUB_SUFFIX=".git" +SDK_BRANCH="master" + +for REPO in sdk examples extras playground +do + DEST="$OUTDIR/pico-$REPO" + + if [ -d $DEST ]; then + echo "$DEST already exists so skipping" + else + REPO_URL="${GITHUB_PREFIX}pico-${REPO}${GITHUB_SUFFIX}" + echo "Cloning $REPO_URL" + git clone -b $SDK_BRANCH $REPO_URL + + # Any submodules + cd $DEST + git submodule update --init + cd $OUTDIR + + # Define PICO_SDK_PATH in ~/.bashrc + VARNAME="PICO_${REPO^^}_PATH" + echo "Adding $VARNAME to ~/.bashrc" + echo "export $VARNAME=$DEST" >> ~/.bashrc + export ${VARNAME}=$DEST + fi +done + +cd $OUTDIR + +# Pick up new variables we just defined +source ~/.bashrc + +# Build a couple of examples +cd "$OUTDIR/pico-examples" +mkdir build +cd build +cmake ../ -DCMAKE_BUILD_TYPE=Debug + +for e in blink hello_world +do + echo "Building $e" + cd $e + make -j$JNUM + cd .. +done + +cd $OUTDIR + +# Picoprobe and picotool +for REPO in picoprobe picotool +do + DEST="$OUTDIR/$REPO" + REPO_URL="${GITHUB_PREFIX}${REPO}${GITHUB_SUFFIX}" + git clone $REPO_URL + + # Build both + cd $DEST + mkdir build + cd build + cmake ../ + make -j$JNUM + + if [[ "$REPO" == "picotool" ]]; then + echo "Installing picotool to /usr/local/bin/picotool" + sudo cp picotool /usr/local/bin/ + fi + + cd $OUTDIR +done + +if [ -d openocd ]; then + echo "openocd already exists so skipping" + SKIP_OPENOCD=1 +fi + +if [[ "$SKIP_OPENOCD" == 1 ]]; then + echo "Won't build OpenOCD" +else + # Build OpenOCD + echo "Building OpenOCD" + cd $OUTDIR + # Should we include picoprobe support (which is a Pico acting as a debugger for another Pico) + INCLUDE_PICOPROBE=1 + OPENOCD_BRANCH="rp2040" + OPENOCD_CONFIGURE_ARGS="--enable-ftdi --enable-sysfsgpio --enable-bcm2835gpio" + if [[ "$INCLUDE_PICOPROBE" == 1 ]]; then + OPENOCD_BRANCH="picoprobe" + OPENOCD_CONFIGURE_ARGS="$OPENOCD_CONFIGURE_ARGS --enable-picoprobe" + fi + + git clone "${GITHUB_PREFIX}openocd${GITHUB_SUFFIX}" -b $OPENOCD_BRANCH --depth=1 + cd openocd + ./bootstrap + ./configure $OPENOCD_CONFIGURE_ARGS + make -j$JNUM + sudo make install +fi + +cd $OUTDIR + +# Liam needed to install these to get it working +EXTRA_VSCODE_DEPS="libx11-xcb1 libxcb-dri3-0 libdrm2 libgbm1 libegl-mesa0" +if [[ "$SKIP_VSCODE" == 1 ]]; then + echo "Won't include VSCODE" +else + if [ -f vscode.deb ]; then + echo "Skipping vscode as vscode.deb exists" + else + echo "Installing VSCODE" + if uname -m | grep -q aarch64; then + VSCODE_DEB="https://aka.ms/linux-arm64-deb" + else + VSCODE_DEB="https://aka.ms/linux-armhf-deb" + fi + + wget -O vscode.deb $VSCODE_DEB + sudo apt install -y ./vscode.deb + sudo apt install -y $EXTRA_VSCODE_DEPS + + # Get extensions + code --install-extension marus25.cortex-debug + code --install-extension ms-vscode.cmake-tools + code --install-extension ms-vscode.cpptools + fi +fi + +# Enable UART +if [[ "$SKIP_UART" == 1 ]]; then + echo "Skipping uart configuration" +else + sudo apt install -y $UART_DEPS + echo "Disabling Linux serial console (UART) so we can use it for pico" + sudo raspi-config nonint do_serial 2 + echo "You must run sudo reboot to finish UART setup" +fi