-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflash_nostub.sh
More file actions
executable file
·137 lines (122 loc) · 4.06 KB
/
flash_nostub.sh
File metadata and controls
executable file
·137 lines (122 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
# Flash-Script für ESP32-C6 mit --no-stub Option
# Umgeht Checksum-Probleme beim Stub-Upload
#
# Carsten Nichte, 2025
#
# WICHTIG: ESP32-C6 hat zwei USB-Ports:
# - USB-JTAG Port (normalerweise ...58131 oder ...343401)
# - USB-UART Port (normalerweise ...626461 oder ...627361) <- DIESEN VERWENDEN!
#
# Verwendung:
# ./flash_nostub.sh [PORT] [BAUDRATE] [PROJECT_NAME]
# Beispiel: ./flash_nostub.sh /dev/cu.usbmodem59720627361 115200 robart-firmware-esp32
#
# @author Carsten Nichte, 2025
#
# Automatische Port-Erkennung
if [ -z "$1" ]; then
# Suche nach USB-Ports, bevorzuge die mit höheren Nummern (UART-Port)
AVAILABLE_PORTS=$(ls /dev/cu.usbmodem* 2>/dev/null | sort -r)
if [ -z "$AVAILABLE_PORTS" ]; then
echo "FEHLER: Keine USB-Ports gefunden!"
echo "Bitte Board anschließen und erneut versuchen."
exit 1
fi
echo "Verfügbare USB-Ports:"
echo "$AVAILABLE_PORTS"
echo ""
# Nimm den ersten Port (höchste Nummer = meist UART)
PORT=$(echo "$AVAILABLE_PORTS" | head -1)
echo "Auto-Auswahl: $PORT (USB-UART Port empfohlen)"
echo "Falls das nicht funktioniert, versuche den anderen Port!"
echo ""
else
PORT="$1"
fi
BAUD="${2:-115200}"
# Automatische Projekt-Namen-Erkennung
if [ -z "$3" ]; then
# Versuche aus CMakeLists.txt zu lesen
if [ -f "CMakeLists.txt" ]; then
PROJECT_NAME=$(grep -m1 "project(" CMakeLists.txt | sed 's/project(\(.*\))/\1/' | tr -d ' )')
fi
# Falls nicht gefunden, verwende Verzeichnisnamen
if [ -z "$PROJECT_NAME" ]; then
PROJECT_NAME=$(basename "$PWD")
fi
else
PROJECT_NAME="$3"
fi
echo "========================================"
echo "ESP32-C6 Flash Script (NO-STUB Mode)"
echo "Carsten Nichte, 2025"
echo "========================================"
echo "Port: $PORT"
echo "Baudrate: $BAUD"
echo "Projekt: $PROJECT_NAME"
echo ""
echo "TIPP: Wenn Flash fehlschlägt:"
echo " 1. Anderen USB-Port am ESP32-C6 verwenden (USB-UART statt USB-JTAG)"
echo " 2. BOOT-Taste drücken + RESET, dann BOOT loslassen"
echo " 3. Anderes USB-Kabel oder Hub versuchen"
echo "========================================"
echo ""
# Prüfe ob build-Verzeichnis existiert
if [ ! -d "build" ]; then
echo "FEHLER: build/ Verzeichnis nicht gefunden!"
echo "Bitte zuerst 'idf.py build' ausführen."
exit 1
fi
# Prüfe ob Binary existiert
if [ ! -f "build/${PROJECT_NAME}.bin" ]; then
echo "FEHLER: build/${PROJECT_NAME}.bin nicht gefunden!"
echo "Gefundene .bin Dateien:"
ls -la build/*.bin 2>/dev/null || echo " Keine .bin Dateien gefunden"
exit 1
fi
echo "Starte Flash-Vorgang..."
echo ""
# ESP-IDF Python-Umgebung aktivieren falls vorhanden
if [ -f "$HOME/.espressif/python_env/idf5.4_py3.14_env/bin/activate" ]; then
source "$HOME/.espressif/python_env/idf5.4_py3.14_env/bin/activate"
fi
python3 -m esptool \
--chip esp32c6 \
-p "$PORT" \
-b "$BAUD" \
--before default_reset \
--after hard_reset \
--no-stub \
write_flash \
--flash_mode dio \
--flash_freq 80m \
--flash_size 2MB \
0x0 build/bootloader/bootloader.bin \
0x10000 "build/${PROJECT_NAME}.bin" \
0x8000 build/partition_table/partition-table.bin
RESULT=$?
echo ""
if [ $RESULT -eq 0 ]; then
echo "========================================"
echo "✓ Flash erfolgreich abgeschlossen!"
echo "========================================"
echo ""
echo "Monitor starten mit:"
echo " idf.py -p $PORT monitor"
else
echo "========================================"
echo "✗ Flash fehlgeschlagen (Exit Code: $RESULT)"
echo "========================================"
echo ""
echo "Mögliche Lösungen:"
echo " 1. USB-UART Port verwenden (anderen Port probieren)"
echo " 2. Board manuell in Bootloader-Modus versetzen:"
echo " - BOOT-Taste gedrückt halten"
echo " - RESET-Taste kurz drücken"
echo " - BOOT-Taste loslassen"
echo " - Script erneut ausführen"
echo " 3. Anderes USB-Kabel testen"
echo " 4. Baudrate reduzieren: ./flash_nostub.sh $PORT 57600"
fi
exit $RESULT