Merge pull request #1603 from oltaco/fix-build.sh-for-RP2040-and-STM32
Add RP2040 and STM32 support to build.sh
This commit is contained in:
55
build.sh
55
build.sh
@@ -64,6 +64,8 @@ case $1 in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# cache project config json for use in get_platform_for_env()
|
||||||
|
PIO_CONFIG_JSON=$(pio project config --json-output)
|
||||||
|
|
||||||
# $1 should be the string to find (case insensitive)
|
# $1 should be the string to find (case insensitive)
|
||||||
get_pio_envs_containing_string() {
|
get_pio_envs_containing_string() {
|
||||||
@@ -87,6 +89,25 @@ get_pio_envs_ending_with_string() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# get platform flag for a given environment
|
||||||
|
# $1 should be the environment name
|
||||||
|
get_platform_for_env() {
|
||||||
|
local env_name=$1
|
||||||
|
echo "$PIO_CONFIG_JSON" | python3 -c "
|
||||||
|
import sys, json, re
|
||||||
|
data = json.load(sys.stdin)
|
||||||
|
for section, options in data:
|
||||||
|
if section == 'env:$env_name':
|
||||||
|
for key, value in options:
|
||||||
|
if key == 'build_flags':
|
||||||
|
for flag in value:
|
||||||
|
match = re.search(r'(ESP32_PLATFORM|NRF52_PLATFORM|STM32_PLATFORM|RP2040_PLATFORM)', flag)
|
||||||
|
if match:
|
||||||
|
print(match.group(1))
|
||||||
|
sys.exit(0)
|
||||||
|
"
|
||||||
|
}
|
||||||
|
|
||||||
# disable all debug logging flags if DISABLE_DEBUG=1 is set
|
# disable all debug logging flags if DISABLE_DEBUG=1 is set
|
||||||
disable_debug_flags() {
|
disable_debug_flags() {
|
||||||
if [ "$DISABLE_DEBUG" == "1" ]; then
|
if [ "$DISABLE_DEBUG" == "1" ]; then
|
||||||
@@ -96,6 +117,8 @@ disable_debug_flags() {
|
|||||||
|
|
||||||
# build firmware for the provided pio env in $1
|
# build firmware for the provided pio env in $1
|
||||||
build_firmware() {
|
build_firmware() {
|
||||||
|
# get env platform for post build actions
|
||||||
|
ENV_PLATFORM=($(get_platform_for_env $1))
|
||||||
|
|
||||||
# get git commit sha
|
# get git commit sha
|
||||||
COMMIT_HASH=$(git rev-parse --short HEAD)
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||||
@@ -126,27 +149,31 @@ build_firmware() {
|
|||||||
# build firmware target
|
# build firmware target
|
||||||
pio run -e $1
|
pio run -e $1
|
||||||
|
|
||||||
# build merge-bin for esp32 fresh install
|
# build merge-bin for esp32 fresh install, copy .bins to out folder (e.g: Heltec_v3_room_server-v1.0.0-SHA.bin)
|
||||||
if [ -f .pio/build/$1/firmware.bin ]; then
|
if [ "$ENV_PLATFORM" == "ESP32_PLATFORM" ]; then
|
||||||
pio run -t mergebin -e $1
|
pio run -t mergebin -e $1
|
||||||
|
cp .pio/build/$1/firmware.bin out/${FIRMWARE_FILENAME}.bin 2>/dev/null || true
|
||||||
|
cp .pio/build/$1/firmware-merged.bin out/${FIRMWARE_FILENAME}-merged.bin 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# build .uf2 for nrf52 boards
|
# build .uf2 for nrf52 boards, copy .uf2 and .zip to out folder (e.g: RAK_4631_Repeater-v1.0.0-SHA.uf2)
|
||||||
if [[ -f .pio/build/$1/firmware.zip && -f .pio/build/$1/firmware.hex ]]; then
|
if [ "$ENV_PLATFORM" == "NRF52_PLATFORM" ]; then
|
||||||
python3 bin/uf2conv/uf2conv.py .pio/build/$1/firmware.hex -c -o .pio/build/$1/firmware.uf2 -f 0xADA52840
|
python3 bin/uf2conv/uf2conv.py .pio/build/$1/firmware.hex -c -o .pio/build/$1/firmware.uf2 -f 0xADA52840
|
||||||
|
cp .pio/build/$1/firmware.uf2 out/${FIRMWARE_FILENAME}.uf2 2>/dev/null || true
|
||||||
|
cp .pio/build/$1/firmware.zip out/${FIRMWARE_FILENAME}.zip 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# copy .bin, .uf2, and .zip to out folder
|
# for stm32, copy .bin and .hex to out folder
|
||||||
# e.g: Heltec_v3_room_server-v1.0.0-SHA.bin
|
if [ "$ENV_PLATFORM" == "STM32_PLATFORM" ]; then
|
||||||
# e.g: RAK_4631_Repeater-v1.0.0-SHA.uf2
|
cp .pio/build/$1/firmware.bin out/${FIRMWARE_FILENAME}.bin 2>/dev/null || true
|
||||||
|
cp .pio/build/$1/firmware.hex out/${FIRMWARE_FILENAME}.hex 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
# copy .bin for esp32 boards
|
# for rp2040, copy .bin and .uf2 to out folder
|
||||||
cp .pio/build/$1/firmware.bin out/${FIRMWARE_FILENAME}.bin 2>/dev/null || true
|
if [ "$ENV_PLATFORM" == "RP2040_PLATFORM" ]; then
|
||||||
cp .pio/build/$1/firmware-merged.bin out/${FIRMWARE_FILENAME}-merged.bin 2>/dev/null || true
|
cp .pio/build/$1/firmware.bin out/${FIRMWARE_FILENAME}.bin 2>/dev/null || true
|
||||||
|
cp .pio/build/$1/firmware.uf2 out/${FIRMWARE_FILENAME}.uf2 2>/dev/null || true
|
||||||
# copy .zip and .uf2 of nrf52 boards
|
fi
|
||||||
cp .pio/build/$1/firmware.uf2 out/${FIRMWARE_FILENAME}.uf2 2>/dev/null || true
|
|
||||||
cp .pio/build/$1/firmware.zip out/${FIRMWARE_FILENAME}.zip 2>/dev/null || true
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ platform = platformio/espressif32@6.11.0
|
|||||||
monitor_filters = esp32_exception_decoder
|
monitor_filters = esp32_exception_decoder
|
||||||
extra_scripts = merge-bin.py
|
extra_scripts = merge-bin.py
|
||||||
build_flags = ${arduino_base.build_flags}
|
build_flags = ${arduino_base.build_flags}
|
||||||
|
-D ESP32_PLATFORM
|
||||||
; -D ESP32_CPU_FREQ=80 ; change it to your need
|
; -D ESP32_CPU_FREQ=80 ; change it to your need
|
||||||
build_src_filter = ${arduino_base.build_src_filter}
|
build_src_filter = ${arduino_base.build_src_filter}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user