87 lines
2.6 KiB
Bash
Executable File
87 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Flash script for ESP32-C6
|
|
# Usage: ./flash_esp32c6.sh [PORT]
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# ESP32-C6 flash addresses
|
|
BOOTLOADER_ADDR=0x0
|
|
PARTITIONS_ADDR=0x8000
|
|
FIRMWARE_ADDR=0x10000
|
|
|
|
# Detect port if not provided
|
|
if [ -z "$1" ]; then
|
|
echo "Detecting ESP32-C6 serial port..."
|
|
# Try to detect by attempting chip-id on all available ports
|
|
for port in /dev/cu.* /dev/tty.*; do
|
|
[ -e "$port" ] || continue
|
|
# Skip Bluetooth and debug ports
|
|
echo "$port" | grep -qE "(Bluetooth|debug-console)" && continue
|
|
|
|
# Try to connect to this port
|
|
if /opt/homebrew/bin/esptool --chip esp32c6 --port "$port" chip-id >/dev/null 2>&1; then
|
|
PORT="$port"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$PORT" ]; then
|
|
echo "ERROR: Could not auto-detect ESP32-C6 serial port."
|
|
echo ""
|
|
echo "Please:"
|
|
echo "1. Ensure the ESP32-C6 is plugged in via USB"
|
|
echo "2. Put the device in download mode:"
|
|
echo " - Hold BOOT button, press and release RESET, then release BOOT"
|
|
echo "3. Run this script with the port: ./flash_esp32c6.sh /dev/cu.usbserial-XXXX"
|
|
echo ""
|
|
echo "Available serial ports:"
|
|
ls -1 /dev/cu.* /dev/tty.* 2>/dev/null | grep -vE "(Bluetooth|debug-console)" || echo " (none found)"
|
|
exit 1
|
|
fi
|
|
echo "Detected port: $PORT"
|
|
else
|
|
PORT="$1"
|
|
fi
|
|
|
|
# Verify files exist
|
|
if [ ! -f "bootloader.bin" ] || [ ! -f "partitions.bin" ] || [ ! -f "firmware.bin" ]; then
|
|
echo "ERROR: Required firmware files not found!"
|
|
echo "Expected: bootloader.bin, partitions.bin, firmware.bin"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Flashing ESP32-C6 on $PORT..."
|
|
echo "=================================="
|
|
echo ""
|
|
|
|
# Erase flash
|
|
echo "Step 1: Erasing flash..."
|
|
/opt/homebrew/bin/esptool --chip esp32c6 --port "$PORT" erase-flash
|
|
|
|
# Flash bootloader
|
|
echo ""
|
|
echo "Step 2: Flashing bootloader..."
|
|
/opt/homebrew/bin/esptool --chip esp32c6 --port "$PORT" write-flash --force $BOOTLOADER_ADDR bootloader.bin
|
|
|
|
# Flash partitions
|
|
echo ""
|
|
echo "Step 3: Flashing partition table..."
|
|
/opt/homebrew/bin/esptool --chip esp32c6 --port "$PORT" write-flash --force $PARTITIONS_ADDR partitions.bin
|
|
|
|
# Flash firmware
|
|
echo ""
|
|
echo "Step 4: Flashing firmware..."
|
|
/opt/homebrew/bin/esptool --chip esp32c6 --port "$PORT" write-flash --force $FIRMWARE_ADDR firmware.bin
|
|
|
|
echo ""
|
|
echo "=================================="
|
|
echo "Flash completed successfully!"
|
|
echo ""
|
|
echo "The device will now boot with the new firmware."
|
|
echo "Press RESET button if needed."
|
|
|