Skip to content

Latest commit

 

History

History
651 lines (510 loc) · 16.2 KB

File metadata and controls

651 lines (510 loc) · 16.2 KB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[2.0.1]

Fixed

  • @diggit: Fixed typo in exception name raised when JLINKARM_SelectUSB fails.
  • @lweyrich1: Fixed Windows init test to be independent of runner bitness.

[2.0.0]

Changed

  • Python 2 is no longer supported.
  • @concatime: File paths are now encoded using os.fsencode() to support UTF-8 file paths.

[1.7.0]

Added

  • @hkpeprah: Added JTAG APIs:
    • jtag_store_instruction - To send an instruction to the JTAG device.
    • jtag_store_data - To send data to the JTAG device (TDO).
    • jtag_get_device_info - To get information about a JTAG device on the scan chain.
    • jtag_read / jtag_read{8,16,32} - To read data from a JTAG device (from the input buffer / TDI).
    • jtag_sync_bits / jtag_sync_bytes - To force a flush of the output buffer.

Changed

  • @hkpeprah: CPU is not un-conditionally halted when trying to flash the target.
  • @mtnpke: Detailed log handler logs now strip extra trailing whitespace.

Fixed

  • @hkpeprah: Fixed a bug where .flash() raised a JLinkEraseException, now raises a JLinkFlashException() as expected.
  • @omrisarig13: Fixed broken links in README.md.

[1.6.0]

Added

  • @tianxiaoMCU: Added APIs to write to the peripheral register of the connected target:
    • peripheral_write8()
    • peripheral_write16()
    • peripheral_write32()
    • peripheral_write64()

[1.5.1]

Fixed

  • @karl-rainlabs: Fixed incorrect decorator around JTAG APIs. Previously, the APIs required a connection, but now can be used prior to connection.

[1.5.0]

Changed

  • @bbrown1867: Temporary library copying is now determined dynamically based on the version of the SDK in use. Previously, the default behaviour would always copy the library, which would fail if custom devices and functions were in use via XML files in the same directory as the SDK.

[1.4.0]

Added

  • @hkpeprah: Added Power Trace APIs.

[1.3.0]

Added

  • @gtowers-dukosi: Added API method set_script_file() to specify a Script File to be loaded.

[1.2.1]

Fixed

  • @FletcherD: Fixed a bug in load_library() on Linux where a 32-bit library was being incorrectly loaded on ARM64-based Linux machines.

Changed

  • @frogamic: Unit tests are now compatible with Python 3.12.

[1.2.0]

Changed

  • @cpattenden-sq: Fixed bug in flash() where return value was being checked against a void function; would lead to exceptions being raised unexpectedly.

[1.1.0]

Added

  • @chanqueo: Added use_tmpcpy field to constructor for JLink and Library instances to workaround temporary files not been cleaned up; a future patch will change the default behaviour based on the version of the SDK. By default, temporary files are used for the SDK binary.

Changed

  • @curtishx: Changed decorator on set_reset_strategy() from @connection_required to @open_required.

Removed

  • @avi-jois: Removed dependency on future.

[1.0.0]

Changed

  • @boraozgen: Fixed installation error that prevented setup.py install when six was not installed.
  • @denravonska: Changed .flash() to no longer erase chip on flash; users will now need to ensure they call .erase() prior to flashing a non-erased region of flash.

[0.14.3]

Changed

  • @hkpeprah: Add tests to source distribution.

[0.14.2]

Changed

  • @dottspina: Revert JLINK_SDK_NAME change.

[0.14.1]

Added

  • @hkpeprah: Added tests to the published sdist.

[0.14.0]

Changed

  • @dottspina: Changed behaviour of load_library() on Linux-based platforms to resolve sonames; fixes an issue where find_library() would fail, and the underlying platform-specific methods would not return the path to the soname file.

[0.13.0]

Added

  • @hkpeprah: Added tests to sdist distribution.
  • @hkpeprah: Made pylink-swv available in package.

Changed

  • @hkpeprah: Fixed issue where device connect would happen twice as reported by @chanqueo in ISSUE-113.
  • @hkpeprah: Renamed swv -> pylink-swv.

[0.12.0]

Changed

  • @kylemanna: Fixed error where argparse would fail on Python3 when no arguments were passed to the CLI.
  • @hkpeprah: Publish both sdist and bdist_wheel.
  • @mhummels: Switch pin functions from connection_required() -> open_required() to support being called without connection to target.

[0.11.1]

Added

  • @johannesneyer: Add RTT example as command-line script 'pylink-rtt'.

[0.10.1]

Changed

  • @jsiverskog: Updated default logging code to pass errors='repalce' when decoding the string from the library; fixes UnicodeErrors causing an exit.

[0.10.0]

Changed

  • @kettenbach-it: Changed disable_dialog_boxes() to disable flash info windows when called (programming pop-ups). Updated enable_dialog_boxes() to show flash info windows when called.

[0.9.0]

Added

  • @sauci: Added method, set_log_file, to set logging file for logs; redirects logs from STDOUT / STDERR to log file.

[0.8.2]

Changed

  • @Gargy007: Changed decorator for toggling the reset pin, set_reset_pin_high and set_reset_pin_low to open_required() instead of connection_required() to allow toggling the reset pin when the debugger is attached, but the target isn't connected.

[0.8.1]

Changed

  • @RisinT96: Changed behaviour for getting the target device during connect() to use get_device_index() instead of iterating manually through each supported device; reduces speed of connect() from several seconds to sub one second.

[0.8.0]

Changed

  • @Gargy007: Changed decorator on coresight methods to new method coresight_configuration_required() instead of connection_required() to enable use of CoreSight methods without requiring a connection.

[0.7.0]

Changed

  • @cy18: Reduced memory / CPU usage of rtt_read() by slicing buffer before converting to list in return value of rtt_read().
  • @twam: Changed maximum JTAG speed from 12MHz to 50MHz.
  • @thetic: Fixed issue where tempfile.tempdir could be None when creating a path for the library copy; switched to using tempfile.gettempdir() which populates the cached variable if unset.

[0.6.1]

Changed

  • @Moral-ecomo: Fixed issue where unsecure hook was unbounded due to not being bound to the class instance.

[0.6.0]

Added

  • @hkpeprah: Added 'rtt_get_buf_descriptor()', and 'rtt_get_status()' with associated structures for describing an RTT buffer, and the status of an RTT control block.

Changed

  • @hkpeprah: Changed 'rtt_start()' to take optional block address to specify where RTT block starts.

[0.5.0]

Changed

  • @rjshade: Changed .open() and .close() to operate using a reference count; DLL is now only closed if open reference count is zero.

[0.4.0]

Added

  • @sauci: Added CP15 API: cp15_present, cp15_register_read, and cp15_register_write.

[0.3.0]

Changed

  • @charliebruce: Fix for 'VTarget' in hardware status; incorrectly assigned to 32-bit instead of 16-bit integer.
  • @charliebruce: Fix for documentation for 'VTarget' in hardware status; incorrectly displayed mA instead of mV.
  • @sauci: Changed register methods ('register_read()', 'register_read_multiple()', 'register_write()', and 'register_write_multiple()') to alternatively take regsiter names instead of just register indices.

[0.2.0]

Added

  • @bojanpotocnik: Implemented context manager to enable automatic debugger connection opening when context is entered, and connection closed when exited.

Changed

  • @bojanpotocnik: Implemented finalizer method '_finalize()' to tear down connection on destructor.

[0.1.3]

Changed

  • @michalfita: Fixed handling for DLL in 64-bit Python instances: on 64-bit Windows platforms running 64-bit Python, the 32-bit DLL was always being loaded; now the 64-bit DLL will be loaded instead.

[0.1.2]

Changed

  • @wallacbe: Removed sleep after connect; no-op issued to make sure the target is ready for debugging.

[0.1.1]

Changed

  • @ford: async decorator renamed to async_decorator to support new linting rules in Python3.

Added

  • @ford: Added missing six requirement to setup.py and requirements.txt.
  • @Sauci: Added open_tunnel() method to connect to a J-Link over the remote server.

[0.1.0]

Changed

  • @charlesnicholson: flash commands no longer default to powering on the target.

[0.0.10]

Changed

  • @MarekNovakNXP: Fixed casting of swd_read32 to properly handle reading 32-bit register when MSB is set.
  • @sstallion: Fixed casting of swd_read8, and swd_read16 to properly handle reading 32-bit register when MSB is set.

[0.0.9]

Changed

  • @charlesnicholson: fixed non-deterministic crash on Linux when unloading DLL.

[0.0.8]

Changed

  • @eldonrivers: added support for 'nxp' name for kinetis/freescale chips

[0.0.7]

Added

  • @charlesnicholson: Added support for for RTT.
    • rtt_stop
    • rtt_read
    • rtt_write
    • rtt_get_num_up_buffers
    • rtt_get_num_down_buffers
    • rtt_control

[0.0.6]

Changed

  • Cleaned up documentation.
  • Linted code.

[0.0.5]

Changed

  • Fixed os.path.isfile typo.

[0.0.4]

Changed

  • When loading the SEGGER lib on Linux, os.walk is used to descend recursively through the directory tree.

[0.0.3]

Added

  • API Functions
    • set_trace_source
    • set_etb_trace
    • set_etm_trace
  • ETM
    • etm_supported
    • etm_register_read
    • etm_register_write
  • Simple Trace API
    • strace_configure
    • strace_start
    • strace_stop
    • strace_read
    • strace_code_fetch_event
    • strace_data_access_event
    • strace_data_load_event
    • strace_data_store_event
    • strace_clear
    • strace_clear_all
    • strace_set_buffer_size
    • Example application for simple trace API under examples/strace.py.
  • Trace API
    • trace_start
    • trace_stop
    • trace_flush
    • trace_sample_count
    • trace_buffer_size
    • trace_set_buffer_size
    • trace_min_buffer_size
    • trace_max_buffer_size
    • trace_set_format
    • trace_format
    • trace_region_count
    • trace_region
    • trace_read

Changed

  • Serial number no longer required command-line argument for command-line tool; if not specified, selects the first emulator.
  • Fixed bug in Linux library load where 32-bit DLL was loaded on 64-bit platform.

[0.0.2]

Added

  • Support added for writing to flash outside of flashing firmware:
    • flash_write
    • flash_write8
    • flash_write16
    • flash_write32
  • Added unlock method for unlocking a device connected to a J-Link instance.

Changed

  • Fixed logic for determine if J-Link is halted; SDK documentation implies that return value for JLINKARM_IsHalted() is <= 1, but example on Page 144 suggests otherwise; .halted() changed to reflect examples suggestion.
  • Fixed logic in .exec_command(). Since the J-Link SDK does not conform to the standard of returning zero only in cases of error, JLINKARM_ExecCommand may succeed, but still return a non-zero value. Checking the error string is the best way to handle this, and the return value should be ignored.
  • Fixed logic in handling the return value of JLINKARM_Connect(), JLINKARM_Connect() can return with a positive value which still indicates success.

[0.0.1d]

Changed

  • open() with serial_no=None and ip_addr=None will connect to the first USB device. This permits operation without having to define serial numbers for workflows using one emulator.

[0.0.1c]

Changed

  • reset() with halt=False would previously cause a mass erase of the device as it used JLINKARM_ResetNoHalt(); now uses JLINKARM_Reset() followed by a call to JLINKARM_Go(), and does not trigger a mass erase if the device is secure.

[0.0.1b]

Added

  • sync_firmware

Changed

  • Added a minimum version decorator to wrap functions that require at least a certain version of the J-Link software in order to be used.
  • Removed 'open_required()' for 'exec_command()', 'disable_dialog_boxes()', and 'enable_dialog_boxes()'.
  • Added a sample script for automated updates on Windows platforms.

[0.0.1a]

Added

  • General API Functions (88%):
    • opened
    • connected
    • target_connected
    • num_connected_emulators
    • connected_emulators
    • num_supported_devices
    • supported_devices
    • open
    • close
    • exec_command
    • connect
    • error
    • clear_error
    • compile_date
    • version
    • hardware_info
    • hardware_status
    • hardware_version
    • firmware_version
    • capabilities
    • extended_capabilities
    • extended_capability
    • features
    • product_name
    • serial_number
    • oem
    • index
    • speed
    • set_speed
    • set_max_speed
    • speed_info
    • tif
    • supported_tifs
    • set_tif
    • gpio_properties
    • gpio_get
    • gpio_set
    • comm_supported
    • cpu_capability
    • power_on
    • power_off
    • set_reset_strategy
    • set_reset_pin_high
    • set_reset_pin_low
    • set_tck_pin_high
    • set_tck_pin_low
    • set_tdi_pin_high
    • set_tdi_pin_low
    • set_tms_pin_high
    • set_tms_pin_low
    • set_trst_pin_high
    • set_trst_pin_low
    • erase
    • flash
    • flash_file
    • reset
    • reset_tap
    • restart
    • halt
    • halted
    • core_id
    • core_cpu
    • core_name
    • ir_len
    • scan_len
    • scan_chain_len
    • device_family
    • cpu_speed
    • cpu_halt_reasons
    • enable_reset_pulls_reset
    • disable_reset_pulls_reset
    • enable_reset_pulls_trst
    • disable_reset_pulls_trst
    • enable_reset_inits_registers
    • disable_reset_inits_registers
    • set_little_endian
    • set_big_endian
    • set_vector_catch
    • step
    • enable_soft_breakpoints
    • disable_soft_breakpoints
    • num_active_breakpoints
    • num_available_breakpoints
    • breakpoint_info
    • breakpoint_find
    • breakpoint_set
    • software_breakpoint_set
    • hardware_breakpoint_set
    • breakpoint_clear
    • breakpoint_clear_all
    • num_active_watchpoints
    • num_available_watchpoints
    • watchpoint_info
    • watchpoint_set
    • watchpoint_clear
    • watchpoint_clear_all
  • Automation Utilities:
    • enable_dialog_boxes
    • disable_dialog_boxes
  • JTAG API Functions:
    • jtag_configure
    • jtag_create_clock
    • jtag_flush
    • jtag_send
  • License API:
    • licenses
    • custom_license
    • add_license
    • erase_licenses
  • Firmware API:
    • invalidate_firmware
    • update_firmware
    • firmware_newer
    • firmware_outdated
  • Logging Handlers:
    • log_handler
    • detailed_log_handler
    • error_handler
    • warning_handler
  • Coresight API:
    • coresight_configure
    • coresight_read
    • coresight_write
  • SWD API:
    • swd_read8
    • swd_read16
    • swd_read32
    • swd_write
    • swd_write8
    • swd_write16
    • swd_write32
    • swd_sync
  • SWO API:
    • swo_start
    • swo_stop
    • swo_enabled
    • swo_enable
    • swo_disable
    • swo_flush
    • swo_speed_info
    • swo_num_bytes
    • swo_set_host_buffer_size
    • swo_set_emu_buffer_size
    • swo_supported_speeds
    • swo_read
    • swo_read_stimulus
  • Memory API Functions:
    • memory_read
    • memory_write
    • memory_read8
    • memory_write8
    • memory_read16
    • memory_write16
    • memory_read32
    • memory_write32
    • memory_read64
    • memory_write64
    • num_memory_zones
    • memory_zones
    • code_memory_read
  • Register API Functions:
    • register_read
    • register_write
    • register_read_multiple
    • register_write_multiple
    • register_list
    • register_name
  • ICE Register API Functions:
    • ice_register_read
    • ice_register_write
  • Added PyLink command-line tool:
    • Flash command added.
    • Unlock command added.
    • License command added.
    • Erase command added.
  • Added support for accessing the multiple J-Links from the same process.
  • Added device lockfiles to prevent multiple accesses to the same J-Link when a thread is already accessing that J-Link.
  • Example "Serial Wire Viewer (SWV)" added.
  • Example "Core Information Query (CIQ)" added.
  • Example "Target Endianness (TE)" added.