Commit Graph

117 Commits

Author SHA1 Message Date
Mikaela Szekely 2cf1aff698 target/cortex: malloc/free tdesc on attach/detach instead of once on probe 2022-08-25 18:29:57 -04:00
Mikaela Szekely 8f4a8ab593 target/cortex: fix -Wconversion warnings in dynamic tdesc generation 2022-08-25 18:29:57 -04:00
Mikaela Szekely d16b0f8b47 misc: move ARRAY_SIZE macro into general.h 2022-08-25 18:29:57 -04:00
Mikaela Szekely c136b919cd target/cortex: dynamically generate tdesc strings to save code size
This commit removes the previous tdesc_cortex_a, tdesc_cortex_m, and
tdesc_cortex_mf XML string literals used for target description to GDB,
now instead programmatically generating them at runtime to significantly
deduplicate the characters that get embedded into the binary.

Output of ld's --print-memory-usage during final link before:
Memory region         Used Size  Region Size  %age Used
             rom:      116388 B       128 KB     88.80%
             ram:        3348 B        20 KB     16.35%

Output of ld's --print-memory-usage during final link now:
Memory region         Used Size  Region Size  %age Used
             rom:      113032 B       128 KB     86.24%
             ram:        3376 B        20 KB     16.48%

So all in all this saves 3356 bytes of flash.

Note: the exact size saved when compiled on your machine may differ, as
the size of the build seems at least partially non-deterministic.
We've gotten slightly different sizes (within 15 bytes of each other)
at different times, with the only differences being things like which
files were rebuilt in an incremental rebuild, or the order object files
were given to the linker command line. The numbers given above were the
numbers we got when testing the final builds from scratch, but all the
sizes we got were extremely similar to the sizes listed above.
2022-08-25 18:29:57 -04:00
Rafael Silva 89a5c2a8a2 target: target_addr type name cleanup 2022-08-24 16:03:40 -04:00
Rafael Silva ce6477886f target/adi: unify DPIDR TARGETID handling in adiv5_dp_init
this makes the assumption that DPs will be v1 or higher, for SWD-DP scans this is
guaranteed, but on JTAG-SCANS it may not be true, DPv0 does not have DPIDR
implemented and reads are UNPREDICTABLE

Signed-off-by: Rafael Silva <perigoso@riseup.net>
2022-08-06 18:02:30 -04:00
Rafael Silva 87cabb78e5 target/cortexm: print t->part_id not ap->partno in unknown device warning
this is the id used to probe, which may or may not be the same
2022-08-05 13:47:09 +01:00
grumat df513ebda8 Added support for AT32F403A/407/415. 2022-07-31 12:21:26 +01:00
Rafael Silva f435bd2136 target/adi: rework handling of TARGETID
add missing fetching of targetid in jlink probes
clarify how targetid is being read
handle idcode as debug_port_id
use targetid when available to identify device in probe routine
2022-07-31 12:09:07 +01:00
Rafael Silva 8238d3c020 target: rename target idcode 2022-07-31 12:09:07 +01:00
Rafael Silva 1286faff64 target/adi: correct raspberry jep code, cleanup dpidr/targetid code handling 2022-07-31 11:16:36 +01:00
Rafael Silva a9229a869b target/semihosting: move semihosting defines to its own header 2022-07-31 11:16:36 +01:00
Rafael Silva 73f3910f62 misc: code format & cleanup 2022-07-31 11:16:36 +01:00
dragonmux 9d43ade05c cortexm: Fixed the probing for LMI devices (both Cortex-M3 and Cortex-M4)
Other routines that were firing in front of lmi_probe were putting the devices into bad state and causing a plethora of issues
2022-07-30 18:04:07 -07:00
dragonmux 75773631cb cortexm: Fixed a clang-tidy warning in the PROBE macro 2022-07-30 18:04:07 -07:00
Rafael Silva 7c14b62419 target: fix probing for lpc1343 2022-07-26 05:14:30 +01:00
Rafael Silva 8b5206fb8d target: add weak aliasing to allow disabling targets
Signed-off-by: Rafael Silva <perigoso@riseup.net>
2022-07-26 05:08:10 +01:00
Rafael Silva 0942d7047a target/adiv5: saner designer code handling and cleanup
Signed-off-by: Rafael Silva <rafaelsilva@ajtec.pt>
2022-07-25 18:28:57 +01:00
dragonmux 5607eac812 cortexm: Cleaned up formatting, types and const-correctness in cortexm_attach 2022-07-14 14:19:14 -07:00
Anti Sullin 3e9913e88b Implement semihosting debug output redirection to usb-uart port. 2022-07-13 18:49:20 -07:00
dragonmux b226c53d13 misc: Renamed CORTEXM_TOPT_INHIBIT_NRST to clarify usage and align naming 2022-06-26 16:51:58 -07:00
dragonmux 5edf549b48 misc: Updated comments and READMEs to properly reflect pinouts and function 2022-06-26 16:51:58 -07:00
dragonmux a8e12d716d misc: Renamed platform_nrst_{get,set}_val to clarify naming and provide consistency 2022-06-26 16:51:58 -07:00
dragonmux 680a009690 cortexm: Added additional debug information for part probing 2022-06-26 14:19:46 -07:00
Maciej Musiał 2673e34ddd cortexm: fixed an issue with watchpoint handling and a register sanity check 2022-06-26 13:44:45 -04:00
Uwe Bonnes 80c98df2f9 stm32wxxx: CPU2 needs wake-up call and has unexpected PIDR4 in AP1
"Single" core  STM32WLE still sees AP1 but on first scan aborts gracefully
after some errors and on later runs sees AP1 as unusable. Fixes #832.

Decode the Cross trigger interface found on CPU2 on STM32WBxx.
2022-06-25 16:52:36 -04:00
Rafael Silva 430d306511 target: add samx7x probe method
adds support for SAME70, SAMS70, SAMV71 and SAMV70

Signed-off-by: Rafael Silva <perigoso@riseup.net>
2022-05-31 21:48:54 -04:00
mean e12939582c revert function clones_probe 2022-04-10 23:40:44 -04:00
mean fb216a2a98 tabify 2022-04-10 23:40:44 -04:00
mean 90d15e6633 add probe for ch32 + make room for other clones 2022-04-10 23:40:44 -04:00
Uwe Bonnes d594b42976 Cortexm: With connect under reset, keep the device halted until attach. 2022-01-22 14:07:42 +01:00
Koen De Vleeschauwer 73624826b6 semihosting exit code 2021-11-14 12:03:33 +01:00
Uwe Bonnes 5dafc0828c SWD: Remove excessive line resets. 2021-10-31 11:12:46 +01:00
Björn Mellström 711a87f7ba Fix some warnings when compiling with -Wshadow
There are still a few more places that would need to be corrected
before -Wshadow could be added by default.
2021-06-03 12:55:28 +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
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 8c8aa980cf adiv5: Detect unprotected SAMD5x only once 2021-04-25 16:02:20 +02:00
Uwe Bonnes 2b0e255c40 cortexm: timeout and debug for run_stub() 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 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 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 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
Thiadmer Riemersma 560a046a22 Add support for NXP LPC802, LPC804, LPC832 and LPC834 2021-02-22 19:37:46 +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
Aaron Lindsay 518529a772 Support GD32E23x 2020-12-12 18:29:30 +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