From fd86ece5546d8a6e86675abaccbf34fc331d04b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Diges?= Date: Sun, 29 Jun 2025 21:01:25 +0200 Subject: [PATCH] Fix ARM Mac build Added a hex2dfu built binary for arm64 for Mac. Updated hex2dfu submodule to RusEFI prod branch Force the use of objcopy and objdump from arm-none-eabi toolchain in common_make.sh Use darwin hex2dfu binary in Mac Fixes https://github.com/FOME-Tech/fome-fw/issues/466 --- firmware/config/boards/common_make.sh | 10 +++++++--- misc/encedo_hex2dfu/hex2dfu_darwin.bin | Bin 0 -> 34784 bytes misc/hex2dfu | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100755 misc/encedo_hex2dfu/hex2dfu_darwin.bin diff --git a/firmware/config/boards/common_make.sh b/firmware/config/boards/common_make.sh index a58cfe76f5..d809e7abef 100755 --- a/firmware/config/boards/common_make.sh +++ b/firmware/config/boards/common_make.sh @@ -35,8 +35,12 @@ fi if uname | grep "NT"; then HEX2DFU=../misc/encedo_hex2dfu/hex2dfu.exe +elif uname | grep "Darwin"; then + HEX2DFU=../misc/encedo_hex2dfu/hex2dfu_darwin.bin + TOOLCHAIN=ext/build-tools/arm-gnu-toolchain-11.3.rel1-darwin-x86_64-arm-none-eabi/bin/arm-none-eabi- else HEX2DFU=../misc/encedo_hex2dfu/hex2dfu.bin + TOOLCHAIN=ext/build-tools/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi- fi chmod u+x $HEX2DFU @@ -47,7 +51,7 @@ rm -f deliver/* rm build/fome.bin build/fome.srec # Extract the firmware's base address from the elf - it may be different depending on exact CPU -firmwareBaseAddress="$(objdump -h -j .vectors build/fome.elf | awk '/.vectors/ {print $5 }')" +firmwareBaseAddress="$($TOOLCHAIN"objdump" -h -j .vectors build/fome.elf | awk '/.vectors/ {print $5 }')" checksumAddress="$(printf "%X\n" $((0x$firmwareBaseAddress+0x1c)))" echo "Base address is 0x$firmwareBaseAddress" @@ -57,8 +61,8 @@ echo "$SCRIPT_NAME: invoking hex2dfu to place image checksum" $HEX2DFU -i build/fome.hex -c $checksumAddress -b build/fome.bin rm build/fome.hex # re-make hex, srec with the checksum in place -objcopy -I binary -O ihex --change-addresses=0x$firmwareBaseAddress build/fome.bin build/fome.hex -objcopy -I binary -O srec --change-addresses=0x$firmwareBaseAddress build/fome.bin build/fome.srec +$TOOLCHAIN"objcopy" -I binary -O ihex --change-addresses=0x$firmwareBaseAddress build/fome.bin build/fome.hex +$TOOLCHAIN"objcopy" -I binary -O srec --change-addresses=0x$firmwareBaseAddress build/fome.bin build/fome.srec if [ "$USE_OPENBLT" = "yes" ]; then # this image is suitable for update through bootloader only diff --git a/misc/encedo_hex2dfu/hex2dfu_darwin.bin b/misc/encedo_hex2dfu/hex2dfu_darwin.bin new file mode 100755 index 0000000000000000000000000000000000000000..3bb9abaa5c68b41ec951f62ba20da2a066699d89 GIT binary patch literal 34784 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 d-aBjK6GPUwUHsglA1&;vn{{>Zsv~d6c literal 0 HcmV?d00001 diff --git a/misc/hex2dfu b/misc/hex2dfu index 02535ca53a..9097a91023 160000 --- a/misc/hex2dfu +++ b/misc/hex2dfu @@ -1 +1 @@ -Subproject commit 02535ca53a95bf3ae9a4a37312a9eadd65d934eb +Subproject commit 9097a91023984a253e00a9737e1c4c79aa189fef