Releases: espressif/openocd-esp32
Releases · espressif/openocd-esp32
v0.11.0-esp32-20220411
2022/04/11 Release, based on OpenOCD v0.11.0
Features:
- Synchronized with upstream.
- esp/ci: Added build for MacOS ARM64.
- esp-config: Added Espressif USB bridge board configs.
- esp/flash: Added octal flash support.
- esp/flash: Added MXIC 32MB flash chip support. Solves problem mention in #218.
- esp/freertos: Print FreeRTOS kernel version.
- esp/freertos: Read TCB_t offsets from ESP-IDF symbol table. This adds support for different TCB block layouts which can be caused by different FreeRTOS configurations.
- esp/semihosting: Refactored code and minimized arch-specific changes in common semihosting implementation.
- semihosting: Added 'arm semihosting_basedir' command. See description here
Bug fixes:
- xtensa: Call 'keep_alive during' register/memory restore to avoid gdb warning.
- esp32s3: Added automatic target reset upon GDB connection if memory protection is enabled (#190, #183, #176 (comment))
- esp/xtensa: Added support for proper Xtensa semihosting break instruction. According to Xtensa spec 'break 1,14' should be used for semihosting calls. This will be fixed in IDF soon too.
- target/esp: Fixed ESP32-S2 & S3 IROM region boundaries. It could lead to ROM debugging problems.
- esp_riscv: Fix SBA access alignment for size < sba_access_size.
v0.11.0-esp32-20211220
2021/12/20 Release, based on OpenOCD v0.11.0
Features:
- Merge with upstream. Bump version to v0.11.0. This also closes a couple of issues: #198, #199, and #196
- esp/riscv: Add flash breakpoints support for Espresif RISCV chips. Currently, only ESP32-C3 is supported.
- jtag/esp_usb: Add Espressif USB bridge support
Bug fixes:
- esp/flash: Add check for a maximum number of flash mappings. Prevent flash driver crash when flasher stub returns garbage upon flash mappings request.
- esp32s3/esp_usb_jtag: Dummy jtag call before running an algorithm. It works around the problem on ESP32-S3 when USB JTAG device gets stuck after running flasher stub algorithm. That problem leads to a flash probing problem upon GDB connection or any other flash access command.
- jtag/esp_usb: Check if USB device handle is valid before close
- esp32s3: Add missed
irom_mask_low mem
region to the config. - rtos: Fix heap usage after free during
rtos_destroy
- esp_apptrace: Restart idle timeout after target reconnection. That could lead to data timeout error after target reset during tracing.
v0.10.0-esp32-20211111
2021/11/11 Release, based on OpenOCD v0.10.0
Features:
- flash/esp32s3: Added ESP32-S3 flash support (#178 (comment)). Access to chip's flash is supported including setting breakpoints there.
- esp/riscv: Added coverage data collection support for Espressif RISCV chips. Currently this functionality is verified for ESP32-C3 only.
- esp_usb_jtag: Added ability to filter out USB device by product serial. Now it is possible to specify which USB device should be used by command
espusbjtag serial <serial_num>
.
Bug fixes:
- esp32s2-c3: Added automatic target reset upon GDB connection if memory protection is enabled (#190, #183, #176 (comment)).
- esp32c3: Avoided missing chip reset due to problems with
dmi_scan
. This led to the problem when SW breakpoints and syscalls do not work. - esp32c3: Enables ebreaks in 'FLASH_BOOT' mode only. This led to the problem with flashing
esp32c3
over UART with connected OpenOCD. - flash/esp: Added detection of unexpected target algorithm exit during a flash read/write. Now the error message is printed if flash stub invocation ended up accidentally.
- flash/esp: Fixed cache flush in flasher stub for esp32s2/esp32c3. This problem led to partial data writes to flash.
- esp_usb_jtag: Added USB device re-enumeration in case of data transfer problem (#176, #178). This problem led to built-in USB-JTAG getting stuck after HW reset.
- esp_usb_jtag: Made tx/rx routines a bit more responsive and reliable. Added several attempts to tx/rx data in of failure.
- esp32s2-s3: Added power config register reset to prevent getting stuck in soft reset. This problem led to application getting stuck after resetting the target with
reset run
. - esp32c3: Fixed WDT reset issue while waiting for resume after soft reset. This problem led to application getting stuck after resetting the target with
reset run
. - esp_remote: Fixed runtest function. This problem was causing error during ESP32-C3 examination.
- gdb_server: Fixed registers access error reporting. Now it is controlled by
gdb_report_register_access_error
command. This problem led to RISCV GDB register access reporting and when GDB register packet is received when target is running. - algorithm: Fixed cleaning up algorithm data upon failure.
- algorithm: Fixed '.data' and '.bss' section size alignment to avoid possible data corruption when running algorithms.
v0.10.0-esp32-20210902
2021/09/02 Release, based on OpenOCD v0.10.0
Features:
- esp_remote: New command to set JTAG clock freqency
Bug fixes:
- esp_xtensa_smp: Fixes problem when APP CPU is left unexamined after target is reset externally by esptool.py (#160)
- esp_xtensa_smp: Fixes TRAX tracing start on one core only
- xtensa: Fixes memory leak in TRAX tracing dump command handler
- algorithm: Skip loading sections with zero size. This led to the algoritm run failure when algorithm image has zero-sized sections.
v0.10.0-esp32-20210721
2021/07/21 Release, based on OpenOCD v0.10.0
Features:
- esp32s3: Added base support for the latest ESP32-S3 chip revision. It includes base debugging support w/o flash support and other features.
- tcl/esp32s3: Added
esp_get_mac
support for ESP32-S3. - esp32c3: Added separate target for ESP32-C3 chip. Now ESP32-C3 has its own target implemented basing on RISCV one. Thsi allows to keep ESP32-C3 specific features in separate module and minimize modification to base RISCV target.
- esp/apptrace/esp32c3: Added application level tracing support for ESP32-C3.
- algorithm/esp32c3: Added support for running algorithms on ESP32-C3.
- flash/esp32c3: Added flash support for ESP32-C3 (#165).
- riscv: Added command to mask IRQ during stepping. Implemented ARM-like command to control how IRQs are controlled during stepping. Currently to modes are supported:
off
andsteponly
. - riscv: Implemented batch JTAG ops for memory read. Combined JTAG operations into batches to speed up memory reads.
- riscv: Emulated 8-/16-bit memory access via SBA using 32-bit read/write. SBA mode allows to access memory on running target. When 8-/16-bit memory accesses via SBA are not supported they are emulated via 32-bit ones if it is possible.
- loaders/esp: Added encrypted flash support for esp32, esp32s2 and esp32c3.
- loaders/esp: Added command to enable/disable CPU clock boosting when flasher stub is running on target. This allows to increase flash programing speed significantly.
- loaders/esp: Enable by default CPU clock boosting when programming via
program_esp
. Clock can be restored after flashing whenrestore_clock
option is specified. - loaders/esp: Added command
esp verify_bank_hash
to verify flash uploads using sha256 hash. - esp: Added Espressif USB JTAG/serial debug unit and USB Bridge udev rules.
- esp: Added release binaries signing for MacOS.
Bug fixes:
- riscv: Disabled watchpoints on stepping to avoid watchpoint re-triggering.
- tcl/esp: Added check for flash support before running
program_esp
to provide clearer error reasoning for users (#165 (comment)). - freertos: Made threads list updating tolerant to list reading errors.
- target/riscv: Added
get_gdb_arch
target API implementation to avoid GDB errors when riscv arch is not exactly specifed (#144 (comment)). - esp32c3: Call rtos
post_reset_cleanup
method after reset to clear RTOS data (#144). - riscv: Avoided increasing
dmi_busy_delay
due to garbage data received bydmi_scan
during chip reset. Thsi allows to avoid unnecessary and abnormal increasin ofdmi_busy_delay
leading to quite slow JTAG communication after several target resets. - esp/apptrace: Added target connection status check while polling for apptrace data (#149). This allows to avoid apptrace data losing due to target reset.
- target/{esp32s2,esp32s3,esp32c3}: Disabled SWD on reset or halt (#153).
- jtag_esp_remote: Added several fixes of the ESP Remote protocol JTAG driver.
- esp_usb_jtag: Fixed stack overflow. This prevents OpenOCD crashing or stucking in infinite loop when started w/o connected device.
- esp: Fixed files paths typo in boards description file.
v0.10.0-esp32-20210401
2020/04/01 Release, based on OpenOCD v0.10.0
Bug fixes:
- Add missing zlib DLL into Windows release package (#151)
v0.10.0-esp32-20210329
2021/03/29 Release, based on OpenOCD v0.10.0
Features
- flash/esp_xtensa: Added compression support for write operations. Compression can be enabled by adding
compress
argument toprogram_esp
command. Compression is not enabled by default, yet. - rtos/FreeRTOS: Changed task list update algorithm basing on uxTaskNumber. This reduces the amount of data transferred over JTAG in some cases, and makes stepping through the code faster.
- target/esp32c3: Added SoC reset support.
reset halt
command now resets the digital peripherals, in addition to the CPU, same as it does on esp32 and esp32s2. - target/esp32c3: Reduced timeouts to reasonable values
- board/esp32c3-ftdi: set lower JTAG clock used by default. Since there is no development board with FT2232H and ESP32-C3 yet, they are most likely connected by jumper cables, so a lower frequency should be used.
- xtensa: Made 'xtensa_smpbreak_get' returning configured value
Bug fixes:
- esp32s3: Disabled flash support by default, since it's not implemented yet. It will be re-enabled once the feature is implemented.
- esp/semihost: Added callback to disable WDTs upon syscall.
- riscv: Maintain target halted state across reset
- riscv: Fixed RTOS checks in reset procedure
- riscv: Fixed semihosting code to adjust the PC to the next instruction also for GDB fileio
- esp/gcov: Ensured that esp gcov dump is run on examined target
- esp/gcov: Fixed acknowledgement of the block with command w/o response data
- esp/gcov: Halt target before on-the-fly gcov dump
- semihosting: Fixed file name length parameter for GDB File IO to match GDB docs.
- xtensa: Marked target as unexamined when 'powered' bit is reset during several polling periods.
- In this release we have stared running the test suite with sanitizers (AddressSanitizer, UndefinedBehaviorSanitizer) enabled, and fixed the following issues:
- target/esp_xtensa_apptrace: Fixed 'unaligned buffer' issue
- esp32s2: Fixed left shift runtime errors found by sanitizers
- gdb_server: Fixed AdressSanitizer issue caused by missing null character
- xtensa: Fixed sanitizer warnings when shifting integer constants
- xtensa: Fixed buffer overflow due to incorrect size allocated for wide user registers
- xtensa: Fixed buffer overflow when reading trace data
v0.10.0-esp32-20201202
2020/12/02 Release, based on OpenOCD v0.10.0
Features
- rtos: NuttX RTOS support on ESP32
Bug fixes:
- libftdi: support libftdi 1.5 (upstream fix)
- ci: fix "-dirty" suffix in the version reported by v0.10.0-esp32-20201125 release.
v0.10.0-esp32-20201125
2020/11/25 Release, based on OpenOCD v0.10.0
Features
- esp32s3: Added base support for ESP32-S3.
- esp32c3: Added base support for ESP32-C3.
- esp/jtag: Added
esp_remote
JTAG interface over USB and TCP. - esp/jtag: Added
esp_usb_jtag
JTAG interace for embedded USB-to-JTAG functionality. - esp/xtensa: Refactored to make use of native SMP support in OpenOCD.
- esp: Added
program_esp_bins
command to flash binaries specified inflasher_args.json
file produced by ESP-IDF build system. - esp: Added
esp_get_mac [format]
command to obtain the factory MAC address. - helper: Added Espressif JEDEC code
- esp/smp: Added generic ESP Xtensa SMP functionality.
- jimtcl: Upgraded to 0.79 and enabled JSON extension.
- esp32s2: Renamed
esp32_s2
target toesp32s2
(backwards compatible) - xtensa: Implemented memory access range check.
Bug fixes:
- esp32s2: Fixed issue with software reset when memory protection is enabled in the app.
- esp32: Fixed
program_esp32
TCL function to correctly pass arguments toprogram_esp
(#122, thanks @pridgeway-rsc). - apptrace: Fixed running command on an unexamined core.
- libftdi: Updated deprecated function calls.
- semihosting: Fixed a bug with an incorrect return value for the custom lseek implementation.
- semihosting: Fixed handling of invalid syscall arguments.
- esp32: Fixed usage of unintialized GDB service.
- freertos: Fixed non-general registers access from GDB.
- freertos: Fixed GDB reg list usage in
get_thread_reg_list
. - esp32xx: Fixed ESP32 and ESP32-S2 Xtensa config.
- apptrace: Fixed connection to already running target.
v0.10.0-esp32-20200709
2020/07/09 Release, based on OpenOCD v0.10.0
Bug fixes
- esp: Fix chips memory layout
- esp/apptrace: Fix apptrace auto-stop
Note: this is a bug fix update for the previous release, v0.10.0-esp32-20200526. It does not include latest changes present in the master branch, related to the native SMP support.