tasmota-webserial-esptool 7.0.1 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/css/style.css +95 -0
- package/dist/const.js +1 -25
- package/dist/esp_loader.d.ts +4 -2
- package/dist/esp_loader.js +164 -176
- package/dist/struct.js +9 -23
- package/dist/util.js +4 -4
- package/dist/web/index.js +1 -1
- package/eslint.config.js +22 -0
- package/index.html +12 -1
- package/js/modules/esptool.js +1 -1
- package/js/script.js +65 -2
- package/package.json +14 -5
- package/src/const.ts +3 -25
- package/src/esp_loader.ts +184 -204
- package/src/struct.ts +18 -25
- package/src/util.ts +4 -4
- package/.devcontainer/devcontainer.json +0 -22
- package/.github/dependabot.yml +0 -10
- package/.github/workflows/build_upload.yml +0 -75
- package/.github/workflows/ci.yml +0 -30
- package/.prettierignore +0 -1
- package/CHANGELOG_CHIP_VARIANT.md +0 -169
- package/CHIP_VARIANT_SUPPORT.md +0 -184
- package/READ_FLASH_FEATURE.md +0 -130
- package/rollup.config.js +0 -27
- package/tsconfig.json +0 -20
package/READ_FLASH_FEATURE.md
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
# Read Flash Partition Feature
|
|
2
|
-
|
|
3
|
-
## Übersicht
|
|
4
|
-
|
|
5
|
-
Die Read Flash Partition Funktionalität wurde erfolgreich aus esptool.js in WebSerial_ESPTool implementiert. Diese Funktion ermöglicht es, Flash-Speicher direkt vom ESP-Chip zu lesen und als Binärdatei herunterzuladen.
|
|
6
|
-
|
|
7
|
-
## Implementierte Änderungen
|
|
8
|
-
|
|
9
|
-
### 1. Backend (TypeScript)
|
|
10
|
-
|
|
11
|
-
#### `src/const.ts`
|
|
12
|
-
- Hinzugefügt: `ESP_READ_FLASH = 0xd2` Konstante
|
|
13
|
-
- Hinzugefügt: `FLASH_READ_TIMEOUT = 100` Konstante
|
|
14
|
-
|
|
15
|
-
#### `src/esp_loader.ts`
|
|
16
|
-
- Neue Methode `readFlash()` in der `EspStubLoader` Klasse implementiert
|
|
17
|
-
- Die Methode unterstützt:
|
|
18
|
-
- Lesen von Flash-Speicher ab einer bestimmten Adresse
|
|
19
|
-
- Angabe der zu lesenden Größe in Bytes
|
|
20
|
-
- Optional: Callback-Funktion für Fortschrittsanzeige
|
|
21
|
-
- Rückgabe der Daten als `Uint8Array`
|
|
22
|
-
|
|
23
|
-
### 2. Frontend (HTML/JavaScript/CSS)
|
|
24
|
-
|
|
25
|
-
#### `index.html`
|
|
26
|
-
- Neue UI-Sektion "Read Flash" hinzugefügt mit:
|
|
27
|
-
- Eingabefeld für Adresse (hexadezimal)
|
|
28
|
-
- Eingabefeld für Größe (dezimal in Bytes)
|
|
29
|
-
- "Read Flash" Button
|
|
30
|
-
- Fortschrittsbalken
|
|
31
|
-
|
|
32
|
-
#### `js/script.js`
|
|
33
|
-
- Neue Funktion `clickReadFlash()` implementiert
|
|
34
|
-
- Automatischer Download der gelesenen Daten als `.bin` Datei
|
|
35
|
-
- Fortschrittsanzeige während des Lesevorgangs
|
|
36
|
-
- Fehlerbehandlung und Logging
|
|
37
|
-
|
|
38
|
-
#### `css/style.css`
|
|
39
|
-
- Styling für die neue "Read Flash" Sektion
|
|
40
|
-
- Responsive Layout-Anpassungen
|
|
41
|
-
|
|
42
|
-
## Verwendung
|
|
43
|
-
|
|
44
|
-
### Über die Web-Oberfläche
|
|
45
|
-
|
|
46
|
-
#### Flash direkt lesen
|
|
47
|
-
|
|
48
|
-
1. Verbinden Sie sich mit einem ESP-Gerät über den "Connect" Button
|
|
49
|
-
2. Scrollen Sie zur "Read Flash" Sektion
|
|
50
|
-
3. Geben Sie die Startadresse ein (z.B. `0` für den Anfang des Flash-Speichers)
|
|
51
|
-
4. Geben Sie die Größe in Bytes ein (z.B. `4096` für 4KB)
|
|
52
|
-
5. Klicken Sie auf "Read Flash"
|
|
53
|
-
6. Die Daten werden automatisch als `.bin` Datei heruntergeladen
|
|
54
|
-
|
|
55
|
-
#### Partitionstabelle lesen
|
|
56
|
-
|
|
57
|
-
1. Verbinden Sie sich mit einem ESP-Gerät über den "Connect" Button
|
|
58
|
-
2. Scrollen Sie zur "Partition Table" Sektion
|
|
59
|
-
3. Klicken Sie auf "Read Partition Table"
|
|
60
|
-
4. Die Partitionstabelle wird gelesen und angezeigt
|
|
61
|
-
5. Klicken Sie auf "Download" neben einer Partition, um diese herunterzuladen
|
|
62
|
-
|
|
63
|
-
### Programmatisch
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
// Beispiel: 4KB vom Offset 0x0 lesen
|
|
67
|
-
const data = await espStubLoader.readFlash(
|
|
68
|
-
0x0, // Adresse
|
|
69
|
-
4096, // Größe in Bytes
|
|
70
|
-
(packet, progress, totalSize) => {
|
|
71
|
-
// Optional: Fortschritts-Callback
|
|
72
|
-
console.log(`Progress: ${progress}/${totalSize} bytes`);
|
|
73
|
-
}
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
// data ist ein Uint8Array mit den gelesenen Daten
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Technische Details
|
|
80
|
-
|
|
81
|
-
### Protokoll
|
|
82
|
-
|
|
83
|
-
Die Implementierung folgt dem ESP Serial Protocol:
|
|
84
|
-
1. Sende `ESP_READ_FLASH` Kommando mit Parametern (Adresse, Größe, Block-Größe, Anzahl Blöcke)
|
|
85
|
-
2. Warte auf Bestätigung
|
|
86
|
-
3. Empfange Datenpakete über SLIP-Protokoll
|
|
87
|
-
4. Sende Acknowledgment nach jedem Paket
|
|
88
|
-
5. Wiederhole bis alle Daten empfangen wurden
|
|
89
|
-
|
|
90
|
-
### Kompatibilität
|
|
91
|
-
|
|
92
|
-
Die Funktion ist nur im Stub-Modus verfügbar (nach `runStub()`), da der ROM-Bootloader diesen Befehl nicht unterstützt.
|
|
93
|
-
|
|
94
|
-
Unterstützte Chips:
|
|
95
|
-
- ESP32
|
|
96
|
-
- ESP32-S2
|
|
97
|
-
- ESP32-S3
|
|
98
|
-
- ESP32-C2
|
|
99
|
-
- ESP32-C3
|
|
100
|
-
- ESP32-C5
|
|
101
|
-
- ESP32-C6
|
|
102
|
-
- ESP32-C61
|
|
103
|
-
- ESP32-H2
|
|
104
|
-
- ESP32-P4
|
|
105
|
-
- ESP8266
|
|
106
|
-
|
|
107
|
-
## Beispiel-Anwendungsfälle
|
|
108
|
-
|
|
109
|
-
1. **Backup erstellen**: Kompletten Flash-Speicher sichern
|
|
110
|
-
2. **Partition lesen**: Spezifische Partitionen extrahieren (z.B. NVS, OTA)
|
|
111
|
-
3. **Debugging**: Flash-Inhalt zur Fehleranalyse untersuchen
|
|
112
|
-
4. **Firmware-Extraktion**: Installierte Firmware vom Gerät lesen
|
|
113
|
-
5. **Partitionstabelle analysieren**: Übersicht über alle Partitionen erhalten
|
|
114
|
-
6. **Einzelne Partitionen sichern**: Nur bestimmte Partitionen herunterladen
|
|
115
|
-
|
|
116
|
-
## Bekannte Einschränkungen
|
|
117
|
-
|
|
118
|
-
- Die Funktion erfordert, dass der Stub-Loader läuft
|
|
119
|
-
- Große Lesevorgänge können einige Zeit in Anspruch nehmen
|
|
120
|
-
- Die maximale Größe ist durch den verfügbaren Flash-Speicher des Chips begrenzt
|
|
121
|
-
|
|
122
|
-
## Build-Prozess
|
|
123
|
-
|
|
124
|
-
Nach Änderungen am TypeScript-Code:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
npm run prepublishOnly
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Dies kompiliert den TypeScript-Code und erstellt die Distributionsdateien in `dist/`.
|
package/rollup.config.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { nodeResolve } from "@rollup/plugin-node-resolve";
|
|
2
|
-
import json from "@rollup/plugin-json";
|
|
3
|
-
import terser from "@rollup/plugin-terser";
|
|
4
|
-
|
|
5
|
-
const config = {
|
|
6
|
-
input: "dist/index.js",
|
|
7
|
-
output: {
|
|
8
|
-
dir: "dist/web",
|
|
9
|
-
format: "module",
|
|
10
|
-
},
|
|
11
|
-
// preserveEntrySignatures: false,
|
|
12
|
-
plugins: [nodeResolve(), json()],
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
if (process.env.NODE_ENV === "production") {
|
|
16
|
-
config.plugins.push(
|
|
17
|
-
terser({
|
|
18
|
-
ecma: 2019,
|
|
19
|
-
toplevel: true,
|
|
20
|
-
output: {
|
|
21
|
-
comments: false,
|
|
22
|
-
},
|
|
23
|
-
}),
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export default config;
|
package/tsconfig.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"lib": ["es2019", "dom"],
|
|
4
|
-
"target": "es2019",
|
|
5
|
-
"module": "es2020",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"resolveJsonModule": true,
|
|
8
|
-
"outDir": "dist",
|
|
9
|
-
"declaration": true,
|
|
10
|
-
"experimentalDecorators": true,
|
|
11
|
-
"noFallthroughCasesInSwitch": true,
|
|
12
|
-
"noImplicitReturns": true,
|
|
13
|
-
"noUnusedLocals": true,
|
|
14
|
-
"forceConsistentCasingInFileNames": true,
|
|
15
|
-
"strict": true,
|
|
16
|
-
"importHelpers": true,
|
|
17
|
-
"skipLibCheck": false
|
|
18
|
-
},
|
|
19
|
-
"include": ["src/*"]
|
|
20
|
-
}
|