esp32tool 1.4.0 → 1.4.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.
Binary file
@@ -1,7 +1,7 @@
1
1
  /// <reference types="@types/w3c-web-serial" />
2
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, 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, 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
- import { hexFormatter, sleep, slipEncode, toHex } from "./util";
4
+ import { hexFormatter, padTo, sleep, slipEncode, toHex } from "./util";
5
5
  import { FLASH_MANUFACTURERS, FLASH_DEVICES } from "./flash_jedec";
6
6
  import { deflate } from "pako";
7
7
  import { pack, unpack } from "./struct";
@@ -1078,8 +1078,12 @@ export class ESPLoader extends EventTarget {
1078
1078
  });
1079
1079
  }
1080
1080
  }
1081
- // Add general fallback strategies only for non-CP2102 and non-ESP32-S2 Native USB chips
1082
- if (!isCP2102 && !isESP32S2NativeUSB) {
1081
+ // Add general fallback strategies only for Native USB chips (not USB-Serial)
1082
+ // and only for chips not already handled by specific blocks above
1083
+ if (!isUSBSerialChip &&
1084
+ !isCP2102 &&
1085
+ !isESP32S2NativeUSB &&
1086
+ !isUSBJTAGSerial) {
1083
1087
  // Classic reset (for chips not handled above)
1084
1088
  if (portInfo.usbVendorId !== 0x1a86) {
1085
1089
  resetStrategies.push({
@@ -1111,7 +1115,7 @@ export class ESPLoader extends EventTarget {
1111
1115
  },
1112
1116
  });
1113
1117
  // WebUSB Strategy: USB-JTAG/Serial fallback
1114
- if (!isUSBJTAGSerial && !isEspressifUSB) {
1118
+ if (!isEspressifUSB) {
1115
1119
  resetStrategies.push({
1116
1120
  name: "USB-JTAG/Serial fallback (WebUSB)",
1117
1121
  fn: async function () {
@@ -2100,6 +2104,8 @@ export class ESPLoader extends EventTarget {
2100
2104
  const headerFlashSizeFreq = header[3];
2101
2105
  this.logger.log(`Image header, Magic=${toHex(headerMagic)}, FlashMode=${toHex(headerFlashMode)}, FlashSizeFreq=${toHex(headerFlashSizeFreq)}`);
2102
2106
  }
2107
+ const paddedData = padTo(new Uint8Array(binaryData), 4);
2108
+ binaryData = paddedData.buffer;
2103
2109
  const uncompressedFilesize = binaryData.byteLength;
2104
2110
  let compressedFilesize = 0;
2105
2111
  let dataToFlash;
package/dist/util.d.ts CHANGED
@@ -15,4 +15,9 @@ export declare const toHex: (value: number, size?: number) => string;
15
15
  * Format MAC address array to string (e.g., [0xAA, 0xBB, 0xCC] -> "AA:BB:CC:DD:EE:FF")
16
16
  */
17
17
  export declare const formatMacAddr: (macAddr: number[]) => string;
18
+ /**
19
+ * @name padTo
20
+ * Pad data to the next alignment boundary with the given fill byte (default 0xFF)
21
+ */
22
+ export declare function padTo(data: Uint8Array, alignment: number, padCharacter?: number): Uint8Array;
18
23
  export declare const sleep: (ms: number) => Promise<unknown>;
package/dist/util.js CHANGED
@@ -51,4 +51,19 @@ export const formatMacAddr = (macAddr) => {
51
51
  .map((value) => value.toString(16).toUpperCase().padStart(2, "0"))
52
52
  .join(":");
53
53
  };
54
+ /**
55
+ * @name padTo
56
+ * Pad data to the next alignment boundary with the given fill byte (default 0xFF)
57
+ */
58
+ export function padTo(data, alignment, padCharacter = 0xff) {
59
+ const padMod = data.length % alignment;
60
+ if (padMod !== 0) {
61
+ const padding = new Uint8Array(alignment - padMod).fill(padCharacter);
62
+ const paddedData = new Uint8Array(data.length + padding.length);
63
+ paddedData.set(data);
64
+ paddedData.set(padding, data.length);
65
+ return paddedData;
66
+ }
67
+ return data;
68
+ }
54
69
  export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));