esp32tool 1.3.4 → 1.3.6
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/apple-touch-icon.png +0 -0
- package/dist/const.d.ts +10 -0
- package/dist/const.js +11 -0
- package/dist/esp_loader.d.ts +6 -0
- package/dist/esp_loader.js +53 -11
- package/dist/web/index.js +1 -1
- package/icons/icon-128.png +0 -0
- package/icons/icon-144.png +0 -0
- package/icons/icon-152.png +0 -0
- package/icons/icon-192.png +0 -0
- package/icons/icon-384.png +0 -0
- package/icons/icon-512.png +0 -0
- package/icons/icon-72.png +0 -0
- package/icons/icon-96.png +0 -0
- package/js/modules/esptool.js +1 -1
- package/package.json +1 -1
- package/screenshots/desktop.png +0 -0
- package/screenshots/mobile.png +0 -0
- package/src/const.ts +14 -0
- package/src/esp_loader.ts +98 -6
- package/sw.js +1 -1
package/apple-touch-icon.png
CHANGED
|
Binary file
|
package/dist/const.d.ts
CHANGED
|
@@ -277,6 +277,16 @@ export declare const ESP32P4_GPIO_STRAP_REG = 1343094840;
|
|
|
277
277
|
export declare const ESP32P4_GPIO_STRAP_SPI_BOOT_MASK = 8;
|
|
278
278
|
export declare const ESP32P4_RTC_CNTL_OPTION1_REG = 1343291400;
|
|
279
279
|
export declare const ESP32P4_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK = 4;
|
|
280
|
+
export declare const ESP32P4_DR_REG_LPAON_BASE = 1343291392;
|
|
281
|
+
export declare const ESP32P4_DR_REG_PMU_BASE: number;
|
|
282
|
+
export declare const ESP32P4_DR_REG_LP_SYS_BASE: number;
|
|
283
|
+
export declare const ESP32P4_LP_SYSTEM_REG_ANA_XPD_PAD_GROUP_REG: number;
|
|
284
|
+
export declare const ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG: number;
|
|
285
|
+
export declare const ESP32P4_PMU_ANA_0P1A_EN_CUR_LIM_0: number;
|
|
286
|
+
export declare const ESP32P4_PMU_EXT_LDO_P0_0P1A_REG: number;
|
|
287
|
+
export declare const ESP32P4_PMU_0P1A_TARGET0_0: number;
|
|
288
|
+
export declare const ESP32P4_PMU_0P1A_FORCE_TIEH_SEL_0: number;
|
|
289
|
+
export declare const ESP32P4_PMU_DATE_REG: number;
|
|
280
290
|
export declare const ESP32S31_SPI_REG_BASE = 542113792;
|
|
281
291
|
export declare const ESP32S31_BASEFUSEADDR = 544296960;
|
|
282
292
|
export declare const ESP32S31_EFUSE_BLOCK1_ADDR: number;
|
package/dist/const.js
CHANGED
|
@@ -318,6 +318,17 @@ export const ESP32P4_GPIO_STRAP_REG = 0x500e0038;
|
|
|
318
318
|
export const ESP32P4_GPIO_STRAP_SPI_BOOT_MASK = 0x8; // Not download mode
|
|
319
319
|
export const ESP32P4_RTC_CNTL_OPTION1_REG = 0x50110008;
|
|
320
320
|
export const ESP32P4_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK = 0x4; // Is download mode forced over USB?
|
|
321
|
+
// Flash power-on related registers and bits needed for ECO6 (Rev 301)
|
|
322
|
+
export const ESP32P4_DR_REG_LPAON_BASE = 0x50110000;
|
|
323
|
+
export const ESP32P4_DR_REG_PMU_BASE = ESP32P4_DR_REG_LPAON_BASE + 0x5000;
|
|
324
|
+
export const ESP32P4_DR_REG_LP_SYS_BASE = ESP32P4_DR_REG_LPAON_BASE + 0x0;
|
|
325
|
+
export const ESP32P4_LP_SYSTEM_REG_ANA_XPD_PAD_GROUP_REG = ESP32P4_DR_REG_LP_SYS_BASE + 0x10c;
|
|
326
|
+
export const ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG = ESP32P4_DR_REG_PMU_BASE + 0x1bc;
|
|
327
|
+
export const ESP32P4_PMU_ANA_0P1A_EN_CUR_LIM_0 = 1 << 27;
|
|
328
|
+
export const ESP32P4_PMU_EXT_LDO_P0_0P1A_REG = ESP32P4_DR_REG_PMU_BASE + 0x1b8;
|
|
329
|
+
export const ESP32P4_PMU_0P1A_TARGET0_0 = 0xff << 23;
|
|
330
|
+
export const ESP32P4_PMU_0P1A_FORCE_TIEH_SEL_0 = 1 << 7;
|
|
331
|
+
export const ESP32P4_PMU_DATE_REG = ESP32P4_DR_REG_PMU_BASE + 0x3fc;
|
|
321
332
|
export const ESP32S31_SPI_REG_BASE = 0x20500000;
|
|
322
333
|
export const ESP32S31_BASEFUSEADDR = 0x20715000;
|
|
323
334
|
export const ESP32S31_EFUSE_BLOCK1_ADDR = ESP32S31_BASEFUSEADDR + 0x044;
|
package/dist/esp_loader.d.ts
CHANGED
|
@@ -88,6 +88,12 @@ export declare class ESPLoader extends EventTarget {
|
|
|
88
88
|
* Get chip revision for ESP32-P4
|
|
89
89
|
*/
|
|
90
90
|
getChipRevision(): Promise<number>;
|
|
91
|
+
/**
|
|
92
|
+
* Power on the flash chip for ESP32-P4 Rev 301 (ECO6)
|
|
93
|
+
* The flash chip is powered off by default on ECO6, when the default flash
|
|
94
|
+
* voltage changed from 1.8V to 3.3V. This is to prevent damage to 1.8V flash chips.
|
|
95
|
+
*/
|
|
96
|
+
powerOnFlash(): Promise<void>;
|
|
91
97
|
/**
|
|
92
98
|
* Get security info including chip ID (ESP32-C3 and later)
|
|
93
99
|
*/
|
package/dist/esp_loader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="@types/w3c-web-serial" />
|
|
2
|
-
import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SYNC, ESP_GET_SECURITY_INFO, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, ESP_ERASE_REGION, ESP_READ_FLASH, CHIP_ERASE_TIMEOUT, FLASH_READ_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, USB_JTAG_SERIAL_PID, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, getSpiFlashAddresses, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, CHIP_ID_TO_INFO, ESP32P4_EFUSE_BLOCK1_ADDR, SlipReadError, ESP32S2_RTC_CNTL_WDTWPROTECT_REG, ESP32S2_RTC_CNTL_WDTCONFIG0_REG, ESP32S2_RTC_CNTL_WDTCONFIG1_REG, ESP32S2_RTC_CNTL_WDT_WKEY, ESP32S2_RTC_CNTL_OPTION1_REG, ESP32S2_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, ESP32S3_RTC_CNTL_WDTWPROTECT_REG, ESP32S3_RTC_CNTL_WDTCONFIG0_REG, ESP32S3_RTC_CNTL_WDTCONFIG1_REG, ESP32S3_RTC_CNTL_WDT_WKEY, ESP32S3_RTC_CNTL_OPTION1_REG, ESP32S3_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, ESP32C3_EFUSE_RD_MAC_SPI_SYS_3_REG, ESP32C3_EFUSE_RD_MAC_SPI_SYS_5_REG, ESP32C3_RTC_CNTL_WDTWPROTECT_REG, ESP32C3_RTC_CNTL_WDTCONFIG0_REG, ESP32C3_RTC_CNTL_WDTCONFIG1_REG, ESP32C3_RTC_CNTL_WDT_WKEY, ESP32C5_C6_RTC_CNTL_WDTWPROTECT_REG, ESP32C5_C6_RTC_CNTL_WDTCONFIG0_REG, ESP32C5_C6_RTC_CNTL_WDTCONFIG1_REG, ESP32C5_C6_RTC_CNTL_WDT_WKEY, ESP32P4_RTC_CNTL_WDTWPROTECT_REG, ESP32P4_RTC_CNTL_WDTCONFIG0_REG, ESP32P4_RTC_CNTL_WDTCONFIG1_REG, ESP32P4_RTC_CNTL_WDT_WKEY, ESP32P4_RTC_CNTL_OPTION1_REG, ESP32P4_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, } from "./const";
|
|
2
|
+
import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SYNC, ESP_GET_SECURITY_INFO, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, ESP_ERASE_REGION, ESP_READ_FLASH, CHIP_ERASE_TIMEOUT, FLASH_READ_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, USB_JTAG_SERIAL_PID, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, getSpiFlashAddresses, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, CHIP_ID_TO_INFO, ESP32P4_EFUSE_BLOCK1_ADDR, SlipReadError, ESP32S2_RTC_CNTL_WDTWPROTECT_REG, ESP32S2_RTC_CNTL_WDTCONFIG0_REG, ESP32S2_RTC_CNTL_WDTCONFIG1_REG, ESP32S2_RTC_CNTL_WDT_WKEY, ESP32S2_RTC_CNTL_OPTION1_REG, ESP32S2_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, ESP32S3_RTC_CNTL_WDTWPROTECT_REG, ESP32S3_RTC_CNTL_WDTCONFIG0_REG, ESP32S3_RTC_CNTL_WDTCONFIG1_REG, ESP32S3_RTC_CNTL_WDT_WKEY, ESP32S3_RTC_CNTL_OPTION1_REG, ESP32S3_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, ESP32C3_EFUSE_RD_MAC_SPI_SYS_3_REG, ESP32C3_EFUSE_RD_MAC_SPI_SYS_5_REG, ESP32C3_RTC_CNTL_WDTWPROTECT_REG, ESP32C3_RTC_CNTL_WDTCONFIG0_REG, ESP32C3_RTC_CNTL_WDTCONFIG1_REG, ESP32C3_RTC_CNTL_WDT_WKEY, ESP32C5_C6_RTC_CNTL_WDTWPROTECT_REG, ESP32C5_C6_RTC_CNTL_WDTCONFIG0_REG, ESP32C5_C6_RTC_CNTL_WDTCONFIG1_REG, ESP32C5_C6_RTC_CNTL_WDT_WKEY, ESP32P4_RTC_CNTL_WDTWPROTECT_REG, ESP32P4_RTC_CNTL_WDTCONFIG0_REG, ESP32P4_RTC_CNTL_WDTCONFIG1_REG, ESP32P4_RTC_CNTL_WDT_WKEY, ESP32P4_RTC_CNTL_OPTION1_REG, ESP32P4_RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK, ESP32P4_LP_SYSTEM_REG_ANA_XPD_PAD_GROUP_REG, ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG, ESP32P4_PMU_ANA_0P1A_EN_CUR_LIM_0, ESP32P4_PMU_EXT_LDO_P0_0P1A_REG, ESP32P4_PMU_0P1A_TARGET0_0, ESP32P4_PMU_0P1A_FORCE_TIEH_SEL_0, ESP32P4_PMU_DATE_REG, } from "./const";
|
|
3
3
|
import { getStubCode } from "./stubs";
|
|
4
4
|
import { hexFormatter, sleep, slipEncode, toHex } from "./util";
|
|
5
5
|
import { deflate } from "pako";
|
|
@@ -345,6 +345,10 @@ export class ESPLoader extends EventTarget {
|
|
|
345
345
|
await this.connectWithResetStrategies();
|
|
346
346
|
// Detect chip type
|
|
347
347
|
await this.detectChip();
|
|
348
|
+
// Power on flash for ESP32-P4 Rev 301 (must be done before loading stub)
|
|
349
|
+
if (this.chipFamily === CHIP_FAMILY_ESP32P4 && this.chipRevision === 301) {
|
|
350
|
+
await this.powerOnFlash();
|
|
351
|
+
}
|
|
348
352
|
// Detect if device is using USB-JTAG/Serial or USB-OTG (not external serial chip)
|
|
349
353
|
// This is needed to determine the correct reset strategy for console mode
|
|
350
354
|
try {
|
|
@@ -460,6 +464,42 @@ export class ESPLoader extends EventTarget {
|
|
|
460
464
|
}
|
|
461
465
|
return 0;
|
|
462
466
|
}
|
|
467
|
+
/**
|
|
468
|
+
* Power on the flash chip for ESP32-P4 Rev 301 (ECO6)
|
|
469
|
+
* The flash chip is powered off by default on ECO6, when the default flash
|
|
470
|
+
* voltage changed from 1.8V to 3.3V. This is to prevent damage to 1.8V flash chips.
|
|
471
|
+
*/
|
|
472
|
+
async powerOnFlash() {
|
|
473
|
+
if (this.chipFamily !== CHIP_FAMILY_ESP32P4) {
|
|
474
|
+
return; // Only needed for ESP32-P4
|
|
475
|
+
}
|
|
476
|
+
if (this.chipRevision !== 301) {
|
|
477
|
+
return; // Only needed for Rev 301 (ECO6)
|
|
478
|
+
}
|
|
479
|
+
this.logger.debug("Powering on flash for ESP32-P4 Rev 301 (ECO6)");
|
|
480
|
+
// Power up pad group
|
|
481
|
+
await this.writeRegister(ESP32P4_LP_SYSTEM_REG_ANA_XPD_PAD_GROUP_REG, 1);
|
|
482
|
+
await sleep(10); // 0.01 seconds
|
|
483
|
+
// Flash power up sequence
|
|
484
|
+
const pmuAnaReg = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG);
|
|
485
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG, pmuAnaReg | ESP32P4_PMU_ANA_0P1A_EN_CUR_LIM_0);
|
|
486
|
+
const pmuReg = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG);
|
|
487
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG, pmuReg | ESP32P4_PMU_0P1A_FORCE_TIEH_SEL_0);
|
|
488
|
+
const pmuDateReg = await this.readRegister(ESP32P4_PMU_DATE_REG);
|
|
489
|
+
await this.writeRegister(ESP32P4_PMU_DATE_REG, pmuDateReg | (3 << 0));
|
|
490
|
+
await sleep(0.05); // 0.00005 seconds = 0.05 ms
|
|
491
|
+
const pmuAnaReg2 = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG);
|
|
492
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_ANA_REG, pmuAnaReg2 & ~ESP32P4_PMU_ANA_0P1A_EN_CUR_LIM_0);
|
|
493
|
+
const pmuReg2 = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG);
|
|
494
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG, pmuReg2 & ~ESP32P4_PMU_0P1A_TARGET0_0);
|
|
495
|
+
// Update eFuse voltage to PMU
|
|
496
|
+
const pmuReg3 = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG);
|
|
497
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG, pmuReg3 | 0x80);
|
|
498
|
+
const pmuReg4 = await this.readRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG);
|
|
499
|
+
await this.writeRegister(ESP32P4_PMU_EXT_LDO_P0_0P1A_REG, pmuReg4 & ~ESP32P4_PMU_0P1A_FORCE_TIEH_SEL_0);
|
|
500
|
+
await sleep(2); // 0.0018 seconds = 1.8 ms, rounded to 2ms
|
|
501
|
+
this.logger.debug("Flash powered on successfully");
|
|
502
|
+
}
|
|
463
503
|
/**
|
|
464
504
|
* Get security info including chip ID (ESP32-C3 and later)
|
|
465
505
|
*/
|
|
@@ -1318,21 +1358,17 @@ export class ESPLoader extends EventTarget {
|
|
|
1318
1358
|
const wdtResetUsed = await this.tryUsbWdtReset("ESP32-S2");
|
|
1319
1359
|
if (wdtResetUsed)
|
|
1320
1360
|
return;
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
if (wdtResetUsed)
|
|
1325
|
-
return;
|
|
1361
|
+
// } else if (this.chipFamily === CHIP_FAMILY_ESP32S3) {
|
|
1362
|
+
// const wdtResetUsed = await this.tryUsbWdtReset("ESP32-S3");
|
|
1363
|
+
// if (wdtResetUsed) return;
|
|
1326
1364
|
}
|
|
1327
1365
|
else if (this.chipFamily === CHIP_FAMILY_ESP32P4) {
|
|
1328
1366
|
const wdtResetUsed = await this.tryUsbWdtReset("ESP32-P4");
|
|
1329
1367
|
if (wdtResetUsed)
|
|
1330
1368
|
return;
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
if (wdtResetUsed)
|
|
1335
|
-
return;
|
|
1369
|
+
// } else if (this.chipFamily === CHIP_FAMILY_ESP32C3) {
|
|
1370
|
+
// const wdtResetUsed = await this.tryUsbWdtReset("ESP32-C3");
|
|
1371
|
+
// if (wdtResetUsed) return;
|
|
1336
1372
|
}
|
|
1337
1373
|
else if (this.chipFamily === CHIP_FAMILY_ESP32C5) {
|
|
1338
1374
|
const wdtResetUsed = await this.tryUsbWdtReset("ESP32-C5");
|
|
@@ -2301,6 +2337,7 @@ export class ESPLoader extends EventTarget {
|
|
|
2301
2337
|
return await this.checkCommand(ESP_MEM_END, data, 0, timeout);
|
|
2302
2338
|
}
|
|
2303
2339
|
async runStub(skipFlashDetection = false) {
|
|
2340
|
+
this.logger.debug(`Loading stub for ${this.chipName}, revision: ${this.chipRevision}`);
|
|
2304
2341
|
const stub = await getStubCode(this.chipFamily, this.chipRevision);
|
|
2305
2342
|
// No stub available for this chip, return ROM loader
|
|
2306
2343
|
if (stub === null) {
|
|
@@ -2911,6 +2948,11 @@ export class ESPLoader extends EventTarget {
|
|
|
2911
2948
|
if (!this.port.writable || !this.port.readable) {
|
|
2912
2949
|
throw new Error("Port not ready after reconnect");
|
|
2913
2950
|
}
|
|
2951
|
+
// Power on flash for ESP32-P4 Rev 301 (must be done before loading stub)
|
|
2952
|
+
if (this.chipFamily === CHIP_FAMILY_ESP32P4 &&
|
|
2953
|
+
this.chipRevision === 301) {
|
|
2954
|
+
await this.powerOnFlash();
|
|
2955
|
+
}
|
|
2914
2956
|
// Load stub
|
|
2915
2957
|
const stubLoader = await this.runStub(true);
|
|
2916
2958
|
this.logger.debug("Stub loaded");
|