diff --git a/.gitignore b/.gitignore index c0126732..45dab601 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ /util/nvmutil/nvm /biosutilities/ /uefitool/ +/util-fw/ diff --git a/resources/dependencies/arch b/resources/dependencies/arch index a33fdde9..681b5923 100755 --- a/resources/dependencies/arch +++ b/resources/dependencies/arch @@ -6,5 +6,6 @@ doxygen acpica gdb flex bison base-devel git openssl gcc-ada autogen help2man \ base-devel bison flex ttf-dejavu texinfo rsync python libusb xz gawk \ device-mapper fuse2 gettext freetype2 base-devel libpciaccess pciutils zlib \ libftdi base-devel libusb innoextract p7zip unar cmake swig dtc \ +arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib cmake \ " aur_notice="unifont bdf-unifont" diff --git a/resources/dependencies/debian b/resources/dependencies/debian index 5a583f14..370afd5f 100755 --- a/resources/dependencies/debian +++ b/resources/dependencies/debian @@ -15,4 +15,5 @@ python3-pkg-resources python3-pycryptodome python3-pyelftools swig uuid-dev \ build-essential libpci-dev pciutils zlib1g-dev libftdi-dev build-essential \ libusb-1.0-0-dev libusb-1.0 libusb-1.0-0-dev libusb-dev cmake \ innoextract p7zip p7zip-full unar \ +binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi cmake \ " diff --git a/resources/dependencies/fedora38 b/resources/dependencies/fedora38 index 6f8f9e93..a6cd9c32 100755 --- a/resources/dependencies/fedora38 +++ b/resources/dependencies/fedora38 @@ -7,4 +7,5 @@ bzip2 unifont-fonts unifont unifont-ttf-fonts autogen help2man gcc bison flex \ dejavu-fonts-all texinfo rsync python3 libusb xz gawk device-mapper fuse gettext \ freetype-devel intltool libselinux-devel gcc pciutils-devel zlib-devel \ libftdi-devel gcc libusb-devel cmake innoextract p7zip p7zip-plugins unar \ +arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib cmake \ " diff --git a/resources/dependencies/parabola b/resources/dependencies/parabola index 4e21ed47..2d4d3cad 100755 --- a/resources/dependencies/parabola +++ b/resources/dependencies/parabola @@ -7,4 +7,5 @@ base-devel bison flex ttf-dejavu texinfo rsync python libusb xz gawk \ device-mapper fuse2 gettext freetype2 base-devel libpciaccess pciutils zlib \ libftdi base-devel libusb innoextract p7zip unar swig dtc cmake unifont-utils \ bdf-unifont \ +arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib cmake \ " diff --git a/resources/dependencies/ubuntu2004 b/resources/dependencies/ubuntu2004 index 935e1464..4649aa9e 100755 --- a/resources/dependencies/ubuntu2004 +++ b/resources/dependencies/ubuntu2004 @@ -15,4 +15,5 @@ python3-pkg-resources python3-pycryptodome python3-pyelftools swig uuid-dev \ build-essential libpci-dev pciutils zlib1g-dev libftdi-dev build-essential \ libusb-1.0-0-dev libusb-1.0 libusb-1.0-0-dev libusb-dev cmake \ innoextract p7zip p7zip-full unar \ +binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi cmake \ " diff --git a/resources/dependencies/void b/resources/dependencies/void index 41827cc2..47da31b4 100755 --- a/resources/dependencies/void +++ b/resources/dependencies/void @@ -6,5 +6,6 @@ ncurses doxygen acpica-utils gdb flex bison base-devel git openssl gcc-ada \ ncurses-devel font-unifont-bdf autogen help2man base-devel bison flex \ dejavu-fonts-ttf texinfo rsync python3 libusb xz gawk device-mapper fuse gettext \ gettext-devel freetype base-devel libpciaccess pciutils zlib libftdi1 \ -base-devel libusb cmake innoextract p7zip unar \ +base-devel libusb cmake innoextract p7zip unar cross-arm-none-eabi-binutils \ +cross-arm-none-eabi-gcc cross-arm-none-eabi-newlib cmake \ " diff --git a/resources/git/revisions b/resources/git/revisions index eec8d038..a0b65597 100644 --- a/resources/git/revisions +++ b/resources/git/revisions @@ -75,3 +75,23 @@ loc: uefitool url: https://github.com/LongSoft/UEFITool } + +{rpi-pico-sdk}{ + rev: 6a7db34ff63345a7badec79ebea3aaef1712f374 + loc: util-fw/pico-sdk + url: https://github.com/raspberrypi/pico-sdk + depend: rpi-pico-tinyusb +} + +{rpi-pico-tinyusb}{ + rev: 86c416d4c0fb38432460b3e11b08b9de76941bf5 + loc: util-fw/pico-sdk/lib/tinyusb + url: https://github.com/hathach/tinyusb.git +} + +{rpi-pico-serprog}{ + rev: c8c16e9c11fe9e5b7230ff358f79de3f1951e1d9 + loc: util-fw/pico-serprog + url: https://codeberg.org/Riku_V/pico-serprog/ + depend: rpi-pico-sdk +} diff --git a/script/build/rpi-pico/serprog b/script/build/rpi-pico/serprog new file mode 100755 index 00000000..15a20a22 --- /dev/null +++ b/script/build/rpi-pico/serprog @@ -0,0 +1,48 @@ +#!/usr/bin/env sh + +# compile the serprog firmware for raspberry pi pico +# +# Copyright (C) 2023 Riku Viitanen +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +. "include/err.sh" + +serprog_release_dir=$(pwd)/bin/serprog +sdk_dir=$(pwd)/util-fw/pico-sdk +src_dir=$(pwd)/util-fw/pico-serprog + +main() +{ + printf "Compiling serprog firmware for Raspberry Pi Pico\n" + + [ -d "${src_dir}/" ] || ./update project repo rpi-pico-serprog \ + || err "fetch rpi-pico-serprog failed!\n" + + cd ${src_dir} + cmake -DPICO_SDK_PATH=${sdk_dir} . + make + + mkdir -p ${serprog_release_dir} + mv pico_serprog.uf2 ${serprog_release_dir}/rpi-pico-serprog.uf2 \ + || err "rpi-pico serprog build failed!\n" + + printf "\nDone!\n" +} + +main $@ diff --git a/script/update/project/repo b/script/update/project/repo index 91696586..336fa84a 100755 --- a/script/update/project/repo +++ b/script/update/project/repo @@ -84,6 +84,7 @@ clone_project() [ ! -d "${location}" ] || \ rm -Rf "${location}" || \ fail "clone_project: Can't remove directory '${location}'" + mkdir -p ${location%/*} mv "${tmp_dir}" "${location}" || \ fail "clone_project: could not copy temp file to destination" }