155 lines
3.6 KiB
Bash
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
|