From 10753dcc3f2fd7c8b0ba0c49e26e05ed884fae67 Mon Sep 17 00:00:00 2001 From: Will Sloan <will@848.email> Date: Sun, 12 Jan 2025 20:29:44 -0500 Subject: [PATCH 1/2] Modify linux flasher build to compile for ARM This is needed for the flasher to be usable on the Raspberry Pi (with a 32-bit userspace). --- .cargo/config.toml | 4 ++++ .gitlab-ci.yml | 13 +++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index de8eca6..0e39871 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -9,3 +9,7 @@ target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU) [target.'cfg(all(target_arch = "arm", target_os = "none"))'] runner = "arm-none-eabi-gdb -x openocd.gdb" + +[target.arm-unknown-linux-gnueabihf] +linker = "arm-linux-gnueabihf-gcc" + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index deead84..ae88693 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,9 +6,10 @@ stages: - build-flasher before_script: - - apt update && apt install -y binutils-arm-none-eabi gcc-mingw-w64-x86-64-win32 + - apt update && apt install -y binutils-arm-none-eabi gcc-mingw-w64-x86-64-win32 gcc-arm-linux-gnueabihf - rustup target add thumbv7em-none-eabihf - - rustup target add x86_64-pc-windows-gnu + - rustup target add arm-unknown-linux-gnueabihf # Raspberry Pi + - rustup target add x86_64-pc-windows-gnu # Windows PC - rustup component add rustfmt - rustup component add clippy - cargo install flip-link @@ -32,15 +33,15 @@ build: build-flasher: stage: build-flasher script: - - mkdir flasher + - rm -rf flasher; mkdir flasher - cd .. - git clone https://gitlab.scd31.com/cats/firmware-flasher - cd firmware-flasher - cp ../mobile-transceiver-software/firmware.bin firmware.bin - - cargo build --release + - cargo build --release --target arm-unknown-linux-gnueabihf - cargo build --release --target x86_64-pc-windows-gnu - - cp target/release/stm32-firmware-flasher ../mobile-transceiver-software/flasher/flasher-linux - - strip ../mobile-transceiver-software/flasher/flasher-linux + - cp target/arm-unknown-linux-gnueabihf/release/stm32-firmware-flasher ../mobile-transceiver-software/flasher/flasher-linux + - arm-linux-gnueabihf-strip ../mobile-transceiver-software/flasher/flasher-linux - cp target/x86_64-pc-windows-gnu/release/stm32-firmware-flasher.exe ../mobile-transceiver-software/flasher/flasher-windows.exe artifacts: paths: -- GitLab From 47b08765100c931b0d16f0417136f646fd3bc640 Mon Sep 17 00:00:00 2001 From: Will Sloan <will@848.email> Date: Sun, 12 Jan 2025 21:33:30 -0500 Subject: [PATCH 2/2] Refactor firmware flasher into submodule This is a lot cleaner than cd-ing above the repository (potentially dangerous in CI because the state of the directory above the repository is not guaranteed) and doing a 'git clone'. This will also allow the submodule's commit to be pinned and not change without developer intent. --- .gitlab-ci.yml | 15 ++++++++------- .gitmodules | 3 +++ firmware-flasher | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 .gitmodules create mode 160000 firmware-flasher diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae88693..9def228 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,8 @@ image: "rust:latest" +variables: + GIT_SUBMODULE_STRATEGY: normal + stages: - lint - build @@ -34,15 +37,13 @@ build-flasher: stage: build-flasher script: - rm -rf flasher; mkdir flasher - - cd .. - - git clone https://gitlab.scd31.com/cats/firmware-flasher - - cd firmware-flasher - - cp ../mobile-transceiver-software/firmware.bin firmware.bin + - cd firmware-flasher # cd into submodule + - cp ../firmware.bin firmware.bin - cargo build --release --target arm-unknown-linux-gnueabihf - cargo build --release --target x86_64-pc-windows-gnu - - cp target/arm-unknown-linux-gnueabihf/release/stm32-firmware-flasher ../mobile-transceiver-software/flasher/flasher-linux - - arm-linux-gnueabihf-strip ../mobile-transceiver-software/flasher/flasher-linux - - cp target/x86_64-pc-windows-gnu/release/stm32-firmware-flasher.exe ../mobile-transceiver-software/flasher/flasher-windows.exe + - cp target/arm-unknown-linux-gnueabihf/release/stm32-firmware-flasher ../flasher/flasher-linux + - arm-linux-gnueabihf-strip ../flasher/flasher-linux + - cp target/x86_64-pc-windows-gnu/release/stm32-firmware-flasher.exe ../flasher/flasher-windows.exe artifacts: paths: - flasher/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..99effa4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "firmware-flasher"] + path = firmware-flasher + url = https://gitlab.scd31.com/cats/firmware-flasher diff --git a/firmware-flasher b/firmware-flasher new file mode 160000 index 0000000..87fb235 --- /dev/null +++ b/firmware-flasher @@ -0,0 +1 @@ +Subproject commit 87fb2352473381232e46592a75f6876a816cc171 -- GitLab