From 7df98db300b24d433bd9ea9e5a440302b7cfc8df Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 22 Jun 2023 11:31:23 +0200 Subject: [PATCH 01/12] USB: enable DFU interface and stub --- cores/esp32/USB.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cores/esp32/USB.cpp b/cores/esp32/USB.cpp index d82659ebbcf..cc66bb8614a 100644 --- a/cores/esp32/USB.cpp +++ b/cores/esp32/USB.cpp @@ -47,8 +47,14 @@ #define USB_WEBUSB_URL "https://espressif.github.io/arduino-esp32/webusb.html" #endif +#if CFG_TUD_DFU +__attribute__((weak, unused)) uint16_t load_dfu_ota_descriptor(uint8_t * dst, uint8_t * itf) { + return 0; +} +#endif /* CFG_TUD_DFU */ + #if CFG_TUD_DFU_RUNTIME -static uint16_t load_dfu_descriptor(uint8_t * dst, uint8_t * itf) +__attribute__((unused)) static uint16_t load_dfu_descriptor(uint8_t * dst, uint8_t * itf) { #define DFU_ATTRS (DFU_ATTR_CAN_DOWNLOAD | DFU_ATTR_CAN_UPLOAD | DFU_ATTR_MANIFESTATION_TOLERANT) @@ -185,7 +191,7 @@ bool ESPUSB::begin(){ .webusb_enabled = webusb_enabled, .webusb_url = webusb_url.c_str() }; - _started = tinyusb_init(&tinyusb_device_config) == ESP_OK; + _started = tinyusb_init(&tinyusb_device_config) == ESP_OK; } return _started; } @@ -203,7 +209,9 @@ ESPUSB::operator bool() const } bool ESPUSB::enableDFU(){ -#if CFG_TUD_DFU_RUNTIME +#if CFG_TUD_DFU + return tinyusb_enable_interface(USB_INTERFACE_DFU, TUD_DFU_DESC_LEN(1), load_dfu_ota_descriptor) == ESP_OK; +#elif CFG_TUD_DFU_RUNTIME return tinyusb_enable_interface(USB_INTERFACE_DFU, TUD_DFU_RT_DESC_LEN, load_dfu_descriptor) == ESP_OK; #endif /* CFG_TUD_DFU_RUNTIME */ return false; From a6da57326633165eb22787d951a0d9678978fd39 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 12 Apr 2023 20:39:33 +0200 Subject: [PATCH 02/12] nano_nora: add Arduino Nano ESP32 board support --- boards.txt | 51 ++++ package/package_esp32_index.template.json | 68 +++++ platform.txt | 9 + .../partitions/app3M_fat9M_fact512k_16MB.csv | 9 + .../extra/nora_recovery/README.md | 49 ++++ .../extra/nora_recovery/nora_recovery.ino | 90 +++++++ variants/arduino_nano_nora/pins_arduino.h | 63 +++++ variants/arduino_nano_nora/variant.cpp | 248 ++++++++++++++++++ 8 files changed, 587 insertions(+) create mode 100644 tools/partitions/app3M_fat9M_fact512k_16MB.csv create mode 100644 variants/arduino_nano_nora/extra/nora_recovery/README.md create mode 100644 variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino create mode 100644 variants/arduino_nano_nora/pins_arduino.h create mode 100644 variants/arduino_nano_nora/variant.cpp diff --git a/boards.txt b/boards.txt index c2415668a52..302f49e117b 100644 --- a/boards.txt +++ b/boards.txt @@ -24112,3 +24112,54 @@ nebulas3.menu.EraseFlash.all=Enabled nebulas3.menu.EraseFlash.all.upload.erase_cmd=-e ############################################################## + +nano_nora.name=Arduino Nano ESP32 +nano_nora.vid.0=0x2341 +nano_nora.pid.0=0x0070 +nano_nora.upload_port.0.vid=0x2341 +nano_nora.upload_port.0.pid=0x0070 + +nano_nora.bootloader.tool=esptool_py +nano_nora.bootloader.tool.default=esptool_py + +nano_nora.upload.tool=dfu-util +nano_nora.upload.tool.default=dfu-util +nano_nora.upload.tool.network=esp_ota +nano_nora.upload.protocol=serial +nano_nora.upload.maximum_size=3145728 +nano_nora.upload.maximum_data_size=327680 +nano_nora.upload.use_1200bps_touch=false +nano_nora.upload.wait_for_upload_port=false + +nano_nora.serial.disableDTR=false +nano_nora.serial.disableRTS=false + +nano_nora.build.tarch=xtensa +nano_nora.build.bootloader_addr=0x0 +nano_nora.build.target=esp32s3 +nano_nora.build.mcu=esp32s3 +nano_nora.build.core=esp32 +nano_nora.build.variant=arduino_nano_nora +nano_nora.build.board=ARDUINO_NANO_NORA +nano_nora.build.code_debug=0 + +nano_nora.build.usb_mode=0 +nano_nora.build.cdc_on_boot=1 +nano_nora.build.msc_on_boot=0 +nano_nora.build.dfu_on_boot=1 +nano_nora.build.f_cpu=240000000L +nano_nora.build.flash_size=16MB +nano_nora.build.flash_freq=80m +nano_nora.build.flash_mode=dio +nano_nora.build.boot=qio +nano_nora.build.boot_freq=80m +nano_nora.build.partitions=app3M_fat9M_fact512k_16MB +nano_nora.build.defines=-DBOARD_HAS_PSRAM +nano_nora.build.loop_core=-DARDUINO_RUNNING_CORE=1 +nano_nora.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +nano_nora.build.psram_type=opi +nano_nora.build.memory_type={build.boot}_{build.psram_type} + +nano_nora.tools.esptool_py.program.pattern_args=--chip {build.mcu} --port "{serial.port}" --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} {build.bootloader_addr} "{build.path}/{build.project_name}.bootloader.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0xf70000 "{build.variant.path}/extra/nora_recovery/nora_recovery.ino.bin" 0x10000 "{build.path}/{build.project_name}.bin" + +############################################################## diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index f96c18a37c8..34ba7c93ff4 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -33,6 +33,9 @@ }, { "name": "ESP32-C3 Dev Board" + }, + { + "name": "Arduino Nano ESP32" } ], "toolsDependencies": [ @@ -85,6 +88,11 @@ "packager": "esp32", "name": "mklittlefs", "version": "3.0.0-gnu12-dc7f933" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.11.0-arduino5" } ] } @@ -683,6 +691,66 @@ ] } ] + }, + { + "name": "arduino", + "maintainer": "Arduino", + "websiteURL": "http://www.arduino.cc/", + "email": "packages@arduino.cc", + "help": { + "online": "http://www.arduino.cc/en/Reference/HomePage" + }, + "platforms": [], + "tools": [ + { + "name": "dfu-util", + "version": "0.11.0-arduino5", + "systems": [ + { + "host": "i386-apple-darwin", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-darwin_amd64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-darwin_amd64.tar.gz", + "size": "72429", + "checksum": "SHA-256:9e576c6e44f54b1e921a43ea77bcc08ec99e0e4e0905f4b9acf9ab2c979f0a22" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_arm.tar.gz", + "size": "2512819", + "checksum": "SHA-256:acd4bd283fd408515279a44dd830499ad37b0767e8f2fde5c27e878ded909dc3" + }, + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_arm64.tar.gz", + "size": "2607592", + "checksum": "SHA-256:b3f46a65da0c2fed2449dc5a3351c3c74953a868aa7f8d99ba2bb8c418344fe9" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_amd64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_amd64.tar.gz", + "size": "2283425", + "checksum": "SHA-256:96c64c278561af806b585c123c85748926ad02b1aedc07e5578ca9bee2be0d2a" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_386.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_386.tar.gz", + "size": "2524406", + "checksum": "SHA-256:9a707692261e5710ed79a6d8a4031ffd0bfe1e585216569934346e9b2d68d0c2" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-windows_386.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-windows_386.tar.gz", + "size": "571340", + "checksum": "SHA-256:6451e16bf77600fe2436c8708ab4b75077c49997cf8bedf03221d9d6726bb641" + } + ] + } + ] } ] } diff --git a/platform.txt b/platform.txt index e951a787435..ed7f410ed94 100644 --- a/platform.txt +++ b/platform.txt @@ -239,6 +239,7 @@ recipe.size.regex.data=^(?:\.dram0\.data|\.dram0\.bss|\.noinit)\s+([0-9]+).* ## --------------------------------- pluggable_discovery.required.0=builtin:serial-discovery pluggable_discovery.required.1=builtin:mdns-discovery +pluggable_discovery.required.2=builtin:dfu-discovery pluggable_monitor.required.serial=builtin:serial-monitor ## ------------------ @@ -305,3 +306,11 @@ tools.esp_ota.upload.protocol=network tools.esp_ota.upload.field.password=Password tools.esp_ota.upload.field.password.secret=true tools.esp_ota.upload.pattern={cmd} -i {upload.port.address} -p {upload.port.properties.port} --auth={upload.field.password} -f "{build.path}/{build.project_name}.bin" + +## Upload Sketch Through DFU OTA +## ------------------------------------------- +tools.dfu-util.path={runtime.tools.dfu-util-0.11.0-arduino5.path} +tools.dfu-util.cmd=dfu-util +tools.dfu-util.upload.params.verbose=-d +tools.dfu-util.upload.params.quiet= +tools.dfu-util.upload.pattern="{path}/{cmd}" --device {vid.0}:{pid.0} -D "{build.path}/{build.project_name}.bin" -Q diff --git a/tools/partitions/app3M_fat9M_fact512k_16MB.csv b/tools/partitions/app3M_fat9M_fact512k_16MB.csv new file mode 100644 index 00000000000..dac4603e01a --- /dev/null +++ b/tools/partitions/app3M_fat9M_fact512k_16MB.csv @@ -0,0 +1,9 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x5000, +otadata, data, ota, 0xe000, 0x2000, +app0, app, ota_0, 0x10000, 0x300000, +app1, app, ota_1, 0x310000, 0x300000, +ffat, data, fat, 0x610000, 0x960000, +factory, app, factory, 0xF70000, 0x80000, +coredump, data, coredump, 0xFF0000, 0x10000, +# to create/use ffat, see https://github.com/marcmerlin/esp32_fatfsimage diff --git a/variants/arduino_nano_nora/extra/nora_recovery/README.md b/variants/arduino_nano_nora/extra/nora_recovery/README.md new file mode 100644 index 00000000000..786027dc6e3 --- /dev/null +++ b/variants/arduino_nano_nora/extra/nora_recovery/README.md @@ -0,0 +1,49 @@ + +# Arduino Nano Nora Recovery Sketch + +This sketch implements the DFU recovery mode logic, called by all sketches +when a double tap on the RESET button is detected. It should not be uploaded +as any other sketch; instead, this should be compiled and then flashed in +the module's `factory` partition. + +## Compilation + +The binary can be compiled with the Arduino 2.x IDE or CLI using the +`nano_nora` variant. In particular, using the CLI the resulting binary +can be exported to the `build` directory with the `-e` switch to +`arduino-cli compile`. + +## Automatic installation + +By replacing the binary in the current folder, automatic installation +can be performed by running the "Upload with Programmer" action on any +sketch in the Arduino 2.x IDE or CLI. In particular, using the CLI the +binary can be installed via the command: + +``` +arduino-cli compile -u --programmer esptool +``` + +## Manual installation + +Once compiled, the binary can also be installed on a board using `esptool.py` +with the following command: + +``` +esptool.py --chip esp32s3 --port "/dev/ttyACM0" --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 16MB 0xF70000 "nora_recovery.ino.bin" +``` + +where: +- `esptool.py` is located in your core's install path under `tools/esptool_py`; +- `/dev/ttyACM0` is the serial port exposed by the board to be used; +- `0xF70000` is the factory partition address (make sure it matches the + offset in the variant's `{build.partitions}` file); +- `nora_recovery.ino.bin` is the compiled sketch image. + +Due to a BSP issue, the first call to `esptool.py` will enter the hardware +bootloader for programming, but fail with an "Input/output error". This is +a known issue; calling the program again with the same arguments will now +work correctly. + +Once flashing is complete, a power cycle (or RESET button tap) is required +to leave the `esptool.py` flashing mode and load user sketches. diff --git a/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino new file mode 100644 index 00000000000..e38c96c09ac --- /dev/null +++ b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino @@ -0,0 +1,90 @@ +#define USB_TIMEOUT_MS 15000 +#define POLL_DELAY_MS 60 +#define FADESTEP 8 + +void pulse_led() { + static u32_t pulse_width = 0; + static u8_t dir = 0; + + if (dir) { + pulse_width -= FADESTEP; + if (pulse_width < FADESTEP) { + dir = 0U; + pulse_width = FADESTEP; + } + } else { + pulse_width += FADESTEP; + if (pulse_width > 255) { + dir = 1U; + pulse_width = 255; + } + } + + analogWrite(LED_GREEN, pulse_width); +} + +#include +#include +#include +#include +bool load_previous_firmware() { + // if user flashed this recovery sketch to an OTA partition, stay here + extern bool _recovery_active; + if (!_recovery_active) + return false; + + // booting from factory partition, look for a valid OTA image + esp_partition_iterator_t it = esp_partition_find(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, NULL); + for (; it != NULL; it = esp_partition_next(it)) { + const esp_partition_t *part = esp_partition_get(it); + if (part->subtype != ESP_PARTITION_SUBTYPE_APP_FACTORY) { + esp_partition_pos_t candidate = { part->address, part->size }; + esp_image_metadata_t meta; + if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &candidate, &meta) == ESP_OK) { + // found, use it + esp_ota_set_boot_partition(part); + return true; + } + } + } + + return false; +} + +void setup() { + extern bool _recovery_marker_found; + if (!_recovery_marker_found) { + // marker not found, probable cold start + // try starting previous firmware immediately + if (load_previous_firmware()) + esp_restart(); + } + + printf("Recovery firmware started, waiting for USB\r\n"); +} + +void loop() { + static int elapsed_ms = 0; + + pulse_led(); + delay(POLL_DELAY_MS); + if (USB) { + // wait indefinitely for DFU to complete + elapsed_ms = 0; + } else { + // wait for USB connection + elapsed_ms += POLL_DELAY_MS; + } + + if (elapsed_ms > USB_TIMEOUT_MS) { + elapsed_ms = 0; + // timed out, try loading previous firmware + if (load_previous_firmware()) { + // found a valid FW image, load it + analogWrite(LED_GREEN, 255); + printf("Leaving recovery firmware\r\n"); + delay(200); + esp_restart(); // does not return + } + } +} diff --git a/variants/arduino_nano_nora/pins_arduino.h b/variants/arduino_nano_nora/pins_arduino.h new file mode 100644 index 00000000000..fa97960ff8a --- /dev/null +++ b/variants/arduino_nano_nora/pins_arduino.h @@ -0,0 +1,63 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include +#include "soc/soc_caps.h" + +#define USB_VID 0x2341 +#define USB_PID 0x0070 + +#define EXTERNAL_NUM_INTERRUPTS 46 +#define NUM_DIGITAL_PINS 48 +#define NUM_ANALOG_INPUTS 20 + +#define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) +#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinHasPWM(p) (p < 46) + +static const uint8_t TX = 43; +static const uint8_t RX = 44; +static const uint8_t RTS = 45; +static const uint8_t CTS = 6; +static const uint8_t DTR = 1; +static const uint8_t DSR = 7; + +static const uint8_t LED_RED = 46; +static const uint8_t LED_GREEN = 0; +static const uint8_t LED_BLUE = 45; +static const uint8_t LED_BUILTIN = 48; +#define LED_BUILTIN LED_BUILTIN + +static const uint8_t SS = 21; +static const uint8_t MOSI = 38; +static const uint8_t MISO = 47; +static const uint8_t SCK = 48; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 11; +static const uint8_t A5 = 12; +static const uint8_t A6 = 13; +static const uint8_t A7 = 14; + +static const uint8_t D0 = 44; // RX0 +static const uint8_t D1 = 43; // TX0 +static const uint8_t D2 = 5; +static const uint8_t D3 = 6; +static const uint8_t D4 = 7; +static const uint8_t D5 = 8; +static const uint8_t D6 = 9; +static const uint8_t D7 = 10; + +static const uint8_t D8 = 17; +static const uint8_t D9 = 18; +static const uint8_t D10 = 21; // SS +static const uint8_t D11 = 38; // MOSI +static const uint8_t D12 = 47; // MISO +static const uint8_t D13 = 48; // SCK +static const uint8_t SDA = 11; +static const uint8_t SCL = 12; + +#endif /* Pins_Arduino_h */ diff --git a/variants/arduino_nano_nora/variant.cpp b/variants/arduino_nano_nora/variant.cpp new file mode 100644 index 00000000000..42b6c1af814 --- /dev/null +++ b/variants/arduino_nano_nora/variant.cpp @@ -0,0 +1,248 @@ +#include "Arduino.h" + + +extern "C" { + void initVariant() { + } + // TODO: provide override for functions with pin numbers +} + +// defines an "Update" object accessed only by this translation unit +// (also, the object requires MD5Builder internally) +namespace { +// ignore '{anonymous}::MD5Builder::...() defined but not used' warnings +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" +#include "../../libraries/Update/src/Updater.cpp" +#include "../../cores/esp32/MD5Builder.cpp" +#pragma GCC diagnostic pop +} + +#include +#include +#include +#include + +#define ALT_COUNT 1 + +uint16_t load_dfu_ota_descriptor(uint8_t * dst, uint8_t * itf) +{ +#define DFU_ATTRS (DFU_ATTR_CAN_DOWNLOAD | DFU_ATTR_CAN_UPLOAD | DFU_ATTR_MANIFESTATION_TOLERANT) + + uint8_t str_index = tinyusb_add_string_descriptor("Arduino DFU"); + uint8_t descriptor[TUD_DFU_DESC_LEN(ALT_COUNT)] = { + // Interface number, string index, attributes, detach timeout, transfer size */ + TUD_DFU_DESCRIPTOR(*itf, ALT_COUNT, str_index, DFU_ATTRS, 100, CFG_TUD_DFU_XFER_BUFSIZE), + }; + *itf+=1; + memcpy(dst, descriptor, TUD_DFU_DESC_LEN(ALT_COUNT)); + return TUD_DFU_DESC_LEN(ALT_COUNT); +} + +extern "C" { + + +//--------------------------------------------------------------------+ +// DFU callbacks +// Note: alt is used as the partition number, in order to support multiple partitions like FLASH, EEPROM, etc. +//--------------------------------------------------------------------+ + +// Invoked right before tud_dfu_download_cb() (state=DFU_DNBUSY) or tud_dfu_manifest_cb() (state=DFU_MANIFEST) +// Application return timeout in milliseconds (bwPollTimeout) for the next download/manifest operation. +// During this period, USB host won't try to communicate with us. +uint32_t tud_dfu_get_timeout_cb(uint8_t alt, uint8_t state) +{ + if ( state == DFU_DNBUSY ) + { + // longest delay for Flash writing + return 10; + } + else if (state == DFU_MANIFEST) + { + // time for esp32_ota_set_boot_partition to check final image + return 100; + } + + return 0; +} + +// Invoked when received DFU_DNLOAD (wLength>0) following by DFU_GETSTATUS (state=DFU_DNBUSY) requests +// This callback could be returned before flashing op is complete (async). +// Once finished flashing, application must call tud_dfu_finish_flashing() +void tud_dfu_download_cb(uint8_t alt, uint16_t block_num, uint8_t const* data, uint16_t length) +{ + if (!Update.isRunning()) + { + // this is the first data block, start update if possible + if (!Update.begin()) + { + tud_dfu_finish_flashing(DFU_STATUS_ERR_TARGET); + return; + } + } + + // write a block of data to Flash + // XXX: Update API is needlessly non-const + size_t written = Update.write(const_cast(data), length); + tud_dfu_finish_flashing((written == length) ? DFU_STATUS_OK : DFU_STATUS_ERR_WRITE); +} + +// Invoked when download process is complete, received DFU_DNLOAD (wLength=0) following by DFU_GETSTATUS (state=Manifest) +// Application can do checksum, or actual flashing if buffered entire image previously. +// Once finished flashing, application must call tud_dfu_finish_flashing() +void tud_dfu_manifest_cb(uint8_t alt) +{ + (void) alt; + bool ok = Update.end(true); + + // flashing op for manifest is complete + tud_dfu_finish_flashing(ok? DFU_STATUS_OK : DFU_STATUS_ERR_VERIFY); +} + +// Invoked when received DFU_UPLOAD request +// Application must populate data with up to length bytes and +// Return the number of written bytes +uint16_t tud_dfu_upload_cb(uint8_t alt, uint16_t block_num, uint8_t* data, uint16_t length) +{ + (void) alt; + (void) block_num; + (void) data; + (void) length; + + // not implemented + return 0; +} + +// Invoked when the Host has terminated a download or upload transfer +void tud_dfu_abort_cb(uint8_t alt) +{ + (void) alt; + // ignore +} + +// Invoked when a DFU_DETACH request is received +void tud_dfu_detach_cb(void) +{ + // done, reboot + esp_restart(); +} + +} + +static const uint32_t magic_tokens[] = { + 0xf01681de, 0xbd729b29, 0xd359be7a, +}; + +#ifndef count_of +#define count_of(a) (sizeof(a)/sizeof((a)[0])) +#endif + +extern inline void boot_double_tap_mark(volatile uint32_t *magic_location) +{ + for (int i = 0; i < count_of(magic_tokens); i++) { + magic_location[i] = magic_tokens[i]; + } + esp_spiram_writeback_cache(); +} + +extern inline void boot_double_tap_invalidate(volatile uint32_t *magic_location) +{ + for (int i = 0; i < count_of(magic_tokens); i++) { + magic_location[i] = 0; + } + esp_spiram_writeback_cache(); +} + +extern inline bool boot_double_tap_match(volatile uint32_t *magic_location) +{ + for (int i = 0; i < count_of(magic_tokens); i++) { + if (magic_location[i] != magic_tokens[i]) + return false; + } + return true; +} + +#define DELAY_US 10000 +#define FADESTEP 8 +static void boot_rgb_pulse_delay() +{ + // Bv R^ G x + int widths[4] = { 192, 64, 0, 0 }; + int dec_led = 0; + + // initialize RGB signals from weak pinstraps + pinMode(LED_RED, OUTPUT); + pinMode(LED_GREEN, OUTPUT); + pinMode(LED_BLUE, OUTPUT); + while (dec_led < 3) { + widths[dec_led] -= FADESTEP; + widths[dec_led+1] += FADESTEP; + if (widths[dec_led] <= 0) { + widths[dec_led] = 0; + dec_led = dec_led+1; + widths[dec_led] = 255; + } + + analogWrite(LED_RED, 255-widths[1]); + analogWrite(LED_GREEN, 255-widths[2]); + analogWrite(LED_BLUE, 255-widths[0]); + delayMicroseconds(DELAY_US); + } + + // reset pins to digital HIGH before leaving + digitalWrite(LED_RED, HIGH); + digitalWrite(LED_GREEN, HIGH); + digitalWrite(LED_BLUE, HIGH); + pinMode(LED_RED, OUTPUT); + pinMode(LED_GREEN, OUTPUT); + pinMode(LED_BLUE, OUTPUT); +} + +// global, accessible from recovery sketch +bool _recovery_marker_found; +bool _recovery_active; + +static void boot_double_tap_check() +{ + // allocation here is deterministic and repeatable + // but make sure address is not clobbered by esp_spiram_test + uint32_t psram_addr = (uint32_t) heap_caps_malloc(32+4+sizeof(magic_tokens), MALLOC_CAP_SPIRAM); + psram_addr = (psram_addr + 0x1f) & ~0x1f; // align to next multiple of 32 bytes + psram_addr += 4; // avoid esp_spiram_test clobbering + volatile uint32_t *magic_location = (volatile uint32_t*) psram_addr; + _recovery_marker_found = boot_double_tap_match(magic_location); + + const esp_partition_t *part; + part = esp_ota_get_running_partition(); + _recovery_active = (part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY); + + if (_recovery_marker_found && !_recovery_active) { + // double tap detected in user application + // do not clear tokens: they will be read by recovery FW + // invalidate other OTA image + part = esp_ota_get_next_update_partition(NULL); + esp_partition_erase_range(part, 0, 4096); + // activate factory partition + part = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, NULL); + esp_ota_set_boot_partition(part); + esp_restart(); + } else { + // delay with mark set then proceed + // - for normal startup, to detect first double tap + // - in recovery mode, to ignore several short presses + boot_double_tap_mark(magic_location); + boot_rgb_pulse_delay(); + boot_double_tap_invalidate(magic_location); + } +} + +namespace { + class DoubleTap { + public: + DoubleTap() { + boot_double_tap_check(); + } + }; + + DoubleTap dt __attribute__ ((init_priority (101))); +} From 4e485f13f3ccede5a120cbcc978db899eb21ae5c Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Wed, 10 May 2023 12:20:22 +0200 Subject: [PATCH 03/12] [pin_remap 1/3] platform: define ARDUINO_CORE_BUILD when building core files --- platform.txt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index ed7f410ed94..ca0bcaa5c6f 100644 --- a/platform.txt +++ b/platform.txt @@ -186,6 +186,16 @@ recipe.hooks.prebuild.6.pattern=bash -c "[ -f "{build.path}"/build_opt.h ] || to recipe.hooks.prebuild.5.pattern.windows=cmd /c if exist "{build.source.path}\build_opt.h" COPY /y "{build.source.path}\build_opt.h" "{build.path}\build_opt.h" recipe.hooks.prebuild.6.pattern.windows=cmd /c if not exist "{build.path}\build_opt.h" type nul > "{build.path}\build_opt.h" +# Set -DARDUINO_CORE_BUILD only on core file compilation +file_opts.path={build.path}/file_opts +recipe.hooks.prebuild.set_core_build_flag.pattern=bash -c ": > {file_opts.path}" +recipe.hooks.core.prebuild.set_core_build_flag.pattern=bash -c "echo '-DARDUINO_CORE_BUILD' > {file_opts.path}" +recipe.hooks.core.postbuild.set_core_build_flag.pattern=bash -c ": > {file_opts.path}" + +recipe.hooks.prebuild.set_core_build_flag.pattern.windows=cmd /c type nul > {file_opts.path} +recipe.hooks.core.prebuild.set_core_build_flag.pattern.windows=cmd /c echo "-DARDUINO_CORE_BUILD" > {file_opts.path} +recipe.hooks.core.postbuild.set_core_build_flag.pattern.windows=cmd /c type nul > {file_opts.path} + # Generate debug.cfg (must be postbuild) recipe.hooks.postbuild.1.pattern=bash -c "[ {build.copy_jtag_files} -eq 0 ] || cp -f "{debug.server.openocd.scripts_dir}"board/{build.openocdscript} "{build.source.path}"/debug.cfg" recipe.hooks.postbuild.1.pattern.windows=cmd /c IF {build.copy_jtag_files}==1 COPY /y "{debug.server.openocd.scripts_dir}board\{build.openocdscript}" "{build.source.path}\debug.cfg" @@ -199,13 +209,13 @@ recipe.hooks.postbuild.3.pattern=bash -c "[ {build.copy_jtag_files} -eq 0 ] || c recipe.hooks.postbuild.3.pattern.windows=cmd /c IF {build.copy_jtag_files}==1 COPY /y "{runtime.platform.path}\tools\ide-debug\svd\{build.mcu}.svd" "{build.source.path}\debug.svd" ## Compile c files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.c.extra_flags} {build.extra_flags} "@{build.opt.path}" {includes} "{source_file}" -o "{object_file}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.c.extra_flags} {build.extra_flags} "@{build.opt.path}" "@{file_opts.path}" {includes} "{source_file}" -o "{object_file}" ## Compile c++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.cpp.extra_flags} {build.extra_flags} "@{build.opt.path}" {includes} "{source_file}" -o "{object_file}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.cpp.extra_flags} {build.extra_flags} "@{build.opt.path}" "@{file_opts.path}" {includes} "{source_file}" -o "{object_file}" ## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.S.extra_flags} {build.extra_flags} "@{build.opt.path}" {includes} "{source_file}" -o "{object_file}" +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" -DARDUINO_VARIANT="{build.variant}" -DARDUINO_PARTITION_{build.partitions} {compiler.S.extra_flags} {build.extra_flags} "@{build.opt.path}" "@{file_opts.path}" {includes} "{source_file}" -o "{object_file}" ## Create archives recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" From 9df7b37d857a23e3b82551e9f6f876127a384cee Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Wed, 10 May 2023 12:19:42 +0200 Subject: [PATCH 04/12] [pin_remap 2/3] core,libs: add pin remap hooks --- cores/esp32/Arduino.h | 7 +- cores/esp32/FunctionalInterrupt.cpp | 2 +- cores/esp32/HardwareSerial.cpp | 11 +++ cores/esp32/io_pin_remap.h | 110 ++++++++++++++++++++++++++++ libraries/I2S/src/I2S.cpp | 14 ++-- libraries/SD_MMC/src/SD_MMC.cpp | 10 +++ libraries/SPI/src/SPI.cpp | 1 + 7 files changed, 144 insertions(+), 11 deletions(-) create mode 100644 cores/esp32/io_pin_remap.h diff --git a/cores/esp32/Arduino.h b/cores/esp32/Arduino.h index 2dc0d543489..d0a71911b63 100644 --- a/cores/esp32/Arduino.h +++ b/cores/esp32/Arduino.h @@ -110,13 +110,13 @@ #define analogInPinToBit(P) (P) #if SOC_GPIO_PIN_COUNT <= 32 #define digitalPinToPort(pin) (0) -#define digitalPinToBitMask(pin) (1UL << (pin)) +#define digitalPinToBitMask(pin) (1UL << digitalPinToGPIONumber(pin)) #define portOutputRegister(port) ((volatile uint32_t*)GPIO_OUT_REG) #define portInputRegister(port) ((volatile uint32_t*)GPIO_IN_REG) #define portModeRegister(port) ((volatile uint32_t*)GPIO_ENABLE_REG) #elif SOC_GPIO_PIN_COUNT <= 64 -#define digitalPinToPort(pin) (((pin)>31)?1:0) -#define digitalPinToBitMask(pin) (1UL << (((pin)>31)?((pin)-32):(pin))) +#define digitalPinToPort(pin) ((digitalPinToGPIONumber(pin)>31)?1:0) +#define digitalPinToBitMask(pin) (1UL << (digitalPinToGPIONumber(pin)&31)) #define portOutputRegister(port) ((volatile uint32_t*)((port)?GPIO_OUT1_REG:GPIO_OUT_REG)) #define portInputRegister(port) ((volatile uint32_t*)((port)?GPIO_IN1_REG:GPIO_IN_REG)) #define portModeRegister(port) ((volatile uint32_t*)((port)?GPIO_ENABLE1_REG:GPIO_ENABLE_REG)) @@ -220,5 +220,6 @@ void noTone(uint8_t _pin); #endif /* __cplusplus */ #include "pins_arduino.h" +#include "io_pin_remap.h" #endif /* _ESP32_CORE_ARDUINO_H_ */ diff --git a/cores/esp32/FunctionalInterrupt.cpp b/cores/esp32/FunctionalInterrupt.cpp index c5a8d37fed4..b278332bd94 100644 --- a/cores/esp32/FunctionalInterrupt.cpp +++ b/cores/esp32/FunctionalInterrupt.cpp @@ -28,7 +28,7 @@ void ARDUINO_ISR_ATTR interruptFunctional(void* arg) void attachInterrupt(uint8_t pin, std::function intRoutine, int mode) { // use the local interrupt routine which takes the ArgStructure as argument - __attachInterruptFunctionalArg (pin, (voidFuncPtrArg)interruptFunctional, new InterruptArgStructure{intRoutine}, mode, true); + __attachInterruptFunctionalArg (digitalPinToGPIONumber(pin), (voidFuncPtrArg)interruptFunctional, new InterruptArgStructure{intRoutine}, mode, true); } extern "C" diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index f7baea0d936..4655cf27a6f 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -4,6 +4,7 @@ #include #include "pins_arduino.h" +#include "io_pin_remap.h" #include "HardwareSerial.h" #include "soc/soc_caps.h" #include "driver/uart.h" @@ -370,6 +371,10 @@ void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, in } } + // map logical pins to GPIO numbers + rxPin = digitalPinToGPIONumber(rxPin); + txPin = digitalPinToGPIONumber(txPin); + if(_uart) { // in this case it is a begin() over a previous begin() - maybe to change baud rate // thus do not disable debug output @@ -554,6 +559,12 @@ bool HardwareSerial::setPins(int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t r return false; } + // map logical pins to GPIO numbers + rxPin = digitalPinToGPIONumber(rxPin); + txPin = digitalPinToGPIONumber(txPin); + ctsPin = digitalPinToGPIONumber(ctsPin); + rtsPin = digitalPinToGPIONumber(rtsPin); + // uartSetPins() checks if pins are valid for each function and for the SoC bool retCode = uartSetPins(_uart, rxPin, txPin, ctsPin, rtsPin); if (retCode) { diff --git a/cores/esp32/io_pin_remap.h b/cores/esp32/io_pin_remap.h new file mode 100644 index 00000000000..4a23de4a829 --- /dev/null +++ b/cores/esp32/io_pin_remap.h @@ -0,0 +1,110 @@ +#ifndef __IO_PIN_REMAP_H__ +#define __IO_PIN_REMAP_H__ + +#include "Arduino.h" + +#if defined(BOARD_HAS_PIN_REMAP) && !defined(BOARD_USES_HW_GPIO_NUMBERS) + +// Pin remapping functions +int8_t digitalPinToGPIONumber(int8_t digitalPin); +int8_t digitalPinFromGPIONumber(int8_t gpioPin); + +// Apply pin remapping to API only when building libraries and user sketch +#ifndef ARDUINO_CORE_BUILD + +// Override APIs requiring pin remapping + +// cores/esp32/Arduino.h +#define pulseInLong(pin, state, timeout) pulseInLong(digitalPinToGPIONumber(pin), state, timeout) +#define pulseIn(pin, state, timeout) pulseIn(digitalPinToGPIONumber(pin), state, timeout) +#define noTone(_pin) noTone(digitalPinToGPIONumber(_pin)) +#define tone(_pin, frequency, duration) tone(digitalPinToGPIONumber(_pin), frequency, duration) + +// cores/esp32/esp32-hal.h +#define analogGetChannel(pin) analogGetChannel(digitalPinToGPIONumber(pin)) +#define analogWrite(pin, value) analogWrite(digitalPinToGPIONumber(pin), value) + +// cores/esp32/esp32-hal-adc.h +#define adcAttachPin(pin) adcAttachPin(digitalPinToGPIONumber(pin)) +#define analogRead(pin) analogRead(digitalPinToGPIONumber(pin)) +#define analogReadMilliVolts(pin) analogReadMilliVolts(digitalPinToGPIONumber(pin)) +#define analogSetPinAttenuation(pin, attenuation) analogSetPinAttenuation(digitalPinToGPIONumber(pin), attenuation) +#define analogSetVRefPin(pin) analogSetVRefPin(digitalPinToGPIONumber(pin)) + +// cores/esp32/esp32-hal-dac.h +#define dacDisable(pin) dacDisable(digitalPinToGPIONumber(pin)) +#define dacWrite(pin, value) dacWrite(digitalPinToGPIONumber(pin), value) + +// cores/esp32/esp32-hal-gpio.h +#define analogChannelToDigitalPin(channel) gpioNumberToDigitalPin(analogChannelToDigitalPin(channel)) +#define digitalPinToAnalogChannel(pin) digitalPinToAnalogChannel(digitalPinToGPIONumber(pin)) +#define digitalPinToTouchChannel(pin) digitalPinToTouchChannel(digitalPinToGPIONumber(pin)) +#define digitalRead(pin) digitalRead(digitalPinToGPIONumber(pin)) +#define attachInterruptArg(pin, fcn, arg, mode) attachInterruptArg(digitalPinToGPIONumber(pin), fcn, arg, mode) +#define attachInterrupt(pin, fcn, mode) attachInterrupt(digitalPinToGPIONumber(pin), fcn, mode) +#define detachInterrupt(pin) detachInterrupt(digitalPinToGPIONumber(pin)) +#define digitalWrite(pin, val) digitalWrite(digitalPinToGPIONumber(pin), val) +#define pinMode(pin, mode) pinMode(digitalPinToGPIONumber(pin), mode) + +// cores/esp32/esp32-hal-i2c.h +#define i2cInit(i2c_num, sda, scl, clk_speed) i2cInit(i2c_num, digitalPinToGPIONumber(sda), digitalPinToGPIONumber(scl), clk_speed) + +// cores/esp32/esp32-hal-i2c-slave.h +#define i2cSlaveInit(num, sda, scl, slaveID, frequency, rx_len, tx_len) i2cSlaveInit(num, digitalPinToGPIONumber(sda), digitalPinToGPIONumber(scl), slaveID, frequency, rx_len, tx_len) + +// cores/esp32/esp32-hal-ledc.h +#define ledcAttachPin(pin, channel) ledcAttachPin(digitalPinToGPIONumber(pin), channel) +#define ledcDetachPin(pin) ledcDetachPin(digitalPinToGPIONumber(pin)) + +// cores/esp32/esp32-hal-matrix.h +#define pinMatrixInAttach(pin, signal, inverted) pinMatrixInAttach(digitalPinToGPIONumber(pin), signal, inverted) +#define pinMatrixOutAttach(pin, function, invertOut, invertEnable) pinMatrixOutAttach(digitalPinToGPIONumber(pin), function, invertOut, invertEnable) +#define pinMatrixOutDetach(pin, invertOut, invertEnable) pinMatrixOutDetach(digitalPinToGPIONumber(pin), invertOut, invertEnable) + +// cores/esp32/esp32-hal-rgb-led.h +#define neopixelWrite(pin, red_val, green_val, blue_val) neopixelWrite(digitalPinToGPIONumber(pin), red_val, green_val, blue_val) + +// cores/esp32/esp32-hal-rmt.h +#define rmtInit(pin, tx_not_rx, memsize) rmtInit(digitalPinToGPIONumber(pin), tx_not_rx, memsize) + +// cores/esp32/esp32-hal-sigmadelta.h +#define sigmaDeltaSetup(pin, channel, freq) sigmaDeltaSetup(digitalPinToGPIONumber(pin), channel, freq) +#define sigmaDeltaDetachPin(pin) sigmaDeltaDetachPin(digitalPinToGPIONumber(pin)) + +// cores/esp32/esp32-hal-spi.h +#define spiAttachSCK(spi, sck) spiAttachSCK(spi, digitalPinToGPIONumber(sck)) +#define spiAttachMISO(spi, miso) spiAttachMISO(spi, digitalPinToGPIONumber(miso)) +#define spiAttachMOSI(spi, mosi) spiAttachMOSI(spi, digitalPinToGPIONumber(mosi)) +#define spiDetachSCK(spi, sck) spiDetachSCK(spi, digitalPinToGPIONumber(sck)) +#define spiDetachMISO(spi, miso) spiDetachMISO(spi, digitalPinToGPIONumber(miso)) +#define spiDetachMOSI(spi, mosi) spiDetachMOSI(spi, digitalPinToGPIONumber(mosi)) +#define spiAttachSS(spi, cs_num, ss) spiAttachSS(spi, cs_num, digitalPinToGPIONumber(ss)) +#define spiDetachSS(spi, ss) spiDetachSS(spi, digitalPinToGPIONumber(ss)) + +// cores/esp32/esp32-hal-touch.h +#define touchInterruptGetLastStatus(pin) touchInterruptGetLastStatus(digitalPinToGPIONumber(pin)) +#define touchRead(pin) touchRead(digitalPinToGPIONumber(pin)) +#define touchAttachInterruptArg(pin, userFunc, arg, threshold) touchAttachInterruptArg(digitalPinToGPIONumber(pin), userFunc, arg, threshold) +#define touchAttachInterrupt(pin, userFunc, threshold) touchAttachInterrupt(digitalPinToGPIONumber(pin), userFunc, threshold) +#define touchDetachInterrupt(pin) touchDetachInterrupt(digitalPinToGPIONumber(pin)) +#define touchSleepWakeUpEnable(pin, threshold) touchSleepWakeUpEnable(digitalPinToGPIONumber(pin), threshold) + +// cores/esp32/esp32-hal-uart.h +#define uartBegin(uart_nr, baudrate, config, rxPin, txPin, rx_buffer_size, tx_buffer_size, inverted, rxfifo_full_thrhd) \ + uartBegin(uart_nr, baudrate, config, digitalPinToGPIONumber(rxPin), digitalPinToGPIONumber(txPin), rx_buffer_size, tx_buffer_size, inverted, rxfifo_full_thrhd) +#define uartSetPins(uart, rxPin, txPin, ctsPin, rtsPin) \ + uartSetPins(uart, digitalPinToGPIONumber(rxPin), digitalPinToGPIONumber(txPin), digitalPinToGPIONumber(ctsPin), digitalPinToGPIONumber(rtsPin)) +#define uartDetachPins(uart, rxPin, txPin, ctsPin, rtsPin) \ + uartDetachPins(uart, digitalPinToGPIONumber(rxPin), digitalPinToGPIONumber(txPin), digitalPinToGPIONumber(ctsPin), digitalPinToGPIONumber(rtsPin)) + +#endif // ARDUINO_CORE_BUILD + +#else + +// pin remapping disabled: use stubs +#define digitalPinToGPIONumber(digitalPin) (digitalPin) +#define gpioNumberToDigitalPin(gpioNumber) (gpioNumber) + +#endif + +#endif /* __GPIO_PIN_REMAP_H__ */ diff --git a/libraries/I2S/src/I2S.cpp b/libraries/I2S/src/I2S.cpp index 78dc5c202df..68cc3b13f10 100644 --- a/libraries/I2S/src/I2S.cpp +++ b/libraries/I2S/src/I2S.cpp @@ -317,24 +317,24 @@ int I2SClass::begin(int mode, int sampleRate, int bitsPerSample, bool driveClock int I2SClass::_applyPinSetting(){ if(_driverInstalled){ esp_i2s::i2s_pin_config_t pin_config = { - .bck_io_num = _sckPin, - .ws_io_num = _fsPin, + .bck_io_num = digitalPinToGPIONumber(_sckPin), + .ws_io_num = digitalPinToGPIONumber(_fsPin), .data_out_num = I2S_PIN_NO_CHANGE, .data_in_num = I2S_PIN_NO_CHANGE }; if (_state == I2S_STATE_DUPLEX){ // duplex - pin_config.data_out_num = _outSdPin; - pin_config.data_in_num = _inSdPin; + pin_config.data_out_num = digitalPinToGPIONumber(_outSdPin); + pin_config.data_in_num = digitalPinToGPIONumber(_inSdPin); }else{ // simplex if(_state == I2S_STATE_RECEIVER){ pin_config.data_out_num = I2S_PIN_NO_CHANGE; - pin_config.data_in_num = _sdPin; + pin_config.data_in_num = digitalPinToGPIONumber(_sdPin); }else if(_state == I2S_STATE_TRANSMITTER){ - pin_config.data_out_num = _sdPin; + pin_config.data_out_num = digitalPinToGPIONumber(_sdPin); pin_config.data_in_num = I2S_PIN_NO_CHANGE; }else{ pin_config.data_out_num = I2S_PIN_NO_CHANGE; - pin_config.data_in_num = _sdPin; + pin_config.data_in_num = digitalPinToGPIONumber(_sdPin); } } if(ESP_OK != esp_i2s::i2s_set_pin((esp_i2s::i2s_port_t) _deviceIndex, &pin_config)){ diff --git a/libraries/SD_MMC/src/SD_MMC.cpp b/libraries/SD_MMC/src/SD_MMC.cpp index 83cf9aa0dd1..85f4e46681c 100644 --- a/libraries/SD_MMC/src/SD_MMC.cpp +++ b/libraries/SD_MMC/src/SD_MMC.cpp @@ -13,6 +13,7 @@ // limitations under the License. #include "pins_arduino.h" +#include "io_pin_remap.h" #include "SD_MMC.h" #ifdef SOC_SDMMC_HOST_SUPPORTED #include "vfs_api.h" @@ -54,6 +55,15 @@ bool SDMMCFS::setPins(int clk, int cmd, int d0, int d1, int d2, int d3) log_e("SD_MMC.setPins must be called before SD_MMC.begin"); return false; } + + // map logical pins to GPIO numbers + clk = digitalPinToGPIONumber(clk); + cmd = digitalPinToGPIONumber(cmd); + d0 = digitalPinToGPIONumber(d0); + d1 = digitalPinToGPIONumber(d1); + d2 = digitalPinToGPIONumber(d2); + d3 = digitalPinToGPIONumber(d3); + #ifdef SOC_SDMMC_USE_GPIO_MATRIX // SoC supports SDMMC pin configuration via GPIO matrix. Save the pins for later use in SDMMCFS::begin. _pin_clk = (int8_t) clk; diff --git a/libraries/SPI/src/SPI.cpp b/libraries/SPI/src/SPI.cpp index 23a35c0d357..3af07515c2b 100644 --- a/libraries/SPI/src/SPI.cpp +++ b/libraries/SPI/src/SPI.cpp @@ -20,6 +20,7 @@ */ #include "SPI.h" +#include "io_pin_remap.h" #include "esp32-hal-log.h" #if !CONFIG_DISABLE_HAL_LOCKS From 32148cfd819ee78de5d7e4053bd94bb463d60989 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 22 Jun 2023 09:59:14 +0200 Subject: [PATCH 05/12] [pin_remap 3/3] nano_nora: implement and enable pin remap --- boards.txt | 2 +- variants/arduino_nano_nora/io_pin_remap.cpp | 55 +++++++++ variants/arduino_nano_nora/pins_arduino.h | 119 +++++++++++--------- variants/arduino_nano_nora/variant.cpp | 5 +- 4 files changed, 127 insertions(+), 54 deletions(-) create mode 100644 variants/arduino_nano_nora/io_pin_remap.cpp diff --git a/boards.txt b/boards.txt index 302f49e117b..cc9124be1ba 100644 --- a/boards.txt +++ b/boards.txt @@ -24154,7 +24154,7 @@ nano_nora.build.flash_mode=dio nano_nora.build.boot=qio nano_nora.build.boot_freq=80m nano_nora.build.partitions=app3M_fat9M_fact512k_16MB -nano_nora.build.defines=-DBOARD_HAS_PSRAM +nano_nora.build.defines=-DBOARD_HAS_PIN_REMAP -DBOARD_HAS_PSRAM nano_nora.build.loop_core=-DARDUINO_RUNNING_CORE=1 nano_nora.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 nano_nora.build.psram_type=opi diff --git a/variants/arduino_nano_nora/io_pin_remap.cpp b/variants/arduino_nano_nora/io_pin_remap.cpp new file mode 100644 index 00000000000..e53c500a328 --- /dev/null +++ b/variants/arduino_nano_nora/io_pin_remap.cpp @@ -0,0 +1,55 @@ +#ifndef BOARD_USES_HW_GPIO_NUMBERS + +#include "Arduino.h" + +static const int8_t TO_GPIO_NUMBER[NUM_DIGITAL_PINS] = { + [D0] = 44, // RX + [D1] = 43, // TX + [D2] = 5, + [D3] = 6, // CTS + [D4] = 7, // DSR + [D5] = 8, + [D6] = 9, + [D7] = 10, + [D8] = 17, + [D9] = 18, + [D10] = 21, // SS + [D11] = 38, // MOSI + [D12] = 47, // MISO + [D13] = 48, // SCK, LED_BUILTIN + [LED_RED] = 46, + [LED_GREEN] = 0, + [LED_BLUE] = 45, // RTS + [A0] = 1, // DTR + [A1] = 2, + [A2] = 3, + [A3] = 4, + [A4] = 11, // SDA + [A5] = 12, // SCL + [A6] = 13, + [A7] = 14, +}; + +int8_t digitalPinToGPIONumber(int8_t digitalPin) +{ + if ((digitalPin < 0) || (digitalPin >= NUM_DIGITAL_PINS)) + return -1; + return TO_GPIO_NUMBER[digitalPin]; +} + +int8_t gpioNumberToDigitalPin(int8_t gpioNumber) +{ + if (gpioNumber < 0) + return -1; + + // slow linear table lookup + for (int8_t digitalPin = 0; digitalPin < NUM_DIGITAL_PINS; ++digitalPin) { + if (TO_GPIO_NUMBER[digitalPin] == gpioNumber) + return digitalPin; + } + + // not found + return -1; +} + +#endif diff --git a/variants/arduino_nano_nora/pins_arduino.h b/variants/arduino_nano_nora/pins_arduino.h index fa97960ff8a..79a94ec4ae9 100644 --- a/variants/arduino_nano_nora/pins_arduino.h +++ b/variants/arduino_nano_nora/pins_arduino.h @@ -8,56 +8,73 @@ #define USB_PID 0x0070 #define EXTERNAL_NUM_INTERRUPTS 46 -#define NUM_DIGITAL_PINS 48 -#define NUM_ANALOG_INPUTS 20 - -#define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) -#define digitalPinHasPWM(p) (p < 46) - -static const uint8_t TX = 43; -static const uint8_t RX = 44; -static const uint8_t RTS = 45; -static const uint8_t CTS = 6; -static const uint8_t DTR = 1; -static const uint8_t DSR = 7; - -static const uint8_t LED_RED = 46; -static const uint8_t LED_GREEN = 0; -static const uint8_t LED_BLUE = 45; -static const uint8_t LED_BUILTIN = 48; -#define LED_BUILTIN LED_BUILTIN - -static const uint8_t SS = 21; -static const uint8_t MOSI = 38; -static const uint8_t MISO = 47; -static const uint8_t SCK = 48; - -static const uint8_t A0 = 1; -static const uint8_t A1 = 2; -static const uint8_t A2 = 3; -static const uint8_t A3 = 4; -static const uint8_t A4 = 11; -static const uint8_t A5 = 12; -static const uint8_t A6 = 13; -static const uint8_t A7 = 14; - -static const uint8_t D0 = 44; // RX0 -static const uint8_t D1 = 43; // TX0 -static const uint8_t D2 = 5; -static const uint8_t D3 = 6; -static const uint8_t D4 = 7; -static const uint8_t D5 = 8; -static const uint8_t D6 = 9; -static const uint8_t D7 = 10; - -static const uint8_t D8 = 17; -static const uint8_t D9 = 18; -static const uint8_t D10 = 21; // SS -static const uint8_t D11 = 38; // MOSI -static const uint8_t D12 = 47; // MISO -static const uint8_t D13 = 48; // SCK -static const uint8_t SDA = 11; -static const uint8_t SCL = 12; +#define NUM_DIGITAL_PINS 25 +#define NUM_ANALOG_INPUTS 8 + +#define analogInputToDigitalPin(p) (p) +#define digitalPinToInterrupt(p) ((((uint8_t)digitalPinToGPIONumber(p)) < 48)? digitalPinToGPIONumber(p) : -1) +#define digitalPinHasPWM(p) (((uint8_t)digitalPinToGPIONumber(p)) < 46) + +#ifndef __cplusplus +#define constexpr const +#endif + +// primary pin names + +static constexpr uint8_t D0 = 0; // also RX +static constexpr uint8_t D1 = 1; // also TX +static constexpr uint8_t D2 = 2; +static constexpr uint8_t D3 = 3; // also CTS +static constexpr uint8_t D4 = 4; // also DSR +static constexpr uint8_t D5 = 5; +static constexpr uint8_t D6 = 6; +static constexpr uint8_t D7 = 7; +static constexpr uint8_t D8 = 8; +static constexpr uint8_t D9 = 9; +static constexpr uint8_t D10 = 10; // also SS +static constexpr uint8_t D11 = 11; // also MOSI +static constexpr uint8_t D12 = 12; // also MISO +static constexpr uint8_t D13 = 13; // also SCK, LED_BUILTIN +static constexpr uint8_t LED_RED = 14; +static constexpr uint8_t LED_GREEN = 15; +static constexpr uint8_t LED_BLUE = 16; // also RTS + +static constexpr uint8_t A0 = 17; // also DTR +static constexpr uint8_t A1 = 18; +static constexpr uint8_t A2 = 19; +static constexpr uint8_t A3 = 20; +static constexpr uint8_t A4 = 21; // also SDA +static constexpr uint8_t A5 = 22; // also SCL +static constexpr uint8_t A6 = 23; +static constexpr uint8_t A7 = 24; + +// alternate pin functions + +static constexpr uint8_t LED_BUILTIN = D13; + +static constexpr uint8_t TX = D1; +static constexpr uint8_t RX = D0; +static constexpr uint8_t RTS = LED_BLUE; +static constexpr uint8_t CTS = D3; +static constexpr uint8_t DTR = A0; +static constexpr uint8_t DSR = D4; + +static constexpr uint8_t SS = D10; +static constexpr uint8_t MOSI = D11; +static constexpr uint8_t MISO = D12; +static constexpr uint8_t SCK = D13; + +static constexpr uint8_t SDA = A4; +static constexpr uint8_t SCL = A5; + +#define PIN_I2S_SCK D7 +#define PIN_I2S_FS D8 +#define PIN_I2S_SD D9 +#define PIN_I2S_SD_OUT D9 // same as bidir +#define PIN_I2S_SD_IN D10 + +#ifndef __cplusplus +#undef constexpr +#endif #endif /* Pins_Arduino_h */ diff --git a/variants/arduino_nano_nora/variant.cpp b/variants/arduino_nano_nora/variant.cpp index 42b6c1af814..411b83ba07e 100644 --- a/variants/arduino_nano_nora/variant.cpp +++ b/variants/arduino_nano_nora/variant.cpp @@ -1,10 +1,11 @@ -#include "Arduino.h" +// Enable pin remapping in this file, so pin constants are meaningful +#undef ARDUINO_CORE_BUILD +#include "Arduino.h" extern "C" { void initVariant() { } - // TODO: provide override for functions with pin numbers } // defines an "Update" object accessed only by this translation unit From 6d78366eaa070656e31cff14e32b997b61993bbd Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 22 Jun 2023 10:55:20 +0200 Subject: [PATCH 06/12] nano_nora: fix: reset all matrix connections at boot --- variants/arduino_nano_nora/variant.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/variants/arduino_nano_nora/variant.cpp b/variants/arduino_nano_nora/variant.cpp index 411b83ba07e..c0beb4ca97d 100644 --- a/variants/arduino_nano_nora/variant.cpp +++ b/variants/arduino_nano_nora/variant.cpp @@ -5,6 +5,28 @@ extern "C" { void initVariant() { + // FIXME: fix issues with GPIO matrix not being soft reset properly + for (int pin = 0; pin Date: Thu, 4 May 2023 11:19:45 +0200 Subject: [PATCH 07/12] nano_nora: add recovery image for release/v2.x --- .../extra/nora_recovery/nora_recovery.ino.bin | Bin 0 -> 286512 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin diff --git a/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea787558437a8113fc308a1266cbd04d192bdde4 GIT binary patch literal 286512 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

d$!wG+7&s``Kjsf12 z7~$px7Ythyc~Eoa1xMxuyv9luiutuwI6)ycA3YC|q?~twqjq_981pX($|jAT@Lk!{ z7kK-F8Y;~u%}<~!GO0ZCY>cl6<7cFYTU}? z=82g$-JQ9MHJEo*Q$sG=M_RSesNMowEADiZ0>Yvy~4FJoscleL_Xy zmvp=Pen%G|4iQZppy;Ng|J?eLKH?kMu>_tScnO27{fY=Vd9%r;@KipN?tTA6di(w$ zZx*SIEE!~+Nv+>eq}ulzo&TN)O6T<_G2chG3R!@F>ufMV@y>oG%rYxV%Bm&e88Y zyQeJZ{Pf4zlwUCfo{Ccy-ndkLrGB|^bRhS&POytMfig~@pm<%5AQyxW3NE1F?6RgW z1DB@fi{O9*5d5f}ko`g+&Q>m|D7$g)8DBsZq(bnO=F1EzlwVqEIm;z}cMh+b)I|%^ zA1}hGZf%^%>llGhqRGbLas0=wqK{R9nNTM&XTXVGd@mFNbpw<`ERUvC#M1|#HdS}= z+`Zo#T^aRW>^wX)1QDA{Z}Yq`d~mL=_)G71E-ov?J)rMSHssG?Q=*w~=di6YO!Oi) zNNTtT6(veiW5az$WAM?cK1&Pi1 zGVNoOJb}LB6La4@mlG%BpZA3N{vG2L;!zvLc}$+X?{A^u1SPa}-jpBJ?6Y$l&fH07 zKZm0mj8n!EuV>Fp4enO?G=>D^;S7S2?T+-#W?RJK>~A_TN$m1rR*S_MkvApo80-|8*2;305yWx|EuhEp`FUay=XY{L5I4cJy~yz!>hE>Q>6Ie; zT3M;!XeW86tt{e8-hy)78XQV53;z?DX5XhfNVSn37Ls2617l z7M@Fgy~tn{t<0C11ZGLzxpkHQm;9=H!J3tsvQ>UxA~HRTYPE0;9@&yy@s~Nmv3Cjo zz4jaOpo8!==jzze7}%O*sAa$zT(*`hZi<8b&0D-zK`yOy+mb_LPxx24B05%)IaY^g zFvz^%9K>YR$5A$A(<-b)3_|&Vz6a@43qqY>Nf&H)0 z$Y+W6F>Rh@IVvhFM*BJc=%apx-!oD}X=$0sltW|aYYy-DCg=Q5t`FiSnhq2tP9S93 zQVa)0hDuqzpvR=_Y)bs3lSgKGv>&`$B(`=U7V0LIlkbOTs;{}F)9br|I6EntS^M?3 z!izcXoDh?g&!h$7^HNOt4wPmE-tKRuFJFc-W+@OOr?4gCFski~^4t6Gy&O0pP&xEVgf zY6)5VuvVaPG@os;d%W8XBm)qXbiU!8v!g*;``5X3XQw~GrYvL-9be!TvIV@+UqTQi z398SRdEx0hJ}7t6c`umoEy!FeCvQ2@^(2u*_4Ve*iWs?pIqZO25V!;r>U5o=*15Kw z4SX~wPK3H@YZW|v%{rWer^o`uOp)&Ovq)l?L(NDlsA4%?$yvN=3KlI&f42fMQi~C) zkzx-NQ209d4)n_B`Cj?Fj)&Ko&L-_84V)%0DU5I*>PY`UqP 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 BvvU9d literal 0 HcmV?d00001 From 2bae764b6d90db1adc8438a4d22049adaed4bf0f Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Wed, 5 Jul 2023 19:21:33 +0200 Subject: [PATCH 08/12] nano_nora: use official Arduino branding --- boards.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards.txt b/boards.txt index cc9124be1ba..c6f61851cf2 100644 --- a/boards.txt +++ b/boards.txt @@ -24140,7 +24140,7 @@ nano_nora.build.target=esp32s3 nano_nora.build.mcu=esp32s3 nano_nora.build.core=esp32 nano_nora.build.variant=arduino_nano_nora -nano_nora.build.board=ARDUINO_NANO_NORA +nano_nora.build.board=NANO_ESP32 nano_nora.build.code_debug=0 nano_nora.build.usb_mode=0 @@ -24154,7 +24154,7 @@ nano_nora.build.flash_mode=dio nano_nora.build.boot=qio nano_nora.build.boot_freq=80m nano_nora.build.partitions=app3M_fat9M_fact512k_16MB -nano_nora.build.defines=-DBOARD_HAS_PIN_REMAP -DBOARD_HAS_PSRAM +nano_nora.build.defines=-DBOARD_HAS_PIN_REMAP -DBOARD_HAS_PSRAM '-DUSB_MANUFACTURER="Arduino"' '-DUSB_PRODUCT="Nano ESP32"' nano_nora.build.loop_core=-DARDUINO_RUNNING_CORE=1 nano_nora.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 nano_nora.build.psram_type=opi From 2a927e4675382374078aaf3242d6536a640a61d3 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 6 Jul 2023 12:25:30 +0200 Subject: [PATCH 09/12] nano_nora: core split + recovery mode rework Use an absolute address in SPIRAM to store the magic tokens, almost at the end of the memory, to avoid the markers from being overwritten on any kind of sketch and core combination. Also, only start the recovery once if a valid binary is present in the Flash, by immediately setting that for the next boot when recovery starts. --- variants/arduino_nano_nora/dfu_callbacks.cpp | 116 +++++++++ variants/arduino_nano_nora/double_tap.c | 67 +++++ variants/arduino_nano_nora/double_tap.h | 20 ++ .../extra/nora_recovery/nora_recovery.ino | 33 ++- .../extra/nora_recovery/nora_recovery.ino.bin | Bin 286512 -> 286544 bytes variants/arduino_nano_nora/variant.cpp | 229 ++++-------------- 6 files changed, 266 insertions(+), 199 deletions(-) create mode 100644 variants/arduino_nano_nora/dfu_callbacks.cpp create mode 100644 variants/arduino_nano_nora/double_tap.c create mode 100644 variants/arduino_nano_nora/double_tap.h diff --git a/variants/arduino_nano_nora/dfu_callbacks.cpp b/variants/arduino_nano_nora/dfu_callbacks.cpp new file mode 100644 index 00000000000..3695db80ba6 --- /dev/null +++ b/variants/arduino_nano_nora/dfu_callbacks.cpp @@ -0,0 +1,116 @@ +#include "Arduino.h" + +#include +#include + +// defines an "Update" object accessed only by this translation unit +// (also, the object requires MD5Builder internally) +namespace { +// ignore '{anonymous}::MD5Builder::...() defined but not used' warnings +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" +#include "../../libraries/Update/src/Updater.cpp" +#include "../../cores/esp32/MD5Builder.cpp" +#pragma GCC diagnostic pop +} + +#define ALT_COUNT 1 + +//--------------------------------------------------------------------+ +// DFU callbacks +// Note: alt is used as the partition number, in order to support multiple partitions like FLASH, EEPROM, etc. +//--------------------------------------------------------------------+ + +uint16_t load_dfu_ota_descriptor(uint8_t * dst, uint8_t * itf) +{ +#define DFU_ATTRS (DFU_ATTR_CAN_DOWNLOAD | DFU_ATTR_CAN_UPLOAD | DFU_ATTR_MANIFESTATION_TOLERANT) + + uint8_t str_index = tinyusb_add_string_descriptor("Arduino DFU"); + uint8_t descriptor[TUD_DFU_DESC_LEN(ALT_COUNT)] = { + // Interface number, string index, attributes, detach timeout, transfer size */ + TUD_DFU_DESCRIPTOR(*itf, ALT_COUNT, str_index, DFU_ATTRS, 100, CFG_TUD_DFU_XFER_BUFSIZE), + }; + *itf+=1; + memcpy(dst, descriptor, TUD_DFU_DESC_LEN(ALT_COUNT)); + return TUD_DFU_DESC_LEN(ALT_COUNT); +} + +// Invoked right before tud_dfu_download_cb() (state=DFU_DNBUSY) or tud_dfu_manifest_cb() (state=DFU_MANIFEST) +// Application return timeout in milliseconds (bwPollTimeout) for the next download/manifest operation. +// During this period, USB host won't try to communicate with us. +uint32_t tud_dfu_get_timeout_cb(uint8_t alt, uint8_t state) +{ + if ( state == DFU_DNBUSY ) + { + // longest delay for Flash writing + return 10; + } + else if (state == DFU_MANIFEST) + { + // time for esp32_ota_set_boot_partition to check final image + return 100; + } + + return 0; +} + +// Invoked when received DFU_DNLOAD (wLength>0) following by DFU_GETSTATUS (state=DFU_DNBUSY) requests +// This callback could be returned before flashing op is complete (async). +// Once finished flashing, application must call tud_dfu_finish_flashing() +void tud_dfu_download_cb(uint8_t alt, uint16_t block_num, uint8_t const* data, uint16_t length) +{ + if (!Update.isRunning()) + { + // this is the first data block, start update if possible + if (!Update.begin()) + { + tud_dfu_finish_flashing(DFU_STATUS_ERR_TARGET); + return; + } + } + + // write a block of data to Flash + // XXX: Update API is needlessly non-const + size_t written = Update.write(const_cast(data), length); + tud_dfu_finish_flashing((written == length) ? DFU_STATUS_OK : DFU_STATUS_ERR_WRITE); +} + +// Invoked when download process is complete, received DFU_DNLOAD (wLength=0) following by DFU_GETSTATUS (state=Manifest) +// Application can do checksum, or actual flashing if buffered entire image previously. +// Once finished flashing, application must call tud_dfu_finish_flashing() +void tud_dfu_manifest_cb(uint8_t alt) +{ + (void) alt; + bool ok = Update.end(true); + + // flashing op for manifest is complete + tud_dfu_finish_flashing(ok? DFU_STATUS_OK : DFU_STATUS_ERR_VERIFY); +} + +// Invoked when received DFU_UPLOAD request +// Application must populate data with up to length bytes and +// Return the number of written bytes +uint16_t tud_dfu_upload_cb(uint8_t alt, uint16_t block_num, uint8_t* data, uint16_t length) +{ + (void) alt; + (void) block_num; + (void) data; + (void) length; + + // not implemented + return 0; +} + +// Invoked when the Host has terminated a download or upload transfer +void tud_dfu_abort_cb(uint8_t alt) +{ + (void) alt; + // ignore +} + +// Invoked when a DFU_DETACH request is received +void tud_dfu_detach_cb(void) +{ + // done, reboot + esp_restart(); +} diff --git a/variants/arduino_nano_nora/double_tap.c b/variants/arduino_nano_nora/double_tap.c new file mode 100644 index 00000000000..44fe0923857 --- /dev/null +++ b/variants/arduino_nano_nora/double_tap.c @@ -0,0 +1,67 @@ +#include + +#include +#include + +#include "double_tap.h" + +#define NUM_TOKENS 3 +static const uint32_t MAGIC_TOKENS[NUM_TOKENS] = { + 0xf01681de, 0xbd729b29, 0xd359be7a, +}; + +static void *magic_area; +static uint32_t backup_area[NUM_TOKENS]; + +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) +// Current IDF does not map external RAM to a fixed address. +// The actual VMA depends on other enabled devices, so the precise +// location must be discovered. +#include +#include +static uintptr_t get_extram_data_high(void) { + // get a pointer into SRAM area (only the address is useful) + void *psram_ptr = heap_caps_malloc(16, MALLOC_CAP_SPIRAM); + heap_caps_free(psram_ptr); + + // keep moving backwards until leaving PSRAM area + uintptr_t psram_base_addr = (uintptr_t) psram_ptr; + psram_base_addr &= ~(CONFIG_MMU_PAGE_SIZE - 1); // align to start of page + while (esp_psram_check_ptr_addr((void *) psram_base_addr)) { + psram_base_addr -= CONFIG_MMU_PAGE_SIZE; + } + + // offset is one page from start of PSRAM + return psram_base_addr + CONFIG_MMU_PAGE_SIZE + esp_psram_get_size(); +} +#else +#include +#define get_extram_data_high() ((uintptr_t) SOC_EXTRAM_DATA_HIGH) +#endif + + +void double_tap_init(void) { + // magic location block ends 0x20 bytes from end of PSRAM + magic_area = (void *) (get_extram_data_high() - 0x20 - sizeof(MAGIC_TOKENS)); +} + +void double_tap_mark() { + memcpy(backup_area, magic_area, sizeof(MAGIC_TOKENS)); + memcpy(magic_area, MAGIC_TOKENS, sizeof(MAGIC_TOKENS)); + Cache_WriteBack_Addr((uintptr_t) magic_area, sizeof(MAGIC_TOKENS)); +} + +void double_tap_invalidate() { + if (memcmp(backup_area, MAGIC_TOKENS, sizeof(MAGIC_TOKENS))) { + // different contents: restore backup + memcpy(magic_area, backup_area, sizeof(MAGIC_TOKENS)); + } else { + // clear memory + memset(magic_area, 0, sizeof(MAGIC_TOKENS)); + } + Cache_WriteBack_Addr((uintptr_t) magic_area, sizeof(MAGIC_TOKENS)); +} + +bool double_tap_check_match() { + return (memcmp(magic_area, MAGIC_TOKENS, sizeof(MAGIC_TOKENS)) == 0); +} diff --git a/variants/arduino_nano_nora/double_tap.h b/variants/arduino_nano_nora/double_tap.h new file mode 100644 index 00000000000..e797f4f64fd --- /dev/null +++ b/variants/arduino_nano_nora/double_tap.h @@ -0,0 +1,20 @@ +#ifndef __DOUBLE_TAP_H__ +#define __DOUBLE_TAP_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void double_tap_init(void); +void double_tap_mark(void); +void double_tap_invalidate(void); +bool double_tap_check_match(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __DOUBLE_TAP_H__ */ diff --git a/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino index e38c96c09ac..865fdd59020 100644 --- a/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino +++ b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino @@ -27,11 +27,13 @@ void pulse_led() { #include #include #include -bool load_previous_firmware() { - // if user flashed this recovery sketch to an OTA partition, stay here +const esp_partition_t *find_previous_firmware() { extern bool _recovery_active; - if (!_recovery_active) - return false; + if (!_recovery_active) { + // user flashed this recovery sketch to an OTA partition + // stay here and wait for a proper firmware + return NULL; + } // booting from factory partition, look for a valid OTA image esp_partition_iterator_t it = esp_partition_find(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, NULL); @@ -42,24 +44,29 @@ bool load_previous_firmware() { esp_image_metadata_t meta; if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &candidate, &meta) == ESP_OK) { // found, use it - esp_ota_set_boot_partition(part); - return true; + return part; } } } - return false; + return NULL; } +const esp_partition_t *user_part = NULL; + void setup() { + user_part = find_previous_firmware(); + if (user_part) + esp_ota_set_boot_partition(user_part); + extern bool _recovery_marker_found; - if (!_recovery_marker_found) { - // marker not found, probable cold start + if (!_recovery_marker_found && user_part) { + // recovery marker not found, probable cold start // try starting previous firmware immediately - if (load_previous_firmware()) - esp_restart(); + esp_restart(); } + // recovery marker found, or nothing else to load printf("Recovery firmware started, waiting for USB\r\n"); } @@ -79,8 +86,8 @@ void loop() { if (elapsed_ms > USB_TIMEOUT_MS) { elapsed_ms = 0; // timed out, try loading previous firmware - if (load_previous_firmware()) { - // found a valid FW image, load it + if (user_part) { + // there was a valid FW image, load it analogWrite(LED_GREEN, 255); printf("Leaving recovery firmware\r\n"); delay(200); diff --git a/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin b/variants/arduino_nano_nora/extra/nora_recovery/nora_recovery.ino.bin index ea787558437a8113fc308a1266cbd04d192bdde4..2a0183eb58f14572115c979e8874d912a3ed6a84 100644 GIT binary patch delta 86821 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 delta 86576 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 +#include +#include + extern "C" { void initVariant() { // FIXME: fix issues with GPIO matrix not being soft reset properly @@ -30,164 +36,13 @@ extern "C" { } } -// defines an "Update" object accessed only by this translation unit -// (also, the object requires MD5Builder internally) -namespace { -// ignore '{anonymous}::MD5Builder::...() defined but not used' warnings -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-function" -#include "../../libraries/Update/src/Updater.cpp" -#include "../../cores/esp32/MD5Builder.cpp" -#pragma GCC diagnostic pop -} - -#include -#include -#include -#include - -#define ALT_COUNT 1 - -uint16_t load_dfu_ota_descriptor(uint8_t * dst, uint8_t * itf) -{ -#define DFU_ATTRS (DFU_ATTR_CAN_DOWNLOAD | DFU_ATTR_CAN_UPLOAD | DFU_ATTR_MANIFESTATION_TOLERANT) - - uint8_t str_index = tinyusb_add_string_descriptor("Arduino DFU"); - uint8_t descriptor[TUD_DFU_DESC_LEN(ALT_COUNT)] = { - // Interface number, string index, attributes, detach timeout, transfer size */ - TUD_DFU_DESCRIPTOR(*itf, ALT_COUNT, str_index, DFU_ATTRS, 100, CFG_TUD_DFU_XFER_BUFSIZE), - }; - *itf+=1; - memcpy(dst, descriptor, TUD_DFU_DESC_LEN(ALT_COUNT)); - return TUD_DFU_DESC_LEN(ALT_COUNT); -} - -extern "C" { - - -//--------------------------------------------------------------------+ -// DFU callbacks -// Note: alt is used as the partition number, in order to support multiple partitions like FLASH, EEPROM, etc. -//--------------------------------------------------------------------+ - -// Invoked right before tud_dfu_download_cb() (state=DFU_DNBUSY) or tud_dfu_manifest_cb() (state=DFU_MANIFEST) -// Application return timeout in milliseconds (bwPollTimeout) for the next download/manifest operation. -// During this period, USB host won't try to communicate with us. -uint32_t tud_dfu_get_timeout_cb(uint8_t alt, uint8_t state) -{ - if ( state == DFU_DNBUSY ) - { - // longest delay for Flash writing - return 10; - } - else if (state == DFU_MANIFEST) - { - // time for esp32_ota_set_boot_partition to check final image - return 100; - } - - return 0; -} - -// Invoked when received DFU_DNLOAD (wLength>0) following by DFU_GETSTATUS (state=DFU_DNBUSY) requests -// This callback could be returned before flashing op is complete (async). -// Once finished flashing, application must call tud_dfu_finish_flashing() -void tud_dfu_download_cb(uint8_t alt, uint16_t block_num, uint8_t const* data, uint16_t length) -{ - if (!Update.isRunning()) - { - // this is the first data block, start update if possible - if (!Update.begin()) - { - tud_dfu_finish_flashing(DFU_STATUS_ERR_TARGET); - return; - } - } - - // write a block of data to Flash - // XXX: Update API is needlessly non-const - size_t written = Update.write(const_cast(data), length); - tud_dfu_finish_flashing((written == length) ? DFU_STATUS_OK : DFU_STATUS_ERR_WRITE); -} - -// Invoked when download process is complete, received DFU_DNLOAD (wLength=0) following by DFU_GETSTATUS (state=Manifest) -// Application can do checksum, or actual flashing if buffered entire image previously. -// Once finished flashing, application must call tud_dfu_finish_flashing() -void tud_dfu_manifest_cb(uint8_t alt) -{ - (void) alt; - bool ok = Update.end(true); - - // flashing op for manifest is complete - tud_dfu_finish_flashing(ok? DFU_STATUS_OK : DFU_STATUS_ERR_VERIFY); -} - -// Invoked when received DFU_UPLOAD request -// Application must populate data with up to length bytes and -// Return the number of written bytes -uint16_t tud_dfu_upload_cb(uint8_t alt, uint16_t block_num, uint8_t* data, uint16_t length) -{ - (void) alt; - (void) block_num; - (void) data; - (void) length; - - // not implemented - return 0; -} - -// Invoked when the Host has terminated a download or upload transfer -void tud_dfu_abort_cb(uint8_t alt) -{ - (void) alt; - // ignore -} - -// Invoked when a DFU_DETACH request is received -void tud_dfu_detach_cb(void) -{ - // done, reboot - esp_restart(); -} - -} - -static const uint32_t magic_tokens[] = { - 0xf01681de, 0xbd729b29, 0xd359be7a, -}; - -#ifndef count_of -#define count_of(a) (sizeof(a)/sizeof((a)[0])) -#endif - -extern inline void boot_double_tap_mark(volatile uint32_t *magic_location) -{ - for (int i = 0; i < count_of(magic_tokens); i++) { - magic_location[i] = magic_tokens[i]; - } - esp_spiram_writeback_cache(); -} - -extern inline void boot_double_tap_invalidate(volatile uint32_t *magic_location) -{ - for (int i = 0; i < count_of(magic_tokens); i++) { - magic_location[i] = 0; - } - esp_spiram_writeback_cache(); -} - -extern inline bool boot_double_tap_match(volatile uint32_t *magic_location) -{ - for (int i = 0; i < count_of(magic_tokens); i++) { - if (magic_location[i] != magic_tokens[i]) - return false; - } - return true; -} +// global, accessible from recovery sketch +bool _recovery_marker_found; // double tap detected +bool _recovery_active; // running from factory partition #define DELAY_US 10000 #define FADESTEP 8 -static void boot_rgb_pulse_delay() +static void rgb_pulse_delay(void) { // Bv R^ G x int widths[4] = { 192, 64, 0, 0 }; @@ -221,49 +76,51 @@ static void boot_rgb_pulse_delay() pinMode(LED_BLUE, OUTPUT); } -// global, accessible from recovery sketch -bool _recovery_marker_found; -bool _recovery_active; - -static void boot_double_tap_check() +static void NANO_ESP32_enter_bootloader(void) { - // allocation here is deterministic and repeatable - // but make sure address is not clobbered by esp_spiram_test - uint32_t psram_addr = (uint32_t) heap_caps_malloc(32+4+sizeof(magic_tokens), MALLOC_CAP_SPIRAM); - psram_addr = (psram_addr + 0x1f) & ~0x1f; // align to next multiple of 32 bytes - psram_addr += 4; // avoid esp_spiram_test clobbering - volatile uint32_t *magic_location = (volatile uint32_t*) psram_addr; - _recovery_marker_found = boot_double_tap_match(magic_location); + if (!_recovery_active) { + // check for valid partition scheme + const esp_partition_t *ota_part = esp_ota_get_next_update_partition(NULL); + const esp_partition_t *fact_part = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, NULL); + if (ota_part && fact_part) { + // set tokens so the recovery FW will find them + double_tap_mark(); + // invalidate other OTA image + esp_partition_erase_range(ota_part, 0, 4096); + // activate factory partition + esp_ota_set_boot_partition(fact_part); + } + } - const esp_partition_t *part; - part = esp_ota_get_running_partition(); + esp_restart(); +} + +static void boot_double_tap_logic() +{ + const esp_partition_t *part = esp_ota_get_running_partition(); _recovery_active = (part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY); + double_tap_init(); + + _recovery_marker_found = double_tap_check_match(); if (_recovery_marker_found && !_recovery_active) { - // double tap detected in user application - // do not clear tokens: they will be read by recovery FW - // invalidate other OTA image - part = esp_ota_get_next_update_partition(NULL); - esp_partition_erase_range(part, 0, 4096); - // activate factory partition - part = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, NULL); - esp_ota_set_boot_partition(part); - esp_restart(); - } else { - // delay with mark set then proceed - // - for normal startup, to detect first double tap - // - in recovery mode, to ignore several short presses - boot_double_tap_mark(magic_location); - boot_rgb_pulse_delay(); - boot_double_tap_invalidate(magic_location); + // double tap detected in user application, reboot to factory + NANO_ESP32_enter_bootloader(); } + + // delay with mark set then proceed + // - for normal startup, to detect first double tap + // - in recovery mode, to ignore several short presses + double_tap_mark(); + rgb_pulse_delay(); + double_tap_invalidate(); } namespace { class DoubleTap { public: DoubleTap() { - boot_double_tap_check(); + boot_double_tap_logic(); } }; From a5a29174fbd4b807fcb89b8b6c7dc8a674cdb354 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 10 Jul 2023 16:49:23 +0200 Subject: [PATCH 10/12] platform: fix: use {compiler.sdk.path} for sdk path In preparation for the sdk -> tool transition --- platform.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform.txt b/platform.txt index ca0bcaa5c6f..b8d660962c5 100644 --- a/platform.txt +++ b/platform.txt @@ -175,8 +175,8 @@ recipe.hooks.prebuild.3.pattern.windows=cmd /c if not exist "{build.path}\partit # Check if custom bootloader exist: source > variant > build.boot recipe.hooks.prebuild.4.pattern_args=--chip {build.mcu} elf2image --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} -o -recipe.hooks.prebuild.4.pattern=bash -c "[ -f "{build.source.path}"/bootloader.bin ] && cp -f "{build.source.path}"/bootloader.bin "{build.path}"/{build.project_name}.bootloader.bin || ( [ -f "{build.variant.path}"/{build.custom_bootloader}.bin ] && cp "{build.variant.path}"/{build.custom_bootloader}.bin "{build.path}"/{build.project_name}.bootloader.bin || "{tools.esptool_py.path}"/{tools.esptool_py.cmd} {recipe.hooks.prebuild.4.pattern_args} "{build.path}"/{build.project_name}.bootloader.bin "{runtime.platform.path}"/tools/sdk/{build.mcu}/bin/bootloader_{build.boot}_{build.boot_freq}.elf )" -recipe.hooks.prebuild.4.pattern.linux=bash -c "[ -f "{build.source.path}"/bootloader.bin ] && cp -f "{build.source.path}"/bootloader.bin "{build.path}"/{build.project_name}.bootloader.bin || ( [ -f "{build.variant.path}"/{build.custom_bootloader}.bin ] && cp "{build.variant.path}"/{build.custom_bootloader}.bin "{build.path}"/{build.project_name}.bootloader.bin || python3 "{tools.esptool_py.path}"/{tools.esptool_py.cmd} {recipe.hooks.prebuild.4.pattern_args} "{build.path}"/{build.project_name}.bootloader.bin "{runtime.platform.path}"/tools/sdk/{build.mcu}/bin/bootloader_{build.boot}_{build.boot_freq}.elf )" +recipe.hooks.prebuild.4.pattern=bash -c "[ -f "{build.source.path}"/bootloader.bin ] && cp -f "{build.source.path}"/bootloader.bin "{build.path}"/{build.project_name}.bootloader.bin || ( [ -f "{build.variant.path}"/{build.custom_bootloader}.bin ] && cp "{build.variant.path}"/{build.custom_bootloader}.bin "{build.path}"/{build.project_name}.bootloader.bin || "{tools.esptool_py.path}"/{tools.esptool_py.cmd} {recipe.hooks.prebuild.4.pattern_args} "{build.path}"/{build.project_name}.bootloader.bin "{compiler.sdk.path}"/bin/bootloader_{build.boot}_{build.boot_freq}.elf )" +recipe.hooks.prebuild.4.pattern.linux=bash -c "[ -f "{build.source.path}"/bootloader.bin ] && cp -f "{build.source.path}"/bootloader.bin "{build.path}"/{build.project_name}.bootloader.bin || ( [ -f "{build.variant.path}"/{build.custom_bootloader}.bin ] && cp "{build.variant.path}"/{build.custom_bootloader}.bin "{build.path}"/{build.project_name}.bootloader.bin || python3 "{tools.esptool_py.path}"/{tools.esptool_py.cmd} {recipe.hooks.prebuild.4.pattern_args} "{build.path}"/{build.project_name}.bootloader.bin "{compiler.sdk.path}"/bin/bootloader_{build.boot}_{build.boot_freq}.elf )" recipe.hooks.prebuild.4.pattern.windows=cmd /c IF EXIST "{build.source.path}\bootloader.bin" ( COPY /y "{build.source.path}\bootloader.bin" "{build.path}\{build.project_name}.bootloader.bin" ) ELSE ( IF EXIST "{build.variant.path}\{build.custom_bootloader}.bin" ( COPY "{build.variant.path}\{build.custom_bootloader}.bin" "{build.path}\{build.project_name}.bootloader.bin" ) ELSE ( "{tools.esptool_py.path}/{tools.esptool_py.cmd}" {recipe.hooks.prebuild.4.pattern_args} "{build.path}\{build.project_name}.bootloader.bin" "{runtime.platform.path}\tools\sdk\{build.mcu}\bin\bootloader_{build.boot}_{build.boot_freq}.elf" ) ) # Check if custom build options exist in the sketch folder From 9c5185198d1af2a76e7e28a6cf70d2181f6623b2 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 10 Jul 2023 16:48:30 +0200 Subject: [PATCH 11/12] package_index: remove dfu-util from template The tool is already available in mainline package_index.json --- package/package_esp32_index.template.json | 60 ----------------------- 1 file changed, 60 deletions(-) diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index 34ba7c93ff4..553f3f4229f 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -691,66 +691,6 @@ ] } ] - }, - { - "name": "arduino", - "maintainer": "Arduino", - "websiteURL": "http://www.arduino.cc/", - "email": "packages@arduino.cc", - "help": { - "online": "http://www.arduino.cc/en/Reference/HomePage" - }, - "platforms": [], - "tools": [ - { - "name": "dfu-util", - "version": "0.11.0-arduino5", - "systems": [ - { - "host": "i386-apple-darwin", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-darwin_amd64.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-darwin_amd64.tar.gz", - "size": "72429", - "checksum": "SHA-256:9e576c6e44f54b1e921a43ea77bcc08ec99e0e4e0905f4b9acf9ab2c979f0a22" - }, - { - "host": "arm-linux-gnueabihf", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-linux_arm.tar.gz", - "size": "2512819", - "checksum": "SHA-256:acd4bd283fd408515279a44dd830499ad37b0767e8f2fde5c27e878ded909dc3" - }, - { - "host": "aarch64-linux-gnu", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm64.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-linux_arm64.tar.gz", - "size": "2607592", - "checksum": "SHA-256:b3f46a65da0c2fed2449dc5a3351c3c74953a868aa7f8d99ba2bb8c418344fe9" - }, - { - "host": "x86_64-linux-gnu", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_amd64.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-linux_amd64.tar.gz", - "size": "2283425", - "checksum": "SHA-256:96c64c278561af806b585c123c85748926ad02b1aedc07e5578ca9bee2be0d2a" - }, - { - "host": "i686-linux-gnu", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_386.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-linux_386.tar.gz", - "size": "2524406", - "checksum": "SHA-256:9a707692261e5710ed79a6d8a4031ffd0bfe1e585216569934346e9b2d68d0c2" - }, - { - "host": "i686-mingw32", - "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-windows_386.tar.gz", - "archiveFileName": "dfu-util-0.11-arduino5-windows_386.tar.gz", - "size": "571340", - "checksum": "SHA-256:6451e16bf77600fe2436c8708ab4b75077c49997cf8bedf03221d9d6726bb641" - } - ] - } - ] } ] } From 540fb9af3bed1e446288448055664cf03875fadd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 10 Jul 2023 16:57:05 +0200 Subject: [PATCH 12/12] on_release: allow single board packages --- .github/scripts/on-release.sh | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.github/scripts/on-release.sh b/.github/scripts/on-release.sh index 0b0c48fc82c..38f58e0b4be 100755 --- a/.github/scripts/on-release.sh +++ b/.github/scripts/on-release.sh @@ -36,6 +36,12 @@ echo "Event: $GITHUB_EVENT_NAME, Repo: $GITHUB_REPOSITORY, Path: $GITHUB_WORKSPA echo "Action: $action, Branch: $RELEASE_BRANCH, ID: $RELEASE_ID" echo "Tag: $RELEASE_TAG, Draft: $draft, Pre-Release: $RELEASE_PRE" +# Try extracting something like a JSON with a "boards" array/element and "vendor" fields +BOARDS=`echo $RELEASE_BODY | grep -Pzo '(?s){.*}' | jq -r '.boards[]? // .boards? // empty' | xargs echo -n 2>/dev/null` +VENDOR=`echo $RELEASE_BODY | grep -Pzo '(?s){.*}' | jq -r '.vendor? // empty' | xargs echo -n 2>/dev/null` +if ! [ -z "${BOARDS}" ]; then echo "Releasing board(s): $BOARDS" ; fi +if ! [ -z "${VENDOR}" ]; then echo "Setting packager: $VENDOR" ; fi + function get_file_size(){ local file="$1" if [[ "$OSTYPE" == "darwin"* ]]; then @@ -171,12 +177,26 @@ mkdir -p "$PKG_DIR/tools" # Copy all core files to the package folder echo "Copying files for packaging ..." -cp -f "$GITHUB_WORKSPACE/boards.txt" "$PKG_DIR/" +if [ -z "${BOARDS}" ]; then + # Copy all variants + cp -f "$GITHUB_WORKSPACE/boards.txt" "$PKG_DIR/" + cp -Rf "$GITHUB_WORKSPACE/variants" "$PKG_DIR/" +else + # Remove all entries not starting with any board code or "menu." from boards.txt + cat "$GITHUB_WORKSPACE/boards.txt" | grep "^menu\." > "$PKG_DIR/boards.txt" + for board in ${BOARDS} ; do + cat "$GITHUB_WORKSPACE/boards.txt" | grep "^${board}\." >> "$PKG_DIR/boards.txt" + done + # Copy only relevant variant files + mkdir "$PKG_DIR/variants/" + for variant in `cat ${PKG_DIR}/boards.txt | grep "\.variant=" | cut -d= -f2` ; do + cp -Rf "$GITHUB_WORKSPACE/variants/${variant}" "$PKG_DIR/variants/" + done +fi cp -f "$GITHUB_WORKSPACE/package.json" "$PKG_DIR/" cp -f "$GITHUB_WORKSPACE/programmers.txt" "$PKG_DIR/" cp -Rf "$GITHUB_WORKSPACE/cores" "$PKG_DIR/" cp -Rf "$GITHUB_WORKSPACE/libraries" "$PKG_DIR/" -cp -Rf "$GITHUB_WORKSPACE/variants" "$PKG_DIR/" cp -f "$GITHUB_WORKSPACE/tools/espota.exe" "$PKG_DIR/tools/" cp -f "$GITHUB_WORKSPACE/tools/espota.py" "$PKG_DIR/tools/" cp -f "$GITHUB_WORKSPACE/tools/gen_esp32part.py" "$PKG_DIR/tools/" @@ -209,6 +229,11 @@ sed 's/debug.server.openocd.scripts_dir={runtime.platform.path}\/tools\/openocd- sed 's/debug.server.openocd.scripts_dir.windows={runtime.platform.path}\\tools\\openocd-esp32\\share\\openocd\\scripts\\/debug.server.openocd.scripts_dir.windows=\{runtime.tools.openocd-esp32.path\}\\share\\openocd\\scripts\\/g' \ > "$PKG_DIR/platform.txt" +if ! [ -z ${VENDOR} ]; then + # Append vendor name to platform.txt to create a separate section + sed -i "/^name=.*/s/$/ ($VENDOR)/" "$PKG_DIR/platform.txt" +fi + # Add header with version information echo "Generating core_version.h ..." ver_define=`echo $RELEASE_TAG | tr "[:lower:].\055" "[:upper:]_"`