tasmota-webserial-esptool 6.0.2 → 6.1.1
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/.devcontainer/devcontainer.json +13 -13
- package/.github/workflows/build_upload.yml +6 -7
- package/.github/workflows/ci.yml +2 -1
- package/README.md +1 -5
- package/css/dark.css +6 -4
- package/css/light.css +5 -2
- package/dist/const.d.ts +35 -1
- package/dist/const.js +82 -1
- package/dist/esp_loader.js +17 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/stubs/esp32.json +7 -1
- package/dist/stubs/esp32c2.json +7 -0
- package/dist/stubs/esp32c3.json +7 -1
- package/dist/stubs/esp32c6.json +7 -0
- package/dist/stubs/esp32h2.json +7 -0
- package/dist/stubs/esp32s2.json +7 -1
- package/dist/stubs/esp32s3.json +7 -1
- package/dist/stubs/esp8266.json +7 -1
- package/dist/stubs/index.js +10 -1
- package/dist/web/esp32-165a50ff.js +1 -0
- package/dist/web/esp32c2-895e50a1.js +1 -0
- package/dist/web/esp32c3-dc0915b5.js +1 -0
- package/dist/web/esp32c6-2dda1f55.js +1 -0
- package/dist/web/esp32h2-064ce7cf.js +1 -0
- package/dist/web/esp32s2-ffc43e14.js +1 -0
- package/dist/web/esp32s3-857df8a8.js +1 -0
- package/dist/web/esp8266-a8241797.js +1 -0
- package/dist/web/index.js +1 -1
- package/index.html +1 -1
- package/js/modules/esp32-165a50ff.js +1 -0
- package/js/modules/esp32c2-895e50a1.js +1 -0
- package/js/modules/esp32c3-dc0915b5.js +1 -0
- package/js/modules/esp32c6-2dda1f55.js +1 -0
- package/js/modules/esp32h2-064ce7cf.js +1 -0
- package/js/modules/esp32s2-ffc43e14.js +1 -0
- package/js/modules/esp32s3-857df8a8.js +1 -0
- package/js/modules/esp8266-a8241797.js +1 -0
- package/js/modules/esptool.js +1 -1
- package/js/script.js +3 -3
- package/js/utilities.js +132 -98
- package/license.md +0 -1
- package/package.json +9 -9
- package/rollup.config.js +1 -1
- package/script/build +4 -0
- package/src/const.ts +88 -3
- package/src/esp_loader.ts +68 -53
- package/src/index.ts +1 -0
- package/src/stubs/esp32.json +7 -1
- package/src/stubs/esp32c2.json +7 -1
- package/src/stubs/esp32c3.json +7 -1
- package/src/stubs/esp32c6.json +7 -0
- package/src/stubs/esp32h2.json +7 -1
- package/src/stubs/esp32s2.json +7 -1
- package/src/stubs/esp32s3.json +7 -1
- package/src/stubs/esp8266.json +7 -1
- package/src/stubs/index.ts +10 -1
- package/dist/web/esp32-a2dcbc2e.js +0 -1
- package/dist/web/esp32c3-18e9678b.js +0 -1
- package/dist/web/esp32s2-3109ccc6.js +0 -1
- package/dist/web/esp32s3-c1dbd867.js +0 -1
- package/dist/web/esp8266-144419c0.js +0 -1
- package/js/esptool.js +0 -1292
- package/js/modules/esp32-a2dcbc2e.js +0 -1
- package/js/modules/esp32c3-18e9678b.js +0 -1
- package/js/modules/esp32s2-3109ccc6.js +0 -1
- package/js/modules/esp32s3-c1dbd867.js +0 -1
- package/js/modules/esp8266-144419c0.js +0 -1
- package/script/stubgen.py +0 -47
- package/stubs/esp32.json +0 -7
- package/stubs/esp32c2.json +0 -1
- package/stubs/esp32c3.json +0 -7
- package/stubs/esp32c6.json +0 -7
- package/stubs/esp32h2.json +0 -1
- package/stubs/esp32s2.json +0 -7
- package/stubs/esp32s3.json +0 -7
- package/stubs/esp8266.json +0 -7
package/src/esp_loader.ts
CHANGED
|
@@ -2,7 +2,10 @@ import {
|
|
|
2
2
|
CHIP_FAMILY_ESP32,
|
|
3
3
|
CHIP_FAMILY_ESP32S2,
|
|
4
4
|
CHIP_FAMILY_ESP32S3,
|
|
5
|
+
CHIP_FAMILY_ESP32C2,
|
|
5
6
|
CHIP_FAMILY_ESP32C3,
|
|
7
|
+
CHIP_FAMILY_ESP32C6,
|
|
8
|
+
CHIP_FAMILY_ESP32H2,
|
|
6
9
|
CHIP_FAMILY_ESP8266,
|
|
7
10
|
MAX_TIMEOUT,
|
|
8
11
|
Logger,
|
|
@@ -66,7 +69,7 @@ export class ESPLoader extends EventTarget {
|
|
|
66
69
|
constructor(
|
|
67
70
|
public port: SerialPort,
|
|
68
71
|
public logger: Logger,
|
|
69
|
-
private _parent?: ESPLoader
|
|
72
|
+
private _parent?: ESPLoader,
|
|
70
73
|
) {
|
|
71
74
|
super();
|
|
72
75
|
}
|
|
@@ -92,8 +95,8 @@ export class ESPLoader extends EventTarget {
|
|
|
92
95
|
throw new Error(
|
|
93
96
|
`Unknown Chip: Hex: ${toHex(
|
|
94
97
|
chipMagicValue >>> 0,
|
|
95
|
-
8
|
|
96
|
-
).toLowerCase()} Number: ${chipMagicValue}
|
|
98
|
+
8,
|
|
99
|
+
).toLowerCase()} Number: ${chipMagicValue}`,
|
|
97
100
|
);
|
|
98
101
|
}
|
|
99
102
|
this.chipName = chip.name;
|
|
@@ -168,8 +171,8 @@ export class ESPLoader extends EventTarget {
|
|
|
168
171
|
// esp32c3 esp32s3 etc. build-in USB serial.
|
|
169
172
|
// when connect to computer direct via usb, using following signals
|
|
170
173
|
// to enter flash mode automatically.
|
|
171
|
-
await this.setRTS(false);
|
|
172
174
|
await this.setDTR(false);
|
|
175
|
+
await this.setRTS(false);
|
|
173
176
|
await this.sleep(100);
|
|
174
177
|
|
|
175
178
|
await this.setDTR(true);
|
|
@@ -181,8 +184,8 @@ export class ESPLoader extends EventTarget {
|
|
|
181
184
|
await this.setRTS(true);
|
|
182
185
|
|
|
183
186
|
await this.sleep(100);
|
|
184
|
-
await this.setRTS(false);
|
|
185
187
|
await this.setDTR(false);
|
|
188
|
+
await this.setRTS(false);
|
|
186
189
|
} else {
|
|
187
190
|
// otherwise, esp chip should be connected to computer via usb-serial
|
|
188
191
|
// bridge chip like ch340,CP2102 etc.
|
|
@@ -242,7 +245,10 @@ export class ESPLoader extends EventTarget {
|
|
|
242
245
|
} else if (
|
|
243
246
|
this.chipFamily == CHIP_FAMILY_ESP32S2 ||
|
|
244
247
|
this.chipFamily == CHIP_FAMILY_ESP32S3 ||
|
|
245
|
-
this.chipFamily ==
|
|
248
|
+
this.chipFamily == CHIP_FAMILY_ESP32C2 ||
|
|
249
|
+
this.chipFamily == CHIP_FAMILY_ESP32C3 ||
|
|
250
|
+
this.chipFamily == CHIP_FAMILY_ESP32C6 ||
|
|
251
|
+
this.chipFamily == CHIP_FAMILY_ESP32H2
|
|
246
252
|
) {
|
|
247
253
|
macAddr[0] = (mac1 >> 8) & 0xff;
|
|
248
254
|
macAddr[1] = mac1 & 0xff;
|
|
@@ -276,7 +282,7 @@ export class ESPLoader extends EventTarget {
|
|
|
276
282
|
opcode: number,
|
|
277
283
|
buffer: number[],
|
|
278
284
|
checksum = 0,
|
|
279
|
-
timeout = DEFAULT_TIMEOUT
|
|
285
|
+
timeout = DEFAULT_TIMEOUT,
|
|
280
286
|
): Promise<[number, number[]]> {
|
|
281
287
|
timeout = Math.min(timeout, MAX_TIMEOUT);
|
|
282
288
|
await this.sendCommand(opcode, buffer, checksum);
|
|
@@ -295,7 +301,10 @@ export class ESPLoader extends EventTarget {
|
|
|
295
301
|
CHIP_FAMILY_ESP32,
|
|
296
302
|
CHIP_FAMILY_ESP32S2,
|
|
297
303
|
CHIP_FAMILY_ESP32S3,
|
|
304
|
+
CHIP_FAMILY_ESP32C2,
|
|
298
305
|
CHIP_FAMILY_ESP32C3,
|
|
306
|
+
CHIP_FAMILY_ESP32C6,
|
|
307
|
+
CHIP_FAMILY_ESP32H2,
|
|
299
308
|
].includes(this.chipFamily)
|
|
300
309
|
) {
|
|
301
310
|
statusLen = 4;
|
|
@@ -339,7 +348,7 @@ export class ESPLoader extends EventTarget {
|
|
|
339
348
|
if (this.debug) {
|
|
340
349
|
this.logger.debug(
|
|
341
350
|
`Writing ${packet.length} byte${packet.length == 1 ? "" : "s"}:`,
|
|
342
|
-
packet
|
|
351
|
+
packet,
|
|
343
352
|
);
|
|
344
353
|
}
|
|
345
354
|
await this.writeToStream(packet);
|
|
@@ -374,7 +383,7 @@ export class ESPLoader extends EventTarget {
|
|
|
374
383
|
}
|
|
375
384
|
if (this.debug)
|
|
376
385
|
this.logger.debug(
|
|
377
|
-
"Read " + readBytes.length + " bytes: " + hexFormatter(readBytes)
|
|
386
|
+
"Read " + readBytes.length + " bytes: " + hexFormatter(readBytes),
|
|
378
387
|
);
|
|
379
388
|
for (let b of readBytes) {
|
|
380
389
|
if (partialPacket === null) {
|
|
@@ -384,15 +393,15 @@ export class ESPLoader extends EventTarget {
|
|
|
384
393
|
} else {
|
|
385
394
|
if (this.debug) {
|
|
386
395
|
this.logger.debug(
|
|
387
|
-
"Read invalid data: " + hexFormatter(readBytes)
|
|
396
|
+
"Read invalid data: " + hexFormatter(readBytes),
|
|
388
397
|
);
|
|
389
398
|
this.logger.debug(
|
|
390
399
|
"Remaining data in serial buffer: " +
|
|
391
|
-
hexFormatter(this._inputBuffer)
|
|
400
|
+
hexFormatter(this._inputBuffer),
|
|
392
401
|
);
|
|
393
402
|
}
|
|
394
403
|
throw new SlipReadError(
|
|
395
|
-
"Invalid head of packet (" + toHex(b) + ")"
|
|
404
|
+
"Invalid head of packet (" + toHex(b) + ")",
|
|
396
405
|
);
|
|
397
406
|
}
|
|
398
407
|
} else if (inEscape) {
|
|
@@ -405,15 +414,15 @@ export class ESPLoader extends EventTarget {
|
|
|
405
414
|
} else {
|
|
406
415
|
if (this.debug) {
|
|
407
416
|
this.logger.debug(
|
|
408
|
-
"Read invalid data: " + hexFormatter(readBytes)
|
|
417
|
+
"Read invalid data: " + hexFormatter(readBytes),
|
|
409
418
|
);
|
|
410
419
|
this.logger.debug(
|
|
411
420
|
"Remaining data in serial buffer: " +
|
|
412
|
-
hexFormatter(this._inputBuffer)
|
|
421
|
+
hexFormatter(this._inputBuffer),
|
|
413
422
|
);
|
|
414
423
|
}
|
|
415
424
|
throw new SlipReadError(
|
|
416
|
-
"Invalid SLIP escape (0xdb, " + toHex(b) + ")"
|
|
425
|
+
"Invalid SLIP escape (0xdb, " + toHex(b) + ")",
|
|
417
426
|
);
|
|
418
427
|
}
|
|
419
428
|
} else if (b == 0xdb) {
|
|
@@ -423,7 +432,7 @@ export class ESPLoader extends EventTarget {
|
|
|
423
432
|
// end of packet
|
|
424
433
|
if (this.debug)
|
|
425
434
|
this.logger.debug(
|
|
426
|
-
"Received full packet: " + hexFormatter(partialPacket)
|
|
435
|
+
"Received full packet: " + hexFormatter(partialPacket),
|
|
427
436
|
);
|
|
428
437
|
return partialPacket;
|
|
429
438
|
} else {
|
|
@@ -443,7 +452,7 @@ export class ESPLoader extends EventTarget {
|
|
|
443
452
|
*/
|
|
444
453
|
async getResponse(
|
|
445
454
|
opcode: number,
|
|
446
|
-
timeout = DEFAULT_TIMEOUT
|
|
455
|
+
timeout = DEFAULT_TIMEOUT,
|
|
447
456
|
): Promise<[number, number[]]> {
|
|
448
457
|
for (let i = 0; i < 100; i++) {
|
|
449
458
|
const packet = await this.readPacket(timeout);
|
|
@@ -493,7 +502,7 @@ export class ESPLoader extends EventTarget {
|
|
|
493
502
|
} catch (e) {
|
|
494
503
|
console.error(e);
|
|
495
504
|
throw new Error(
|
|
496
|
-
`Unable to change the baud rate to ${baud}: No response from set baud rate command
|
|
505
|
+
`Unable to change the baud rate to ${baud}: No response from set baud rate command.`,
|
|
497
506
|
);
|
|
498
507
|
}
|
|
499
508
|
|
|
@@ -587,7 +596,7 @@ export class ESPLoader extends EventTarget {
|
|
|
587
596
|
binaryData: ArrayBuffer,
|
|
588
597
|
updateProgress: (bytesWritten: number, totalBytes: number) => void,
|
|
589
598
|
offset = 0,
|
|
590
|
-
compress = false
|
|
599
|
+
compress = false,
|
|
591
600
|
) {
|
|
592
601
|
if (binaryData.byteLength >= 8) {
|
|
593
602
|
// unpack the (potential) image header
|
|
@@ -598,8 +607,8 @@ export class ESPLoader extends EventTarget {
|
|
|
598
607
|
|
|
599
608
|
this.logger.log(
|
|
600
609
|
`Image header, Magic=${toHex(headerMagic)}, FlashMode=${toHex(
|
|
601
|
-
headerFlashMode
|
|
602
|
-
)}, FlashSizeFreq=${toHex(headerFlashSizeFreq)}
|
|
610
|
+
headerFlashMode,
|
|
611
|
+
)}, FlashSizeFreq=${toHex(headerFlashSizeFreq)}`,
|
|
603
612
|
);
|
|
604
613
|
}
|
|
605
614
|
|
|
@@ -615,12 +624,12 @@ export class ESPLoader extends EventTarget {
|
|
|
615
624
|
}).buffer;
|
|
616
625
|
compressedFilesize = dataToFlash.byteLength;
|
|
617
626
|
this.logger.log(
|
|
618
|
-
`Writing data with filesize: ${uncompressedFilesize}. Compressed Size: ${compressedFilesize}
|
|
627
|
+
`Writing data with filesize: ${uncompressedFilesize}. Compressed Size: ${compressedFilesize}`,
|
|
619
628
|
);
|
|
620
629
|
timeout = await this.flashDeflBegin(
|
|
621
630
|
uncompressedFilesize,
|
|
622
631
|
compressedFilesize,
|
|
623
|
-
offset
|
|
632
|
+
offset,
|
|
624
633
|
);
|
|
625
634
|
} else {
|
|
626
635
|
this.logger.log(`Writing data with filesize: ${uncompressedFilesize}`);
|
|
@@ -640,21 +649,21 @@ export class ESPLoader extends EventTarget {
|
|
|
640
649
|
while (filesize - position > 0) {
|
|
641
650
|
if (this.debug) {
|
|
642
651
|
this.logger.log(
|
|
643
|
-
`Writing at ${toHex(offset + seq * flashWriteSize, 8)}
|
|
652
|
+
`Writing at ${toHex(offset + seq * flashWriteSize, 8)} `,
|
|
644
653
|
);
|
|
645
654
|
}
|
|
646
655
|
if (filesize - position >= flashWriteSize) {
|
|
647
656
|
block = Array.from(
|
|
648
|
-
new Uint8Array(dataToFlash, position, flashWriteSize)
|
|
657
|
+
new Uint8Array(dataToFlash, position, flashWriteSize),
|
|
649
658
|
);
|
|
650
659
|
} else {
|
|
651
660
|
// Pad the last block only if we are sending uncompressed data.
|
|
652
661
|
block = Array.from(
|
|
653
|
-
new Uint8Array(dataToFlash, position, filesize - position)
|
|
662
|
+
new Uint8Array(dataToFlash, position, filesize - position),
|
|
654
663
|
);
|
|
655
664
|
if (!compress) {
|
|
656
665
|
block = block.concat(
|
|
657
|
-
new Array(flashWriteSize - block.length).fill(0xff)
|
|
666
|
+
new Array(flashWriteSize - block.length).fill(0xff),
|
|
658
667
|
);
|
|
659
668
|
}
|
|
660
669
|
}
|
|
@@ -672,11 +681,11 @@ export class ESPLoader extends EventTarget {
|
|
|
672
681
|
position += flashWriteSize;
|
|
673
682
|
updateProgress(
|
|
674
683
|
Math.min(written, uncompressedFilesize),
|
|
675
|
-
uncompressedFilesize
|
|
684
|
+
uncompressedFilesize,
|
|
676
685
|
);
|
|
677
686
|
}
|
|
678
687
|
this.logger.log(
|
|
679
|
-
"Took " + (Date.now() - stamp) + "ms to write " + filesize + " bytes"
|
|
688
|
+
"Took " + (Date.now() - stamp) + "ms to write " + filesize + " bytes",
|
|
680
689
|
);
|
|
681
690
|
|
|
682
691
|
// Only send flashF finish if running the stub because ir causes the ROM to exit and run user code
|
|
@@ -699,7 +708,7 @@ export class ESPLoader extends EventTarget {
|
|
|
699
708
|
ESP_FLASH_DATA,
|
|
700
709
|
pack("<IIII", data.length, seq, 0, 0).concat(data),
|
|
701
710
|
this.checksum(data),
|
|
702
|
-
timeout
|
|
711
|
+
timeout,
|
|
703
712
|
);
|
|
704
713
|
}
|
|
705
714
|
async flashDeflBlock(data: number[], seq: number, timeout = DEFAULT_TIMEOUT) {
|
|
@@ -707,7 +716,7 @@ export class ESPLoader extends EventTarget {
|
|
|
707
716
|
ESP_FLASH_DEFL_DATA,
|
|
708
717
|
pack("<IIII", data.length, seq, 0, 0).concat(data),
|
|
709
718
|
this.checksum(data),
|
|
710
|
-
timeout
|
|
719
|
+
timeout,
|
|
711
720
|
);
|
|
712
721
|
}
|
|
713
722
|
|
|
@@ -726,7 +735,10 @@ export class ESPLoader extends EventTarget {
|
|
|
726
735
|
CHIP_FAMILY_ESP32,
|
|
727
736
|
CHIP_FAMILY_ESP32S2,
|
|
728
737
|
CHIP_FAMILY_ESP32S3,
|
|
738
|
+
CHIP_FAMILY_ESP32C2,
|
|
729
739
|
CHIP_FAMILY_ESP32C3,
|
|
740
|
+
CHIP_FAMILY_ESP32C6,
|
|
741
|
+
CHIP_FAMILY_ESP32H2,
|
|
730
742
|
].includes(this.chipFamily)
|
|
731
743
|
) {
|
|
732
744
|
await this.checkCommand(ESP_SPI_ATTACH, new Array(8).fill(0));
|
|
@@ -751,7 +763,10 @@ export class ESPLoader extends EventTarget {
|
|
|
751
763
|
this.chipFamily == CHIP_FAMILY_ESP32 ||
|
|
752
764
|
this.chipFamily == CHIP_FAMILY_ESP32S2 ||
|
|
753
765
|
this.chipFamily == CHIP_FAMILY_ESP32S3 ||
|
|
754
|
-
this.chipFamily ==
|
|
766
|
+
this.chipFamily == CHIP_FAMILY_ESP32C2 ||
|
|
767
|
+
this.chipFamily == CHIP_FAMILY_ESP32C3 ||
|
|
768
|
+
this.chipFamily == CHIP_FAMILY_ESP32C6 ||
|
|
769
|
+
this.chipFamily == CHIP_FAMILY_ESP32H2
|
|
755
770
|
) {
|
|
756
771
|
buffer = buffer.concat(pack("<I", encrypted ? 1 : 0));
|
|
757
772
|
}
|
|
@@ -765,12 +780,12 @@ export class ESPLoader extends EventTarget {
|
|
|
765
780
|
", offset " +
|
|
766
781
|
toHex(offset, 4) +
|
|
767
782
|
", encrypted " +
|
|
768
|
-
(encrypted ? "yes" : "no")
|
|
783
|
+
(encrypted ? "yes" : "no"),
|
|
769
784
|
);
|
|
770
785
|
await this.checkCommand(ESP_FLASH_BEGIN, buffer, 0, timeout);
|
|
771
786
|
if (size != 0 && !this.IS_STUB) {
|
|
772
787
|
this.logger.log(
|
|
773
|
-
"Took " + (Date.now() - stamp) + "ms to erase " + numBlocks + " bytes"
|
|
788
|
+
"Took " + (Date.now() - stamp) + "ms to erase " + numBlocks + " bytes",
|
|
774
789
|
);
|
|
775
790
|
}
|
|
776
791
|
return numBlocks;
|
|
@@ -785,13 +800,13 @@ export class ESPLoader extends EventTarget {
|
|
|
785
800
|
size = 0,
|
|
786
801
|
compressedSize = 0,
|
|
787
802
|
offset = 0,
|
|
788
|
-
encrypted = false
|
|
803
|
+
encrypted = false,
|
|
789
804
|
) {
|
|
790
805
|
// Start downloading compressed data to Flash (performs an erase)
|
|
791
806
|
// Returns number of blocks to write.
|
|
792
807
|
let flashWriteSize = this.getFlashWriteSize();
|
|
793
808
|
let numBlocks = Math.floor(
|
|
794
|
-
(compressedSize + flashWriteSize - 1) / flashWriteSize
|
|
809
|
+
(compressedSize + flashWriteSize - 1) / flashWriteSize,
|
|
795
810
|
);
|
|
796
811
|
let eraseBlocks = Math.floor((size + flashWriteSize - 1) / flashWriteSize);
|
|
797
812
|
let writeSize = 0;
|
|
@@ -843,7 +858,7 @@ export class ESPLoader extends EventTarget {
|
|
|
843
858
|
value: number,
|
|
844
859
|
mask = 0xffffffff,
|
|
845
860
|
delayUs = 0,
|
|
846
|
-
delayAfterUs = 0
|
|
861
|
+
delayAfterUs = 0,
|
|
847
862
|
) {
|
|
848
863
|
let buffer = pack("<IIII", address, value, mask, delayUs);
|
|
849
864
|
if (delayAfterUs > 0) {
|
|
@@ -854,8 +869,8 @@ export class ESPLoader extends EventTarget {
|
|
|
854
869
|
getSpiFlashAddresses(this.getChipFamily()).uartDateReg,
|
|
855
870
|
0,
|
|
856
871
|
0,
|
|
857
|
-
delayAfterUs
|
|
858
|
-
)
|
|
872
|
+
delayAfterUs,
|
|
873
|
+
),
|
|
859
874
|
);
|
|
860
875
|
}
|
|
861
876
|
await this.checkCommand(ESP_WRITE_REG, buffer);
|
|
@@ -864,7 +879,7 @@ export class ESPLoader extends EventTarget {
|
|
|
864
879
|
async setDataLengths(
|
|
865
880
|
spiAddresses: SpiFlashAddresses,
|
|
866
881
|
mosiBits: number,
|
|
867
|
-
misoBits: number
|
|
882
|
+
misoBits: number,
|
|
868
883
|
) {
|
|
869
884
|
if (spiAddresses.mosiDlenOffs != -1) {
|
|
870
885
|
// ESP32/32S2/32S3/32C3 has a more sophisticated way to set up "user" commands
|
|
@@ -900,7 +915,7 @@ export class ESPLoader extends EventTarget {
|
|
|
900
915
|
async runSpiFlashCommand(
|
|
901
916
|
spiflashCommand: number,
|
|
902
917
|
data: number[],
|
|
903
|
-
readBits = 0
|
|
918
|
+
readBits = 0,
|
|
904
919
|
) {
|
|
905
920
|
// Run an arbitrary SPI flash command.
|
|
906
921
|
|
|
@@ -933,12 +948,12 @@ export class ESPLoader extends EventTarget {
|
|
|
933
948
|
|
|
934
949
|
if (readBits > 32) {
|
|
935
950
|
throw new Error(
|
|
936
|
-
"Reading more than 32 bits back from a SPI flash operation is unsupported"
|
|
951
|
+
"Reading more than 32 bits back from a SPI flash operation is unsupported",
|
|
937
952
|
);
|
|
938
953
|
}
|
|
939
954
|
if (data.length > 64) {
|
|
940
955
|
throw new Error(
|
|
941
|
-
"Writing more than 64 bytes of data with one SPI command is unsupported"
|
|
956
|
+
"Writing more than 64 bytes of data with one SPI command is unsupported",
|
|
942
957
|
);
|
|
943
958
|
}
|
|
944
959
|
|
|
@@ -960,7 +975,7 @@ export class ESPLoader extends EventTarget {
|
|
|
960
975
|
await this.writeRegister(SPI_USR_REG, flags);
|
|
961
976
|
await this.writeRegister(
|
|
962
977
|
SPI_USR2_REG,
|
|
963
|
-
(7 << SPI_USR2_COMMAND_LEN_SHIFT) | spiflashCommand
|
|
978
|
+
(7 << SPI_USR2_COMMAND_LEN_SHIFT) | spiflashCommand,
|
|
964
979
|
);
|
|
965
980
|
if (dataBits == 0) {
|
|
966
981
|
await this.writeRegister(SPI_W0_REG, 0); // clear data register before we read it
|
|
@@ -974,7 +989,7 @@ export class ESPLoader extends EventTarget {
|
|
|
974
989
|
|
|
975
990
|
for (const word of words) {
|
|
976
991
|
this.logger.debug(
|
|
977
|
-
`Writing word ${toHex(word)} to register offset ${toHex(nextReg)}
|
|
992
|
+
`Writing word ${toHex(word)} to register offset ${toHex(nextReg)}`,
|
|
978
993
|
);
|
|
979
994
|
await this.writeRegister(nextReg, word);
|
|
980
995
|
nextReg += 4;
|
|
@@ -1000,8 +1015,8 @@ export class ESPLoader extends EventTarget {
|
|
|
1000
1015
|
this.logger.log(`Flash Manufacturer: ${manufacturer.toString(16)}`);
|
|
1001
1016
|
this.logger.log(
|
|
1002
1017
|
`Flash Device: ${((flashId >> 8) & 0xff).toString(
|
|
1003
|
-
16
|
|
1004
|
-
)}${flashIdLowbyte.toString(16)}
|
|
1018
|
+
16,
|
|
1019
|
+
)}${flashIdLowbyte.toString(16)}`,
|
|
1005
1020
|
);
|
|
1006
1021
|
|
|
1007
1022
|
this.flashSize = DETECTED_FLASH_SIZES[flashIdLowbyte];
|
|
@@ -1039,11 +1054,11 @@ export class ESPLoader extends EventTarget {
|
|
|
1039
1054
|
size: number,
|
|
1040
1055
|
blocks: number,
|
|
1041
1056
|
blocksize: number,
|
|
1042
|
-
offset: number
|
|
1057
|
+
offset: number,
|
|
1043
1058
|
) {
|
|
1044
1059
|
return await this.checkCommand(
|
|
1045
1060
|
ESP_MEM_BEGIN,
|
|
1046
|
-
pack("<IIII", size, blocks, blocksize, offset)
|
|
1061
|
+
pack("<IIII", size, blocks, blocksize, offset),
|
|
1047
1062
|
);
|
|
1048
1063
|
}
|
|
1049
1064
|
|
|
@@ -1055,7 +1070,7 @@ export class ESPLoader extends EventTarget {
|
|
|
1055
1070
|
return await this.checkCommand(
|
|
1056
1071
|
ESP_MEM_DATA,
|
|
1057
1072
|
pack("<IIII", data.length, seq, 0, 0).concat(data),
|
|
1058
|
-
this.checksum(data)
|
|
1073
|
+
this.checksum(data),
|
|
1059
1074
|
);
|
|
1060
1075
|
}
|
|
1061
1076
|
|
|
@@ -1160,7 +1175,7 @@ class EspStubLoader extends ESPLoader {
|
|
|
1160
1175
|
size: number,
|
|
1161
1176
|
blocks: number,
|
|
1162
1177
|
blocksize: number,
|
|
1163
|
-
offset: number
|
|
1178
|
+
offset: number,
|
|
1164
1179
|
): Promise<any> {
|
|
1165
1180
|
let stub = await getStubCode(this.chipFamily);
|
|
1166
1181
|
let load_start = offset;
|
|
@@ -1170,7 +1185,7 @@ class EspStubLoader extends ESPLoader {
|
|
|
1170
1185
|
stub.data_start,
|
|
1171
1186
|
stub.data.length,
|
|
1172
1187
|
stub.text_start,
|
|
1173
|
-
stub.text.length
|
|
1188
|
+
stub.text.length,
|
|
1174
1189
|
);
|
|
1175
1190
|
for (let [start, end] of [
|
|
1176
1191
|
[stub.data_start, stub.data_start + stub.data.length],
|
|
@@ -1188,7 +1203,7 @@ class EspStubLoader extends ESPLoader {
|
|
|
1188
1203
|
"-" +
|
|
1189
1204
|
toHex(load_end, 8) +
|
|
1190
1205
|
". " +
|
|
1191
|
-
"Try changing the binary loading address."
|
|
1206
|
+
"Try changing the binary loading address.",
|
|
1192
1207
|
);
|
|
1193
1208
|
}
|
|
1194
1209
|
}
|
package/src/index.ts
CHANGED
package/src/stubs/esp32.json
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"entry": 1074521560,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1074520064,
|
|
5
|
+
"data": "DMD8P9jnC0Br6AtAA+0LQPLoC0CL6AtA8ugLQFHpC0Ae6gtAkOoLQDnqC0CB5wtAtukLQBDqC0B06QtAtOoLQJ7pC0C06gtAWegLQLboC0Dy6AtAUekLQHHoC0Bk6wtAxewLQKTmC0Dn7AtApOYLQKTmC0Ck5gtApOYLQKTmC0Ck5gtApOYLQKTmC0AL6wtApOYLQOXrC0DF7AtA",
|
|
6
|
+
"data_start": 1073605544
|
|
7
|
+
}
|
package/src/stubs/esp32c2.json
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"entry": 1077413304,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1077411840,
|
|
5
|
+
"data": "DEDKP+AIOEAsCThAhAk4QCgKOECUCjhAQgo4QKgHOEDkCThAJAo4QJgJOEBYBzhAzAk4QFgHOEC6CDhA/gg4QCwJOECECThAzAg4QBIIOEBCCDhAyAg4QOwMOEAsCThArAs4QKAMOECkBjhAygw4QKQGOECkBjhApAY4QKQGOECkBjhApAY4QKQGOECkBjhASAs4QKQGOEDICzhAoAw4QA==",
|
|
6
|
+
"data_start": 1070295976
|
|
7
|
+
}
|
package/src/stubs/esp32c3.json
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"entry": 1077413532,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1077411840,
|
|
5
|
+
"data": "FEDIP3IKOEDCCjhAGgs4QL4LOEAqDDhA2As4QD4JOEB6CzhAugs4QC4LOEDuCDhAYgs4QO4IOEBMCjhAkgo4QMIKOEAaCzhAXgo4QKIJOEDSCThAWgo4QIIOOEDCCjhAQg04QDoOOEAuCDhAYg44QC4IOEAuCDhALgg4QC4IOEAuCDhALgg4QC4IOEAuCDhA3gw4QC4IOEBgDThAOg44QA==",
|
|
6
|
+
"data_start": 1070164912
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entry": 1082132112,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1082130432,
|
|
5
|
+
"data": "EACEQD4KgECOCoBA5gqAQIoLgED2C4BApAuAQAoJgEBGC4BAhguAQPoKgEC6CIBALguAQLoIgEAYCoBAXgqAQI4KgEDmCoBAKgqAQG4JgECeCYBAJgqAQE4OgECOCoBADg2AQAYOgED6B4BALg6AQPoHgED6B4BA+geAQPoHgED6B4BA+geAQPoHgED6B4BAqgyAQPoHgEAsDYBABg6AQA==",
|
|
6
|
+
"data_start": 1082469292
|
|
7
|
+
}
|
package/src/stubs/esp32h2.json
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"entry": 1082132112,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1082130432,
|
|
5
|
+
"data": "EACDQD4KgECOCoBA5gqAQIoLgED2C4BApAuAQAoJgEBGC4BAhguAQPoKgEC6CIBALguAQLoIgEAYCoBAXgqAQI4KgEDmCoBAKgqAQG4JgECeCYBAJgqAQE4OgECOCoBADg2AQAYOgED6B4BALg6AQPoHgED6B4BA+geAQPoHgED6B4BA+geAQPoHgED6B4BAqgyAQPoHgEAsDYBABg6AQA==",
|
|
6
|
+
"data_start": 1082403756
|
|
7
|
+
}
|
package/src/stubs/esp32s2.json
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"entry": 1073907696,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 1073905664,
|
|
5
|
+
"data": "WAD9PzeLAkDJiwJAjpACQFKMAkDqiwJAUowCQLGMAkB6jQJA7Y0CQJWNAkDBigJAE40CQGyNAkDUjAJAEI4CQP6MAkAQjgJAt4sCQBaMAkBSjAJAsYwCQM+LAkADiwJA044CQEaQAkDWiQJAbZACQNaJAkDWiQJA1okCQNaJAkDWiQJA1okCQNaJAkDWiQJAcI4CQNaJAkBljwJARpACQA==",
|
|
6
|
+
"data_start": 1073622012
|
|
7
|
+
}
|