Commit Graph

1567 Commits

Author SHA1 Message Date
Uwe Bonnes 6454d0bc96 bmp_libusb: Invalidate manufacturer and product in case libusb_get_string_descriptor_ascii fails.
Prevent more false detections
2021-05-20 12:06:56 +02:00
Uwe Bonnes 7f1a560288 stm32/usbuart: Clear USART_ICR if provided.
Otherwise endless interrupts happened.
2021-05-20 12:06:56 +02:00
Uwe Bonnes 90534b3cf6 stm32: portability enhancements
Needed for e.g. stlinkv3
2021-05-20 12:06:56 +02:00
Uwe Bonnes 87acd99fe4 cortexm: For Cortex-M0+ devices, probe also for lpc11 to detect LPC80 #884 2021-05-18 12:24:00 +02:00
Uwe Bonnes cb4cff2c71 hosted/ftdi: Compare only for length of the string given in the header
Devices may have added version like "Tigard V1.1" vs "Tigard"
2021-05-18 12:24:00 +02:00
Uwe Bonnes c3fd198f0d bmp_libusb: Reject non-BMP devices with VID 1d50. 2021-05-18 12:24:00 +02:00
Uwe Bonnes 36ad6efc6f cmsis_dap.h: Fix wrong leftover argument. 2021-05-16 17:17:33 +02:00
Uwe Bonnes f0dd8c9517 cl_utils: List -l option in the help. 2021-05-16 17:17:33 +02:00
Uwe Bonnes 517d5b5b31 rp: Show spinner only when called from monitor command. 2021-05-16 11:26:14 +02:00
James Turton 0ab10fee0b rp: Increase timeout for flash_range_program
If the RP2040 is using the ring oscilator (ROSC) rather than the crystal
oscilator (XOSC) then flashing program will take much longer. As the XOSC is not
enabled at boot we should not assume it will be enabled before the debugger is
connected (or indeed at all), thus should use the longer timeout during load
commands.
2021-05-16 11:26:14 +02:00
James Turton ff30259354 rp: Add more debug logging during flash 2021-05-16 11:26:14 +02:00
James Turton e453740aca rp: Increase spinner timeout to 500ms
Increasing spinner timeout to 500 means `tc_printf` is not called during
the `_flash_range_erase`. This is important as `_flash_range_erase` is
used when loading. This fixes the issue:
https://github.com/blacksphere/blackmagic/issues/875
Also adding spinner timeout counter to reduce bus traffic.
2021-05-16 11:26:14 +02:00
James Turton 67c9003522 rp: Flush cache after erase and write
The RP2040 datasheet suggests that _flash_flush_cache and _flash_enter_cmd_xip
should be called after erasing and writing to flash.
2021-05-16 11:26:14 +02:00
James Turton f880734050 Fix compiling for native probe 2021-05-16 11:26:14 +02:00
Uwe Bonnes e4421799ba More header cleanup 2021-05-15 12:54:51 +02:00
Uwe Bonnes 8e438b9e5f Add missing headers and remove double typedef. 2021-05-14 19:58:16 +02:00
Uwe Bonnes cfbe9f1c94 pc/gdb_if.c: More verbosity for Error messages #873
Thanks to "pshri" for dissecting and adding messages, as  problems with
Hpyer-V and port permissions happened on Win10
2021-05-09 11:49:32 +02:00
Vegard Storheil Eriksen f121350fc9 hosted/cmsis_dap: Verify that a v2 interface has endpoints. 2021-04-27 11:39:43 +02:00
Vegard Storheil Eriksen 494524dd85 hosted/cmsis_dap: Add v2 support. 2021-04-27 10:26:06 +02:00
Vegard Storheil Eriksen 4f52a7b235 hosted/cmsis_dap: Add discovery by interface string and prepare for v2 support. 2021-04-26 21:56:24 +02:00
Vegard Storheil Eriksen c4874fdf44 hosted/dap: Add parentheses around bitwise operator. 2021-04-26 21:54:38 +02:00
Uwe Bonnes f9414d5826 cmsis-dap: Handle ADI DP22 devices on probes not multidrop capable. 2021-04-26 18:18:18 +02:00
Uwe Bonnes 923edc7f7e cmsis-dap: Fix wrong handling when reading data not word-aligned 2021-04-26 15:08:09 +02:00
Uwe Bonnes 877a6e694c Revert "cmsis_dap: Always write full reportsize + 1 buffers"
This reverts commit 61e237ec87.
This makes a CMSIS-DAP probe with version < 1.2 work again on DP V1 devices.
Status of other combination unknown:
    DP  V1 V2 V2/Multidrop
Probe
<  1.2  ok ok --
>= 1.2   ? ?  ?
2021-04-25 22:53:40 +02:00
Uwe Bonnes 1f67bab475 nxpke04: Move unsafe_enables to target bool union. 2021-04-25 16:03:23 +02:00
Uwe Bonnes f87dff8d83 kinetis: Remove static variables, add word union to target_s.
Add a word union to target structure to hold a single word variable.
2021-04-25 16:03:23 +02:00
Uwe Bonnes ac7c1057cc efm32/samd/samx5x: Remove static allocates strings. Allocate in priv_storage.
Static allocated variables in the different targets eat up common RAM and
will collide in chains with multiple similar targets.
2021-04-25 16:03:23 +02:00
Uwe Bonnes cddf02f174 samx5: Verbose error reports on protected devices. 2021-04-25 16:03:23 +02:00
Uwe Bonnes 8c8aa980cf adiv5: Detect unprotected SAMD5x only once 2021-04-25 16:02:20 +02:00
Uwe Bonnes f98b7274b4 hosted/stlinkv3: Detect STlinkV3 in bootloader mode. 2021-04-25 16:02:20 +02:00
Uwe Bonnes a83700d1cf stm32/usbuart: DMA stream handling is not STM32F4 specific 2021-04-25 16:02:20 +02:00
Uwe Bonnes 1330288271 firmware: Unify serial number handling
Use one file in dfu and server
For STM32, provide 3 ways to handle
- BMP way (8 bytes)
- DFU way (12 Bytes)
- Full unique id (24 Bytes), as with STLINK(V3) Bootloader
2021-04-25 16:02:20 +02:00
Uwe Bonnes 1b26ff560d rp.c: Add reset_usb_boot as monitor command 2021-04-24 14:48:58 +02:00
Uwe Bonnes 52bffa70cf rp: Handle flash.
- Beware, after reset, only a valid flash payload get mapped to XIP!
  Only 0 is read from flash when flash image is not valid
2021-04-21 21:55:03 +02:00
Uwe Bonnes 2b0e255c40 cortexm: timeout and debug for run_stub() 2021-04-21 21:50:38 +02:00
Uwe Bonnes 61efe26348 swdp_scan: Break infinite loop after Dormant->SWD transition. 2021-04-21 21:50:38 +02:00
Uwe Bonnes fa5e69e3be RP 2040: Special handling for rescue DP
As the rescue DP provided no AP, trigger the reset with attach().
However attach will indicate failure also reset/halt has succeeded.
2021-04-21 21:50:38 +02:00
Uwe Bonnes ea92c8b8c8 cmsis-dap: Allow to use adiv5_swdp_scan. 2021-04-21 21:50:38 +02:00
Uwe Bonnes 23f942ac8c Raspberry RP2040: Recognize. No flash handling yet. 2021-04-21 21:50:35 +02:00
Uwe Bonnes 04d1c9805b swd: Remove swd_proc and swdptap.h. 2021-04-21 21:50:04 +02:00
Uwe Bonnes b6fbf86743 Extend ADIv5_DP_t for low level routines needed for multi-drop.
Will replace swd_proc
2021-04-21 21:50:04 +02:00
Uwe Bonnes 61e237ec87 cmsis_dap: Always write full reportsize + 1 buffers
Expect short reads and other errors else
2021-04-21 21:50:04 +02:00
Uwe Bonnes d6ade4d94e cmsis-dap: Use SWD_SEQUENCE if available. 2021-04-21 21:50:04 +02:00
Uwe Bonnes 5abb288c7a hosted: Provide the DP functions in swd_proc. 2021-04-21 21:50:04 +02:00
Uwe Bonnes fa561c8d66 adiv5_swdp: Starting point to handle multi-drop
- RP2040 show both DPs
- Multidrop test with STM32L552 and STM32H745 allows selection
  with "-m 0x4500041" (H7), "-m 1" (L552) or "-m 0x01002927" (RP2040)
2021-04-21 21:50:04 +02:00
Uwe Bonnes be3bfc48a8 cortexm: M33 has up to 8 hardware breakpoints 2021-04-21 21:22:59 +02:00
Uwe Bonnes b1ac4187b9 Fix some formatting strings for 32-bit compile 2021-04-21 21:22:59 +02:00
Uwe Bonnes 637d76b585 cl_utils.c: Try jtag scan if swd scan did not give results. 2021-04-21 21:22:59 +02:00
Uwe Bonnes 5288eef617 cl_utils: With no size given, read the size of the lowest block. 2021-04-20 18:48:27 +02:00
Fabio Baltieri beaccf2714 target: stm32l4: add support for STM32WLxx
This adds support for the STM32WL series in stm32l4.c. These parts have
the same flash registers layout as the L4 series, but a different base.
Since there are already two sets of registers in this target file, this
adds support for register maps that can be customized for each device
ID.
2021-04-20 18:42:36 +02:00
Uwe Bonnes 21b80949ff Compile with -Os as default. Change like "make OPT_FLAGS=..."
SWD/JTAG Bitbang is compiled with -O3 for good bitbang speed.
2021-04-20 18:20:41 +02:00
Fabio Baltieri f55ad67b1b adiv5: catch timeout on adiv5_ap_read_id and abort
This adds a TRY_CATCH around the adiv5_ap_read_id() in
adiv5_component_probe() and resets the DP when that happens.
It seems like the STM32WLE5 comes with the AP of the inactive core
enabled in a way that does not make it detectable, and the current code
times out and leaves the whole device hanging.

Catching the timeout and calling adiv5_dp_abort() seems to restore the
device to a useable state.

Tested on Seed LoRa-E5 (STM32E5JC).
2021-04-19 16:57:13 +02:00
Vestrel 806787529f Use DMA for USBUSART TX/RX 2021-04-17 17:57:08 +02:00
Uwe Bonnes cf5b4afb38 bmp_serial/linux: Honor opt_list_only (-l). 2021-04-17 16:19:57 +02:00
fabalthazar d6b24c00c8 Fixed STM32G43x/G44x option bytes support
Previously took L4 values so FLASH_SEC1R was not applied
2021-04-17 14:44:30 +02:00
fabalthazar 99f9557cc0 Support for STM32G49x/G4Ax (category 4) 2021-04-17 14:44:30 +02:00
fabalthazar c85c946ce3 PRIx32 fix 2021-04-17 14:44:30 +02:00
Stoyan Shopov 9ec7d05d8d Put null terminating characters when scanning for BMP probes on linux
This patch puts null terminating characters for the 'type',
'version', and 'serial' strings extracted from blackmagic probe
id strings on linux systems.
2021-04-17 14:41:28 +02:00
Uwe Bonnes 299da8627c libftdi: Remove unneeded explicit path. 2021-04-17 13:35:21 +02:00
Uwe Bonnes a6a8606edb STM32L55: Detect, memory map, read and flash write. Options handling missing.
Only non-secure states considered!
2021-04-04 17:26:31 +02:00
fabalthazar 739941dc5f Verify right after programming 2021-03-31 13:06:52 +02:00
fabalthazar 2982888b66 BMP_MODE_FLASH_WRITE_VERIFY combined operation 2021-03-31 12:07:53 +02:00
fabalthazar f85c54be97 Prepared -w option 2021-03-31 12:07:53 +02:00
fabalthazar 6d6cfd6c98 Comprehensive STM32G03/4/5/6/7/8/B/C driver 2021-03-29 21:42:40 +02:00
Uwe Bonnes 58f153e12b cortexm: Always halt and release reset before romtable scan
Only release from halt once after romtable scan
Should fix #836.
2021-03-26 17:43:11 +01:00
Uwe Bonnes a025c9a7bd Revert "stm32f1: On ST parts there is no need to read IDCODE again."
Romtable partno is not unique for devices, e.g. in STM32F0
This reverts commit f89b07d892.
2021-03-26 17:35:00 +01:00
Uwe Bonnes f89b07d892 stm32f1: On ST parts there is no need to read IDCODE again.
IDCODE is already known from the Romtable
Probably this has the same effect as #836
2021-03-12 20:45:34 +01:00
Uwe Bonnes e6a9a1a366 cmsis-dap: Get the firmware version. 2021-03-06 13:30:09 +01:00
Uwe Bonnes 7859a2aabd adiv5_swd: Factor out creation of packet request. 2021-03-06 13:30:09 +01:00
Uwe Bonnes cfb784d428 adiv5: Fix comments and debug output 2021-03-05 16:49:19 +01:00
Uwe Bonnes 3aa6f16964 serial_unix: Split timeout in seconds and microseconds
Macos exposed errors when tv_usec was > 1000000.
2021-03-05 16:49:19 +01:00
Uwe Bonnes 43770736f1 cl_utils: Rework Flash/Ram printout 2021-03-05 16:49:19 +01:00
Thiadmer Riemersma 560a046a22 Add support for NXP LPC802, LPC804, LPC832 and LPC834 2021-02-22 19:37:46 +01:00
Uwe Bonnes 0df44e205b ADIv5: Abort Romtable scan also if CIDR0 is invalid after halting #832
STM32WLE5 has the same dual core chip as STM32WL5. For the second
core, the additional AP can be see, but access to e.g. CIDR0 for that
Romtable fails.
Aborting the scan too if again the second read of CIDR0 fails makes
sense anyways!
2021-02-19 18:48:02 +01:00
Uwe Bonnes d70fa8c7f6 hosted: Remove restrictions when gathering information on the debugger
That way, we find RPI Pico pico-debug.
2021-02-15 17:47:29 +01:00
Uwe Bonnes c776e7a9a6 swd_scan: Add '-m' as targetid argument to swd_scan to prepare multi-drop.
In a real multi-drop setup, the device to use must be specified.
2021-02-15 17:47:29 +01:00
Uwe Bonnes 8e2f6937d5 hosted: Run target specific monitor commands with -M "command" .
Lists available commands: "blackmagic -M help"
Quote multi argument monitor commands, e.g. STM32F1: blackmagic -M "option help"
2021-02-15 17:47:29 +01:00
Uwe Bonnes 165560edd8 cl_utils: target selection '-n' argument needs optarg.
foreach now returns the number of targets.
2021-02-15 17:47:29 +01:00
Uwe Bonnes 4eb336277c native: Remove high current draw (#814)
Special iRST_SENSE handling does not apply at least for BMP 2.1c.
On V2.1c, iRST_SENSE was set as output high and xRST high shorted
iRST_SENSE to ground via Q2
FIXME: Check for older versions!
2021-02-15 15:00:19 +01:00
Martin 3b8502c2e5 add space in USB product string (be consistent with ../stm32/dfucore.c)
This changes the USB identification from
"Black Magic Probe(STLINK/V2) v..." to
"Black Magic Probe (STLINK/V2) v..."

Signed-off-by: Martin <Ho-Ro@users.noreply.github.com>
2021-01-29 14:47:28 +01:00
Martin d4dc3b2717 The USB CDC is no modem and does not use the AT protocol
Signed-off-by: Martin <Ho-Ro@users.noreply.github.com>
2021-01-29 14:47:28 +01:00
Alex Norman 42f590ce0b fixing some memory map errors for stm32h7, PR #821 2020-12-23 20:10:39 +01:00
Uwe Bonnes 09c000eca8 hosted: Really handle setting tpwr on remote on the command line #817
Expect the command to fail, due to old firmware or remote not implementing
the power switch.
2020-12-19 16:36:09 +01:00
Sean Cross 2b06f045c4 target: kinetis: add S32K148
This adds support for the NXP S32K148. This is an automotive-grade part
that is derived from the Kinetis line, so it has a very similar
interface to other parts in the family.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-12-16 12:49:23 +01:00
Sean Cross 5f76169b95 hosted: remove ftdi include when built with BMP_ONLY #811
Signed-off-by: Sean Cross <sean@xobs.io>
2020-12-16 11:30:42 +01:00
Uwe Bonnes 98c92a6d18 hosted: Really fix the case of no serial number (#807) 2020-12-13 14:12:05 +01:00
UweBonnes aa0d8f4b5d
Merge pull request #783 from UweBonnes/frequency
Frequency
2020-12-12 19:50:53 +01:00
Noah Pendleton 020600aa56 target/lpc546xx: fix lpc546xx flash support (#801)
**Summary**
Modifications to fix flash support on the lpc546xx:

- fix IAP entrypoint to be `0x03000204`, not the value at that address
- add a reset and attach sequence before erasing flash sectors. there's
little documentation around this, but experimentally, erasing sector 0
fails when the ROM bootloader is mapped to it (on reset). stepping the
chip once and attaching is enough to snap the chip out of it, permitting
flash erase on sector 0.
- add a few test commands to the lpc546xx table (read_uid, erase/write
sector, etc).
- write the magic CRC value when writing to sector 0
(`lpc_flash_write_magic_vect`).
- move the lpc546xx probe to before the lpc43xx probe, to prevent
getting the lpc546xx into Lockup when reading an illegal memory location
during lpc43xx probing

Fixes #786.

I don't 100% understand the reset/load sequence of this part, but these
changes are sufficient to program and debug the part now.

I didn't do a detailed analysis of what pyocd (via st-link hardware
adapter) and segger jlink do to handle the same, but both of those
worked without modification, so there's some difference in the
sequence they're using.

**Testing**
Verified I can now successfully erase and write an executable in sector
0 (and other sectors).
Verified the new commands work correctly.
2020-12-12 19:48:05 +01:00
Uwe Bonnes 6dbb5ff7ee Frequency: Implementing for jlink.
SWD frequency is fixed for jlink according to the docs from 2010.
2020-12-12 18:33:09 +01:00
Uwe Bonnes fdc654cfb3 stlink: Implementation of frequency setting. 2020-12-12 18:33:09 +01:00
Uwe Bonnes de26ba6f73 hosted: Add is_jtag to the info structure
Needed for different frequency setting procedures on some platforms.
2020-12-12 18:33:09 +01:00
Uwe Bonnes 28a966a3e6 frequency: Implement for ftdi.
For all 2232H types, use undivided 60 Mhz.
FIXME: Check FT2322C/D for unsymetric clock at 6 MHz!
2020-12-12 18:33:09 +01:00
Uwe Bonnes 13e8a262e4 SWJ Frequency: Implement for cmsis-dap 2020-12-12 18:33:09 +01:00
Uwe Bonnes 1ca9f234f7 Infrastructure for setting maximum SWJ frequency.
Implement for BMP/firmware on STM32.
2020-12-12 18:33:09 +01:00
Uwe Bonnes 7365a44989 hosted: Implement SWJ test mode (-T).
Continious read/write-back some core register as NOP operation to allow scope
measurement of SWJ timing.
2020-12-12 18:33:09 +01:00
Uwe Bonnes f796b774bd hosted: Fix info.serial if USB device has no serial number #807 2020-12-12 18:32:15 +01:00
Aaron Lindsay 518529a772 Support GD32E23x 2020-12-12 18:29:30 +01:00
Uwe Bonnes 14498decd9 HOSTED_BMP_ONLY/linux: Fix case when no serial device is connected #806 2020-12-12 15:06:26 +01:00
Noah Pendleton 93d4c65948 Fix building with newer GNU make(#804)
More recent versions of GNU make remove the `-` prefix from
`$(MAKEFLAGS)`, which breaks the build:

```bash
 # output truncated to interesting parts
> make -C src --trace all_platforms
set -e ;\
mkdir -p artifacts/v1.7.1-91-g98b4ec5 ;\
echo "<html><body><ul>" > artifacts/index.html ;\
for i in platforms/*/Makefile.inc ; do \
        ...\
        make w --trace --no-print-directory clean ;\
        make w --trace --no-print-directory;\
        ...\
done ;\
echo "</ul></body></html>" >> artifacts/index.html ;\
cp artifacts/*.bin artifacts/v1.7.1-91-g98b4ec5
Building for hardware platform: f4discovery
make[1]: *** No rule to make target 'w'.  Stop.
```

Per the
[documentation](https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html),
there's no need to manually apply insert `$(MAKEFLAGS)`, it should be
automatically included when using `$(MAKE)` when recursing.

I tested on my machine (make 4.2.1) and a docker image based on
ubuntu:trusty (make 3.81), both behaved the same (directories were not
printed when recursing by default);
2020-12-12 14:39:52 +01:00
Stoyan Shopov b5172cf6df Implement the 'find_debuggers()' function for hosted BMP on windows. 2020-12-11 18:36:48 +01:00
Stoyan Shopov 01f8628aed Bugfix in detecting BMP probes by usb serial number. 2020-12-11 18:36:48 +01:00
Stoyan Shopov 170fe0c368 Remove spurious comment. 2020-12-11 18:36:16 +01:00
Uwe Bonnes 4c5ce0b16a Hosted: Handle devices w/o serial number, e.g. GigaDevices GD-Link ARM/CMSIS-DAP 2020-12-11 18:36:16 +01:00
Uwe Bonnes 0f1fe9e438 hosted/linux: Find BMP devices without libusb. 2020-12-11 18:36:09 +01:00
Uwe Bonnes bd5f4c6ed5 hosted: Consolidate ident output. 2020-12-11 17:55:31 +01:00
Uwe Bonnes 0870b778c0 hosted: Allow to build without libusb, libftdi and hidapi with HOSTED_BMP_ONLY=1 2020-12-11 17:50:16 +01:00
Uwe Bonnes 32db38ecf2 hosted/libusb: Move platform.c libusb related functions to own file. 2020-12-11 17:35:43 +01:00
Uwe Bonnes 41788f923b ftdi/stlink/jlink: Provide dummy functions in the HOSTED_BMP_ONLY case
Do not allow multiple inclusion by not declaring the functions as static to
help keep code clean.
2020-12-11 17:31:25 +01:00
Uwe Bonnes 98b4ec58bc Update to recent libopencm3 to undo unwanted change. 2020-12-07 21:51:22 +01:00
Emilio Lopes 633c6a2e81 Recognize "J-Trace Cortex-M PRO V2" in hosted mode 2020-12-07 11:52:33 +01:00
Uwe Bonnes 17dfec3572 dfu/cdcacm: Consolidate usage of ST vs BMP serial number. 2020-12-06 15:18:08 +01:00
Uwe Bonnes 5c7e0eedb0 command.c: Consolidate "mon version" output 2020-12-06 15:18:08 +01:00
Uwe Bonnes 07c3699225 version.h: Remove from platform.h files
- Consolidate ident string generation
- Recompile only needed files
2020-12-06 15:18:08 +01:00
Uwe Bonnes dd6aadc54d jtag: Add verbosity about devices found. 2020-12-06 15:18:08 +01:00
Uwe Bonnes 0a7bfd5923 dfu_f4: Fix sector_erase. 2020-12-06 15:18:08 +01:00
Stoyan Shopov e318f884bf Change the type of 'cortexm_wait_timeout' to unsigned.
It makes sense that the timeout value is unsigned, it also
resolves build errors on some platforms.
2020-12-04 11:44:50 +01:00
Stoyan Shopov c9a419e44b Correct loss of sync protocol error #787 2020-12-04 11:33:23 +01:00
mean e3fd12ebc6 gd32f1/f3 detection and ram/flash autoset 2020-12-03 11:16:47 +01:00
Jonathan Giles 575c25e570 Add support for STM32F1 clone with new AP_DESIGNER id 2020-12-01 10:23:16 +01:00
Uwe Bonnes 48a79ff9da adiv5: More checks for a sensible DPIDR. 2020-11-29 21:11:11 +01:00
Uwe Bonnes 752bc26536 adiv5: Fix memleak with duplicated base. 2020-11-29 21:11:11 +01:00
Uwe Bonnes acec489647 adiv5_jtagdp: Always set idcode. 2020-11-29 21:11:11 +01:00
Uwe Bonnes 9e1b7fdac0 jlink/swd_low_access: Fix data direction during response read phase. 2020-11-29 15:48:50 +01:00
Uwe Bonnes 8903026c14 jlink/swd: swd frequency is fixed, not need to set. 2020-11-29 15:48:50 +01:00
Uwe Bonnes f45c56af83 adiv5/swdp: Check early for valid DP idcode. 2020-11-29 15:48:50 +01:00
Uwe Bonnes 3b6432912d jlink: Catch another error with no target connected. 2020-11-29 15:48:50 +01:00
Uwe Bonnes 7df314e265 Firmware/Jlink: Fix double free when debug power-up fails (#780) 2020-11-29 15:48:50 +01:00
Uwe Bonnes e1329499de platform_adiv5_swdp_scan: Do not double free with early errors.
adiv5_dp_init() clean up itself if errors happen
2020-11-29 15:48:50 +01:00
Uwe Bonnes bf548e92c0 swd: After write low_access, always append 8 clk to move data through SW-DP.
Especially needed when leaving the debugger or during debug unit power-up.

ARM Debug Interface Architecture Specification ADIv5.0 to ADIv5.2
tells to clock the data through SW-DP to either :
- immediate start a new transaction
- continue to drive idle cycles
- or clock at least 8 idle cycles

Implement last option to favour correctness over slight speed decrease

Implement only for adapters where we assemble the seq_out_parity in our code,
as on firmware, ftdi and jlink. Hopefully the high level adapters do it right.

Reverts 2c33cde63f and
cde7726b87
2020-11-27 22:26:48 +01:00
Uwe Bonnes 139e5d7e22 f4discovery: Compile time option to compile with ST bootloader
Just to keep things active. Prepare for F72 bootloader.
2020-11-27 22:26:48 +01:00
Uwe Bonnes 636bcee355 stlink/swlink: Remove the DFU upgrade utility.
Hopefully no old bootloaders are around. If otherwise, revert to last
commit before this and update the DFU bootloader.
2020-11-27 22:26:48 +01:00
Uwe Bonnes 27ef4569ca stm32/dfucore.c: Use libopencm3 provided defines and functions. 2020-11-27 22:26:48 +01:00
Uwe Bonnes 9d55128ab8 cl_utils: Get voltage only once. 2020-11-27 22:26:48 +01:00
Uwe Bonnes e6823f39de Hosted: Print version with "-h" and "-t" option. 2020-11-27 22:26:48 +01:00
Uwe Bonnes 3ee31473c6 cortexm.c: LPC15xx has designer 43b and Partno 4c3
Thanks to JojoS!
2020-11-27 22:26:48 +01:00
Uwe Bonnes 62d9f60f03 hosted/firmware: Waits for read response as long as cortexm_wait_timeout. 2020-11-27 22:26:48 +01:00
Uwe Bonnes 26a23dd1cb stlinkv2: Try harder to open an AP.
Problem seen on STM32L0 with probably long sleep periods.
2020-11-27 22:26:48 +01:00
Uwe Bonnes 19e1fddba2 adiv5: Remove unnescessary read. 2020-11-27 22:26:48 +01:00
Uwe Bonnes cda83d3084 Fix memleaks.
Happened e.g. when Stlink could not enter debug or when cortexm_prepare timed out.
2020-11-27 22:26:48 +01:00
Uwe Bonnes 9ac5adfcef adiv5: Additional decoding. 2020-11-27 22:26:48 +01:00
Uwe Bonnes d78d7838d3 stm32f1: Always read DBGMCU_IDCODE for t->idcode (#770)
At least STM32F042 has 0x440 as romtable partno vs 0x445 as DBGMCU_IDCODE.
Thanks to Andrey Melnikov(aam335) for pointing out!
2020-11-27 22:26:48 +01:00
Uwe Bonnes 653d486ee2 cortexm: Store CPUID in target structure. 2020-11-27 22:26:48 +01:00
Uwe Bonnes 824a1d8abc hosted/find_debuggers: Do not check hubs. Print class of devices unable to open. 2020-11-27 22:26:48 +01:00
Uwe Bonnes e68dd25813 cl_utils: Clarify -d option is BMP/firmware only and deprecate -d. 2020-11-27 22:26:48 +01:00
Uwe Bonnes f71e18948a GPIO for SWD: Slow down edges on more platforms. 2020-11-27 22:26:48 +01:00
Uwe Bonnes 80154c5c7a adiv5_swdp: Fix more memory leak. 2020-11-27 22:26:48 +01:00
Noah Pendleton 35bcb4f7c6 Switch on the lpc546xx target
Enable the lpc546xx target. Tested on the LPCXpresso54628 dev board,
able to flash and debug.
2020-11-24 21:32:39 +01:00
Sean Cross e9c02296f2 target: kinetis: add S32K118
This adds support for the NXP S32K118. This is an automotive-grade part
that is derived from the Kinetis line, so it has a very similar
interface to other parts in the family.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-11-14 13:06:23 +01:00
jbuonagurio f18be6ef7a Add support for Kinetis K12 and placeholders for other K-series MCUs 2020-11-07 12:44:05 +01:00
Uwe Bonnes 2c33cde63f cortexm.c/cortexm_halt_resume: Add some clock cycles to always get CPU going (#768) 2020-11-01 21:53:23 +01:00
Uwe Bonnes d75f3124b9 ftdi_bmp.c: Reapply fix from #715: Check for libftdi 1.5 2020-11-01 12:09:27 +01:00
Stoyan Shopov 99142d1c0e Add documentation details for building PC-hosted BMP in msys2. 2020-11-01 11:33:54 +01:00
Uwe Bonnes 1f7a716710 adiv5.c: Run cortexm_prepare on all suspected CortexM instances.
Gets all debug units of the second CPU of a STM32H745 visible.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 18673d9a56 adiv5: Rework DP/AP refcounting.
ASAN non longer reports leaks with the STM32H745.
2020-10-23 09:40:15 +02:00
Uwe Bonnes f76a7c4e92 adiv5: Release devices after scan.
Before, scanning only kept device stopped until POR or attach/detach cycle.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 73e6b540b2 command: When debug channel is available, print morse messages readable. 2020-10-23 09:40:15 +02:00
Uwe Bonnes 776861c6a0 Makefile: Fix version.h generation for make all_platforms
Same fix as 0ae65cc10f.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 80ddafc2f8 Jtag/High Level : Transfer dp->dp_jd_index with every HL command.
- Add REMOTE_HL_VERSION, now at 1. Fall back to hosted/low-level
  when wrong version is found and give hint to user.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 59dc1b7eb4 cortex-m7: Give hint about buggy core revision. 2020-10-23 09:40:15 +02:00
Uwe Bonnes 976c763747 jtag remote: Start fixing handling M0 (second jtag) for LPC4322 in high-level
- LPC11: Only print none-null unknown idcodes.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 0995fe1288 cmsis-dap: Various fixes
- decrease report size to 64, otherwise MIMRXT10x0-EVK crashed when
  reading larger memory block
- dp_read_reg acts direct, fixing CortexM core register read.
- length of data to write with read_block.
2020-10-23 09:40:15 +02:00
Uwe Bonnes f15b1d7763 cl_utils: Clip opt_flash_start only when not set. 2020-10-23 09:40:15 +02:00
Uwe Bonnes c161521c26 cortexm: Designer ARM must be in the default path when probing. 2020-10-23 09:40:15 +02:00
Uwe Bonnes cdd07544d5 Cortexm: Allow pure debug on devices not yet handled for flashing
- Recognize STM32L552 and MIMXRT10XX
- Fix another PIDR
- Fix bad debug print string.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 3270138ec2 Revert 69e577c9243ce027b628e96881ce2416213fef43
What was thought to be a typo is apsel = 0xff for a dp access.
2020-10-23 09:40:15 +02:00
Uwe Bonnes 77c4f9d702 stlink: Rework README.md
- Document flashing BMP Firmware and reverting to ST firmware
- Consistant nameing
2020-10-19 14:13:29 +02:00
Uwe Bonnes 9cd3193a89 bmp_remote.c: Fix bug introduced with 8b929c12c9. 2020-10-17 12:49:37 +02:00
Uwe Bonnes 0ffb4f7b18 cortexm: Fix protected SAM detection
- Only run cortex_prepare() if reading cidr fails
- With Atmel DSU detected, run cortexm_probe()
2020-10-17 12:49:37 +02:00
Uwe Bonnes 5bc743d221 samd: Propagate security after setting security by chip reset. 2020-10-17 12:49:37 +02:00
Uwe Bonnes 8b929c12c9 hosted/jtag: Transfer jtag_devs to firmware. 2020-10-16 20:03:03 +02:00
Uwe Bonnes 3d92b82678 jtag: Use index and not device structure for jtag_dev_write_ir and jtag_dev_shift_dr 2020-10-16 20:03:03 +02:00
Uwe Bonnes 6e2a074064 bmp_remote: Deny high level JTAG for now.
jtag_devs and jtag_dev_count needs to be known on th firmware side
and remote_dp->dev needs to be filled with jtag_dev_t.
2020-10-16 20:03:03 +02:00
Uwe Bonnes 0f5fb6b9a0 remote: Initialise dp_read and low_access with SWD_INIT.
Before "mon s" after "mon j" failed.
2020-10-16 20:03:03 +02:00
Uwe Bonnes 752d14ca3e remote.c: Add comments. 2020-10-16 20:03:03 +02:00
Uwe Bonnes ba26adce53 remote.h: Remove typo. 2020-10-16 20:03:03 +02:00
Uwe Bonnes 7ccf0d3e03 jtag_dev_t: Make dev, idcode and desc less generic.
No codechange intended.
2020-10-16 20:03:03 +02:00
Uwe Bonnes 87b546777a nrf51: Be more verbose about the protection status. 2020-10-16 12:16:33 +02:00
Richard Meadows 4108b649c2 stm32h7: Add support for new product lines
Add support for:
* STM32H7B3/B0/A3 (RM0455)
* STM32H723/33/25/35/30 (RM0468)

Successfully tested with:
* STM32H7A3ZIT (RM0455)
* STM32H747XIH (check for regressions)
2020-10-10 22:09:34 +02:00
UweBonnes 817c62d7fd
Merge pull request #507 from UweBonnes/cortexm_romtable
Cortexm romtable
2020-10-08 10:53:17 +02:00
Uwe Bonnes 877b4be8ee cortexm: Restrict probing by using the ap_designer.
More designers need to be observed and reported by users and added.
Request users to send needed data.
2020-10-07 20:12:35 +02:00
Uwe Bonnes 91d1ef8bf6 target/stm32: Use t->idcode with probe. 2020-10-07 20:12:35 +02:00
Uwe Bonnes 44bfb62715 Adiv5: Print Designer/Partno when device is not recognized
t->idcode is now 16 bit.
2020-10-07 20:12:35 +02:00
Uwe Bonnes c456fc7f61 adiv5: Store AP designer and partno in the AP structure. 2020-10-07 20:12:32 +02:00
Uwe Bonnes 159196c2ad Cortexm: Remove forced_halt. 2020-10-07 20:11:33 +02:00
Uwe Bonnes 9bb2807706 adiv5/romtable: Prepare CortexM devices to read the ROMTABLE
It seems, writing to DHCSR fails silent when the device is sleeping.
Reading DHCS during sleep may return nonsense.
Repeated write may at some point catch the device running and succeed.
With devices sleeping for long time and running on faster clock the
chance for a successful hotplug gets smaller.

- Try hard to halt a sleeping device
- Prepare vector catch and enable all debug units by TRACENA
- Release reset
- Apply device specific fixes
-- STM32F7: Store old value of DBGMCU_CR, enable debug in sleep in
   DBGMCU before reading PIDR and restore DBGMCU on detach.

Signed-off-by: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
2020-10-07 20:11:17 +02:00
David A. Aguirre Morales a254bc6308 Fix icdi usb error https://github.com/blacksphere/blackmagic/issues/740 https://github.com/blacksphere/blackmagic/pull/748 2020-10-07 18:08:04 +02:00
Uwe Bonnes ceaee2a11e hosted: Hint about BMPs in bootloader mode. 2020-10-07 17:12:22 +02:00
Gareth McMullin dc8924a2bc
stm32h7: Don't tc_printf from flash functions (#747)
* stm32h7: Don't tc_printf from flash functions

Receving an 'O' packet while flashing confuses GDB and then
weird stuff happens.

* Replace tc_printf with DEBUG_WARN
2020-10-05 10:45:18 +02:00
Uwe Bonnes 9bba3165fb swdptap: Turnaround immediate after a reading with parity.
Thanks to JojoS.
Probably mostly cosmetic, but is keeps the device from driving SWDIO
until the next commands.
2020-10-02 10:51:14 +02:00
Uwe Bonnes 4d18496a6f hosted: Allow to disable high level commands for BMP.
Useful for tracking low level problems on native with hosted.
2020-10-01 15:49:21 +02:00
Uwe Bonnes 014abf6cc9 adiv5.c: Reduce number of errors if reading cidr fails. 2020-10-01 15:33:28 +02:00
Uwe Bonnes be40d2b851 adiv5: Check Debug Base Address early
Reduces printout when scanning the romtable
2020-10-01 15:22:17 +02:00
Uwe Bonnes 747336e927 f4discovery: Slow done JTAG pin slew rate to avoid ringing #742 2020-10-01 15:06:16 +02:00
Eivind Alexander Bergem 38bc5bbf82 Add LPC546xx support #741 #553 2020-09-30 12:56:53 +02:00
Uwe Bonnes 2fdd94adeb STM32F7: Add another missing Arch ID. 2020-09-24 16:20:34 +02:00
Uwe Bonnes 0ae65cc10f src/Makefile: Fix version.h generation.
It seems, some git behaviour change got by unnoticed.
2020-09-22 19:02:26 +02:00
Uwe Bonnes 61d919c1ac libftdi: Remove no longer needed workaround for travis CI. 2020-09-20 14:10:37 +02:00
Uwe Bonnes 77231e8972 serial_no: Fix error with "mon trace" #732
launchpad-icdi: Allow to set a serial number with make
2020-09-20 13:23:52 +02:00
Uwe Bonnes bdb351a6ea adiv5_swdp: On ACK_FAULT, error() and try again once #731
when writing CSW.
2020-09-18 20:07:32 +02:00
jxltom a4a934f461 Add comments for hardware revision of v2.1 2020-09-17 11:54:19 +02:00
jxltom 75b5e72a00 Fix typo 2020-09-16 18:41:56 +02:00
Raghu de01a75ca9 Fix broken link to bluepill pinout. 2020-09-15 20:58:10 +02:00
Uwe Bonnes 6d18a61b2e hosted: Make ASAN build optional.
Use ASAN=1 on the make command line to activate,
2020-09-11 15:23:13 +02:00
Damien Merenne 120b3134bb Add SAM4SD32C/B support. 2020-09-07 17:36:15 +02:00
Uwe Bonnes 8289862b55 gdb: Reset flash_mode with when erase or flash fails.
Thanks to Dave Marples <dave@marples.net>, extracted from  #607
2020-09-04 15:17:29 +02:00
Uwe Bonnes 58281ec232 SWD Timing: Enhance SWD high time with low speed loss.
On F103 no high time < 80 ns and no low time < 100 ns was seen with a scope
2020-09-04 14:45:34 +02:00
Uwe Bonnes af3480e523 hosted: Update Readme.md 2020-09-04 11:49:13 +02:00
Uwe Bonnes 6650831243 ftdi: Get turtelizer (JTAG only FT2232D dongle) going
FT2232D seems to dislike "Set TCK/SK Divisor" or
"Set Data Bits Low Byte" as first command on a non-first run
- Add printout when garbage is found
- Add "Disconnect TDI to TDO for Loopback" as first MPSSE command
  (seemed to help!)
2020-09-04 11:49:13 +02:00
Uwe Bonnes 74b3baad1e ftdi_bmp : Another size fix and small rearrangement. 2020-09-04 11:49:13 +02:00
Uwe Bonnes aeb97466b9 libftdi: Automatically switch to JTAG if SWD is not possible. 2020-09-04 11:49:13 +02:00
Uwe Bonnes ae8cb8ab46 ftdi_bmp: Reject writes with no data.
Pending transfers made the MPSSE behaviour strange and unpredictable.
2020-09-04 11:49:13 +02:00
Uwe Bonnes c41ab1738e ftdi/swdptap: Use parity builtin. Fix array width. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 34d0f8a2a1 ftdi: Recognize bitbang SWDIO settings. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 6ac0a25123 ftdi: Add UM232H as probe. 2020-09-04 11:49:13 +02:00
Uwe Bonnes d73a6a3d29 platform/ftdi: Do not double initialize. 2020-09-04 11:49:13 +02:00
Uwe Bonnes f0b0639189 ftdi: Output wire debug. 2020-09-04 11:49:13 +02:00
Uwe Bonnes e95e5e3fba ftdijtag: Really enable TMS/TCK/TDI driver. 2020-09-04 11:49:13 +02:00
Uwe Bonnes f4eed249eb hosted/ftdi: Allow to list supported cables. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 8a2bce26f2 Hosted: Fix memory leak when platform_swdptap_init fails. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 7b497302c0 hosted/ftdi: Autodetect ftdi cables with distinguishing feature. 2020-09-04 11:49:13 +02:00
Uwe Bonnes a83e76bef9 libftdi: Add USBMATE. 2020-09-04 11:49:13 +02:00
Uwe Bonnes c78066255d libftdi: Infrastructure to test for target voltage present. 2020-09-04 11:49:13 +02:00
Uwe Bonnes aff624b6e0 libftfdi: Allow to specify external resistor SWD connection.
More explanations in src/platforms/hosted/Readme.md
2020-09-04 11:49:13 +02:00
Uwe Bonnes eabf45357d libftdi: Reinitialize pins when switching JTAG/SWD. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 05534e9b49 libftdi/swdptap: Provide SWD using generic MPSSE if hardware allows. 2020-09-04 11:49:13 +02:00
Uwe Bonnes 40ba261982 libftdi: Use asynchronous transfers if header indicate newer libftdi1.
This is a hack to keep travis happy. Setting up travis to use a recent
libftdi1 is a major issue.
2020-09-04 11:49:13 +02:00
Uwe Bonnes 9b6e19785e Implement SRST for libftdi.
Travis GCC needs -Wno-missing-field-initializers or will otherwise warn.
2020-09-04 11:49:13 +02:00
Matthew Skolaut dea4be2539 Add ifdef to check for libftdi 1.5 to use ftdi_tcioflush instead of ftdi_usb_purge_buffers 2020-08-21 13:10:55 +02:00
Matthew Skolaut 7e1b0321e2 Cleanup Makefiles for hosted bmp on darwin 2020-08-21 11:28:17 +02:00
Matthew Skolaut 5908fc2da1 Add serial auto-connection to darwin target 2020-08-21 11:28:17 +02:00
Uwe Bonnes e75eb19d78 cmsis_dap: Detect CMSIS-DAP before STLINK
Debugger may be realized with the ST USB Vendor ID.
2020-08-16 15:20:58 +02:00
Uwe Bonnes 998a9747f8 cmsis_dap: Make some errors more prominent. 2020-08-16 15:20:58 +02:00
Uwe Bonnes c97c4a0960 hosted: Better decoding for ap_decode_access(). 2020-08-16 15:20:58 +02:00
Uwe Bonnes badff20099 cmsis_dap.c: Fix dap_dp_read_reg. 2020-08-16 15:20:58 +02:00
David Lawrence f65afb1588 Use correct IAP entry address for LPC84x 2020-08-14 20:00:18 +02:00
Uwe Bonnes dd74ec8e6f stlinkv2: Detect fail mem_read on jtag too. 2020-08-05 16:20:52 +02:00
Uwe Bonnes 805cfbdcb5 Build hosted for widows with hidapi static linked. 2020-08-03 18:59:50 +02:00
Uwe Bonnes fca8593d92 serial_win: Find BMP comport by serial number. 2020-08-03 18:59:50 +02:00
Uwe Bonnes 3eb51ce94f serial_win.c: Copy the enough of the device name. 2020-08-01 14:00:17 +02:00
Uwe Bonnes 11217f8a45 serial_win: GDB needs to handle DTR. 2020-08-01 14:00:17 +02:00
Uwe Bonnes 71e9d78210 adiv5.c: Add another ARCH_ID found STM32F205. 2020-08-01 14:00:17 +02:00
Uwe Bonnes 1b12e407fd adiv5: Add missing arch identifiers for Cortex-M7 ETM. 2020-07-31 11:53:15 +02:00
Uwe Bonnes 71e5b4d3cb hosted/stlinkv2.c: Fix bug introduced with #703 2020-07-29 13:42:07 +02:00
Uwe Bonnes 72387164eb hosted/stlinkv2.c: Handle AP_WAIT error when switching to SWD 2020-07-29 12:22:18 +02:00
Uwe Bonnes a392480631 hosted/stlinkv2.c: Use V2 API to read coreid. 2020-07-29 12:22:18 +02:00
Francesco Valla 696daa8352 adiv5: fix debug print of dev_type
Since dev_type is an 8 bit unsigned integer, use the PRIx8 macro instead
of PRIx32.
2020-07-29 11:32:24 +02:00
Uwe Bonnes 64cf30e4cd Rework/update/add Readme.md in the platforms directories. 2020-07-29 10:32:49 +02:00
Uwe Bonnes 726d4b4496 adiv5.c: Add missing DEVTYPE and ARCHID to some existing PIDRs(#698,#699)
Probably more additions are needed.
2020-07-14 16:26:32 +02:00
Uwe Bonnes 52bfe538e3 cdcacm.c: Set bMaxPacketSize0 to 32 (#693, #697)
Smaller bMaxPacketSize0  resulted in delayed enumeration when BMP firmware
is started by the STLink bootloader.
2020-07-14 15:57:03 +02:00
Uwe Bonnes 09ceaea70f adiv5_swdp: Fix another memory leak. 2020-07-14 15:02:13 +02:00
UweBonnes 2ae62433d2
Merge pull request #690 from themadinventor/arm_v8m
Add ROM table support for Cortex-M33 and Cortex-M23
2020-07-13 10:56:03 +02:00
Aled Cuda a673efc26b Remove extra definitions of jtag structures in the STLink hosted setup to support "gcc (GCC) 10.1.0" on Archlinux 2020-07-12 23:14:19 +02:00
Fredrik Ahlberg 7ebb94d134 cortexm: Add comment on CPUID register 2020-07-12 22:54:39 +02:00
Fredrik Ahlberg 4391851f4d adiv5: Change component descriptions from MTB to Micro Trace Buffer for consistency 2020-07-12 22:29:04 +02:00
Fredrik Ahlberg 0aadd0abce Adiv6: Add comment on DEVTYPE and ARCHID fields with references 2020-07-12 22:27:46 +02:00
Fredrik Ahlberg fcd945a529 cortexm: Read CPUID to identify core version 2020-07-12 12:08:22 +02:00
Fredrik Ahlberg 39a20d78ff v8m: only check relevant bits in DHCSR when polling in cortexm_forced_halt 2020-07-12 12:07:12 +02:00
Fredrik Ahlberg a35e9c8e5c Adiv6: Read DEVTYPE and ARCHID to identify Cortex-M23 and Cortex-M33 debug components 2020-07-12 12:00:31 +02:00
Uwe Bonnes 661f78033a stm32f1: Add F1 XL with dual bank handling, 2020-07-08 14:31:58 +02:00
Uwe Bonnes fc6ca5bc06 Remote: Add procedure to test if high-level remote functions are available
Removes need for updated version string.
2020-07-08 14:15:35 +02:00
Uwe Bonnes bfda64c656 stlink: Remove unused double defined variable "running_status"(#683) 2020-07-02 19:44:31 +02:00
Uwe Bonnes 85d35b75ce libftdi/jtagtap_tdi_tdo_seq: Remove dubious Null termination. 2020-07-02 14:56:10 +02:00
Uwe Bonnes a4cdd6b310 hosted: Report missing USB access rights only if no debugger found. 2020-06-07 16:29:19 +02:00
Uwe Bonnes eabd69dcdb Adiv5: Protect DBG/SYSTEM Power-Up request with timeout too.
CMSIS-DAP without connected target looped infinite in that situation.
2020-06-07 13:14:32 +02:00
Uwe Bonnes e35025d214 CMSIS_DAP: Warn when hidapi-libusb is not found. 2020-06-06 15:28:53 +02:00
Uwe Bonnes 5097a23196 jlink: Fix wrong sized array. 2020-06-06 15:28:53 +02:00
Uwe Bonnes 4ede113ca7 hydrabus: Disable DFU file generation untit somebody fixes dfu-convert.py
This allows "make all_platforms" to succeed on python3 only systems.
2020-06-05 16:23:28 +02:00
Uwe Bonnes aabd07738e cl_utils: Use start of flash in memory map as default flash start. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 425002a38f hosted: Add -l argument to list only available debuggers and exit. 2020-06-05 14:59:30 +02:00
Uwe Bonnes dc3fd2eb06 Classify debug messages
Firmware BMP with ENABLE_DEBUG=1 will print WARN and INFO as before.
PC-Hosted BMPwill alway print to stderr. Warn is printed unconditional,
INFO, GDB, TARGET, DONGLE and WIRE will print if their appropriate bit in
cl_debuglevel is set via the -v verbose command line argument.
INFO will go to stdout with -t or -l.
2020-06-05 14:59:30 +02:00
Uwe Bonnes 9ade8b24f7 hosted: Add Readme.md 2020-06-05 14:59:30 +02:00
Uwe Bonnes 4698a26bab common/swdptap: Slight speed increase and better setup time for write. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 64f3dff8a8 PC-Hosted: Better debug output. 2020-06-05 14:59:30 +02:00
Valmantas Paliksa b06c0ba8d5 bmp_remote: Use high level functions.
Based on #570 (OpenOCD HLA interface driver for Blackmagic), but now
usefull for bmp-remote.
2020-06-05 14:59:30 +02:00
Uwe Bonnes 921c23eb74 serial_unix: Return instead of exit in case of error. 2020-06-05 14:59:30 +02:00
Uwe Bonnes ef558eebb8 CMSIS-DAP support.
Thanks to edbg, pyocd and openocd for code and ideas.
2020-06-05 14:59:30 +02:00
Uwe Bonnes 4ba6afed28 Add jlink pc-hosted platform. 2020-06-05 14:59:30 +02:00
Uwe Bonnes efce2ae892 Do not compile jtagtap and swdptap when not needed. 2020-06-05 14:59:30 +02:00
Uwe Bonnes da45281696 GetTargetVoltage: Print info about voltage only when info is relevant. 2020-06-05 14:59:30 +02:00
Uwe Bonnes ef816e3183 hosted: add libftdi implementation, remove old implementation. 2020-06-05 14:59:30 +02:00
Uwe Bonnes ab7991c3a6 hosted: Add bmp_remote, remove old pc-hosted platform. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 13c3c934d2 Hosted: Add Stlink, remove old pc-stlinkv2 platform 2020-06-05 14:59:30 +02:00
Uwe Bonnes 09602a9e74 serial_unix: Simplify timeout setting. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 8fea3f6baa pc/serial_xx: Change arguments for the open call. 2020-06-05 14:59:30 +02:00
Uwe Bonnes a09104c281 Build firmware executables as *.elf file 2020-06-05 14:59:30 +02:00
Uwe Bonnes dd022fcb44 platforms/pc: Add common usb utilities. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 52739def01 Copy relevant stlink files. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 386a4bfce7 hosted: Device detection and selection. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 3290def5f8 Add empty compilable project. 2020-06-05 14:59:30 +02:00
Uwe Bonnes c3d509e6c0 Clean up PLATFORM_HAS_DEBUG
Use only for firmware platforms.
2020-06-05 14:59:30 +02:00
Uwe Bonnes 9a46c6fd25 Allow BOARD_IDENT as function 2020-06-05 14:59:30 +02:00
Uwe Bonnes 563df2d354 Detour ADIv5 high-level functions. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 9969c984f3 detour jtag primitives. 2020-06-05 14:59:30 +02:00
Uwe Bonnes e34a27f72c Detour swd primitives. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 1e10b96b03 Allow multiple scan routines. 2020-06-05 14:59:30 +02:00
Uwe Bonnes b0cf7d24bd adiv5.c: Fix another leak. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 783ec377d9 adiv5: Export extract. 2020-06-05 14:59:30 +02:00
Uwe Bonnes eee16cf08a platforms/tm4c/jtagtap.c: Remove unreferenced and incomplete file. 2020-06-05 14:59:30 +02:00
Uwe Bonnes f3790b90e5 command.c: Simplify usage of serial_no serial number string. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 966ac4036d target.c: Check for valid flash structure. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 60f39f55b4 MSP432: Warn when hardware version not supported. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 7956fbc361 cl-utils: Print memory map when test is specified. 2020-06-05 14:59:30 +02:00
Uwe Bonnes b5182e09d0 cl_utils: When reading from flash to file, truncate the file. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 8db979798c cl_utils.c: Report read/write speed. 2020-06-05 14:59:30 +02:00
Uwe Bonnes c5d0902d4c cl_utils: Fix memory leak. 2020-06-05 14:59:30 +02:00
Uwe Bonnes 815e09bb1b cl-utils: Add more arguments 2020-06-05 14:59:30 +02:00
Uwe Bonnes 05adcd9bf5 remote.c: Compile only relevant functions.
Do no compile firmware functions when compiling pc-hosted.
2020-06-05 14:59:30 +02:00
Uwe Bonnes 16967b4328 adiv5: Remove only local dp_idcode used from ADIv5_DP_t struct. 2020-06-05 14:59:30 +02:00
Uwe Bonnes b8b34e7b1d adiv5: remove cfg for AP structure, cfg is only used local. 2020-06-05 14:59:30 +02:00
Stoyan Shopov 34a13723d8 Decrease the control USB pipe size on f103 blackmagic probes to 8 bytes
Rationale:
In USB device mode, the f103 chip provides 512 bytes
of memory for USB traffic. In the 'master' branch
of the blackmagic probe, the control endpoint pipe size
is set to 64 bytes, effectively consuming a quarter
(1 'in' endpoint, 1 'out' endpoint == 2 endpoints,
2 /* endpoints */ x 64 /* bytes per endpoint */ == 128 bytes
out of 512 /* bytes of precious usb packet memory */).
The USB standard, for full speed devices, does allow
a control endpoint size of 8 bytes.

I am not too aware of all the details of the USB standard,
but the USB standard seems to allow fragmented transactions
on the control USB pipe (endpoint 0), which libopencm3
apparently supports:
libopencm3/lib/usb/usb_control.c:usb_control_send_chunk()

I am using this change (from 64, to 8 bytes)
on a windows 10 machine, on an stlink hardware
('PROBE_HOST=stlink'). It works on my machine.

This change can potentially provide other USB endpoints
in the blackmagic firmware with more memory
2020-06-05 13:58:08 +02:00
Dömötör Gulyás 69e330849d fix flash map for STM32G431, as it is a special case different from the STM32G47x and STM32G48x chips 2020-06-05 13:41:18 +02:00
Thomas Bénéteau f9f928e9d6 Add support for LPC8N04 2020-06-05 12:33:51 +02:00
Mark Rages 34c0d5a1c9 When timeout is 0, `timeout_is_expired()` should return immediately. 2020-06-05 12:33:24 +02:00
Koen De Vleeschauwer 6eb1b09c1c pc-hosted semihosting 2020-05-27 12:51:29 +02:00
Koen De Vleeschauwer 541861e978 traceswo decoding 2020-05-16 15:04:35 +02:00
Koen De Vleeschauwer 54ee00b0f6 set semihosting sys_clock time origin 2020-05-13 17:50:39 +02:00
Uwe Bonnes 499309f648 stm32f1: Tell user about STM32F10(3) clone. 2020-05-13 13:07:55 +02:00
Alexey Shvetsov 1a83bc6892
Rename variant_string in efm32 samd samx5x (#659)
* Rename variant_string

Files efm32 samd samx5x uses same function name that collides during
linking (checked with gcc10)

Signed-off-by: Alexey 'Alexxy' Shvetsov <alexxyum@gmail.com>

* Also make xxx_variant_string static

Signed-off-by: Alexey 'Alexxy' Shvetsov <alexxyum@gmail.com>
2020-05-12 17:47:04 +02:00
Alexey 'Alexxy' Shvetsov 805464db23 Fix redefinition of io function
Now it should work fine with any gcc version. Old one produces error
like in #657

Signed-off-by: Alexey 'Alexxy' Shvetsov <alexxyum@gmail.com>
2020-05-10 10:58:03 +02:00
Uwe Bonnes 9b939f4a3a stm32f4: Fix option byte handling (#654)
Option bytes are not accessible with level 1 protection, so
Use FLASH_OPTCR(x)
Fix crash with "mon opt write xxxx"
Handle option manipulation better when HW Watchdog fuse is set
Allow abbreviated "mon option x<yyy>" commands
2020-05-05 12:52:32 +02:00
Sid Price 923949d5dd Fixed variable/function name clash building on Windows 2020-05-03 15:45:31 +02:00
Koen De Vleeschauwer 9f8c7be360 semihosting 2020-05-02 12:55:29 +02:00
Vegard Storheil Eriksen d63e870e82 cdcacm: Fix UART interface OUT endpoint MPS in descriptor.
3e3e450 reduced the buffer size for the UART interface OUT endpoint to
32B, but left wMaxPacketSize at 64B. This effectively configures the
hardware to receive packets up to 32B in size while telling the host it
can send larger packets. On reception of a larger packet, the usb core
treats it as an error, drops the packet and replies with a STALL
handshake.

This commit fixes the issue by updating the descriptor to match the
buffer configuration.

Fixes #538
2020-05-01 12:39:40 +02:00
Uwe Bonnes 08bb4d5775 pc-hosted: Make JTAG work. 2020-04-27 20:30:51 +02:00
Koen De Vleeschauwer 8851504a41 new semihosting commands 2020-04-23 09:43:46 +02:00
Uwe Bonnes ada17ada23 stm32f4/7: Always use largest flashsize for device family (#633, #635, #644)
Do not care for the FLASHSIZE register. Leave it up to the user to abuse
flash area the ST did not announce.
2020-04-21 17:04:07 +02:00
Uwe Bonnes 164eb43f00 NRF5: Do not reset target options. 2020-04-14 19:01:43 +02:00
Uwe Bonnes bea8436561 NRF5: Always set CORTEXM_TOPT_INHIBIT_SRST(#230)
The problem also happens with NRF52840. Set CORTEXM_TOPT_INHIBIT_SRST
for all NRF5 device.
People should be more persistent!
2020-04-14 18:11:23 +02:00
mean d1468530bd add basic support for LPC11U68 (and maybe LPC11U68) 2020-04-06 23:36:49 +02:00
Francesco Valla 846dadcc39 lmi: add support for TM4C1294NCPDT 2020-04-03 19:42:24 +02:00
Uwe Bonnes 58a8571d5b stlink: Print Target voltage
This adds about 600 bytes.
2020-04-03 16:19:20 +02:00
Francesco Valla 8a9980cd06 pc/serial_unix: bump device path buffer size to 4096 bytes
Since dp->d_name can be up to 255 bytes long and the 'name' buffer variable is
is a superset of it, bump the size of the latter to 4096 bytes (correspoding
to PATH_MAX on Linux systems).
2020-04-03 11:05:11 +02:00
Uwe Bonnes b4ab9f328e pc-hosted: Put serial handling in own files for unix and implement for windows.
- If host provided /dev/serial/by-id, device must not be given and
  multiple devices may be selected with -s <(partial) serial number>
- On windows, device must by specifies with -d
2020-03-31 17:02:56 +02:00
Uwe Bonnes 18ae2bb50d cl_utils.c: Include <windows.h> for windows builds that work on files. 2020-03-31 17:02:56 +02:00
Uwe Bonnes 1a0cee4e9d pc-hosted: Clean up Makefile.inc. 2020-03-31 17:02:56 +02:00
Uwe Bonnes bd73adf9c7 bmp/pc platforms: Deduplicate code. 2020-03-31 17:02:56 +02:00
Uwe Bonnes 9ca401497c stm32/timing_stm32.c: Remove fixed constants and direct SCB access 2020-03-31 16:54:04 +02:00
Uwe Bonnes c4d7232223 Export function to read out PIDR and use for samd and samx5x. 2020-03-26 19:05:57 +01:00
Uwe Bonnes a0e42e229b Make more things static.
No functional change intendend.
2020-03-26 18:44:19 +01:00
Uwe Bonnes eca3a8dd8f pc-stlinkv2: Make stlink_usb_get_rw_status static and allow to suppress errors
This helps to not overflow the console.
2020-03-26 17:56:12 +01:00
Uwe Bonnes 91d7656d86 stlink/bootloader: Really allow to detach.
- To reenumerate, rcc_periph_reset_pulse(RST_USB) seems enough.
- Document bootloader entry and exit behaviour of ST-LINK V2
- Document bootloader entry on ST-LINK V2-1
2020-03-26 17:15:32 +01:00
Uwe Bonnes 890b494290 pc-stlinkv2: Update README.md 2020-03-26 12:21:22 +01:00
Uwe Bonnes effd43ce38 Harden cortexm_reset() and remove double reset(#601)
Thanks to Dave Marples <dave@marples.net> for input.
- Issue only one reset. Start with SRST. Only if not seen, use SYSRESETREQ
- Wait for release of DHCSR_S_RESET_ST before issuing more commands
- Add timeout to catch reset line stuck low
- Remove AP errors
2020-03-25 11:22:14 +01:00
Uwe Bonnes 2e185ba578 BMP/PC: Allow to compile with mingw64 (#615)
__USE_MINGW_ANSI_STDIO 1 must be set befor any windows specific included.
2020-03-24 17:59:13 +01:00
Uwe Bonnes 2b76ec0ea3 dfucore: Reject erase outside the allowed range
An illegal erase request may get emitted as the DFU program may erase
first. Checking before flashing is not enough.
2020-03-22 16:38:54 +01:00
Uwe Bonnes a7efe7cc14 cl-utils: Display targets found.
+ other small changes in DEBUG output.
2020-03-10 17:34:30 +01:00
Uwe Bonnes 65cb886bb6 Export connect_under_reset. 2020-03-10 11:44:53 +01:00
Uwe Bonnes 2065c70888 adiv5: Split PRIx64 into two PRIx32 as nanolib does not support PRIx64. 2020-03-10 10:56:42 +01:00
Uwe Bonnes 75186f7d50 ADIv5: More CoreSight device decoding:
- MTB-M0+ (Simple Execution  Trace)
- M33: Devices need finer decoding (DEVTYPE at offset 0xfcc)
2020-03-08 22:37:59 +01:00
Uwe Bonnes c7e7bd61b6 stlink: Do not wait for the reaction on the reset line.
pc-hosted will abort, if the reset line is held externally to some value.
As assert is either driven or driven open drain, we can assume assert
immediate. For deassert, logic levels differences between the debugger and
the debuggee may apply and other ways to check the result are needed, like
CORTEXM_DHCSR_S_RESET_ST.
2020-03-08 16:27:03 +01:00