tasmota-webserial-esptool 9.2.21 → 9.2.22
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/dist/const.d.ts +5 -0
- package/dist/const.js +6 -0
- package/dist/esp_loader.d.ts +1 -1
- package/dist/esp_loader.js +13 -4
- package/dist/stubs/esp32s31.json +8 -0
- package/dist/stubs/index.js +4 -2
- package/dist/web/esp32s31-cyImlcoa.js +1 -0
- package/dist/web/index.js +1 -1
- package/js/modules/esp32s31-cyImlcoa.js +1 -0
- package/js/modules/esptool.js +1 -1
- package/package.json +12 -12
- package/src/const.ts +9 -0
- package/src/esp_loader.ts +15 -3
- package/src/stubs/esp32s31.json +8 -0
- package/src/stubs/index.ts +3 -2
package/dist/const.d.ts
CHANGED
|
@@ -319,6 +319,11 @@ export declare const ESP32S31_SPI_MISO_DLEN_OFFS = 40;
|
|
|
319
319
|
export declare const ESP32S31_SPI_W0_OFFS = 88;
|
|
320
320
|
export declare const ESP32S31_UART_DATE_REG_ADDR: number;
|
|
321
321
|
export declare const ESP32S31_BOOTLOADER_FLASH_OFFSET = 8192;
|
|
322
|
+
export declare const ESP32S31_DR_REG_LP_WDT_BASE = 545263616;
|
|
323
|
+
export declare const ESP32S31_RTC_CNTL_WDTCONFIG0_REG: number;
|
|
324
|
+
export declare const ESP32S31_RTC_CNTL_WDTCONFIG1_REG: number;
|
|
325
|
+
export declare const ESP32S31_RTC_CNTL_WDTWPROTECT_REG: number;
|
|
326
|
+
export declare const ESP32S31_RTC_CNTL_WDT_WKEY = 1356348065;
|
|
322
327
|
export interface SpiFlashAddresses {
|
|
323
328
|
regBase: number;
|
|
324
329
|
baseFuse: number;
|
package/dist/const.js
CHANGED
|
@@ -364,6 +364,12 @@ export const ESP32S31_SPI_MISO_DLEN_OFFS = 0x28;
|
|
|
364
364
|
export const ESP32S31_SPI_W0_OFFS = 0x58;
|
|
365
365
|
export const ESP32S31_UART_DATE_REG_ADDR = 0x2038a000 + 0x8c;
|
|
366
366
|
export const ESP32S31_BOOTLOADER_FLASH_OFFSET = 0x2000;
|
|
367
|
+
// ESP32-S31 RTC Watchdog Timer registers (LP_WDT)
|
|
368
|
+
export const ESP32S31_DR_REG_LP_WDT_BASE = 0x20801000;
|
|
369
|
+
export const ESP32S31_RTC_CNTL_WDTCONFIG0_REG = ESP32S31_DR_REG_LP_WDT_BASE + 0x0000; // LP_WDT_RWDT_CONFIG0_REG
|
|
370
|
+
export const ESP32S31_RTC_CNTL_WDTCONFIG1_REG = ESP32S31_DR_REG_LP_WDT_BASE + 0x0004; // LP_WDT_RWDT_CONFIG1_REG
|
|
371
|
+
export const ESP32S31_RTC_CNTL_WDTWPROTECT_REG = ESP32S31_DR_REG_LP_WDT_BASE + 0x0018; // LP_WDT_RWDT_WPROTECT_REG
|
|
372
|
+
export const ESP32S31_RTC_CNTL_WDT_WKEY = 0x50d83aa1;
|
|
367
373
|
export const SYNC_PACKET = toByteArray("\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
|
|
368
374
|
export const CHIP_DETECT_MAGIC_REG_ADDR = 0x40001000;
|
|
369
375
|
// Image Chip IDs (used by ESP32-C3 and later for chip detection)
|
package/dist/esp_loader.d.ts
CHANGED
|
@@ -189,7 +189,7 @@ export declare class ESPLoader extends EventTarget {
|
|
|
189
189
|
*/
|
|
190
190
|
watchdogReset(): Promise<void>;
|
|
191
191
|
/**
|
|
192
|
-
* RTC watchdog timer reset for ESP32-S2, ESP32-S3, and ESP32-
|
|
192
|
+
* RTC watchdog timer reset for ESP32-S2, ESP32-S3, ESP32-P4, and ESP32-S31
|
|
193
193
|
* Uses specific registers for each chip family
|
|
194
194
|
* Note: ESP32-C3 does NOT boot correctly after WDT reset
|
|
195
195
|
* Note: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 do NOT support WDT reset (no usable RTC WDT path)
|
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, ESP32_BASEFUSEADDR, ESP32_APB_CTL_DATE_ADDR, ESP32S2_EFUSE_BLOCK1_ADDR, ESP32S3_EFUSE_BLOCK1_ADDR, ESP32C2_EFUSE_BLOCK2_ADDR, ESP32C5_EFUSE_BLOCK1_ADDR, ESP32C6_EFUSE_BLOCK1_ADDR, ESP32C61_EFUSE_BLOCK1_ADDR, ESP32H2_EFUSE_BLOCK1_ADDR, ESP32P4_EFUSE_BLOCK1_ADDR, ESP32S31_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, ESP32C5_UART_CLKDIV_REG, ESP32C5_PCR_SYSCLK_CONF_REG, ESP32C5_PCR_SYSCLK_XTAL_FREQ_V, ESP32C5_PCR_SYSCLK_XTAL_FREQ_S, 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, ESP32S2_UARTDEV_BUF_NO, ESP32S2_UARTDEV_BUF_NO_USB_OTG, ESP32S3_UARTDEV_BUF_NO, ESP32S3_UARTDEV_BUF_NO_USB_OTG, ESP32S3_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C3_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C3_BUF_UART_NO_OFFSET, ESP32C5_UARTDEV_BUF_NO, ESP32C5_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C6_UARTDEV_BUF_NO, ESP32C6_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C61_UARTDEV_BUF_NO_REV_LE2, ESP32C61_UARTDEV_BUF_NO_REV_GT2, ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_LE2, ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_GT2, ESP32H2_UARTDEV_BUF_NO, ESP32H2_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32H4_UARTDEV_BUF_NO, ESP32H4_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32P4_UARTDEV_BUF_NO_REV0, ESP32P4_UARTDEV_BUF_NO_REV300, ESP32P4_UARTDEV_BUF_NO_USB_OTG, ESP32P4_UARTDEV_BUF_NO_USB_JTAG_SERIAL, } 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, ESP32_BASEFUSEADDR, ESP32_APB_CTL_DATE_ADDR, ESP32S2_EFUSE_BLOCK1_ADDR, ESP32S3_EFUSE_BLOCK1_ADDR, ESP32C2_EFUSE_BLOCK2_ADDR, ESP32C5_EFUSE_BLOCK1_ADDR, ESP32C6_EFUSE_BLOCK1_ADDR, ESP32C61_EFUSE_BLOCK1_ADDR, ESP32H2_EFUSE_BLOCK1_ADDR, ESP32P4_EFUSE_BLOCK1_ADDR, ESP32S31_EFUSE_BLOCK1_ADDR, ESP32S31_RTC_CNTL_WDTWPROTECT_REG, ESP32S31_RTC_CNTL_WDTCONFIG0_REG, ESP32S31_RTC_CNTL_WDTCONFIG1_REG, ESP32S31_RTC_CNTL_WDT_WKEY, 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, ESP32C5_UART_CLKDIV_REG, ESP32C5_PCR_SYSCLK_CONF_REG, ESP32C5_PCR_SYSCLK_XTAL_FREQ_V, ESP32C5_PCR_SYSCLK_XTAL_FREQ_S, 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, ESP32S2_UARTDEV_BUF_NO, ESP32S2_UARTDEV_BUF_NO_USB_OTG, ESP32S3_UARTDEV_BUF_NO, ESP32S3_UARTDEV_BUF_NO_USB_OTG, ESP32S3_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C3_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C3_BUF_UART_NO_OFFSET, ESP32C5_UARTDEV_BUF_NO, ESP32C5_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C6_UARTDEV_BUF_NO, ESP32C6_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32C61_UARTDEV_BUF_NO_REV_LE2, ESP32C61_UARTDEV_BUF_NO_REV_GT2, ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_LE2, ESP32C61_UARTDEV_BUF_NO_USB_JTAG_SERIAL_REV_GT2, ESP32H2_UARTDEV_BUF_NO, ESP32H2_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32H4_UARTDEV_BUF_NO, ESP32H4_UARTDEV_BUF_NO_USB_JTAG_SERIAL, ESP32P4_UARTDEV_BUF_NO_REV0, ESP32P4_UARTDEV_BUF_NO_REV300, ESP32P4_UARTDEV_BUF_NO_USB_OTG, ESP32P4_UARTDEV_BUF_NO_USB_JTAG_SERIAL, } from "./const";
|
|
3
3
|
import { getStubCode } from "./stubs";
|
|
4
4
|
import { hexFormatter, padTo, sleep, slipEncode, toHex } from "./util";
|
|
5
5
|
import { deflate } from "pako";
|
|
@@ -1226,7 +1226,7 @@ export class ESPLoader extends EventTarget {
|
|
|
1226
1226
|
await this.rtcWdtResetChipSpecific();
|
|
1227
1227
|
}
|
|
1228
1228
|
/**
|
|
1229
|
-
* RTC watchdog timer reset for ESP32-S2, ESP32-S3, and ESP32-
|
|
1229
|
+
* RTC watchdog timer reset for ESP32-S2, ESP32-S3, ESP32-P4, and ESP32-S31
|
|
1230
1230
|
* Uses specific registers for each chip family
|
|
1231
1231
|
* Note: ESP32-C3 does NOT boot correctly after WDT reset
|
|
1232
1232
|
* Note: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 do NOT support WDT reset (no usable RTC WDT path)
|
|
@@ -1256,6 +1256,13 @@ export class ESPLoader extends EventTarget {
|
|
|
1256
1256
|
WDTCONFIG1_REG = ESP32P4_RTC_CNTL_WDTCONFIG1_REG;
|
|
1257
1257
|
WDT_WKEY = ESP32P4_RTC_CNTL_WDT_WKEY;
|
|
1258
1258
|
}
|
|
1259
|
+
else if (this.chipFamily === CHIP_FAMILY_ESP32S31) {
|
|
1260
|
+
// S31 uses LP_WDT (Low Power Watchdog Timer)
|
|
1261
|
+
WDTWPROTECT_REG = ESP32S31_RTC_CNTL_WDTWPROTECT_REG;
|
|
1262
|
+
WDTCONFIG0_REG = ESP32S31_RTC_CNTL_WDTCONFIG0_REG;
|
|
1263
|
+
WDTCONFIG1_REG = ESP32S31_RTC_CNTL_WDTCONFIG1_REG;
|
|
1264
|
+
WDT_WKEY = ESP32S31_RTC_CNTL_WDT_WKEY;
|
|
1265
|
+
}
|
|
1259
1266
|
else {
|
|
1260
1267
|
throw new Error(`rtcWdtResetChipSpecific() is not supported for ${this.chipFamily}`);
|
|
1261
1268
|
}
|
|
@@ -1301,7 +1308,8 @@ export class ESPLoader extends EventTarget {
|
|
|
1301
1308
|
// WDT reset is NOT supported by: ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2
|
|
1302
1309
|
const supportsWdtReset = this.chipFamily === CHIP_FAMILY_ESP32S2 ||
|
|
1303
1310
|
this.chipFamily === CHIP_FAMILY_ESP32S3 ||
|
|
1304
|
-
this.chipFamily === CHIP_FAMILY_ESP32P4
|
|
1311
|
+
this.chipFamily === CHIP_FAMILY_ESP32P4 ||
|
|
1312
|
+
this.chipFamily === CHIP_FAMILY_ESP32S31;
|
|
1305
1313
|
if (!supportsWdtReset) {
|
|
1306
1314
|
this.logger.debug(`${this.chipName} does not support WDT reset - using classic reset instead`);
|
|
1307
1315
|
// Use classic reset for chips without WDT support
|
|
@@ -1413,7 +1421,8 @@ export class ESPLoader extends EventTarget {
|
|
|
1413
1421
|
// C3, C5, C6, C61, H2 do NOT boot correctly after WDT reset
|
|
1414
1422
|
const supportsWdtReset = this.chipFamily === CHIP_FAMILY_ESP32S2 ||
|
|
1415
1423
|
this.chipFamily === CHIP_FAMILY_ESP32S3 ||
|
|
1416
|
-
this.chipFamily === CHIP_FAMILY_ESP32P4
|
|
1424
|
+
this.chipFamily === CHIP_FAMILY_ESP32P4 ||
|
|
1425
|
+
this.chipFamily === CHIP_FAMILY_ESP32S31;
|
|
1417
1426
|
if (supportsWdtReset) {
|
|
1418
1427
|
this.logger.debug("USB-JTAG/OTG detected - using WDT reset");
|
|
1419
1428
|
// Get USB mode details
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entry": 788533248,
|
|
3
|
+
"text": "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",
|
|
4
|
+
"text_start": 788533248,
|
|
5
|
+
"data": "ECIAL0wiAS+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+qGgAvthoALwIbAC8uGwAvuBsAL2IbAC+MGgAv+hsAL3YcAC+cHAAvQhoAL4ocAC9CGgAvAh0ALxIdAC8WHQAvAhsAL24dAC+CHQAv",
|
|
6
|
+
"data_start": 788647348,
|
|
7
|
+
"bss_start": 788570112
|
|
8
|
+
}
|
package/dist/stubs/index.js
CHANGED
|
@@ -4,8 +4,7 @@ export const getStubCode = async (chipFamily, chipRevision) => {
|
|
|
4
4
|
let stubcode;
|
|
5
5
|
// Chips without stub support yet
|
|
6
6
|
if (chipFamily == CHIP_FAMILY_ESP32H4 ||
|
|
7
|
-
chipFamily == CHIP_FAMILY_ESP32H21
|
|
8
|
-
chipFamily == CHIP_FAMILY_ESP32S31) {
|
|
7
|
+
chipFamily == CHIP_FAMILY_ESP32H21) {
|
|
9
8
|
return null;
|
|
10
9
|
}
|
|
11
10
|
if (chipFamily == CHIP_FAMILY_ESP32) {
|
|
@@ -47,6 +46,9 @@ export const getStubCode = async (chipFamily, chipRevision) => {
|
|
|
47
46
|
stubcode = await import("./esp32p4.json");
|
|
48
47
|
}
|
|
49
48
|
}
|
|
49
|
+
else if (chipFamily == CHIP_FAMILY_ESP32S31) {
|
|
50
|
+
stubcode = await import("./esp32s31.json");
|
|
51
|
+
}
|
|
50
52
|
else {
|
|
51
53
|
// Unknown chip family - no stub available
|
|
52
54
|
return null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var A=788533248,B="ARG3pwAvN9cBLwbOIswmykrIk4cHABMHR9tj6ucE7wCQaRMH9f+FRyqEY+TnAO8QQEABRe8AMHqBRQFF7wBQcyKF7wCwaLdXQUmTh/eEkUUoAD7EhUTBKAlJJSxjHZUAaABhJLJF7wBQDX0s/bcjoAcAkQddt+MKJf/jEJT+7xCAN2Hd7xAAOMm/CcW31wEvI6qn2oKAt6cALyOgpwCCgLfXAS+Dp0fbEwUADIKHQREixDfUAS8TBETbBsaTBgAMHEBjCtUAkwawDWMN1QAiRLJAQQGChxMFsA2ClxxAEwXADfW3gpccQBMF0A3NtwXFQREixCbCBsYqhLMEtQBjF5QAskAiRJJEQQGCgANFBAAFBHE/7beCgLenAC+DpwcAkcOCh4KACc0BEQbOLsYqxIU/skUiRWU/pTfyQAVh6b+CgDenAC8TBwcAg0dHABFmEwYGEbOHxwK3pgAvk4YGARFmtpc+loNFxhCV5QNG1hAd4hBHhUVjC7YEiUZjBNYKPeKTBgAMYxDVBgzHEWe6lyOkBxCCgINHRwARZhMGBhGFB4WLM4jHApFlNpjClQPIxRBjGggCg8XVEJXlIwL3AINHRwCzh8cCtpdlt5MGAAxjHNUAkWa2l4OmhxCZwiOGxxAjJAcAgoCTBrANYxXVAIlHHMeCgJFmvpYDqIYQkWWThWUQY+0FAQOnhhC6lyOApwCDp4YQhQcjpPYQgoCjhsYQwbcMxxMGwA2RZmMKxQATBtANYwbFAraXo4a3EFW3kwUADL6WA6WGEBFmEwZmEGNrpgADp4YQupcjgLcAVb+TBbANxbeFR6OG9hCdv7enAC+ThwcBEWc+lwNHxxATdfcPGechZ7qXA8XHIRN19Q+CgLenAC+ThwcBEWc+l4NG1xCR7gNHxxAV5yFnupcDx9chGe+Dx8chnecBRYKAAUe3pwAvk4cHACOG5wAJRYKABUf9twFHt6cAL5OHBwAjhucABUWCgAVH/be3pgAvN6cAL5OGBgATBwcBEc2Dx8YAEWYTBgYRs4fHAhFmupeyl4OnhxAcwQPFxgCRZ5OHBxEzBfUCOpWCgLelAC+ThQUAA8fFAJFmE4YGETMHxwK3pwAvk4cHAT6XNpcjJAcQA8fFADMHxwI+lzaXIwYHEAPHxQAzB8cCupe+lqOGBhCCgANHFQCDRwUAIgddj4NHJQADRTUAwgfZj2IFXY2CgEFlEwUF8IKAE/e1/8FHYxr3DF1xosQ3pAEvLsaGxhMExCSmwsrAqoRO3lLcsolVPwjAE4VEAHU3SMAqiROFhABNNwjEKooThcQAYT+yRUjE0UcBRWOX9QAThQQBWTczNaAAjWSilIVHI4KksKOC9LBjiAkAMwlJAyMqBAAjKCQBKAjvALA8ElZcRLfVAS+zBsBAM/fXALKXEED9FzfVAS+yl/WPmY8BRpOFhdUTBUXVI6b0sCOk5LDvAJBFtwcA8N0XqpeJx7Fnk4cHQBHhgUe2QCZElkQGSfJZYlo+hWFhgoCxZz6FgoBBESLEAEUGxiKFxT0J6RMFRADlNSqEAUXvAJBOApSyQCJEAUVBAYKACEVBEQbG8TWqhQFF7wBQTLJAAUVBAYKAcXEi1QBFBtcm00rRTs9SzVbLWslex2LFZsNqwRMBAYATAQGAEwWEAEk9hWdj6acMqosihVk1qoQTBUQAvT0qjA09CBATCgEIIyYK+GKE7wAwdAFLgUqRTBMJgQcV7IMnyvhj64cDAAiihQgQ7wCQciKFwUX1PgFFhWIWkbpQKlSaVApZ+klqStpKSku6SypMmkwKTU1hgoAFMwXBCAhZO4MnCvmqheOQl/1mhmgAl/B/AOeAAPYFC207VdDjnmr93oljc3QBookT/TQAE4Y5AGqWcZrKhRP1xP/vAFAnFeFOhrMFqQEIEO8AsGrOhTMFqQG9Ps6UMwQ0QYUKhbcxZaW/MWUTBQVAhb8ZcaLcptrK2KqELokyhIFFEwagBEgIht7O1pfwfwDngGDuAUYZyANXRASTBwAEOoZj8+cAPoZCBkGCkwemAJOZBwGFRyMK8QCTByYAIwvxAKMKkQCT2QkBgUcRwBxAPsxkCBHMg1dEBJnLJoWTBUQAMsaX8H8A54Ag6TJGspSTV4kAo4AkASOA9ADOhUgI4Tz2UGZU1lRGWbZZCWGCgAERIsw3pAEvEwTEJE7GgynEACbKSshSxK6ErpkNabfVAS+31wEvNwoA8FbCWsAGziqLIpmThYXVk4pH1V0agyeJsGPhNwODRkmwSEQmhtqF7wDwFwXlHECFjxzAXESml1zEBaABRlaF7wCQHTfXAS+zB0UBkwWH1fnTcdExZRMFBUDyQGJE0kRCSbJJIkqSSgJLBWGCgINVJQC3pwEvg6fHJMEVwgXBgWPztwC+hQhFQQW5t11xVtqDKoUAWtiGxlaFosSmwsrATt5S3F7WYtSJMSqLE4VKAC05Cem3JwEvN9cBL5OHxyQjLPfat9QBL7crAS+3qQEvEzgVAFqJBUSThITbE4rLJJOJySRjBAkAY0iAADFlEwUFcH2EYY1loJhAoWdKzDMHR0GZjz7Og6cJAWN0+QATaCgAt9UBLzfVAS8BRpOFhdUTBUXVQsbvADAPtwcA8N0XqpcySJHDLeGYQJMFCwGzhSVBN6UBL3wI1pWThsskMAgTBQUml/B/AOeAYJKMQPJHYkwqhL6Vg6cJAYzAs4eHQSOo+QC3pwEvk4fHJGPz9QAB6bOFRUFShYE9GeUjoEQBMwmJQQFIubcxZRMFBUC2QCZElkQGSfJZYlrSWkJbslsiXGFhgoADVyUAwUdjEPcKdXEixQBFBscmw0rBzt7S3Nba2tgTAQGAEwEBgCKFLospNhN6xf8TeTUAEwVEAPU8qoQoCO8A0DyFapMJAQeV4CgI2oXvABA8AUWFYhaRukAqRJpECkn2WWZa1lpGW0lhgoAzBJkAY/OKAAVkDQRxmCKGzoVShe8AgHQd4TMGJEFj88QAJoazhSkBKAgyxu8AUDcyRiKaAUmRjFW3MWWCgDFlEwUFQFW3A1clAJFHYxD3BDelAS8TBcUkjWeqlwPHV7CxZ5OHB2AFxxhBsWcN4w1mQRETBgaxgUUGxpfwfwDngOC5skCBRz6FQQGCgLFnPoWCgHFxItUG1ybTStFOz1LNVstayV7HYsVmwwAZg0cFAANJFQCVx7FlAUaThQUwSoWhORMBBPW6UCpUmlQKWfpJakraSkpLuksqTJpMTWGCgINJNQCDRyUAKoqiCbPp+QCTh4kAY4W3AAFGsWXJtxEFtyQBL9Eyk4QEI4xAkwqKACMAJPejAAT2IxE09yMipPYjJFT3KouZxQFGSoX1NiOgBABBvxMGwAQTBUT4l/B/AOeAwK3RR2PkJwOFR2P/JwOTB+n/k/f3D0lHY2D3BDfXAS+KBxMHh+K6l5xDgoeTByANYw75OmPuJwGTBwANYwD5PJMHEA1jDvk6MWUTBQUwaa6TBzAN4wb58pMHuQKT9/cPaUfjY/f+EwbABIFFEwVE+JfwfwDngGCmEwe58rfXAS8KB5OHh9u6l9xDkwZE+E6G1oVKhYKXgyfE/IjA0cPcwEGgkwdAAmOd+TCdSQFGgUUhRf0ZDTbjmwn+I6AEAJWgAUbOhVaF7/B/jpGovUdj9jcVt9cBL4PHF9VjjQcQwRlWhcIJ7/A/ipPZCQFjGTULgUcTB/AOY+o3AWMd6ya3FwAvk4dHb9zATb+zBvoAg8aGAYUHNY/FtxMFBPblM4jAbeETBkT4gUVKhXU03EAjoAQA44cH5BMFBPaCl4jAI6IEAD29wUdjnfkmVoXv8L+DiMQTBcoA7/Afg8jEMwU6Ae/wf4KIyBMFSgHv8N+BhUfIyCOM9ACRt71HY/A3C4PHhAGty1aF7/AfgJxEqopj6KcAwRnCCZPZCQFjCjUBtWeThweQNWWcwBMFBZCZqCqGyEiTBYoBl/B/AOeAQJLcSNaX3MicRLOHV0GcxP21oUdjmPkeg8eEAZHPUUaBRTOFNAGX8H8A54BAj7cXAC+Th2dHEb+xZ5OHB2AxZZzAEwUFYKqFAUZKhfkyI6IEADm/Y4UJAJP3+QCJy7Vnk4cHgDVlnMATBQWA6b8T3EkAAUv9XIMqhPaTF0sAvppWhe/wj/SqixOFSgDv8O/zqokThYoA7/BP8yqKE4XKAO/wr/IxI7P3SQFjCpoBA6cLABNK+v8zeuoAs+dHAQULI6D7AJMXCwHBg+Pmh/sFvZFHY5n5ElaF7/Av7xxBIyL0+DG9kUdjn/kQVoXv8O/tgUXhLCm14UdjlvkQVoXv8M/sIyak9hMFygDv8A/sIyik9hMFCgHv8E/rIyqk9hMFSgHv8I/qIyyk9jMFOgHv8M/pIy6k9hMFygHv8A/pIyCk+BMFxPa1JOMLBdqxZ5OHB0AxZZzAEwUFQPW1oUdjk/kKtxcAL5OH50nFswVGYbu9R2P5Nwm3pwEvk4fHJA1nPpcDR1ew4wkH6pxD44sH5FaF7/CP41KVkwfwDmMZRQFjHPsAtxcAL5OHJ3F5uwNHigEFCrmP3bexZ5OHBxAxZZzAEwUFEEG1kwWE+BMFBPbZNMFHiMAjFPT8abMKimOSCQLZLpMH9QDBmzMB8UCqiaqFCoXhJhnJtwcAEJUHYwP1AlKBsWecwDFlNb2KhU6GEwWE+JfgfwDngKBwIxQ0/VKB8blBZRMFBfBSgYjAIb3BR+OZ+fy3FwAvk4dnSzGzvSQZt6FH45/5+laF7/Dv1yMspPQTBcoA7/Av1yMupPQTBcT2wSoDJ4T3gyeE9bP35wLJ+4MnxPWz9ucCwfazCfcA/Rmz2ekC9WeThwdMAUqzifkCgyfE9YHHs+dJAYnnToXShTEkTbUBRpMFxPUTBYT1mSQFRe0sk7cZADMK+kD9Gcm/QREGxsEu4S4B5bJAQQGCgOku7/BvrMW/QREBRQbGIsQmwpEmE3UVEBnFAUWRLqqEAURjl4QAskAiRJJEQQGCgAFFgS7v8E+pBQTlt0ERBsaVKaqHBUWZ45kuBgWyQEEBgoBBEQbGhUdjDPUCiUdjDfUECWUTBQVxlSwBRUEkNyYAL5MGEBATBibolUUBRVkkNyUALxMFBSHv8I+YAUUNoLcVAC+ThSUURUU1KTclAC8TBWU87/DPljclAC8TBSU5skBBAW/wj5YJK7clAC8RRpOFpeZFRe0sNyUALxMFBSbv8A+UNyUALxMFhSrRvwHJXEkYSVRFEEVMQQhB7ak3BQAQGQWCgAERBs4qxi7E3SGiRTJF8kAFYTWjQREGxibCIsQtI7EjqoTdIRXtKSM3BAAQqoUFBLcHAAFj97cAt9cBLwVHI47n1EFmkwf2/xMHABCFZiaFRSER4SKFskAiRJJEQQGCgKqFAUTxt4FFdbdBESLEBsYqhP0hHEGyQBzAXEFcwBxFHMRcRVzEHEkcyFxJXMgiREEBgoCzZ8UAjYuyhoHvt9cBL4PHx9WRxy6GqoUFRW8A4HwZozcFABAJBYKAs2fFAI2LNoeB77fXAS+Dx8fVkceyhi6GqoUFRbGlZak3BQAQDQWCgP2hAREizCbKSshOxgbOqokuiQFEgUTFKRXBBUXdIJMHFAAzt4cAupQ+hOPmJP9jFJkA4+I3/zcFABAlBfJAYkTSREJJskkFYYKAARFOxpM3FQCTuRUABs4izCbKSshSxFbCs+n5AGOOCQA3BQAQGQXyQGJE0kRCSbJJIkqSSgVhgoAuiqqKgUUyhaU/Koc3BQAQJQVx/wMkCgAZ4AFFyb9BaYOkCgBjZiQBk5cEAcGDjc+Tl0QBBWnN+7fXAS+Dx8fVjcumhQVFY4MJAu8AQHdF8bMHJEEzNCQBypR9FCOgmgB9jCMgigBVv4VJ+bfvAMB0+b8mhWOECQCpKdm/PSHJvxfjfwBnAGPubwDAc28AwHMTdfUPbwAAdxN19Q9vAAB3E3X1D28A4HoBEbenOCAizMEHExTFACbKBs6uhKKXfVeyhZjDAUYmhTbGl+B/AOeAgF2yRoHKt6c4ILEHPpQcQNWPHMBiRAVF8kAzFZUA0kQFYRfjfwBnAINbN6c4IJMXxQAhBz6XCEM3pzggQQe6l4jDgoC3pzgg8QcyBT6VCEETdfUPgoC3BwIAk4enOD6VMgUIQRN19Q+CgBfjfwBnAIPkQREGxpfgfwDngADqgUcRxYNHhQHtF5O3FwCyQD6FQQGCgG8AAH+3FzkgyEfIy4KAtxc5IMhDCYEFiYKAtxc5IIhDE3X1D4KAAREmyk7GsWS3GTkgIsxKyAbOKoQBSZEJk4QENQVF4T2DpwkAiYuB7wUJ4xmZ/gVF8kBiRNJEQkmySQVhgoC3FzkggMMBRe23txc5INhDE2cXANjDgoABEQbOIswmyvFXY5/1AjfUAS+qhBMEBNYmhZfgfwDngMB6Y0egAPJAYkTSRAVhgoAFRmwAJoWX4H8A54BAeRxAA0XBAIKXyb/9V+Oe9fxwAIlFAsaX4H8A54BgejJHt9cBL5OHB9YZ59RDBUZjlMYAI4TXANjDRb9BEQbGBS0ZyZfgfwDngGDYEcUDRYUBcRUTNRUAskBBAYKAQRE31gEvIsQGxhMGBta3BwgvKoRIxgOlh/sMwiMoBgAjBAYAiUURBpfgfwDngIBzIoUiRLJAtyUAL5OFZStBAdmrQREixDfUAS8TBATWEEgGxmNewAC3BwgvA6WH+5MFRAGX4H8A54BgbCMoBACyQCJEQQGCgLfXAS+ThwfWlEsThxYAmMu2lyOKpwCTBwAEYxn3AEERBsZtN7JAAUVBAYKAAUWCgLfXAS+ThwfWA8WHAIKAQRG31wEvBsaThwfWI4QHANxHBUUzFfUAl+B/AOeAADYJZRMFBXE1M7JAQQHJo0ERBsYVILJACWUTBQVxQQERuyGo7aHFqd2pgoCCgDcFABAVBYKAgoCCgIKAgoBBEQbGl+B/AOeAgNGyQDM1oAByBUEBgoATdfUP8Udj56cAxUdj6qcAAUWCgBMFdfwTNRUAZgWCgIVHM5WnAIKANwUAAYKAAUWCgAVFgoAX438AZwAj1UERBsaR5e03skCBRUEB7bfVN3X5skBBAYKAtwcILwOlB/6CgEERBsaX4H8A54Bgy+03skAIQUEBgoBBEQbG8T+yQEEBF+N/AGcA48dBEQbGgc6X4H8A54CAwgHFNwUAECEFskBBAYKAl+B/AOeAoMTtt0ERBsaX4H8A54AAxAHFNwUAEBEFskBBAYKAQREGxpfgfwDngKC/skAzNaAAcgVBAYKAQREGxsUuNxdQILcGAAgjJgcCkwfHAhTDFEP9/ohDskAFiUEBgoABESrGBs6tN9kmMkU3BwABkwf3/32NtxdQIMjDmMOYQ33/8kAFYYKAAREqxgbOiTd5LjJFtxdQIDcHgAAiBSGByMOYw5hDff/yQAVhgoCCgBfjfwBnAIO2F+N/AGcAQ7ZBEQbGl+B/AOeAwLiyQDM1oAByBUEBgoBdcZFHPsjJRz7KoUc+zJMHAAIqxj7QaACFR4bGLs4C0jLUNtYC2ALaPtwjDvECZTe2QGFhgoAdcabKqoQJZcrIEwUFcS6JgUXOxobOosyyie/w/6Ah4SqERTWVRz7IoUc+zJMHAAI+0GgAhUcmxk7KSs4C0gLUAtYC2ALaPtwjDvECkT/2QCKFZkTWREZJtkklYYKANwQAECUE7bd5cZOH9j8m0raEs7bXANoGqYO2l51mk4YGU0rQUsxexmLEZsIG1iLUTs5WylrIs4vXAqqMLokyijO81wJjAgcMs+e0ADcEABC9iw0Ere/9NaUz7T03BAAQNeVeheKF7/BfliqEKe39ShML8AOhzBN3+QOTd/kPNedjeZsGE4f385MJAARjdusG0oVKhU6GNTPxM16F4oUdMx3hk5Y5AMqFZoX9FgFGfT0xO16F4oXv8F+REeVOmk6Zs4Q0QUW/NwQAECUEQTWyUCKFIlSSVAJZ8kliStJKQkuySyJMkkxFYYKAE3f5AcFJRfPBSeP+mviTh/fxs7f6AJOZRwDBCWm3XoXihe/w/4sqhDnhkwoAEBMLAALN2JN5+Q+ziTpBpodjdJsAkwcAAmPzNwG+iT0zyoVmhZOWOQBShi01XoXihe/wP4gR5U6aTpmzhDRB2bc3BAAQJQSFvxlx7saqjQllytgTBQVxLomBRabaztaG3qLc0tTW0trQ3s7izObK6siyibaE7/D/gy3lKoRBS5FLMUyhSpMMAAIFTY3g9lAihWZU1lRGWbZZJlqWWgZb9ktmTNZMRk22TQlhgoAmimNzmwBBSpMXOgBoAErOTthuxl7IYspWzGbQVtIC1ALWPtpq3CMOAQKzhERBgTvSmVKZbbc3BAAQJQRVtxMGEAJxuxMGwA1Zu1FFgoAZ6TcFABAZBYKANwUAEBkF8kAFYYKAAREuxgbOKsT5P7JF4+Sl/iJGgUUBRZfQfwDngKB/MzWgAHIF2b8X038AZwDjeQERIswqhAVlEwWFOAbOLsbv8F+Gl+B/AOeAIOGyRRIFs1W1AiKFLsbBP7JFIoWX0H8A54DAdmJE8kAFZRMFhTgFYW/wP4MX038AZwDDdBfjfwBnAEPnF+N/AGcAA+euh6qFPoUX438AZwBj5jcXUCAcQ72L9f8cQ5P3Bw/1+4KABUWCgEERJsJKwKqEKoYuiQFFkwUwBgbGIsSX4H8A54DA3iaFhUWX4H8A54CA3LcVgC8BRiaFk4XFsZfgfwDngMDdNwQILwMlhPvKhZfgfwDngKAPAyWE+5fgfwDngOANAyWE+5fgfwDngGAMtwcwIJhHIkQFRbJAAkkTZxcAMxWVAJJEmMdBARfjfwBnAGPZQREGxpfgfwDngOAXtwdwIJhHNwUAgG2bmMeX4H8A54AADJfgfwDngEAQskABRUEBF9N/AGcAY2dBESLEJsJKwKqELokyhIlFKoYBRQbGl+B/AOeAgNKFRSaFl+B/AOeAQNC3FzkgfVfYywFGyoUmhZfgfwDngGDREcS3FzkgkEtBjpDLIkQFRbJAAkkzFZUAkkRBARfjfwBnAKPPAAA=",E=788533248,F="ECIAL0wiAS+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+OEwAvjhMAL44TAC+qGgAvthoALwIbAC8uGwAvuBsAL2IbAC+MGgAv+hsAL3YcAC+cHAAvQhoAL4ocAC9CGgAvAh0ALxIdAC8WHQAvAhsAL24dAC+CHQAv",Q=788647348,w=788570112,g={entry:A,text:B,text_start:E,data:F,data_start:Q,bss_start:w};export{w as bss_start,F as data,Q as data_start,g as default,A as entry,B as text,E as text_start};
|