You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Adafruit_WebSerial_ESPTool/dist/const.js

252 lines
9.8 KiB
JavaScript

import { toByteArray } from "./util";
export const baudRates = [
115200, 128000, 153600, 230400, 460800, 921600, 1500000, 2000000,
];
export const FLASH_SIZES = {
"512KB": 0x00,
"256KB": 0x10,
"1MB": 0x20,
"2MB": 0x30,
"4MB": 0x40,
"2MB-c1": 0x50,
"4MB-c1": 0x60,
"8MB": 0x80,
"16MB": 0x90,
};
export const ESP32_FLASH_SIZES = {
"1MB": 0x00,
"2MB": 0x10,
"4MB": 0x20,
"8MB": 0x30,
"16MB": 0x40,
"32MB": 0x50,
"64MB": 0x60,
"128MB": 0x70,
};
export const DETECTED_FLASH_SIZES = {
0x12: "256KB",
0x13: "512KB",
0x14: "1MB",
0x15: "2MB",
0x16: "4MB",
0x17: "8MB",
0x18: "16MB",
0x19: "32MB",
0x1a: "64MB",
};
export const FLASH_WRITE_SIZE = 0x400;
export const STUB_FLASH_WRITE_SIZE = 0x4000;
export const FLASH_SECTOR_SIZE = 0x1000; // Flash sector size, minimum unit of erase.
export const ESP_ROM_BAUD = 115200;
export const ESP8266_SPI_REG_BASE = 0x60000200;
export const ESP8266_BASEFUSEADDR = 0x3ff00050;
export const ESP8266_MACFUSEADDR = 0x3ff00050;
export const ESP8266_SPI_USR_OFFS = 0x1c;
export const ESP8266_SPI_USR1_OFFS = 0x20;
export const ESP8266_SPI_USR2_OFFS = 0x24;
export const ESP8266_SPI_MOSI_DLEN_OFFS = -1;
export const ESP8266_SPI_MISO_DLEN_OFFS = -1;
export const ESP8266_SPI_W0_OFFS = 0x40;
export const ESP8266_UART_DATE_REG_ADDR = 0x60000078;
export const ESP8266_BOOTLOADER_FLASH_OFFSET = 0x0;
export const ESP32_SPI_REG_BASE = 0x3ff42000;
export const ESP32_BASEFUSEADDR = 0x3ff5a000;
export const ESP32_MACFUSEADDR = 0x3ff5a000;
export const ESP32_SPI_USR_OFFS = 0x1c;
export const ESP32_SPI_USR1_OFFS = 0x20;
export const ESP32_SPI_USR2_OFFS = 0x24;
export const ESP32_SPI_MOSI_DLEN_OFFS = 0x28;
export const ESP32_SPI_MISO_DLEN_OFFS = 0x2c;
export const ESP32_SPI_W0_OFFS = 0x80;
export const ESP32_UART_DATE_REG_ADDR = 0x60000078;
export const ESP32_BOOTLOADER_FLASH_OFFSET = 0x1000;
export const ESP32S2_SPI_REG_BASE = 0x3f402000;
export const ESP32S2_BASEFUSEADDR = 0x3f41a000;
export const ESP32S2_MACFUSEADDR = 0x3f41a044;
export const ESP32S2_SPI_USR_OFFS = 0x18;
export const ESP32S2_SPI_USR1_OFFS = 0x1c;
export const ESP32S2_SPI_USR2_OFFS = 0x20;
export const ESP32S2_SPI_MOSI_DLEN_OFFS = 0x24;
export const ESP32S2_SPI_MISO_DLEN_OFFS = 0x28;
export const ESP32S2_SPI_W0_OFFS = 0x58;
export const ESP32S2_UART_DATE_REG_ADDR = 0x60000078;
export const ESP32S2_BOOTLOADER_FLASH_OFFSET = 0x1000;
export const ESP32S3_SPI_REG_BASE = 0x60002000;
export const ESP32S3_BASEFUSEADDR = 0x60007000;
export const ESP32S3_MACFUSEADDR = 0x60007000 + 0x044;
export const ESP32S3_SPI_USR_OFFS = 0x18;
export const ESP32S3_SPI_USR1_OFFS = 0x1c;
export const ESP32S3_SPI_USR2_OFFS = 0x20;
export const ESP32S3_SPI_MOSI_DLEN_OFFS = 0x24;
export const ESP32S3_SPI_MISO_DLEN_OFFS = 0x28;
export const ESP32S3_SPI_W0_OFFS = 0x58;
export const ESP32S3_UART_DATE_REG_ADDR = 0x60000080;
export const ESP32S3_BOOTLOADER_FLASH_OFFSET = 0x0;
export const ESP32C3_SPI_REG_BASE = 0x60002000;
export const ESP32C3_BASEFUSEADDR = 0x60008800;
export const ESP32C3_MACFUSEADDR = 0x60008800 + 0x044;
export const ESP32C3_SPI_USR_OFFS = 0x18;
export const ESP32C3_SPI_USR1_OFFS = 0x1c;
export const ESP32C3_SPI_USR2_OFFS = 0x20;
export const ESP32C3_SPI_MOSI_DLEN_OFFS = 0x24;
export const ESP32C3_SPI_MISO_DLEN_OFFS = 0x28;
export const ESP32C3_SPI_W0_OFFS = 0x58;
export const ESP32C3_UART_DATE_REG_ADDR = 0x6000007c;
export const ESP32C3_BOOTLOADER_FLASH_OFFSET = 0x0;
export const SYNC_PACKET = toByteArray("\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
export const CHIP_DETECT_MAGIC_REG_ADDR = 0x40001000;
// These values for the families are made up; nothing that esptool uses.
export const CHIP_FAMILY_ESP8266 = 0x8266;
export const CHIP_FAMILY_ESP32 = 0x32;
export const CHIP_FAMILY_ESP32S2 = 0x3252;
export const CHIP_FAMILY_ESP32S3 = 0x3253;
export const CHIP_FAMILY_ESP32C3 = 0x32c3;
export const CHIP_FAMILY_ESP32C6 = 0x32c6;
export const CHIP_FAMILY_ESP32H2 = 0x3272;
export const CHIP_DETECT_MAGIC_VALUES = {
0xfff0c101: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },
0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },
0x9: { name: "ESP32-S3", family: CHIP_FAMILY_ESP32S3 },
0xeb004136: { name: "ESP32-S3(beta2)", family: CHIP_FAMILY_ESP32S3 },
0x6921506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
0x1b31506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
0xca26cc22: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
0x0da1806f: { name: "ESP32-C6(beta)", family: CHIP_FAMILY_ESP32C6 },
};
// Commands supported by ESP8266 ROM bootloader
export const ESP_FLASH_BEGIN = 0x02;
export const ESP_FLASH_DATA = 0x03;
export const ESP_FLASH_END = 0x04;
export const ESP_MEM_BEGIN = 0x05;
export const ESP_MEM_END = 0x06;
export const ESP_MEM_DATA = 0x07;
export const ESP_SYNC = 0x08;
export const ESP_WRITE_REG = 0x09;
export const ESP_READ_REG = 0x0a;
export const ESP_ERASE_FLASH = 0xd0;
export const ESP_ERASE_REGION = 0xd1;
export const ESP_SPI_SET_PARAMS = 0x0b;
export const ESP_SPI_ATTACH = 0x0d;
export const ESP_CHANGE_BAUDRATE = 0x0f;
export const ESP_SPI_FLASH_MD5 = 0x13;
export const ESP_CHECKSUM_MAGIC = 0xef;
export const ESP_FLASH_DEFL_BEGIN = 0x10;
export const ESP_FLASH_DEFL_DATA = 0x11;
export const ESP_FLASH_DEFL_END = 0x12;
export const ROM_INVALID_RECV_MSG = 0x05;
export const USB_RAM_BLOCK = 0x800;
export const ESP_RAM_BLOCK = 0x1800;
// Timeouts
export const DEFAULT_TIMEOUT = 3000;
export const CHIP_ERASE_TIMEOUT = 600000; // timeout for full chip erase in ms
export const MAX_TIMEOUT = CHIP_ERASE_TIMEOUT * 2; // longest any command can run in ms
export const SYNC_TIMEOUT = 100; // timeout for syncing with bootloader in ms
export const ERASE_REGION_TIMEOUT_PER_MB = 30000; // timeout (per megabyte) for erasing a region in ms
export const MEM_END_ROM_TIMEOUT = 500;
/**
* @name timeoutPerMb
* Scales timeouts which are size-specific
*/
export const timeoutPerMb = (secondsPerMb, sizeBytes) => {
let result = Math.floor(secondsPerMb * (sizeBytes / 0x1e6));
if (result < DEFAULT_TIMEOUT) {
return DEFAULT_TIMEOUT;
}
return result;
};
export const getSpiFlashAddresses = (chipFamily) => {
switch (chipFamily) {
case CHIP_FAMILY_ESP32:
return {
regBase: ESP32_SPI_REG_BASE,
baseFuse: ESP32_BASEFUSEADDR,
macFuse: ESP32_MACFUSEADDR,
usrOffs: ESP32_SPI_USR_OFFS,
usr1Offs: ESP32_SPI_USR1_OFFS,
usr2Offs: ESP32_SPI_USR2_OFFS,
mosiDlenOffs: ESP32_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32_SPI_W0_OFFS,
uartDateReg: ESP32_UART_DATE_REG_ADDR,
flashOffs: ESP32_BOOTLOADER_FLASH_OFFSET,
};
case CHIP_FAMILY_ESP32S2:
return {
regBase: ESP32S2_SPI_REG_BASE,
baseFuse: ESP32S2_BASEFUSEADDR,
macFuse: ESP32S2_MACFUSEADDR,
usrOffs: ESP32S2_SPI_USR_OFFS,
usr1Offs: ESP32S2_SPI_USR1_OFFS,
usr2Offs: ESP32S2_SPI_USR2_OFFS,
mosiDlenOffs: ESP32S2_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32S2_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32S2_SPI_W0_OFFS,
uartDateReg: ESP32S2_UART_DATE_REG_ADDR,
flashOffs: ESP32S2_BOOTLOADER_FLASH_OFFSET,
};
case CHIP_FAMILY_ESP32S3:
return {
regBase: ESP32S3_SPI_REG_BASE,
usrOffs: ESP32S3_SPI_USR_OFFS,
baseFuse: ESP32S3_BASEFUSEADDR,
macFuse: ESP32S3_MACFUSEADDR,
usr1Offs: ESP32S3_SPI_USR1_OFFS,
usr2Offs: ESP32S3_SPI_USR2_OFFS,
mosiDlenOffs: ESP32S3_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32S3_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32S3_SPI_W0_OFFS,
uartDateReg: ESP32S3_UART_DATE_REG_ADDR,
flashOffs: ESP32S3_BOOTLOADER_FLASH_OFFSET,
};
case CHIP_FAMILY_ESP8266:
return {
regBase: ESP8266_SPI_REG_BASE,
usrOffs: ESP8266_SPI_USR_OFFS,
baseFuse: ESP8266_BASEFUSEADDR,
macFuse: ESP8266_MACFUSEADDR,
usr1Offs: ESP8266_SPI_USR1_OFFS,
usr2Offs: ESP8266_SPI_USR2_OFFS,
mosiDlenOffs: ESP8266_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP8266_SPI_MISO_DLEN_OFFS,
w0Offs: ESP8266_SPI_W0_OFFS,
uartDateReg: ESP8266_UART_DATE_REG_ADDR,
flashOffs: ESP8266_BOOTLOADER_FLASH_OFFSET,
};
case CHIP_FAMILY_ESP32C3:
return {
regBase: ESP32C3_SPI_REG_BASE,
baseFuse: ESP32C3_BASEFUSEADDR,
macFuse: ESP32C3_MACFUSEADDR,
usrOffs: ESP32C3_SPI_USR_OFFS,
usr1Offs: ESP32C3_SPI_USR1_OFFS,
usr2Offs: ESP32C3_SPI_USR2_OFFS,
mosiDlenOffs: ESP32C3_SPI_MOSI_DLEN_OFFS,
misoDlenOffs: ESP32C3_SPI_MISO_DLEN_OFFS,
w0Offs: ESP32C3_SPI_W0_OFFS,
uartDateReg: ESP32C3_UART_DATE_REG_ADDR,
flashOffs: ESP32C3_BOOTLOADER_FLASH_OFFSET,
};
default:
return {
regBase: -1,
baseFuse: -1,
macFuse: -1,
usrOffs: -1,
usr1Offs: -1,
usr2Offs: -1,
mosiDlenOffs: -1,
misoDlenOffs: -1,
w0Offs: -1,
uartDateReg: -1,
flashOffs: -1,
};
}
};
export class SlipReadError extends Error {
constructor(message) {
super(message);
this.name = "SlipReadError";
}
}