tcl/target: add SPDX tag For historical reasons, no license information was added to the tcl files. This makes trivial adding the SPDX tag through script: fgrep -rL SPDX tcl/ target| while read a;do \ sed -i '1{i# SPDX-License-Identifier: GPL-2.0-or-later\n }' $a;done With no specific license information from the author, let's extend the OpenOCD project license GPL-2.0-or-later to the files. Change-Id: I7b2610300b24cccd07bfa6fb5f1266970d5d3a1b Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7027 Tested-by: jenkins
tcl: [3/3] prepare for jimtcl 0.81 'expr' syntax change Jimtcl commit 1843b79a03dd ("expr: TIP 526, only support a single arg") drops the support for multi-argument syntax for the TCL command 'expr'. Fix manually the remaining lines that don't match simple patterns and would require dedicated boring scripting. Remove the 'expr' command where appropriate. Change-Id: Ia75210c8447f88d38515addab4a836af9103096d Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/6161 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
tcl: [1/3] prepare for jimtcl 0.81 'expr' syntax change Jimtcl commit 1843b79a03dd ("expr: TIP 526, only support a single arg") drops the support for multi-argument syntax for the TCL command 'expr'. In the TCL scripts distributed with OpenOCD there are 1700+ lines that should be modified before switching to jimtcl 0.81. Apply the script below on every script in tcl folder. It fixes more than 92% of the lines %<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<--- #!/usr/bin/perl -Wpi my $re_sym = qr{[a-z_][a-z0-9_]*}i; my $re_var = qr{(?:\$|\$::)$re_sym}; my $re_const = qr{0x[0-9a-f]+|[0-9]+|[0-9]*\.[0-9]*}i; my $re_item = qr{(?:~\s*)?(?:$re_var|$re_const)}; my $re_op = qr{<<|>>|[+\-*/&|]}; my $re_expr = qr{( (?:\(\s*(?:$re_item|(?-1))\s*\)|$re_item) \s*$re_op\s* (?:$re_item|(?-1)|\(\s*(?:$re_item|(?-1))\s*\)) )}x; # [expr [dict get $regsC100 SYM] + HEXNUM] s/\[expr (\[dict get $re_var $re_sym\s*\] \+ *$re_const)\]/\[expr \{$1\}\]/; # [ expr (EXPR) ] # [ expr EXPR ] # note: $re_expr captures '$3' s/\[(\s*expr\s*)\((\s*$re_expr\s*)\)(\s*)\]/\[$1\{$2\}$4\]/; s/\[(\s*expr\s*)($re_expr)(\s*)\]/\[$1\{$2\}$4\]/; %<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<--- Change-Id: I0d6bddc6abf6dd29062f2b4e72b5a2b5080293b9 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/6159 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
target: restructure dap support - add 'dap create' command to create dap instances - move all dap subcmmand into the dap instance commands - keep 'dap info' for convenience - change all armv7 and armv8 targets to take a dap instance instead of a jtag chain position - restructure tap/dap/target relations, jtag tap no longer references the dap, daps are now independently created and initialized. - clean up swd connect - re-initialize DAP also on JTAG errors (e.g. after reset, power cycle) - update documentation - update target files Change-Id: I322cf3969b5407c25d1d3962f9d9b9bc1df067d9 Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com> Reviewed-on: http://openocd.zylin.com/4468 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Fix spelling of ARM Cortex It's Cortex-Xn, not Cortex Xn or cortex xn or cortex-xn or CORTEX-Xn or CortexXn. Further it's Cortex-M0+, not M0plus. Cf. http://www.arm.com/products/processors/index.php Consistently write it the official way, so that it stops propagating. Originally spotted in the documentation, it mainly affects code comments but also Atmel SAM3/SAM4/SAMV, NiietCM4 and SiM3x flash driver output. Found via: git grep -i "Cortex " git grep -i "Cortex-" | grep -v "Cortex-" | grep -v ".cpu" git grep -i "CortexM" Change-Id: Ic7b6ca85253e027f6f0f751c628d1a2a391fe914 Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-on: http://openocd.zylin.com/3483 Tested-by: jenkins Reviewed-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
am437x: always use highest possible JTAG clock. With DAP WAIT support, it's no longer necessary to start with slow JTAG clock. Change-Id: I2cb62c44752b27e6854637e8073e9f9501f5a660 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3190 Tested-by: jenkins Reviewed-by: Felipe Balbi <balbi@ti.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: icepick: add icepick_d_set_coreid this is just to avoid open coding that in icepick_d_tapenable. Cleanup only, no functional changes. Change-Id: Iabd20291b7bdd95957afa1c74f52171789201227 Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2624 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: target: am437x: pass coreid This commit is only for the sake of completeness as default coreid is zero. In any case, coreids 1-4 are used for the different PRU cores inside the SoC. Change-Id: I775f2f444b1a908ffaf7bdbc43bcc966f19668c4 Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2621 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
target: am437x: use more descriptive names Use more descriptive names for JRC and DAPs so they more closely match documentation. For example there's no Cortex A9 DAP, that's the DebugSS DAP where Cortex A9 target sits. In that same DAP we have have ETM, STM and both dual-PRU subsystems. Change-Id: I0e66ebb6299763f96606fae3e4c62e5785c804f2 Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2620 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
target: am437x: fix DebugSS DAP ID Main DAP (where Cortex A9 sits) ID is actually 0x46b6902f. Fix it. Change-Id: Ifa3335186bcf60d264d4ecea477bfe2f5ca10ead Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2619 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: am437x: add reset-init event handler this event handler will configure and lock PLLs and configure DDR so platform is placed in usable state. Change-Id: Idd02f4c9789181d69578f8606ac3576ea1dd8a0b Tested-by: Tom Rini <trini@konsulko.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2616 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: am437x: disable watchdog on reset-end sometimes, watchdog might be left running and it could expire in the middle of a debug session, to prevent that, just make sure to disable watchdog on reset-end if current state is 'halted'. Change-Id: Ib4f2a2321cba17cd8c56ca3ae63114a563a6de90 Tested-by: Tom Rini <trini@konsulko.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2615 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: am437x: define registers to be used later a later commit will implement a proper reset-init handler to lock pll and configure ddr as we should. Change-Id: I432cf28a5a944bfa83c20aed7298dbd29df30e38 Tested-by: Tom Rini <trini@konsulko.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2614 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: target: am437x: use entire SRAM area According to AM4379 TRM [1], table 2-1 L3 Memory Map, we have a total of 256KiB and there's no reason not to use it all. [1] http://www.ti.com/lit/ug/spruhl7b/spruhl7b.pdf Change-Id: I117f2afe721bc4e3f0df304d3542e1a91aa69d12 Signed-off-by: Felipe Balbi <balbi@ti.com> Reviewed-on: http://openocd.zylin.com/2611 Tested-by: jenkins Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tcl: target: am437x.cfg: pass correct dbgbase Since commit ec9ccaa28849 (arm_adi_v5: make dap_lookup_cs_component() traverse subtables and handle multicore) AM437x devices can't be used with OpenOCD anymore. The reason is that dbgbase used to be set to zero before that commit and that just happens to work with AM437x devices. A more robust solution is to pass correct dbgbase when creating the target, which this commit does. Signed-off-by: Felipe Balbi <balbi@ti.com> Change-Id: Iaf2617804324de8094b25137943e08b84f14c75f Reviewed-on: http://openocd.zylin.com/2602 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com>
cfg: add TI am43xx devices This adds support for the am43xx SoC and the AM437x GP EVM and AM438x ePOS EVM. Change-Id: I09cbb09072f38e0e08fdd520dedb6e67d45056be Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Tom Rini <trini@ti.com> Reviewed-on: http://openocd.zylin.com/2047 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>