firmware-base/scripts/upload-all.sh

155 lines
3.6 KiB
Bash

#!/bin/bash
# ESP32 Firmware & LittleFS Upload Script
# Usage: ./scripts/upload-all.sh [--env ENV] [--port PORT] [--fs]
# Default values
ENV="waveshare"
PORT=""
UPLOAD_FS=true
FIRMWARE_ONLY=false
HELP=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-e|--env)
ENV="$2"
shift 2
;;
-p|--port)
PORT="$2"
shift 2
;;
-f|--firmware-only)
FIRMWARE_ONLY=true
UPLOAD_FS=false
shift
;;
-h|--help)
HELP=true
shift
;;
*)
echo "Unknown option: $1"
echo "Use --help for usage information"
exit 1
;;
esac
done
# Show help
if [ "$HELP" = true ]; then
echo "ESP32 Complete Upload Script"
echo ""
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " -e, --env ENV PlatformIO environment (default: waveshare)"
echo " -p, --port PORT Serial port (default: auto-detect)"
echo " -f, --firmware-only Upload firmware only (skip LittleFS)"
echo " -h, --help Show this help message"
echo ""
echo "Examples:"
echo " $0 # Upload firmware + LittleFS (default)"
echo " $0 --firmware-only # Upload firmware only"
echo " $0 --env waveshare-release # Upload release build + LittleFS"
echo " $0 --port COM17 # Upload both to specific port"
echo " $0 --env waveshare-release --port COM17 # All options"
echo ""
exit 0
fi
echo "=== ESP32 Complete Upload Tool ==="
echo "Environment: $ENV"
echo "Port: ${PORT:-auto-detect}"
if [ "$FIRMWARE_ONLY" = true ]; then
echo "Upload: Firmware only"
else
echo "Upload: Firmware + LittleFS (complete)"
fi
echo ""
# Build file paths
BUILD_DIR=".pio/build/$ENV"
FIRMWARE="$BUILD_DIR/firmware.bin"
BOOTLOADER="$BUILD_DIR/bootloader.bin"
PARTITIONS="$BUILD_DIR/partitions.bin"
# Check if build files exist
if [ ! -f "$FIRMWARE" ]; then
echo "❌ Firmware not found: $FIRMWARE"
echo "Run: npm run build (or pio run -e $ENV)"
exit 1
fi
echo "✅ Found firmware files in $BUILD_DIR"
# Build command arguments
CMD_ARGS=(
"scripts/upload_firmware.py"
"--firmware" "$FIRMWARE"
)
# Add optional files if they exist
if [ -f "$BOOTLOADER" ]; then
CMD_ARGS+=("--bootloader" "$BOOTLOADER")
fi
if [ -f "$PARTITIONS" ]; then
CMD_ARGS+=("--partitions" "$PARTITIONS")
fi
# Add port if specified
if [ -n "$PORT" ]; then
CMD_ARGS+=("--port" "$PORT")
fi
# Execute upload
echo "Command: python ${CMD_ARGS[*]}"
echo ""
python "${CMD_ARGS[@]}"
if [ $? -eq 0 ]; then
echo ""
echo "✅ Firmware upload completed successfully!"
# Upload LittleFS if requested
if [ "$UPLOAD_FS" = true ]; then
echo ""
echo "=== Uploading LittleFS ==="
# Build LittleFS command arguments
FS_CMD_ARGS=(
"scripts/upload_littlefs.py"
"--auto"
"--env" "$ENV"
)
# Add port if specified
if [ -n "$PORT" ]; then
FS_CMD_ARGS+=("--port" "$PORT")
fi
echo "Command: python ${FS_CMD_ARGS[*]}"
echo ""
python "${FS_CMD_ARGS[@]}"
if [ $? -eq 0 ]; then
echo ""
echo "✅ LittleFS upload completed successfully!"
echo "🎉 All uploads completed!"
else
echo ""
echo "❌ LittleFS upload failed!"
exit 1
fi
fi
else
echo ""
echo "❌ Firmware upload failed!"
exit 1
fi