179 lines
3.9 KiB
Batchfile
179 lines
3.9 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
:: ESP32 Firmware & LittleFS Upload Script (Windows)
|
|
:: Usage: scripts\upload-all.bat [--env ENV] [--port PORT] [--fs]
|
|
|
|
:: Default values
|
|
set "ENV=waveshare"
|
|
set "PORT="
|
|
set "UPLOAD_FS=true"
|
|
set "FIRMWARE_ONLY=false"
|
|
set "HELP=false"
|
|
|
|
:: Parse command line arguments
|
|
:parse_args
|
|
if "%~1"=="" goto :done_parsing
|
|
if "%~1"=="-e" (
|
|
set "ENV=%~2"
|
|
shift /1
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="--env" (
|
|
set "ENV=%~2"
|
|
shift /1
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="-p" (
|
|
set "PORT=%~2"
|
|
shift /1
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="--port" (
|
|
set "PORT=%~2"
|
|
shift /1
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="-f" (
|
|
set "FIRMWARE_ONLY=true"
|
|
set "UPLOAD_FS=false"
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="--firmware-only" (
|
|
set "FIRMWARE_ONLY=true"
|
|
set "UPLOAD_FS=false"
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="-h" (
|
|
set "HELP=true"
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
if "%~1"=="--help" (
|
|
set "HELP=true"
|
|
shift /1
|
|
goto :parse_args
|
|
)
|
|
echo Unknown option: %~1
|
|
echo Use --help for usage information
|
|
exit /b 1
|
|
|
|
:done_parsing
|
|
|
|
:: Show help
|
|
if "%HELP%"=="true" (
|
|
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 /b 0
|
|
)
|
|
|
|
echo === ESP32 Complete Upload Tool ===
|
|
echo Environment: %ENV%
|
|
if "%PORT%"=="" (
|
|
echo Port: auto-detect
|
|
) else (
|
|
echo Port: %PORT%
|
|
)
|
|
if "%FIRMWARE_ONLY%"=="true" (
|
|
echo Upload: Firmware only
|
|
) else (
|
|
echo Upload: Firmware + LittleFS ^(complete^)
|
|
)
|
|
echo.
|
|
|
|
:: Build file paths
|
|
set "BUILD_DIR=.pio\build\%ENV%"
|
|
set "FIRMWARE=%BUILD_DIR%\firmware.bin"
|
|
set "BOOTLOADER=%BUILD_DIR%\bootloader.bin"
|
|
set "PARTITIONS=%BUILD_DIR%\partitions.bin"
|
|
|
|
:: Check if firmware exists
|
|
if not exist "%FIRMWARE%" (
|
|
echo ❌ Firmware not found: %FIRMWARE%
|
|
echo Run: npm run build ^(or pio run -e %ENV%^)
|
|
exit /b 1
|
|
)
|
|
|
|
echo ✅ Found firmware files in %BUILD_DIR%
|
|
|
|
:: Build command
|
|
set "CMD=python scripts\upload_firmware.py --firmware "%FIRMWARE%""
|
|
|
|
:: Add optional files if they exist
|
|
if exist "%BOOTLOADER%" (
|
|
set "CMD=!CMD! --bootloader "%BOOTLOADER%""
|
|
)
|
|
|
|
if exist "%PARTITIONS%" (
|
|
set "CMD=!CMD! --partitions "%PARTITIONS%""
|
|
)
|
|
|
|
:: Add port if specified
|
|
if not "%PORT%"=="" (
|
|
set "CMD=!CMD! --port "%PORT%""
|
|
)
|
|
|
|
:: Execute upload
|
|
echo Command: !CMD!
|
|
echo.
|
|
|
|
!CMD!
|
|
|
|
if %errorlevel% equ 0 (
|
|
echo.
|
|
echo ✅ Firmware upload completed successfully!
|
|
|
|
:: Upload LittleFS if requested
|
|
if "%UPLOAD_FS%"=="true" (
|
|
echo.
|
|
echo === Uploading LittleFS ===
|
|
|
|
:: Build LittleFS command
|
|
set "FS_CMD=python scripts\upload_littlefs.py --auto --env "%ENV%""
|
|
|
|
:: Add port if specified
|
|
if not "%PORT%"=="" (
|
|
set "FS_CMD=!FS_CMD! --port "%PORT%""
|
|
)
|
|
|
|
echo Command: !FS_CMD!
|
|
echo.
|
|
|
|
!FS_CMD!
|
|
|
|
if !errorlevel! equ 0 (
|
|
echo.
|
|
echo ✅ LittleFS upload completed successfully!
|
|
echo 🎉 All uploads completed!
|
|
) else (
|
|
echo.
|
|
echo ❌ LittleFS upload failed!
|
|
exit /b 1
|
|
)
|
|
)
|
|
) else (
|
|
echo.
|
|
echo ❌ Firmware upload failed!
|
|
exit /b 1
|
|
) |