aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-02-15Kinetis: kinetis_ftfx_command() based on target instead of flash bankTomas Vanek
kinetis_ftfx_command() did not use other struct flash_bank* members than base->target. Switching first parameter to struct target* enables use of kinetis_ftfx_command() without unnecessary bank getting and probing. Removed kinetis_securing_test: kind of dead code, same function as command flash erase_address pad 0x400 0x10 Removed "NAND" word from help as flash is obviously NOR Change-Id: I3f5fc295ef2bf42f3e913549949f2a36377f6367 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/2988 Tested-by: jenkins
2016-02-15Kinetis: FlexNVM handlingTomas Vanek
FlexNVM (data flash) is memory mapped at 0x10000000. Driver used to send the same address to FTFx controller for erase/write ops. This was wrong as FTFx accepts only low 24 bits of address. To fix addressing for flash controller kinfo->prog_base was introduced. Added FlexNVM protection check, blank check and data flash size calculation. Blank check cannot use block operation on FlexNVM when EEPROM backup is enabled. Removed non functional reassign logic and bank_ordinal stuff. Now one can re-probe FlexNVM banks after nvm_partition change. Change-Id: Ia60b938266963e5d056701278cdf7bf2f62a429a Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/2987 Tested-by: jenkins
2016-02-13jlink: Update for libjaylink API changesMarc Schink
This patch also addresses a problem with devices where no serial number is available. For further details, see: http://repo.or.cz/libjaylink.git/commit/7e0508d8487f65f71411117dff2e0b093e00bc80 Such devices are now ignored if device selection via serial number is used. Nevertheless, these devices are still usable by using the USB address for device selection or just by omitting device selection. The latter one is only possible if only one device is connected. Change-Id: I5763db25e97ba3d924cb642da7e64e951e09ecb7 Signed-off-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/3225 Tested-by: jenkins Reviewed-by: Nemui Trinomius <nemuisan_kawausogasuki@live.jp> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13cmsis-dap: Fix CMSIS-DAP serial number processing.anpilog
Check CMSIS-DAP adapter has serialnumber before pass it to wcscmp. Keep looking for onother adapter if choosed one doesn't have correct serialnumber. Change-Id: I7d386a03cb49b9baf22073ae1c6b14269ed3b618 Signed-off-by: Andrii Anpilogov <anpilog@gmail.com> Reviewed-on: http://openocd.zylin.com/3226 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13flash: nor: nrf51: add hwid 0x0057Jacob Rosenthal
Change-Id: I43b9dc1ce254a8ee8c84ad8e25bb809eb8629e13 Signed-off-by: Jacob Rosenthal <jakerosenthal@gmail.com> Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/3102 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13cfi: support for 16-bit flash with reversed endiannessEsben Haabendal
This is for targets where flash controller has reverse endianness compared to target. For these, the 'bus_swap' parameter can be given to the CFI driver, which will cause command CFI commands to be written with bytes swapped. This is only for x16 CFI flash. Change-Id: I698b768e92e65d160232e90b0e81a824e3c81a46 Signed-off-by: Esben Haabendal <esben@haabendal.dk> Reviewed-on: http://openocd.zylin.com/3041 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13Change isa stringKent Brinkley
Laying the ground work for adding microAptiv core Change-Id: I161a8a8cb250240ebc8518c91e746d6f921c41c7 Signed-off-by: Kent Brinkley <jkbrinkley.imgtec@gmail.com> Reviewed-on: http://openocd.zylin.com/2400 Tested-by: jenkins Reviewed-by: Mindy Beseler <mbeseler@yahoo.com> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13jtag ftdi: sample TDO on falling edge of TCKMatthias Welwarsky
Due to signal propagation delays, sampling TDO on rising TCK can become quite peculiar at fast TCK rates. However, FTDI chips offer a possiblity to sample TDO on falling edge. With this change, stable operation can be achieved at 30MHz clock even over 10cm ribbon cable. Change-Id: Icaf240535dae15512e3c60a944e22a5fbc1b0b06 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3180 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-02-13flash/nor/spi: reorder to group micron devicesRobert Jordens
Change-Id: Ic5b13e8b994d0741a0a12cd7ed427191b42958e2 Signed-off-by: Robert Jordens <jordens@gmail.com> Reviewed-on: http://openocd.zylin.com/3207 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
2016-02-13quark: add Intel Quark mcu D2000 supportIvan De Cesaris
Add support for the Intel Quark mcu D2000 using the new quark_d2xx target. Changes to the lakemont part are needed for the D2000 core and backwards compatible with the X1000 one. Change-Id: I6e1ef5a5d116344942f08e413965abd3945235fa Signed-off-by: Ivan De Cesaris <ivan.de.cesaris@intel.com> Reviewed-on: http://openocd.zylin.com/3199 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-02-13Helper time_support: const function argumentsAlexander Kurz
duration_elapsed and duration_kbps will not modify the struct duration passed as function argument, hence it should be declared const. Change-Id: I459c396952c78e907257e2c2f2c630abde92aaa8 Signed-off-by: Alexander Kurz <akurz@blala.de> Reviewed-on: http://openocd.zylin.com/3232 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2016-02-10adi_v5_swd: invalidate dap->select during (re)connectTomas Vanek
Commit 830d0c55c0920606366a15560d1945f1e1942744 introduced a regression in error recovery after reconnect: If first SWD queue run in dap_dp_init() fails, DP_SELECT does not get reset. Change-Id: I947e2afe9933e4645a6141ece7816af8e6082cf2 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/3194 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2016-02-03flash: nor: {pic32mx,cfi}: fix register namesPaul Fertser
Commit fd43be07265b5f3cf3146f2bb80c1c2fc0a44fcf introduced a regression: since the register names were changed from those traditional for MIPS to common GDB scheme the code that makes use of them needs to be changed accordingly. This commit restores pic32mx flash driver functionality. Change-Id: Id18c739390fae36737a02dc30c363d0444f53b96 Reported-by: Louis Rannou <louson@users.sf.net> Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/3206 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-01-29flash/nor/niietcm4: minor fixesBogdan Kolbov
niietcm4_write() buffer padding: add correct buffer padding for 16 bytes. Args check in FLASH_BANK_COMMAND_HANDLER(): first version of the driver had 7 args, current - 6. This patch will fix error when flash is rejected (current k1921vk01t.cfg has flash bank init with 6 args). Timeouts in flash flag checking procedure: increase timeouts in niietcm4_opstatus_check() and niietcm4_uopstatus_check() cause there were problems in some hardware configurations. JTAG ID: wrong id in k1921vk01t.cfg replaced with right one. Signed-off-by: Bogdan Kolbov <kolbov@niiet.ru> Change-Id: I84296ba3eb4eeda4d4a68b18c94666f1269a500f Reviewed-on: http://openocd.zylin.com/3171 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-01-22helper: Add converter from JEP106 ID to manufacturer nameAndreas Fritiofson
Use it to print the manufacturer of detected TAPs Change-Id: Ic4384c61c7f6f7ae2a9b860a805a5997542f72cc Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3177 Tested-by: jenkins Reviewed-by: Jiri Kastner <cz172638@gmail.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-01-22arm_adi_v5: dap_partnums - correction of partnumbers, new addedJiri Kastner
according to... ARM DDI 0433B is: 0x9a5 Cortex-A5 PMU ARM DDI 0435C is: 0x955 Cortex-A5 ETM ARM DDI 0401C is: 0x950 Cortex-A9 PTM ARM DDI 0469B is: 0x931 Cortex-R5 ETM ARM DDI 0460D is: 0xc15 Cortex-R5 Debug ARM DDI 0458C is: 0x9b7 Cortex-R7 PMU 0xc17 Cortex-R7 Debug ARM DDI 0535C is: 0x95b Cortex-A17 PTM 0x9ae Cortex-A17 PMU 0xc0e Cortex-A17 Debug ARM DDI 0500F is: 0x9a8 Cortex-A53 CTI 0x95d Cortex-A53 ETM 0x9d3 Cortex-A53 PMU 0xd03 Cortex-A53 Debug ARM DDI 0488G is: 0x906 Cortex-A57/A72 CTI 0x95e Cortex-A57 ETM 0x9d7 Cortex-A57 PMU 0xd07 Cortex-A57 Debug ARM 100095_0002_03_en is: 0x95a Cortex-A72 ETM 0x9d8 Cortex-A72 PMU 0xd08 Cortex-A72 Debug Change-Id: Ieffefb30f2e75c45fe1a2f9c8204e3a9b1af3d7a Signed-off-by: Jiri Kastner <cz172638@gmail.com> Reviewed-on: http://openocd.zylin.com/3198 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-01-22adiv5: introduce optional dap_sync() functionMatthias Welwarsky
dap_sync() executes all commands in the JTAG queue and then checks if a WAIT condition happened inside the last batch. If yes, a recovery is invoked. If not, processing continues without checking for errors. This function should be called in long AP read or writes, e.g. while uploading a new application binary, at intermediate points within the transfer where the cost of flushing the JTAG queue and checking the journal doesn't affect performance too much. Change-Id: I99eeaf47cdf951e15e589a04e74b90b5ce911386 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3181 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-01-22adi_v5_jtag: implement DAP WAIT supportMatthias Welwarsky
ADIv5 specifies that DP and AP accesses may generate a WAIT response when the hardware is not able to complete a request for various reasons in time before the next request is sent. Currently, the software treats a WAIT response as a fatal error and aborts operation on the DAP. This patch implements WAIT handling by keeping a journal of all outstanding and completed accesses, including their response status. At certain times (when dap_run() is called), the journal is inspected for WAIT responses and all discarded accesses are replayed to complete them. Special care is taken to not re-execute already successfully completed operations. Change-Id: I2790070388cf1ab2e8c9a042d74eb3ef776aa583 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3166 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2016-01-15drivers: jlink: rework to allow scans of arbitrary length, bump libjaylinkPaul Fertser
Make the J-Link driver handle everything needed for FPGA programming, this includes arbitrary long scans and STABLECLOCKS command. Also, bump to the latest upstream libjaylink to properly support this. This code is heavily inspired by Andreas Fritiofson's ftdi.c. Change-Id: Ic5fd87aa88b58ff1138dc2e0a197bb52321b1541 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2946 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2016-01-12Cortex-A: Fix unicode quote in commentEvan Hunter
Change-Id: I4747c113ab6c02199f078d9b4a4ec372d011fb2d Signed-off-by: Evan Hunter <ehunter@broadcom.com> Reviewed-on: http://openocd.zylin.com/3200 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2016-01-06jlink: deconflict local variables from global symbolsPeter A. Bigot
BeagleBone debian 7 builds produce: jlink.c: In function 'jlink_speed': jlink.c:218:11: error: declaration of 'div' shadows a global declaration [-Werror=shadow] jlink.c: In function 'check_trace_freq': jlink.c:1065:54: error: declaration of 'div' shadows a global declaration [-Werror=shadow] jlink.c: In function 'config_trace': jlink.c:1101:11: error: declaration of 'div' shadows a global declaration [-Werror=shadow] Fix this by changing the local variable to 'divider'. Change-Id: I96a0cc0f7d4d4af5a56aa1e918e5416d3c61cbfe Signed-off-by: Peter A. Bigot <pab@pabigot.com> Reviewed-on: http://openocd.zylin.com/3185 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2016-01-03arm_adi_v5: deconflict local variables from global symbolsPeter A. Bigot
BeagleBone debian 7 builds produce: adi_v5_jtag.c: In function 'jtag_ap_q_bankselect': adi_v5_jtag.c:336:11: error: declaration of 'select' shadows a global declaration [-Werror=shadow] Fix this by changing the local variable to 'sel'. Change-Id: I8e29662ac12bc77d38d5064046d59b7364853cd9 Signed-off-by: Peter A. Bigot <pab@pabigot.com> Reviewed-on: http://openocd.zylin.com/3184 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2016-01-03ARM ADIv5: CoreSight ROM decode part number and designer idPeter Lawrence
The existing arm_adi_v5.c code decodes CoreSight peripherals based on the part number field. However, these are specific to a particular manufacturer (often ARM). The same part number from two different manufacturers (distinct designer ids) should not decode as the same CoreSight peripheral. The Analog Devices ADSP-SC58x and ADSP-BF70x have peripherals that overlap with existing OpenOCD decoding. The part number is the same as existing OpenOCD decoding, but have a different JEP106 code. Most, if not all, of the existing part number entries in arm_adi_v5.c are probably specific to ARM. Change all entries suspected to be designed by ARM to match only ARM's designer ID. However, to preserve legacy behavior, existing non-ARM entries are encoded with a wildcard so that they will behave in the same way as the existing legacy code. It is desirable, however, to start encoding the data with designer codes to avoid such ambiguity. Revising the code to check both the part number and designer id seemed to a warrant a const array lookup table instead of a multi-tiered switch statement. Also try to sync part identification IDs with relevant ARM docs. Change-Id: Iac1374e4cfc6f04cebb479c0e3fa9bde527cc4a3 Signed-off-by: Peter Lawrence <majbthrd@gmail.com> [andreas.fritiofson@gmail.com: change JEP106 to designer ID, cleanup] Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3128 Tested-by: jenkins
2015-12-30target: cortex_m: fix segfault with HLAPaul Fertser
The HLA target shares an examine handler with cortex_m but since it lacks direct access to DAP, some operations need to be omitted. Change-Id: Ifdd9d3da4a3a3c2e1c9721284b21d041b3ccaa7a Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/3183 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2015-12-29cortex_a: add 'dacrfixup' to cortex-a command groupMatthias Welwarsky
work around issues with software breakpoints when the text segment is mapped read-only by the OS. Set DACR to "all-manager" to bypass TLB permission checks on memory access. Change-Id: I79fd9b32b04a4d538d489896470ee30b26b72b30 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3107 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2015-12-29ADIv5: convert numeric values to use defines with meaningful namesEvan Hunter
Change-Id: Idb72750d0aa893119fb405eb27215cba455428a0 Signed-off-by: Evan Hunter <ehunter@broadcom.com> Reviewed-on: http://openocd.zylin.com/2891 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Jiri Kastner <cz172638@gmail.com> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2015-12-29sysfsgpio: support broken gpio implementationsMatthew Campbell
Change tests when reading from 'value' in sysfs from =='0' to !='1'. This guards against broken sysfs GPIO implementations that return non-zero for high rather than just '1' while still being clean and correct code. Note that sysfs will never output a leading zero even in a very broken implementation as that is covered in gpiolib.c, not the offending driver. Tested against broken Freescale kernel 3.14.38 on i.MX6SL. Change-Id: Id05567bb8504b1babef33d6ee5172bceefeca8b8 Signed-off-by: Matthew Campbell <mcampbell@izotope.com> Reviewed-on: http://openocd.zylin.com/3121 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2015-12-29arm_debug: optimize DP and AP reads over JTAGMatthias Welwarsky
On JTAG, all reads are pipelined. If you read a register, the result is not delivered inside the request that issued the read, it is delivered in the following request. The current code therefore issues a scan of the RDBUFF register after each read. This adds a superfluous transaction after each read. This patch follows a strategy similar to what SWD already implements. It also leverages that all JTAG reads are pipelined, i.e. the result will be clocked out in the next JTAG data phase, no matter if it's READ or WRITE. Therefore it's never necessary to explicitly read RDBUFF other than for the very last READ before a dap_run(). Change-Id: Ie40b1fef3203f0cdcb503f40dcbd2a68b0f9776c Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3167 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2015-12-29cortex_a: select APB-AP as the default APMatthias Welwarsky
Debug initialization blindly selects AP#0 as default, which is the AHB-AP in many cases. This sets the default for target_read/write functions. However, AHB-AP is the wrong choice, because it bypasses caches on read and write and also makes some peripherals inaccessible (e.g. l2 outer caches). This patch explicitely selects the APB-AP (debug_ap) as the default. Change-Id: I13f9e0750186d35dcfc135c8d67d437c5884d9c4 Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-on: http://openocd.zylin.com/3113 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2015-12-29arm_adi_v5: Make the DAP API statelessAndreas Fritiofson
Remove entirely the concept of a "selected" AP that has to be maintained between calls. All the information the DAP ops need are now provided to each call through the AP/DAP pointer. Consolidate the cache of the SELECT fields into one single field caching the entire register. Change-Id: I2e1c93ac5ee8ac38a7d680ca2c660c30093a6b87 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3165 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: dap_queue_ap_* DAP->AP parameterAndreas Fritiofson
Move the mandatory dap_ap_select() call into the dap_queue_ap_read/write wrapper. This avoids the need for dap_ap_select() and the notion of a "current" AP within target code. Change-Id: I5cde8f3eef2c662f7458be6f3b3dd44ea693bd74 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3164 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Fix dap apsel confusing behaviour.Andreas Fritiofson
Make dap apsel without arguments show current state instead of changing to AP 0. Change-Id: I75ea10e3e1b8a067f2dc417ec6691dc7ceec1af6 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3163 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Remove all cases of "restoring" previous dap_ap_select()Andreas Fritiofson
All AP operations should select the AP to use before calling it so there's no point in restoring the previous value afterwards. The explicit call to dap_ap_select() before all AP operations should be moved into dap_queue_ap_read/write() which then would have to take the AP as an argument instead of the DAP. Change-Id: Icacb0c76ef2a5ac36b4d2f26b52ec01a8850286e Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3156 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29cortex: Set default memaccess_tck only during examineAndreas Fritiofson
It's currently set during target creation but the AP that will be used for the target is not even known. Change-Id: I4502e7eb1fa8d90f746445b8cf8a4c21cb7d519e Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3155 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29adi_v5_jtag: Remove TAR and CSW prints from jtagdp_transaction_endcheckAndreas Fritiofson
The AP for which the TAR/CSW is printed may not be the one that caused the failure. Remove the flawed output entirely. The correct info is printed in mem_ap_read/write anyway. Change-Id: I97580a0662dcf02e80646e45445cdbfc251122d8 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3154 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Remove all mem_ap_sel_* functionsAndreas Fritiofson
All mem_ap_* functions now make sure the SELECT register is updated with the AP number that it's operating on. This shouldn't have to be handled explicitly. Change-Id: Ib193d8930fabb6a25715064355f98258c9580b5d Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3153 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Rename TAR and CSW setters and make them AP-specificAndreas Fritiofson
Change-Id: I0ab66b259e929e6ba826ada9cf8e35614df46410 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3152 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Split ahbap_debugport_initAndreas Fritiofson
This function does two separate things, powering up the DP and setting up a MEM-AP. But the DP needs to be powered before even searching for a MEM-AP to initialize and targets may have multiple MEM-APs that need initializing. Split the function into dap_dp_init() and mem_ap_init() and change all call sites to use the appropriate one. Change-Id: I92f55e09754a93f3f01dd8e5aa1ffdf60c856126 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3151 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Clean up dap info commandAndreas Fritiofson
Reduce use of magic numbers and add AXI type MEM-AP detection. Don't try to call dap_rom_display on a non-existent AP. AP identification is unique per designer, so make sure the JEDEC code matches ARM when interpreting the AP type. Change-Id: I8e86b7de61811382afe99bf15094ab71b43f5fdf Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3150 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Change mem_ap calls to take pointer to AP and not DAPAndreas Fritiofson
Change-Id: I8d3e42056aa5828cb917ca578a54b7d53846a150 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3149 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29cortex_a: Find debug base using the detected APB-AP and not AP 1Andreas Fritiofson
Change-Id: I6b98c3b4486903029e5a0d6d964bd5c48ff55926 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3148 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Convert the AP references from numbers to pointersAndreas Fritiofson
Change the debug_ap and memory_ap fields of the cortex_a target and the debug_ap field of the cortex_m target to be pointers to the struct adiv5_ap instead of AP numbers in some known DAP. This reduces the dependency on the DAP struct in the targets and enables MEM-AP accesses to take the relevant AP as parameter. Change-Id: I39d7b134d78000564b7eec5bff464adf0ef89147 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3147 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29cortex_m: Discover the AP to use, just like Cortex-AAndreas Fritiofson
This required fixing the AP ID parsing in dap_find_ap() to match IHI0031C. The AXI type was added too. Change-Id: I44577a7848df37586e650dce0fb57ac26f5f858c Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3146 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29cortex_a: Call ahbap_debugport_init on the discovered AP and not 0Andreas Fritiofson
Change-Id: I76bb9bd800697776a375ab803402780c3c7bea35 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3145 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Add a back-pointer from an AP to its DAPAndreas Fritiofson
This will make it possible to reference directly the AP used for debug in the target instance and remove the DAP reference. This will in turn enable getting rid of the need to select an "active" AP in the DAP (using dap apsel). Change-Id: I265846a427c714204f4fd3df3cdb75843686c2d0 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3144 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29arm_adi_v5: Remove unused is_swd flagAndreas Fritiofson
Not clear what it was supposed to be used for. It probably shouldn't. Change-Id: Ife1d833e59ba80f93876447d752a0ca7e7b57b0f Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3143 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29target/arm: Remove usage of struct arm_jtag in ARMv7 targetsAndreas Fritiofson
The Cortex-A and Cortex-M keeps an arm_jtag struct around just to be able to pass a pointer to it to one common JTAG function which anyway only uses the TAP field. Refactor the function to take a TAP directly, remove the legacy struct from cortex instances and store the TAP pointer only in the DAP. Cortex-M makes a call to arm_jtag_setup_connection() with the struct but the function does nothing useful for a Cortex-M target so remove the call. Change-Id: I3b33709ef55372ef14522ed4337e9f2e817ae3ab Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3142 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2015-12-29swd: Remove DAP from parameter listAndreas Fritiofson
Making the SWD driver aware of the DAP that controls it is a layering violation. The only usage for the DAP pointer is to store the number of idle cycles the AP may need to avoid WAITs. Replace the DAP pointer with a cycle count hint instead to avoid future misuse. Change-Id: I3e64e11a43ba2396bd646a4cf8f9bc331805d802 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3141 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2015-12-29arm_debug: Support multiple APs per DAP and remove DAP from armv7* structsPatrick Stewart
Separate out the values from adiv5_dap that are associated with a specific AP into a new struct, so we can properly support multiple APs. Remove the DAP struct from the armv7* structs, because we can have multiple CPUs per DAP, and we shouldn't have multiple DAP structs. Tidy up a few places where ap_current is used incorrectly. Change-Id: I0c6ef4b49cc86b140366347aaf9b76c07cbab0a8 Signed-off-by: Patrick Stewart <patstew@gmail.com> Reviewed-on: http://openocd.zylin.com/2984 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2015-12-29cortex_m: Select an AP when accessing the DAPPatrick Stewart
Prepare to support multiple cortex-m cores on one DAP. Uses mem_ap_sel_* functions and removes mem_ap_* functions. Adds a new debug_ap parameter to the cortex_m (currently set to zero as in existing code). Change-Id: I6926029d1e7bf44a42d453d1aff349bda824ba72 Signed-off-by: Patrick Stewart <patstew@gmail.com> Reviewed-on: http://openocd.zylin.com/2983 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>