2009-05-31 22:06:11 -05:00
|
|
|
\input texinfo @c -*-texinfo-*-
|
2008-02-28 01:44:13 -06:00
|
|
|
@c %**start of header
|
|
|
|
@setfilename openocd.info
|
2009-05-31 22:06:11 -05:00
|
|
|
@settitle OpenOCD User's Guide
|
2008-02-28 01:44:13 -06:00
|
|
|
@dircategory Development
|
|
|
|
@direntry
|
2009-05-31 22:06:11 -05:00
|
|
|
* OpenOCD: (openocd). OpenOCD User's Guide
|
2008-02-28 01:44:13 -06:00
|
|
|
@end direntry
|
2009-05-31 22:06:11 -05:00
|
|
|
@paragraphindent 0
|
2008-02-28 01:44:13 -06:00
|
|
|
@c %**end of header
|
|
|
|
|
|
|
|
@include version.texi
|
|
|
|
|
2008-02-29 12:10:46 -06:00
|
|
|
@copying
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-05-31 22:06:11 -05:00
|
|
|
This User's Guide documents
|
|
|
|
release @value{VERSION},
|
|
|
|
dated @value{UPDATED},
|
|
|
|
of the Open On-Chip Debugger (OpenOCD).
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@itemize @bullet
|
2022-09-19 03:29:20 -05:00
|
|
|
@item Copyright @copyright{} 2008-2022 The OpenOCD Project
|
2008-12-15 03:43:26 -06:00
|
|
|
@item Copyright @copyright{} 2007-2008 Spencer Oliver @email{spen@@spen-soft.co.uk}
|
2010-05-05 02:32:43 -05:00
|
|
|
@item Copyright @copyright{} 2008-2010 Oyvind Harboe @email{oyvind.harboe@@zylin.com}
|
2008-11-30 16:25:43 -06:00
|
|
|
@item Copyright @copyright{} 2008 Duane Ellis @email{openocd@@duaneellis.com}
|
2010-01-21 18:15:41 -06:00
|
|
|
@item Copyright @copyright{} 2009-2010 David Brownell
|
2008-11-30 16:25:43 -06:00
|
|
|
@end itemize
|
|
|
|
|
2008-02-29 12:10:46 -06:00
|
|
|
@quotation
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
|
|
under the terms of the GNU Free Documentation License, Version 1.2 or
|
|
|
|
any later version published by the Free Software Foundation; with no
|
2020-12-13 04:28:56 -06:00
|
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
|
|
|
copy of the license is included in the section entitled ``GNU Free
|
|
|
|
Documentation License''.
|
2008-02-29 12:10:46 -06:00
|
|
|
@end quotation
|
|
|
|
@end copying
|
|
|
|
|
2008-02-28 01:44:13 -06:00
|
|
|
@titlepage
|
2009-05-31 22:06:11 -05:00
|
|
|
@titlefont{@emph{Open On-Chip Debugger:}}
|
|
|
|
@sp 1
|
|
|
|
@title OpenOCD User's Guide
|
|
|
|
@subtitle for release @value{VERSION}
|
2008-02-28 01:44:13 -06:00
|
|
|
@subtitle @value{UPDATED}
|
2009-05-31 22:06:11 -05:00
|
|
|
|
2008-02-28 01:44:13 -06:00
|
|
|
@page
|
|
|
|
@vskip 0pt plus 1filll
|
2008-02-29 12:10:46 -06:00
|
|
|
@insertcopying
|
2008-02-28 01:44:13 -06:00
|
|
|
@end titlepage
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@summarycontents
|
2008-02-28 01:44:13 -06:00
|
|
|
@contents
|
|
|
|
|
2009-05-31 22:06:11 -05:00
|
|
|
@ifnottex
|
|
|
|
@node Top
|
|
|
|
@top OpenOCD User's Guide
|
2008-02-29 12:10:46 -06:00
|
|
|
|
|
|
|
@insertcopying
|
2009-05-31 22:06:11 -05:00
|
|
|
@end ifnottex
|
2008-02-28 01:44:13 -06:00
|
|
|
|
|
|
|
@menu
|
2009-03-23 02:43:46 -05:00
|
|
|
* About:: About OpenOCD
|
2010-02-04 13:10:15 -06:00
|
|
|
* Developers:: OpenOCD Developer Resources
|
2010-03-05 23:09:03 -06:00
|
|
|
* Debug Adapter Hardware:: Debug Adapter Hardware
|
2010-12-16 02:12:22 -06:00
|
|
|
* About Jim-Tcl:: About Jim-Tcl
|
2008-11-30 16:25:43 -06:00
|
|
|
* Running:: Running OpenOCD
|
2009-06-11 16:48:36 -05:00
|
|
|
* OpenOCD Project Setup:: OpenOCD Project Setup
|
2008-11-30 16:25:43 -06:00
|
|
|
* Config File Guidelines:: Config File Guidelines
|
2016-08-10 01:40:34 -05:00
|
|
|
* Server Configuration:: Server Configuration
|
2013-03-14 17:03:00 -05:00
|
|
|
* Debug Adapter Configuration:: Debug Adapter Configuration
|
2008-11-30 16:25:43 -06:00
|
|
|
* Reset Configuration:: Reset Configuration
|
2009-06-07 18:10:50 -05:00
|
|
|
* TAP Declaration:: TAP Declaration
|
2009-06-02 19:56:50 -05:00
|
|
|
* CPU Configuration:: CPU Configuration
|
2009-05-27 20:18:47 -05:00
|
|
|
* Flash Commands:: Flash Commands
|
2013-03-06 09:29:15 -06:00
|
|
|
* Flash Programming:: Flash Programming
|
2009-06-17 23:08:51 -05:00
|
|
|
* PLD/FPGA Commands:: PLD/FPGA Commands
|
2008-11-30 16:25:43 -06:00
|
|
|
* General Commands:: General Commands
|
2009-05-31 22:06:46 -05:00
|
|
|
* Architecture and Core Commands:: Architecture and Core Commands
|
2008-11-30 16:25:43 -06:00
|
|
|
* JTAG Commands:: JTAG Commands
|
2009-06-26 02:30:21 -05:00
|
|
|
* Boundary Scan Commands:: Boundary Scan Commands
|
2013-06-21 16:16:41 -05:00
|
|
|
* Utility Commands:: Utility Commands
|
2008-11-30 16:25:43 -06:00
|
|
|
* GDB and OpenOCD:: Using GDB and OpenOCD
|
2009-03-20 08:27:02 -05:00
|
|
|
* Tcl Scripting API:: Tcl Scripting API
|
2008-11-30 16:25:43 -06:00
|
|
|
* FAQ:: Frequently Asked Questions
|
2009-03-20 08:27:02 -05:00
|
|
|
* Tcl Crash Course:: Tcl Crash Course
|
2008-11-30 16:25:43 -06:00
|
|
|
* License:: GNU Free Documentation License
|
2009-05-31 22:06:11 -05:00
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@comment DO NOT use the plain word ``Index'', reason: CYGWIN filename
|
|
|
|
@comment case issue with ``Index.html'' and ``index.html''
|
|
|
|
@comment Occurs when creating ``--html --no-split'' output
|
|
|
|
@comment This fix is based on: http://sourceware.org/ml/binutils/2006-05/msg00215.html
|
2009-05-21 21:25:18 -05:00
|
|
|
* OpenOCD Concept Index:: Concept Index
|
David Brownell <david-b@pacbell.net>:
Start updating the NOR flash coverage to use @deffn syntax, so the
commands have more consistent presentation and formatting. This
reorganizes information and updates its presentation, except where
the information didn't really match the code.
This patch updates most of the driver specific support, creating one
new (and alphabetized!) section just for driver-specific data, where
previously that data was split over up to three sections. Of note:
- The at91sam7 docs were a bit out of date with respect to the code.
- The "str9xpec" stuff still deserves some work. For now, it sits
in its own subsection; pretty messy.
- Likewise the "mflash" stuff. That's a parallel infrastructure,
and is now in a section of its own.
- The "mass_erase" commands for the Cortex M3 chips got turned into
footnotes. IMO, they should vanish sometime; they're superfluous.
- There are still a bunch of undocumented NOR drivers. Examples:
avr(8), tms470, pic32mx, more.
Plus there are a handful of minor tweaks to the NAND docs (to help make
the NOR and NAND presentations be parallel); the "Command Index" has
been renamed as the "Command and Driver Index"; reference TI instead
of Luminary Micro in several places.
git-svn-id: svn://svn.berlios.de/openocd/trunk@1937 b42882b7-edfa-0310-969c-e2dbd0fdcd60
2009-05-27 20:11:10 -05:00
|
|
|
* Command and Driver Index:: Command and Driver Index
|
2008-02-28 01:44:13 -06:00
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node About
|
|
|
|
@unnumbered About
|
|
|
|
@cindex about
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
OpenOCD was created by Dominic Rath as part of a 2005 diploma thesis written
|
|
|
|
at the University of Applied Sciences Augsburg (@uref{http://www.hs-augsburg.de}).
|
2009-05-23 17:37:19 -05:00
|
|
|
Since that time, the project has grown into an active open-source project,
|
|
|
|
supported by a diverse community of software and hardware developers from
|
|
|
|
around the world.
|
|
|
|
|
|
|
|
@section What is OpenOCD?
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex TAP
|
|
|
|
@cindex JTAG
|
2009-05-23 17:37:19 -05:00
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
The Open On-Chip Debugger (OpenOCD) aims to provide debugging,
|
|
|
|
in-system programming and boundary-scan testing for embedded target
|
|
|
|
devices.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
It does so with the assistance of a @dfn{debug adapter}, which is
|
|
|
|
a small hardware module which helps provide the right kind of
|
2013-03-14 17:03:00 -05:00
|
|
|
electrical signaling to the target being debugged. These are
|
2010-03-05 23:09:03 -06:00
|
|
|
required since the debug host (on which OpenOCD runs) won't
|
|
|
|
usually have native support for such signaling, or the connector
|
|
|
|
needed to hook up to the target.
|
|
|
|
|
|
|
|
Such debug adapters support one or more @dfn{transport} protocols,
|
|
|
|
each of which involves different electrical signaling (and uses
|
2013-03-14 17:03:00 -05:00
|
|
|
different messaging protocols on top of that signaling). There
|
2010-03-05 23:09:03 -06:00
|
|
|
are many types of debug adapter, and little uniformity in what
|
2013-03-14 17:03:00 -05:00
|
|
|
they are called. (There are also product naming differences.)
|
2010-03-05 23:09:03 -06:00
|
|
|
|
2010-11-22 05:32:57 -06:00
|
|
|
These adapters are sometimes packaged as discrete dongles, which
|
2010-03-05 23:09:03 -06:00
|
|
|
may generically be called @dfn{hardware interface dongles}.
|
|
|
|
Some development boards also integrate them directly, which may
|
2014-01-08 09:17:56 -06:00
|
|
|
let the development board connect directly to the debug
|
2010-03-05 23:09:03 -06:00
|
|
|
host over USB (and sometimes also to power it over USB).
|
|
|
|
|
|
|
|
For example, a @dfn{JTAG Adapter} supports JTAG
|
|
|
|
signaling, and is used to communicate
|
|
|
|
with JTAG (IEEE 1149.1) compliant TAPs on your target board.
|
2009-06-02 19:56:50 -05:00
|
|
|
A @dfn{TAP} is a ``Test Access Port'', a module which processes
|
2013-03-14 17:03:00 -05:00
|
|
|
special instructions and data. TAPs are daisy-chained within and
|
|
|
|
between chips and boards. JTAG supports debugging and boundary
|
2010-03-05 23:09:03 -06:00
|
|
|
scan operations.
|
|
|
|
|
|
|
|
There are also @dfn{SWD Adapters} that support Serial Wire Debug (SWD)
|
|
|
|
signaling to communicate with some newer ARM cores, as well as debug
|
2014-01-08 09:17:56 -06:00
|
|
|
adapters which support both JTAG and SWD transports. SWD supports only
|
2010-03-05 23:09:03 -06:00
|
|
|
debugging, whereas JTAG also supports boundary scan operations.
|
|
|
|
|
|
|
|
For some chips, there are also @dfn{Programming Adapters} supporting
|
|
|
|
special transports used only to write code to flash memory, without
|
|
|
|
support for on-chip debugging or boundary scan.
|
|
|
|
(At this writing, OpenOCD does not support such non-debug adapters.)
|
|
|
|
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
@b{Dongles:} OpenOCD currently supports many types of hardware dongles:
|
|
|
|
USB-based, parallel port-based, and other standalone boxes that run
|
2010-03-05 23:09:03 -06:00
|
|
|
OpenOCD internally. @xref{Debug Adapter Hardware}.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-03-20 08:27:02 -05:00
|
|
|
@b{GDB Debug:} It allows ARM7 (ARM7TDMI and ARM720t), ARM9 (ARM920T,
|
2014-02-06 11:11:15 -06:00
|
|
|
ARM922T, ARM926EJ--S, ARM966E--S), XScale (PXA25x, IXP42x), Cortex-M3
|
2018-10-04 04:11:31 -05:00
|
|
|
(Stellaris LM3, STMicroelectronics STM32 and Energy Micro EFM32) and
|
|
|
|
Intel Quark (x10xx) based cores to be debugged via the GDB protocol.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
@b{Flash Programming:} Flash writing is supported for external
|
|
|
|
CFI-compatible NOR flashes (Intel and AMD/Spansion command set) and several
|
2013-04-20 04:05:32 -05:00
|
|
|
internal flashes (LPC1700, LPC1800, LPC2000, LPC4300, AT91SAM7, AT91SAM3U,
|
|
|
|
STR7x, STR9x, LM3, STM32x and EFM32). Preliminary support for various NAND flash
|
2014-01-08 09:17:56 -06:00
|
|
|
controllers (LPC3180, Orion, S3C24xx, more) is included.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
@section OpenOCD Web Site
|
|
|
|
|
|
|
|
The OpenOCD web site provides the latest public news from the community:
|
|
|
|
|
2015-04-07 03:40:53 -05:00
|
|
|
@uref{http://openocd.org/}
|
2009-05-23 17:37:19 -05:00
|
|
|
|
2009-05-31 22:06:11 -05:00
|
|
|
@section Latest User's Guide:
|
|
|
|
|
|
|
|
The user's guide you are now reading may not be the latest one
|
2013-03-14 17:03:00 -05:00
|
|
|
available. A version for more recent code may be available.
|
2012-09-05 09:35:13 -05:00
|
|
|
Its HTML form is published regularly at:
|
2009-05-31 22:06:11 -05:00
|
|
|
|
2015-04-07 03:40:53 -05:00
|
|
|
@uref{http://openocd.org/doc/html/index.html}
|
2009-05-31 22:06:11 -05:00
|
|
|
|
|
|
|
PDF form is likewise published at:
|
|
|
|
|
2015-04-07 03:40:53 -05:00
|
|
|
@uref{http://openocd.org/doc/pdf/openocd.pdf}
|
2009-05-31 22:06:11 -05:00
|
|
|
|
|
|
|
@section OpenOCD User's Forum
|
|
|
|
|
2009-12-31 05:09:03 -06:00
|
|
|
There is an OpenOCD forum (phpBB) hosted by SparkFun,
|
2013-03-14 17:03:00 -05:00
|
|
|
which might be helpful to you. Note that if you want
|
2009-12-31 05:09:03 -06:00
|
|
|
anything to come to the attention of developers, you
|
|
|
|
should post it to the OpenOCD Developer Mailing List
|
|
|
|
instead of this forum.
|
2009-05-31 22:06:11 -05:00
|
|
|
|
|
|
|
@uref{http://forum.sparkfun.com/viewforum.php?f=18}
|
|
|
|
|
2012-09-05 09:35:13 -05:00
|
|
|
@section OpenOCD User's Mailing List
|
|
|
|
|
|
|
|
The OpenOCD User Mailing List provides the primary means of
|
|
|
|
communication between users:
|
|
|
|
|
|
|
|
@uref{https://lists.sourceforge.net/mailman/listinfo/openocd-user}
|
|
|
|
|
|
|
|
@section OpenOCD IRC
|
|
|
|
|
|
|
|
Support can also be found on irc:
|
2021-06-06 04:09:37 -05:00
|
|
|
@uref{irc://irc.libera.chat/openocd}
|
2009-05-23 17:37:19 -05:00
|
|
|
|
2008-02-28 01:44:13 -06:00
|
|
|
@node Developers
|
2009-05-23 17:37:19 -05:00
|
|
|
@chapter OpenOCD Developer Resources
|
2008-02-28 01:44:13 -06:00
|
|
|
@cindex developers
|
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
If you are interested in improving the state of OpenOCD's debugging and
|
2013-03-14 17:03:00 -05:00
|
|
|
testing support, new contributions will be welcome. Motivated developers
|
2009-05-23 17:37:19 -05:00
|
|
|
can produce new target, flash or interface drivers, improve the
|
|
|
|
documentation, as well as more conventional bug fixes and enhancements.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
The resources in this chapter are available for developers wishing to explore
|
|
|
|
or expand the OpenOCD source code.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
@section OpenOCD Git Repository
|
2008-05-01 16:29:05 -05:00
|
|
|
|
2009-10-07 19:13:50 -05:00
|
|
|
During the 0.3.x release cycle, OpenOCD switched from Subversion to
|
2014-01-08 09:17:56 -06:00
|
|
|
a Git repository hosted at SourceForge. The repository URL is:
|
2009-06-30 16:45:26 -05:00
|
|
|
|
2013-03-16 15:38:38 -05:00
|
|
|
@uref{git://git.code.sf.net/p/openocd/code}
|
|
|
|
|
|
|
|
or via http
|
|
|
|
|
|
|
|
@uref{http://git.code.sf.net/p/openocd/code}
|
2009-07-02 02:12:59 -05:00
|
|
|
|
2009-10-07 21:11:37 -05:00
|
|
|
You may prefer to use a mirror and the HTTP protocol:
|
|
|
|
|
|
|
|
@uref{http://repo.or.cz/r/openocd.git}
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
With standard Git tools, use @command{git clone} to initialize
|
2009-10-07 19:13:50 -05:00
|
|
|
a local repository, and @command{git pull} to update it.
|
|
|
|
There are also gitweb pages letting you browse the repository
|
|
|
|
with a web browser, or download arbitrary snapshots without
|
2014-01-08 09:17:56 -06:00
|
|
|
needing a Git client:
|
2009-07-02 02:12:59 -05:00
|
|
|
|
2009-10-07 21:11:37 -05:00
|
|
|
@uref{http://repo.or.cz/w/openocd.git}
|
|
|
|
|
2009-10-07 19:13:50 -05:00
|
|
|
The @file{README} file contains the instructions for building the project
|
|
|
|
from the repository or a snapshot.
|
2009-04-03 07:55:25 -05:00
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
Developers that want to contribute patches to the OpenOCD system are
|
2009-10-07 19:13:50 -05:00
|
|
|
@b{strongly} encouraged to work against mainline.
|
|
|
|
Patches created against older versions may require additional
|
2009-05-23 17:37:19 -05:00
|
|
|
work from their submitter in order to be updated for newer releases.
|
2009-04-03 07:55:25 -05:00
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
@section Doxygen Developer Manual
|
2009-04-03 07:55:25 -05:00
|
|
|
|
2009-10-07 19:13:50 -05:00
|
|
|
During the 0.2.x release cycle, the OpenOCD project began
|
2013-03-14 17:03:00 -05:00
|
|
|
providing a Doxygen reference manual. This document contains more
|
2009-05-23 17:37:19 -05:00
|
|
|
technical information about the software internals, development
|
|
|
|
processes, and similar documentation:
|
2009-04-03 07:55:25 -05:00
|
|
|
|
2015-04-07 03:40:53 -05:00
|
|
|
@uref{http://openocd.org/doc/doxygen/html/index.html}
|
2009-05-23 17:37:19 -05:00
|
|
|
|
|
|
|
This document is a work-in-progress, but contributions would be welcome
|
2013-03-14 17:03:00 -05:00
|
|
|
to fill in the gaps. All of the source files are provided in-tree,
|
2014-01-08 09:17:56 -06:00
|
|
|
listed in the Doxyfile configuration at the top of the source tree.
|
2009-05-23 17:37:19 -05:00
|
|
|
|
2014-01-18 11:16:42 -06:00
|
|
|
@section Gerrit Review System
|
|
|
|
|
|
|
|
All changes in the OpenOCD Git repository go through the web-based Gerrit
|
|
|
|
Code Review System:
|
|
|
|
|
2021-08-26 04:41:35 -05:00
|
|
|
@uref{https://review.openocd.org/}
|
2014-01-18 11:16:42 -06:00
|
|
|
|
|
|
|
After a one-time registration and repository setup, anyone can push commits
|
|
|
|
from their local Git repository directly into Gerrit.
|
|
|
|
All users and developers are encouraged to review, test, discuss and vote
|
|
|
|
for changes in Gerrit. The feedback provides the basis for a maintainer to
|
|
|
|
eventually submit the change to the main Git repository.
|
|
|
|
|
|
|
|
The @file{HACKING} file, also available as the Patch Guide in the Doxygen
|
|
|
|
Developer Manual, contains basic information about how to connect a
|
|
|
|
repository to Gerrit, prepare and push patches. Patch authors are expected to
|
|
|
|
maintain their changes while they're in Gerrit, respond to feedback and if
|
|
|
|
necessary rework and push improved versions of the change.
|
|
|
|
|
2009-05-23 17:37:19 -05:00
|
|
|
@section OpenOCD Developer Mailing List
|
|
|
|
|
|
|
|
The OpenOCD Developer Mailing List provides the primary means of
|
|
|
|
communication between developers:
|
|
|
|
|
2011-10-11 11:18:05 -05:00
|
|
|
@uref{https://lists.sourceforge.net/mailman/listinfo/openocd-devel}
|
2009-05-23 17:37:19 -05:00
|
|
|
|
2015-01-07 17:43:22 -06:00
|
|
|
@section OpenOCD Bug Tracker
|
2010-02-04 13:10:15 -06:00
|
|
|
|
2015-01-07 17:43:22 -06:00
|
|
|
The OpenOCD Bug Tracker is hosted on SourceForge:
|
2010-02-04 13:10:15 -06:00
|
|
|
|
2015-04-07 03:40:53 -05:00
|
|
|
@uref{http://bugs.openocd.org/}
|
2010-02-04 13:10:15 -06:00
|
|
|
|
2009-04-03 07:55:25 -05:00
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
@node Debug Adapter Hardware
|
|
|
|
@chapter Debug Adapter Hardware
|
2008-11-30 16:25:43 -06:00
|
|
|
@cindex dongles
|
2009-03-20 08:27:02 -05:00
|
|
|
@cindex FTDI
|
2008-11-30 16:25:43 -06:00
|
|
|
@cindex wiggler
|
|
|
|
@cindex printer port
|
2009-03-20 08:27:02 -05:00
|
|
|
@cindex USB Adapter
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex RTCK
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
Defined: @b{dongle}: A small device that plugs into a computer and serves as
|
2008-11-30 16:25:43 -06:00
|
|
|
an adapter .... [snip]
|
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
In the OpenOCD case, this generally refers to @b{a small adapter} that
|
2020-11-01 05:30:27 -06:00
|
|
|
attaches to your computer via USB or the parallel port.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
|
|
|
|
@section Choosing a Dongle
|
|
|
|
|
2009-09-19 01:42:50 -05:00
|
|
|
There are several things you should keep in mind when choosing a dongle.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-09-21 13:52:45 -05:00
|
|
|
@enumerate
|
2010-03-05 23:09:03 -06:00
|
|
|
@item @b{Transport} Does it support the kind of communication that you need?
|
From upstream (#620)
* cortex_m: use unsigned int for FPB and DWT quantifiers
related quantifiers are:
- fp_num_lit
- fp_num_code
- dwt_num_comp
- dwt_comp_available
Change-Id: I07dec2d4aa21bc0e580be0d9fd0a6809f876c2a8
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6185
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* telnet: allow hiding selected commands during auto-completion
We have TCL procedure and commands that we do not want to show in
the list of auto-completion. E.g. TCL wrappers for deprecated
commands, internal procedures that are not supposed to be exposed
to user, or even commands that the user decides to hide.
Create a TCL procedure to be called by telnet auto-complete code
in place of the hard-coded TCL command. The procedure will run the
same command and will filter-out the unwanted command names.
Initialize the list of commands to be filtered-out with the name
of the TCL procedure above, as it is considered as internal.
Change-Id: I2d83bbf8194502368c589c85cccb617e69128c69
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6194
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* telnet/auto-complete: hide deprecated and internal commands
For both:
- TCL proc that redirect deprecated commands to the new commands,
- TCL proc used internally and not supposed to be exposed to user,
add their name to the list of commands that should be hide by the
telnet auto-complete.
Change-Id: I05237c6a79334b7d2b151dfb129fb57b2f40bba6
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6195
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* startup.tcl: 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'.
Modify the script startup.tcl compiled-in OpenOCD binary to comply
with the new jimtcl.
Change-Id: I520dcafacadaa289a815035f93f250447ca66ea0
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6158
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
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>
* tcl: [2/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'.
Enclose within double quote the argument of 'expr' when there is
the need to concatenate strings.
Change-Id: Ic0ea990ed37337a7e6c3a99670583685b570b8b1
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6160
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>
* target/stm8: Make 'stm8_command_handlers' static
Change-Id: I5237a8f2a1ecba9383672e37bd56f8ccd17598b6
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6200
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/riscv: Change 'authdata_read' output
Use a constant output length and remove the line break to make the
authentication data easier to parse.
Change-Id: Iebbf1f171947ef89b0f360a2cb286a4ea15c6ba5
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6199
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* Enable adapter "Bus Pirate" by default.
The Bus Pirate is now listed in the "OpenOCD configuration summary" too.
Change-Id: Ieb7bf9134af456ebe9803f3108a243204fb2a62d
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Reviewed-on: http://openocd.zylin.com/5637
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* coding-style: additional style for C code
To improve readability and to push more uniform code style.
Prefer 'if (false) {...}' for unused code so it get checked by the
compiler.
Define preferred indentation for 'switch' statement.
Require balanced brackets in 'if/else'.
Report the max line length.
Report the formatting strings for stdint/inttypes types.
Report the type 'target_addr_t'.
Prefer 'unsigned int' to 'unsigned'.
Change-Id: I0192a4ed298f6c6c432764fdd156cffd4b13fc89
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6203
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Marc Schink <dev@zapb.de>
* Add IPDBG JtagHost functionality to OpenOCD
IPDBG are utilities to debug IP-cores. It uses JTAG for
transport to/from the FPGA. The different UIs use TCP/IP
as transport. The JtagHost makes the bridge between these
two.
Comparable to the bridge between GDB and the in-circuit-
debugging-unit of a micro controller.
Change-Id: Ib1bc10dcbd4ea426e492bb7b2d85c1ed1b7a8d5a
Signed-off-by: Daniel Anselmi <danselmi@gmx.ch>
Reviewed-on: http://openocd.zylin.com/5938
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* flash/nor/xcf: Do not use 'Yoda conditions'
Change-Id: I17308f5237338ce468e5b86289a0634429deaaa9
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6201
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* cortex_m: add armv8m special registers
Change-Id: I1942f375a5f4282ad1fe4a2ff3b8f3cbc64d8f7f
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6016
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* rtos: Add support for Zephyr RTOS
With this patch, the Zephyr[1] RTOS is supported by OpenOCD.
As usual with support for other RTOSes, Zephyr must be compiled with
the DEBUG_THREAD_INFO option. This will generate some symbols
with information needed in order to build the list of threads.
The current implementation is limited to Zephyr running on ARM
Cortex-M processors. This is the only ARM variant supported by Zephyr
at the moment and is used on most of the officially supported boards.
[1] https://www.zephyrproject.org/
Change-Id: I22afdbec91562f3a22cf5b88cd4ea3a7a59ba0b4
Signed-off-by: Evgeniy Didin <didin@synopsys.com>
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
Signed-off-by: Daniel Glöckner <dg@emlix.com>
Reviewed-on: http://openocd.zylin.com/4988
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/armv7m.h: [style] replace tab with space between variable type and name
Change-Id: I9740c25857295a2a655d3046322a3f23f0ee7f78
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6230
Reviewed-by: Marc Schink <dev@zapb.de>
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* server: gdb_server: Add colon for target extended-remote
Both GDB commands "target remote" and "target extended-remote" require
to have ":" right before port number.
e.g.
(gdb) target extended-remote :3333
Add ":" to the warning message so that users can copy & past it.
Change-Id: Id6d8ec1e4dfd3c12cb7f3b314064f2c35fa7ab55
Signed-off-by: Yasushi SHOJI <yashi@spacecubics.com>
Reviewed-on: http://openocd.zylin.com/6237
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Tested-by: jenkins
Reviewed-by: Marc Schink <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* jimtcl: restrict memory leak workaround on Linux only
The workaround for jimtcl 0.80 in commit 36ae487ed04b ("jimtcl:
add temporary workaround for memory leak in jimtcl 0.80") issues a
compile time error on macOS:
../src/helper/command.c:157:22: error: aliases are not
supported on darwin
__attribute__((weak, alias("workaround_createcommand")));
The OS is x86_64-apple-darwin19.6.0 and the compiler used is
x86_64-apple-darwin13.4.0-clang.
Restrict the workaround on Linux host only. The fix for 'expr'
syntax change is already merged and the workaround will be dropped
soon.
Change-Id: I925109a9c57c05f8c95b70bc7d6604eb1172cd79
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Adam Jeliński <ajelinski@users.sourceforge.net>
Fixes: 36ae487ed04b ("jimtcl: add temporary workaround for memory leak in jimtcl 0.80")
Fixes: https://sourceforge.net/p/openocd/tickets/304/
Reviewed-on: http://openocd.zylin.com/6241
Tested-by: jenkins
* target/armv7m: fix static analyzer warning
Despite of assert(is_packed) clang static analyser complains on use
of the uninitialized offset variable.
Cross compiling with latest x86_64-w64-mingw32-gcc hits warnings
src/target/armv7m.c: In function ‘armv7m_read_core_reg’:
src/target/armv7m.c:337:54: error: ‘reg32_id’ may be used
uninitialized in this function [-Werror=maybe-uninitialized]
It happens because mingw32 defines assert() without the attribute
"noreturn", whatever NDEBUG is defined or not.
Replace assert(is_packed) by if (is_packed) conditional and call
assert(false) in the else branch.
Change-Id: Id3c7dcccb65106e28be200b9a4d2b642f4d31019
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/6256
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Andrzej Sierżęga <asier70@gmail.com>
* cmsis_dap: fix build on macOS
Compile fails with error:
src/jtag/drivers/cmsis_dap.c:683:28: error: format specifies type
'unsigned char' but the argument has type 'int' [-Werror,-Wformat]
" received 0x%" PRIx8, CMD_DAP_TFER, resp[0]);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
Fix the format specifier.
Change-Id: I0a5a1a35452d634019989d14d849501fb8a7e93a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6255
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* cortex_m: do not perform soft_reset_halt on targets without VECTRESET
Change-Id: Ib3df457e0afe4e342c82ad1af25e03aad6979d87
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6209
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* cortex_m: fix VECTRESET detection for ARMv6-M cores
VECTRESET check should be done after verifying if the core is an ARMv6-M core,
and not before that.
Fixes: 2dc9c1df81b6 ("cortex_m: [FIX] ARMv8-M does not support VECTRESET")
Change-Id: I8306affd332b3a35cea69bba39ef24ca71244273
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6232
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/arm_dpm: rename 'wp_pc' as 'wp_addr'
The field 'wp_pc' was originally introduced in commit 55eeea7fceb6
("ARMv7a/Cortex-A8: report watchpoint trigger insn") in end 2009
to contain the address of the instruction which triggered a
watchpoint. Later on with commit 651b861d5d5f ("target/aarch64:
Add watchpoint support") it has been reused in to hold directly
the memory address that triggered a watchpoint.
Rename 'wp_pc' as 'wp_addr' and change its doxygen description.
While there, fix the format string to print the field.
Change-Id: I2e5ced1497e4a6fb6b38f91e881807512e8d8c47
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6204
Tested-by: jenkins
Reviewed-by: Liming Sun <limings@nvidia.com>
* target/aarch64: fix watchpoint management
The early documentation for armv8a report the debug register WFAR
as containing the address of the instruction that triggered the
watchpoint. More recent documentation report the register EDWAR as
containing the data memory address that triggered the watchpoint.
The name of macros CPUV8_DBG_WFAR0 and CPUV8_DBG_WFAR1 is not
correct as they point to the debug register EDWAR, so reading such
register returns directly the data memory address that triggered
the watchpoint. The code incorrectly passes this address value to
the function armv8_dpm_report_wfar(); this function is supposed to
adjust the PC value, decrementing it to remove the effects of the
CPU pipeline. This pipeline offset, that has no meaning on the
value in EDWAR, caused commit 651b861d5d5f ("target/aarch64: Add
watchpoint support") to add back the offset while comparing the
address with the watchpoint enabled.
The upper 32 bits of EDWAR are not valid in aarch32 mode and have
to be ignored.
Rename CPUV8_DBG_WFAR0/1 as CPUV8_DBG_EDWAR0/1.
Remove the function armv8_dpm_report_wfar().
Remove the offset while searching the matching watchpoint.
Ignore the upper 32 bits of EDWAR in aarch32 mode.
Fix a comment and the LOG text.
Change-Id: I7cbdbeb766fa18e31cc72be098ca2bc501877ed1
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6205
Tested-by: jenkins
Reviewed-by: Liming Sun <limings@nvidia.com>
* flash/stm32l4x: add missing break statement
this is not a bug fix, this for loop will issue only one match
adding the break will save unnecessary more loops.
Change-Id: Ic1484ea8cdea1b284eb570f9e3e7818e07daf5cd
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6248
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Tested-by: jenkins
* github/action: create a permanent 'latest' release
this commit extends the existing snapshot action to create a release named
'latest' with the built binaries for windows.
this 'latest' release will be updated after every push to github.
Change-Id: I75a64c598169241743add3ac9aa7a0337fbab7f2
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6127
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* tcl/rp2040: remove empty line at end of file
Change-Id: I212a96b77282b151a8ecbd46a6436e2bbbda4161
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6221
Tested-by: jenkins
* tcl: fix some minor typo
Minor typos found by the new checkpatch boosted by the dictionary
provided by 'codespell'.
While there, fix one indentation.
Change-Id: I72369ed26f363bacd760b40b8c83dd95e89d28a4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6214
Tested-by: jenkins
* flash: fix some minor typo
Minor typos found by the new checkpatch boosted by the dictionary
provided by 'codespell'.
Change-Id: Ia5f134c91beb483fd865df9e4877e0ec3e789478
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6215
Tested-by: jenkins
* jtag: fix some minor typo
Minor typos found by the new checkpatch boosted by the dictionary
provided by 'codespell'.
Change-Id: I101c76a638805d77c1ff356cf0f027552389e5d3
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6216
Tested-by: jenkins
* target: fix some minor typo
Minor typos found by the new checkpatch boosted by the dictionary
provided by 'codespell'.
Change-Id: I548581247db72e683249749d1b8725035530b06e
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6217
Tested-by: jenkins
* openocd: fix some minor typo
Minor typos found by the new checkpatch boosted by the dictionary
provided by 'codespell'.
Change-Id: I7b4cae1798ff5ea048fcbc671a397af763fdc605
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6218
Tested-by: jenkins
* Document the buspirate interface driver.
Change-Id: Iaff13fc5187041a840f4f00eb6b4ee52880cf47e
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Reviewed-on: http://openocd.zylin.com/6231
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Warn on undefined preprocessor symbols
Preprocessor directives like "#if SYMBOL" silently replace undefined or
misspelt symbols with 0, which makes configuration bugs hard to spot.
Compiler flag "-Wundef" prevents such errors.
Change-Id: I91b7ba2db02ef0c3c452d334601c53aebda4660e
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Reviewed-on: http://openocd.zylin.com/6238
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Remove compatibility macros m4_ifblank and m4_ifnblank
They are at least since Autoconf 2.67 present,
and we are requiring version 2.69.
Change-Id: I41b33d4ebe02198f03cdddcc4a3c1beedd993d78
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Reviewed-on: http://openocd.zylin.com/6239
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* configure.ac: use a separate folder for Autoconf-generated files
Autoconf generates several files in root folder of the project.
Keep the root folder cleaner by specifying subfolder 'build-aux'.
Align .gitignore accordingly.
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Change-Id: Ied87faba495d9eeb8f98e78c2e2b7e7e596febfb
Reviewed-on: http://openocd.zylin.com/6236
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* helper/command: silent debug msg on command register/unregister
Commit e216186fab59 ("helper/command: register full-name commands
in jim") and commit a7d68878e4ba ("helper/command: unregister
commands through their full-name") introduce a LOG_DEBUG() message
each for command registration and unregistration.
The messages above are quite noisy and pollute the log when
debug_level is 3 or higher.
They can be useful to debug the command registration logic, but
for the other debug activities on OpenOCD are just noisy.
Already commit a03ac1ba3087 ("helper/command: disable logging of
registered commands [RFC]") was merged to silent the first case
that is now back with additional logs.
Silent both log messages.
Use 'if (false)' to silent them, making easy to re-enable it when
or if someone needs it.
Change-Id: Id8a067e60e822d4ecbddcb036d081298f7e6181f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6220
Tested-by: jenkins
* mem_ap: fix target arch_info type
The target mem_ap appears as an ARM target, thus it allows the
execution of ARM specific commands causing the crash of OpenOCD.
E.g. 'arm mrc ...' can be executed and segfaults.
Replace the incorrect ARM magic number with a dedicated one.
While there, remove the 'struct arm', that is now holding only the
mem_ap's dap, and replace it with a pointer to the dap.
Change-Id: I881332d3fdf8d8f8271b8711607737b052a5699b
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6213
Tested-by: jenkins
* riscv: drop unused variable
The array newly_halted[] is assigned but its value is never used.
Drop it!
Change-Id: I678812a31c45a3ec03716e3eee6a30b8e8947926
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6257
Tested-by: jenkins
Reviewed-by: Xiang W <wxjstz@126.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* riscv: replace macro DIM() with ARRAY_SIZE()
OpenOCD already defines the macro ARRAY_SIZE, while riscv code
uses a local macro DIM.
Prefer using the macro ARRAY_SIZE() instead of DIM().
Not all the riscv code has been upstreamed, yes; this patch only
covers the code already upstreamed.
Change-Id: I89a58a6d91916d85c53ba5e4091b558271f8d618
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6258
Reviewed-by: Xiang W <wxjstz@126.com>
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
* target/zynqmp : Add AXI AP access port
The Xilinx Zynq UltraScale+ SoC have an "AXI-AP" access port for direct memory accesses without halting CPUs.
Change-Id: I6303331c217795657575de4759444938e775dee1
Signed-off-by: Olivier DANET <odanet@caramail.com>
Reviewed-on: http://openocd.zylin.com/6263
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* drivers/versaloon: use ARRAY_SIZE()
Replace the custom macro dimof() with the OpenOCD macro
ARRAY_SIZE().
Change-Id: I2fe638444f6c16f2a78c1fd558b21550f76282d6
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6259
Tested-by: jenkins
Reviewed-by: Xiang W <wxjstz@126.com>
* openocd: use macro ARRAY_SIZE()
There are still few cases where the macro ARRAY_SIZE() should be
used in place of custom code.
Use ARRAY_SIZE() whenever possible.
Change-Id: Iba0127a02357bc704fe639e08562a4f9aa7011df
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6260
Reviewed-by: Xiang W <wxjstz@126.com>
Tested-by: jenkins
* rtos: use ARRAY_SIZE() and simplify rtos_type.create()
Use the existing macro ARRAY_SIZE().
Rewrite the functions rtos_type.create() to simplify the logic.
Change-Id: I8833354767045d1642801d26944c9087a77add00
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6261
Tested-by: jenkins
* tcl: remove remaining deprecated commands
There are still few adapter_khz, ftdi_location, jtag_nsrst_delay
and xds110_serial strolling around ...
Change-Id: I3e8503dcc3875e3c92e6536f3d455a5e448d51ff
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6270
Tested-by: jenkins
* help text: remove trailing space
Some help text end with a useless space character.
Remove it.
Change-Id: I397e1194fac8042f0fab694222f925f906716de3
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6222
Tested-by: jenkins
* help: fix line size in 'usage' output
The implementation of command 'usage' is broken while checking the
line limit of 76 chars per line (e.g. 'usage load_image') and the
line wrapping is not correct. The same broken code is used for the
first output line of command 'help' too.
When call command_help_show_wrap(), include the command's name in
the string so the whole text would be wrapped.
Change-Id: Idece01ce54994db7e851d8522435ff764b11f3ac
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6223
Tested-by: jenkins
* LICENSES: Add the MIT license
Add the full text of the MIT license to the kernel tree. It was copied
directly from:
https://spdx.org/licenses/MIT.html#licenseText
Add the required tags for reference and tooling.
Change-Id: I94a5dea5ced6421809ea2a3448f8dda19a93f5c9
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6219
Tested-by: jenkins
* stlink: add comment of firmware version for each flag bit
Change-Id: I7f7c7b9c9cfd88125f82662ed864a2c0715140b1
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6211
Tested-by: jenkins
* stlink: reorder the flag macro by firmware release
The corresponding bit for each macro is changed, but this is not
relevant in the code.
Change-Id: I7039464f5a3d55d008208f44952aadeb815bd5a3
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6212
Tested-by: jenkins
* tcl/board: Add ST NUCLEO-8S208RB
Change-Id: I384c6ad9b4cbabbc004160677f600d8c4bd3eb71
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6268
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/arm_adi_v5: Fix clear sticky overrun flag during replay of commands
When a WAIT occurs the commands after the WAIT are replayed and the
STICKYORUN is cleared. However if another WAIT occurs during the
command replay, the command itself is resent but the STICKYORUN bit
shall also be cleared. If this is not done, the MEM-AP hangs.
Change-Id: I14e8340cd5d8f58f4de31509da96cfa2ecb630d1
Signed-off-by: micbis <michele.bisogno.ct@renesas.com>
Reviewed-on: http://openocd.zylin.com/6278
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: add support for watchpoints
The current implementation of OpenOCD does not support watchpoints for
cortex_a architecture. So, I replaced the add_watchpoint and
remove_watchpoint with the specific implementation for the
cortex a and using the breakpoint implementation and the arm
documentation [1] as reference. In particular, I have made the
following changes:
* added the following functions
- cortex_a_add_watchpoint
This wrapper function check whether there are any watchpoint
available on the target device by calling cortex_a_set_watchpoint.
- cortex_a_set_watchpoint
This function is responsible for settings the watchpoint register
pair. In particular, it sets the WVR and the WCR registers with
the cortex_a_dap command.
- cortex_a_remove_watchpoint
This wrapper function the selected watchpoint on the target device
by calling cortex_a_unset_watchpoint.
- cortex_a_unset_watchpoint
This function sets both the WVR and the WCR registers to zero, thus
unsetting the watchpoint.
[1]
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BCGDHIEJ.html
Change-Id: I86611dab474cb84836662af572b17636dc68e282
Signed-off-by: Chengyu Zheng <chengyu.zheng@polimi.it>
Reviewed-on: http://openocd.zylin.com/3913
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-by: Marc Schink <dev@zapb.de>
Tested-by: jenkins
* target/cortex_a: fix number of watchpoints
Decrement the available watchpoints only when succeed setting it.
Initialize the available watchpoint with the correct value.
Change-Id: I0f93b347300b8ebedbcd9e718d4ba32b26cf6846
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6196
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: add support for watchpoint length of 1, 2 and 4 bytes
Use byte address select for 1 and 2 bytes length.
Use normal mode for 4 bytes length.
Change-Id: I28d182f25145d0635de64d0361d456f1ad96640e
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6197
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: fix memory leak on watchpoints
The memory allocated to hold the watchpoints is not freed at
OpenOCD exit.
Free the watchpoint memory at OpenOCD exit.
Change-Id: I518c9ce0dc901cde2913d752e3154734f878b854
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6210
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* helper/jim-nvp: comply with coding style [1/2]
The helper jim-nvp does not comply with OpenOCD coding style due
to typedef of struct and CamelCase symbol names.
While it's trivial fixing the helper and all its current use in
the code, changing these APIs will potentially break a number of
patches pending in gerrit. Gerrit will not trigger any alert, but
the code will generate compile error after the merge.
Add the compile flag "-Wno-error=deprecated-declarations" to keep
as warning (not as error) the use of "deprecated" functions and
types.
Rename all the CamelCase symbols is lowercase and provide struct
prototypes in place of the typedef.
Add a DEPRECATED section to 'jim-nvp.h' where the old CamelCase
symbols and the old typedef are re-declared with compile attribute
'deprecated'.
With this change OpenOCD compiles, but generates warnings.
The remaining changes allover OpenOCD code will be fixed in a
separate patch for easier review.
The patches merged later that still use the old deprecated API
will compile with warnings. This will permit to identify and fix
these cases.
Change-Id: I786385d0f662dbb1be5be313ae42623156d68ce5
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6183
Tested-by: jenkins
Reviewed-by: Marc Schink <dev@zapb.de>
* helper/jim-nvp: comply with coding style [2/2]
With the API fixed to comply with OpenOCD coding style, fix all
the references in the code.
Patch generated automatically with the script below.
The list is in reverse order to replace a common prefix after the
replacement of the symbols with the same prefix.
%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---
(cat << EOF
Jim_SetResult_NvpUnknown jim_set_result_nvp_unknown
Jim_Nvp_value2name_simple jim_nvp_value2name_simple
Jim_Nvp_value2name_obj jim_nvp_value2name_obj
Jim_Nvp_value2name jim_nvp_value2name
Jim_Nvp_name2value_simple jim_nvp_name2value_simple
Jim_Nvp_name2value_obj_nocase jim_nvp_name2value_obj_nocase
Jim_Nvp_name2value_obj jim_nvp_name2value_obj
Jim_Nvp_name2value_nocase_simple jim_nvp_name2value_nocase_simple
Jim_Nvp_name2value_nocase jim_nvp_name2value_nocase
Jim_Nvp_name2value jim_nvp_name2value
Jim_Nvp struct jim_nvp
Jim_GetOpt_Wide jim_getopt_wide
Jim_GetOpt_String jim_getopt_string
Jim_GetOpt_Setup jim_getopt_setup
Jim_GetOpt_Obj jim_getopt_obj
Jim_GetOpt_NvpUnknown jim_getopt_nvp_unknown
Jim_GetOpt_Nvp jim_getopt_nvp
Jim_GetOpt_Enum jim_getopt_enum
Jim_GetOpt_Double jim_getopt_double
Jim_GetOpt_Debug jim_getopt_debug
Jim_GetOptInfo struct jim_getopt_info
Jim_GetNvp jim_get_nvp
Jim_Debug_ArgvString jim_debug_argv_string
EOF
) | while read a b; do
sed -i "s/$a/$b/g" $(find src -type f ! -name jim-nvp.\? )
done
%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---
Change-Id: I10a12bd64bb8b17575fd9150482c989c92b298a2
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6184
Reviewed-by: Marc Schink <dev@zapb.de>
Tested-by: jenkins
* server/telnet: fix autocomplete for jimtcl commands
Current autocomplete filters-out some command reported by "info
commands". One of the filter rule concerns the command's private
data.
Every command registered by OpenOCD has its 'struct command' as
private data.
By ignoring commands without private data, we loose several TCL
commands registered by jimtcl, e.g. 'foreach', 'llength'.
By assuming that every command with non-NULL private data has
'struct command' as private data, we risk at best to access
inconsistent data, at worst to trigger a segmentation fault.
Export the already available functions:
- to check if a command has been registered by OpenOCD and
- to get the private data.
While there, rename jimcmd_is_ocd_command() as
jimcmd_is_oocd_command().
Don't filter-out jimtcl commands with no private data.
Check the private data only on OpenOCD commands.
Change-Id: Ib5bf8d2bc5c12440c0cfae438f637c38724a79b7
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6282
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* helper/list.h: align file to Linux v5.12
Main improvement is in the doxygen comments.
Minimize the delta with kernel file.
Skip the functions hlist_unhashed_lockless() and
__list_del_clearprev() that are relevant only in kernel.
Remove gcc extension "omitted conditional operand".
Change-Id: I2e9ddb54cfe2fa5f7cf18f44726acd144e1f98b9
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6276
Reviewed-by: <rdiezmail-openocd@yahoo.de>
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* contrib: add an example of using list.h
Change-Id: Ic3d399d7ad2e4d10677cf78d64968040941b74e5
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6280
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
* helper/list.h: add mention to the example in contrib
Without such reference, it could be difficult to find the example.
Change-Id: Ia9ffb06bc1a45446c2c7b53197ab3400e1d8a9e9
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6281
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
* tcl/target/stm32f4x: fix hardcoded chip name
Fixes: c945d6e61605 ("tcl/target: start using the new TPIU/SWO support")
Change-Id: I4543c9a204f7b4b3b14e6eabc5042653106aff0e
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6277
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
* Makefile: add special target .DELETE_ON_ERROR
The special .DELETE_ON_ERROR deletes the target file on recipe error.
Otherwise, an incomplete output file may be considered up to date
the next time around. .DELETE_ON_ERROR provides reasonable
protection at virtually no cost.
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Change-Id: I67dca47ae5ddf3786993c87b9991b3046a85f00b
Reviewed-on: http://openocd.zylin.com/6235
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* gdb_server: Log both incoming and outgoing GDB packets
- Made sure that also outgoing GDB packets are logged,
not only the incoming ones.
- Improved the treatment of non-printable characters
in the packets to make it more robust.
Prior to this change:
- Outgoing packets were not printed unless OpenOCD was
re-compiled with _DEBUG_GDB_IO_.
- Non-prinable characters were only treated in incoming
'X' packets.
After this change:
- Both incoming and outgoing GDB packets are logged
on debug_level >= 3, so that both directions of the
GDB channel are visible.
- Non-printable characters are checked for in every packet
so that hey do not interfere with the terminal.
Change-Id: I0613e57ae5059b3279b0abcb71276cf5719a8699
Signed-off-by: Jan Matyas <matyas@codasip.com>
Reviewed-on: http://openocd.zylin.com/6269
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/renesas_rz_g2: Introduce tcl config file for RZ/G2 devices
Initial support for Renesas RZ/G2 MPU family
Change-Id: I5ca74cddfd0c105a5307de56c3ade7084f9c28d2
Signed-off-by: micbis <michele.bisogno.ct@renesas.com>
Reviewed-on: http://openocd.zylin.com/6250
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* drivers/jlink: Remove trailing dots
This makes the messages consistent with most of the rest of
the OpenOCD output.
Change-Id: I915a01187e7fc317e02483ac0bbd39ec077d6321
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6274
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: Use 'bool' for 'reset_halt'
Change-Id: I974a6360ea7467067511541ac212f2e9d3de7895
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6262
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* cmsis_dap: add support for swo commands
Replaced mixed snake_case_CamelCase with snake_case.
Define variables at first-use location.
CMSIS-DAP SWO specification:
https://arm-software.github.io/CMSIS_5/DAP/html/group__DAP__swo__gr.html
Change-Id: Ieba79b16efd445143f964b614673d041aae74f92
Signed-off-by: Adrian Negreanu <adrian.negreanu@nxp.com>
Reviewed-on: http://openocd.zylin.com/5820
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Add target_data_bits().
This is used to compute memory block read alignment, and specifically
allows 64-bit targets to ensure that memory block reads are only
requested on 64-bit boundaries.
Signed-off-by: Tim Newsome <tim@sifive.com>
Change-Id: Idb1a27b9fc02c46245556bb0f3d6d94b368c4817
Reviewed-on: http://openocd.zylin.com/6249
Reviewed-by: Marc Schink <dev@zapb.de>
Tested-by: jenkins
Reviewed-by: Jan Matyas <matyas@codasip.com>
Reviewed-by: Xiang W <wxjstz@126.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Avoid non-standard conditionals with omitted operands.
Fixes bug #257.
Change-Id: I05fc6468306d46399e769098e031e7e588798afc
Signed-off-by: R. Diez <rdiezmail-openocd@yahoo.de>
Reviewed-on: http://openocd.zylin.com/6271
Tested-by: jenkins
Reviewed-by: Xiang W <wxjstz@126.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/startup.tcl: Do not use 'Yoda conditions'
Change-Id: I5e1bbaf032659dda1b365ef4ec6ea4a635d921ce
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: http://openocd.zylin.com/6284
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Fix build.
Change-Id: I4f2667db91f84f07af354691aac5d4c9e3aea3fa
Signed-off-by: Tim Newsome <tim@sifive.com>
Co-authored-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Co-authored-by: Antonio Borneo <borneo.antonio@gmail.com>
Co-authored-by: Marc Schink <dev@zapb.de>
Co-authored-by: R. Diez <rdiezmail-openocd@yahoo.de>
Co-authored-by: Daniel Anselmi <danselmi@gmx.ch>
Co-authored-by: Evgeniy Didin <didin@synopsys.com>
Co-authored-by: Yasushi SHOJI <yashi@spacecubics.com>
Co-authored-by: Tomas Vanek <vanekt@fbl.cz>
Co-authored-by: Olivier DANET <odanet@caramail.com>
Co-authored-by: Thomas Gleixner <tglx@linutronix.de>
Co-authored-by: micbis <michele.bisogno.ct@renesas.com>
Co-authored-by: Chengyu Zheng <chengyu.zheng@polimi.it>
Co-authored-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Co-authored-by: Jan Matyas <matyas@codasip.com>
Co-authored-by: Adrian Negreanu <adrian.negreanu@nxp.com>
2021-06-11 15:01:55 -05:00
|
|
|
OpenOCD focuses mostly on JTAG. Your version may also support
|
2010-03-05 23:09:03 -06:00
|
|
|
other ways to communicate with target devices.
|
2009-09-19 01:42:50 -05:00
|
|
|
@item @b{Voltage} What voltage is your target - 1.8, 2.8, 3.3, or 5V?
|
2013-03-14 17:03:00 -05:00
|
|
|
Does your dongle support it? You might need a level converter.
|
2009-09-19 01:42:50 -05:00
|
|
|
@item @b{Pinout} What pinout does your target board use?
|
2013-03-14 17:03:00 -05:00
|
|
|
Does your dongle support it? You may be able to use jumper
|
2009-09-19 01:42:50 -05:00
|
|
|
wires, or an "octopus" connector, to convert pinouts.
|
2014-01-08 09:17:56 -06:00
|
|
|
@item @b{Connection} Does your computer have the USB, parallel, or
|
2009-09-19 01:42:50 -05:00
|
|
|
Ethernet port needed?
|
2010-03-05 23:09:03 -06:00
|
|
|
@item @b{RTCK} Do you expect to use it with ARM chips and boards with
|
2014-01-08 09:17:56 -06:00
|
|
|
RTCK support (also known as ``adaptive clocking'')?
|
2008-11-30 16:25:43 -06:00
|
|
|
@end enumerate
|
|
|
|
|
|
|
|
@section USB FT2232 Based
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
There are many USB JTAG dongles on the market, many of them based
|
2008-11-30 16:25:43 -06:00
|
|
|
on a chip from ``Future Technology Devices International'' (FTDI)
|
2009-05-27 19:47:30 -05:00
|
|
|
known as the FTDI FT2232; this is a USB full speed (12 Mbps) chip.
|
|
|
|
See: @url{http://www.ftdichip.com} for more information.
|
|
|
|
In summer 2009, USB high speed (480 Mbps) versions of these FTDI
|
2014-01-08 09:17:56 -06:00
|
|
|
chips started to become available in JTAG adapters. Around 2012, a new
|
2013-04-28 03:53:13 -05:00
|
|
|
variant appeared - FT232H - this is a single-channel version of FT2232H.
|
|
|
|
(Adapters using those high speed FT2232H or FT232H chips may support adaptive
|
|
|
|
clocking.)
|
2010-03-05 23:09:03 -06:00
|
|
|
|
|
|
|
The FT2232 chips are flexible enough to support some other
|
|
|
|
transport options, such as SWD or the SPI variants used to
|
|
|
|
program some chips. They have two communications channels,
|
|
|
|
and one can be used for a UART adapter at the same time the
|
|
|
|
other one is used to provide a debug adapter.
|
|
|
|
|
|
|
|
Also, some development boards integrate an FT2232 chip to serve as
|
2014-01-08 09:17:56 -06:00
|
|
|
a built-in low-cost debug adapter and USB-to-serial solution.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
@item @b{usbjtag}
|
2012-04-19 10:12:00 -05:00
|
|
|
@* Link @url{http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html}
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{jtagkey}
|
|
|
|
@* See: @url{http://www.amontec.com/jtagkey.shtml}
|
2009-08-18 11:46:48 -05:00
|
|
|
@item @b{jtagkey2}
|
|
|
|
@* See: @url{http://www.amontec.com/jtagkey2.shtml}
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{oocdlink}
|
2008-12-04 18:46:10 -06:00
|
|
|
@* See: @url{http://www.oocdlink.com} By Joern Kaipf
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{signalyzer}
|
|
|
|
@* See: @url{http://www.signalyzer.com}
|
2009-12-28 14:59:47 -06:00
|
|
|
@item @b{Stellaris Eval Boards}
|
2012-11-08 10:16:53 -06:00
|
|
|
@* See: @url{http://www.ti.com} - The Stellaris eval boards
|
2009-12-28 14:59:47 -06:00
|
|
|
bundle FT2232-based JTAG and SWD support, which can be used to debug
|
2013-03-14 17:03:00 -05:00
|
|
|
the Stellaris chips. Using separate JTAG adapters is optional.
|
2010-03-05 23:09:03 -06:00
|
|
|
These boards can also be used in a "pass through" mode as JTAG adapters
|
|
|
|
to other target boards, disabling the Stellaris chip.
|
2012-11-08 10:16:53 -06:00
|
|
|
@item @b{TI/Luminary ICDI}
|
|
|
|
@* See: @url{http://www.ti.com} - TI/Luminary In-Circuit Debug
|
2010-03-05 23:09:03 -06:00
|
|
|
Interface (ICDI) Boards are included in Stellaris LM3S9B9x
|
2013-03-14 17:03:00 -05:00
|
|
|
Evaluation Kits. Like the non-detachable FT2232 support on the other
|
2009-12-28 14:59:47 -06:00
|
|
|
Stellaris eval boards, they can be used to debug other target boards.
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{olimex-jtag}
|
|
|
|
@* See: @url{http://www.olimex.com}
|
2012-04-19 10:40:30 -05:00
|
|
|
@item @b{Flyswatter/Flyswatter2}
|
2008-11-30 16:25:43 -06:00
|
|
|
@* See: @url{http://www.tincantools.com}
|
|
|
|
@item @b{turtelizer2}
|
2009-05-27 19:47:30 -05:00
|
|
|
@* See:
|
|
|
|
@uref{http://www.ethernut.de/en/hardware/turtelizer/index.html, Turtelizer 2}, or
|
|
|
|
@url{http://www.ethernut.de}
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{comstick}
|
|
|
|
@* Link: @url{http://www.hitex.com/index.php?id=383}
|
|
|
|
@item @b{stm32stick}
|
2008-12-11 17:22:16 -06:00
|
|
|
@* Link @url{http://www.hitex.com/stm32-stick}
|
|
|
|
@item @b{axm0432_jtag}
|
2013-03-14 17:03:00 -05:00
|
|
|
@* Axiom AXM-0432 Link @url{http://www.axman.com} - NOTE: This JTAG does not appear
|
2012-04-19 10:12:00 -05:00
|
|
|
to be available anymore as of April 2012.
|
2009-05-27 06:58:19 -05:00
|
|
|
@item @b{cortino}
|
|
|
|
@* Link @url{http://www.hitex.com/index.php?id=cortino}
|
2011-10-13 17:21:06 -05:00
|
|
|
@item @b{dlp-usb1232h}
|
|
|
|
@* Link @url{http://www.dlpdesign.com/usb/usb1232h.shtml}
|
2012-04-04 14:05:25 -05:00
|
|
|
@item @b{digilent-hs1}
|
|
|
|
@* Link @url{http://www.digilentinc.com/Products/Detail.cfm?Prod=JTAG-HS1}
|
2012-12-27 16:50:52 -06:00
|
|
|
@item @b{opendous}
|
|
|
|
@* Link @url{http://code.google.com/p/opendous/wiki/JTAG} FT2232H-based
|
|
|
|
(OpenHardware).
|
2013-04-28 03:53:13 -05:00
|
|
|
@item @b{JTAG-lock-pick Tiny 2}
|
|
|
|
@* Link @url{http://www.distortec.com/jtag-lock-pick-tiny-2} FT232H-based
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2013-08-15 16:03:49 -05:00
|
|
|
@item @b{GW16042}
|
2024-05-12 15:03:08 -05:00
|
|
|
@* Link: @url{https://www.gateworks.com/} FT2232H-based
|
2013-08-15 16:03:49 -05:00
|
|
|
|
|
|
|
@end itemize
|
2009-12-26 17:05:06 -06:00
|
|
|
@section USB-JTAG / Altera USB-Blaster compatibles
|
|
|
|
|
|
|
|
These devices also show up as FTDI devices, but are not
|
|
|
|
protocol-compatible with the FT2232 devices. They are, however,
|
2013-03-14 17:03:00 -05:00
|
|
|
protocol-compatible among themselves. USB-JTAG devices typically consist
|
2009-12-26 17:05:06 -06:00
|
|
|
of a FT245 followed by a CPLD that understands a particular protocol,
|
2014-01-08 09:17:56 -06:00
|
|
|
or emulates this protocol using some other hardware.
|
2009-12-26 17:05:06 -06:00
|
|
|
|
|
|
|
They may appear under different USB VID/PID depending on the particular
|
2013-03-14 17:03:00 -05:00
|
|
|
product. The driver can be configured to search for any VID/PID pair
|
2009-12-26 17:05:06 -06:00
|
|
|
(see the section on driver commands).
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item @b{USB-JTAG} Kolja Waschk's USB Blaster-compatible adapter
|
2012-04-19 11:19:59 -05:00
|
|
|
@* Link: @url{http://ixo-jtag.sourceforge.net/}
|
2009-12-26 17:05:06 -06:00
|
|
|
@item @b{Altera USB-Blaster}
|
|
|
|
@* Link: @url{http://www.altera.com/literature/ug/ug_usb_blstr.pdf}
|
|
|
|
@end itemize
|
|
|
|
|
2014-10-20 12:18:38 -05:00
|
|
|
@section USB J-Link based
|
|
|
|
There are several OEM versions of the SEGGER @b{J-Link} adapter. It is
|
|
|
|
an example of a microcontroller based JTAG adapter, it uses an
|
2008-11-30 16:25:43 -06:00
|
|
|
AT91SAM764 internally.
|
|
|
|
|
|
|
|
@itemize @bullet
|
2014-10-20 12:18:38 -05:00
|
|
|
@item @b{SEGGER J-Link}
|
2008-11-30 16:25:43 -06:00
|
|
|
@* Link: @url{http://www.segger.com/jlink.html}
|
2014-10-20 12:18:38 -05:00
|
|
|
@item @b{Atmel SAM-ICE} (Only works with Atmel chips!)
|
|
|
|
@* Link: @url{http://www.atmel.com/tools/atmelsam-ice.aspx}
|
2008-11-30 16:25:43 -06:00
|
|
|
@item @b{IAR J-Link}
|
|
|
|
@end itemize
|
|
|
|
|
2008-12-18 22:25:22 -06:00
|
|
|
@section USB RLINK based
|
2013-03-14 16:38:19 -05:00
|
|
|
Raisonance has an adapter called @b{RLink}. It exists in a stripped-down form on the STM32 Primer,
|
|
|
|
permanently attached to the JTAG lines. It also exists on the STM32 Primer2, but that is wired for
|
|
|
|
SWD and not JTAG, thus not supported.
|
2008-12-18 22:25:22 -06:00
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
@item @b{Raisonance RLink}
|
2024-05-12 15:03:08 -05:00
|
|
|
@* Link: @url{https://www.raisonance.com/rlink.html}
|
2008-12-18 22:25:22 -06:00
|
|
|
@item @b{STM32 Primer}
|
|
|
|
@* Link: @url{http://www.stm32circle.com/resources/stm32primer.php}
|
|
|
|
@item @b{STM32 Primer2}
|
|
|
|
@* Link: @url{http://www.stm32circle.com/resources/stm32primer2.php}
|
|
|
|
@end itemize
|
|
|
|
|
2012-01-05 04:31:03 -06:00
|
|
|
@section USB ST-LINK based
|
2018-10-04 04:11:31 -05:00
|
|
|
STMicroelectronics has an adapter called @b{ST-LINK}.
|
|
|
|
They only work with STMicroelectronics chips, notably STM32 and STM8.
|
2012-01-05 04:31:03 -06:00
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
@item @b{ST-LINK}
|
|
|
|
@* This is available standalone and as part of some kits, eg. STM32VLDISCOVERY.
|
|
|
|
@* Link: @url{http://www.st.com/internet/evalboard/product/219866.jsp}
|
|
|
|
@item @b{ST-LINK/V2}
|
|
|
|
@* This is available standalone and as part of some kits, eg. STM32F4DISCOVERY.
|
|
|
|
@* Link: @url{http://www.st.com/internet/evalboard/product/251168.jsp}
|
2018-09-24 08:25:46 -05:00
|
|
|
@item @b{STLINK-V3}
|
|
|
|
@* This is available standalone and as part of some kits.
|
|
|
|
@* Link: @url{http://www.st.com/stlink-v3}
|
2022-12-13 09:12:08 -06:00
|
|
|
@item @b{STLINK-V3PWR}
|
|
|
|
@* This is available standalone.
|
|
|
|
Beside the debugger functionality, the probe includes a SMU (source
|
|
|
|
measurement unit) aimed at analyzing power consumption during code
|
|
|
|
execution. The SMU is not supported by OpenOCD.
|
|
|
|
@* Link: @url{http://www.st.com/stlink-v3pwr}
|
2012-01-05 04:31:03 -06:00
|
|
|
@end itemize
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
For info the original ST-LINK enumerates using the mass storage usb class; however,
|
|
|
|
its implementation is completely broken. The result is this causes issues under Linux.
|
|
|
|
The simplest solution is to get Linux to ignore the ST-LINK using one of the following methods:
|
2012-02-06 08:54:00 -06:00
|
|
|
@itemize @bullet
|
|
|
|
@item modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
|
|
|
|
@item add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf
|
|
|
|
@end itemize
|
|
|
|
|
2012-11-08 10:09:33 -06:00
|
|
|
@section USB TI/Stellaris ICDI based
|
|
|
|
Texas Instruments has an adapter called @b{ICDI}.
|
|
|
|
It is not to be confused with the FTDI based adapters that were originally fitted to their
|
|
|
|
evaluation boards. This is the adapter fitted to the Stellaris LaunchPad.
|
|
|
|
|
2020-04-29 09:53:52 -05:00
|
|
|
@section USB Nuvoton Nu-Link
|
|
|
|
Nuvoton has an adapter called @b{Nu-Link}.
|
|
|
|
It is available either as stand-alone dongle and embedded on development boards.
|
|
|
|
It supports SWD, serial port bridge and mass storage for firmware update.
|
2020-06-11 16:55:18 -05:00
|
|
|
Both Nu-Link v1 and v2 are supported.
|
2020-04-29 09:53:52 -05:00
|
|
|
|
2013-12-19 15:33:19 -06:00
|
|
|
@section USB CMSIS-DAP based
|
|
|
|
ARM has released a interface standard called CMSIS-DAP that simplifies connecting
|
|
|
|
debuggers to ARM Cortex based targets @url{http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm}.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@section USB Other
|
|
|
|
@itemize @bullet
|
|
|
|
@item @b{USBprog}
|
2012-04-22 08:21:43 -05:00
|
|
|
@* Link: @url{http://shop.embedded-projects.net/} - which uses an Atmel MEGA32 and a UBN9604
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-09-21 13:52:45 -05:00
|
|
|
@item @b{USB - Presto}
|
2008-11-30 16:25:43 -06:00
|
|
|
@* Link: @url{http://tools.asix.net/prg_presto.htm}
|
2008-12-26 20:56:55 -06:00
|
|
|
|
|
|
|
@item @b{Versaloon-Link}
|
2012-04-22 08:29:03 -05:00
|
|
|
@* Link: @url{http://www.versaloon.com}
|
2009-03-08 10:14:18 -05:00
|
|
|
|
|
|
|
@item @b{ARM-JTAG-EW}
|
|
|
|
@* Link: @url{http://www.olimex.com/dev/arm-jtag-ew.html}
|
2010-03-08 06:45:14 -06:00
|
|
|
|
2023-06-16 18:11:15 -05:00
|
|
|
@item @b{angie}
|
|
|
|
@* Link: @url{https://nanoxplore.org/}
|
|
|
|
|
2010-03-08 06:45:14 -06:00
|
|
|
@item @b{Buspirate}
|
|
|
|
@* Link: @url{http://dangerousprototypes.com/bus-pirate-manual/}
|
2012-05-11 03:10:54 -05:00
|
|
|
|
|
|
|
@item @b{opendous}
|
2012-12-27 16:50:52 -06:00
|
|
|
@* Link: @url{http://code.google.com/p/opendous-jtag/} - which uses an AT90USB162
|
2012-05-11 03:10:54 -05:00
|
|
|
|
|
|
|
@item @b{estick}
|
|
|
|
@* Link: @url{http://code.google.com/p/estick-jtag/}
|
2012-07-23 08:54:22 -05:00
|
|
|
|
|
|
|
@item @b{Keil ULINK v1}
|
|
|
|
@* Link: @url{http://www.keil.com/ulink1/}
|
2018-01-02 15:27:51 -06:00
|
|
|
|
|
|
|
@item @b{TI XDS110 Debug Probe}
|
2020-03-04 17:24:33 -06:00
|
|
|
@* Link: @url{https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds110.html}
|
|
|
|
@* Link: @url{https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds_software_package_download.html#xds110-support-utilities}
|
2008-11-30 16:25:43 -06:00
|
|
|
@end itemize
|
|
|
|
|
|
|
|
@section IBM PC Parallel Printer Port Based
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
The two well-known ``JTAG Parallel Ports'' cables are the Xilinx DLC5
|
2012-04-22 08:47:37 -05:00
|
|
|
and the Macraigor Wiggler. There are many clones and variations of
|
2008-11-30 16:25:43 -06:00
|
|
|
these on the market.
|
|
|
|
|
2009-09-19 01:42:50 -05:00
|
|
|
Note that parallel ports are becoming much less common, so if you
|
|
|
|
have the choice you should probably avoid these adapters in favor
|
|
|
|
of USB-based ones.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@itemize @bullet
|
|
|
|
|
|
|
|
@item @b{Wiggler} - There are many clones of this.
|
|
|
|
@* Link: @url{http://www.macraigor.com/wiggler.htm}
|
|
|
|
|
|
|
|
@item @b{DLC5} - From XILINX - There are many clones of this
|
|
|
|
@* Link: Search the web for: ``XILINX DLC5'' - it is no longer
|
|
|
|
produced, PDF schematics are easily found and it is easy to make.
|
|
|
|
|
|
|
|
@item @b{Amontec - JTAG Accelerator}
|
|
|
|
@* Link: @url{http://www.amontec.com/jtag_accelerator.shtml}
|
|
|
|
|
|
|
|
@item @b{Wiggler2}
|
2012-04-22 08:47:37 -05:00
|
|
|
@* Link: @url{http://www.ccac.rwth-aachen.de/~michaels/index.php/hardware/armjtag}
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@item @b{Wiggler_ntrst_inverted}
|
|
|
|
@* Yet another variation - See the source code, src/jtag/parport.c
|
|
|
|
|
|
|
|
@item @b{old_amt_wiggler}
|
|
|
|
@* Unknown - probably not on the market today
|
|
|
|
|
|
|
|
@item @b{arm-jtag}
|
|
|
|
@* Link: Most likely @url{http://www.olimex.com/dev/arm-jtag.html} [another wiggler clone]
|
|
|
|
|
|
|
|
@item @b{chameleon}
|
|
|
|
@* Link: @url{http://www.amontec.com/chameleon.shtml}
|
|
|
|
|
|
|
|
@item @b{Triton}
|
|
|
|
@* Unknown.
|
|
|
|
|
|
|
|
@item @b{Lattice}
|
2009-05-27 19:47:30 -05:00
|
|
|
@* ispDownload from Lattice Semiconductor
|
|
|
|
@url{http://www.latticesemi.com/lit/docs/@/devtools/dlcable.pdf}
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@item @b{flashlink}
|
2018-02-10 08:08:26 -06:00
|
|
|
@* From STMicroelectronics;
|
2012-04-22 08:54:02 -05:00
|
|
|
@* Link: @url{http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/DM00039500.pdf}
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
@section Other...
|
|
|
|
@itemize @bullet
|
|
|
|
|
|
|
|
@item @b{ep93xx}
|
2009-03-20 08:27:02 -05:00
|
|
|
@* An EP93xx based Linux machine using the GPIO pins directly.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@item @b{at91rm9200}
|
|
|
|
@* Like the EP93xx - but an ATMEL AT91RM9200 based solution using the GPIO pins on the chip.
|
|
|
|
|
2012-07-22 08:28:02 -05:00
|
|
|
@item @b{bcm2835gpio}
|
|
|
|
@* A BCM2835-based board (e.g. Raspberry Pi) using the GPIO pins of the expansion header.
|
|
|
|
|
2017-04-18 09:12:58 -05:00
|
|
|
@item @b{imx_gpio}
|
|
|
|
@* A NXP i.MX-based board (e.g. Wandboard) using the GPIO pins (should work on any i.MX processor).
|
|
|
|
|
2022-04-18 17:27:22 -05:00
|
|
|
@item @b{am335xgpio}
|
|
|
|
@* A Texas Instruments AM335x-based board (e.g. BeagleBone Black) using the GPIO pins of the expansion headers.
|
|
|
|
|
2013-09-06 11:42:39 -05:00
|
|
|
@item @b{jtag_vpi}
|
|
|
|
@* A JTAG driver acting as a client for the JTAG VPI server interface.
|
|
|
|
@* Link: @url{http://github.com/fjullien/jtag_vpi}
|
|
|
|
|
From upstream (#684)
* flash/nor/atsame5: add LAN9255 devices
Support Microchip LAN9255 devices with embedded SAME53J MCU.
Signed-off-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Change-Id: Ia811c593bf7cf73e588d32873c68eb67c6fafad7
Reviewed-on: https://review.openocd.org/c/openocd/+/6811
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/board: Add EVB-LAN9255 config
Config for EVB-LAN9255, tested using Atmel-ICE debugger on J10
connector.
Signed-off-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Change-Id: I8bcf779e9363499a98aa0b7d10819c53da6a19e7
Reviewed-on: https://review.openocd.org/c/openocd/+/6812
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* aarch64: support for aarch32 ARM_MODE_UND
Fix:
unrecognized psr mode: 0x1b
cannot read system control register in this mode: (UNRECOGNIZED : 0x1b)
Change-Id: I4dc3e72f90d57e52c0fe63cb59a7529a398757b3
Signed-off-by: Julien Massot <julien.massot@iot.bzh>
Change-Id: Ifa5d21ae97492fde9e8c79ee7d99d8a2a871b1b5
Reviewed-on: https://review.openocd.org/c/openocd/+/6808
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Combine register lists of smp targets.
This is helpful when you want to pretend to gdb that your heterogeneous
multicore system is homogeneous, because gdb cannot handle heterogeneous
systems. This won't always works, but works fine if e.g. one of the
cores has an FPU while the other does not. (Specifically, HiFive
Unleashed has 1 core with no FPU, plus 4 cores with an FPU.)
Signed-off-by: Tim Newsome <tim@sifive.com>
Change-Id: I05ff4c28646778fbc00327bc510be064bfe6c9f0
Reviewed-on: https://review.openocd.org/c/openocd/+/6362
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* semihosting: use open mode flags from GDB, not from sys/stat.h
Values defined in sys/stat.h are not guaranteed to match
the constants defined by the GDB remote protocol, which are defined in
https://sourceware.org/gdb/onlinedocs/gdb/Open-Flags.html#Open-Flags.
On my local system (Manjaro 21.2.1 x86_64), for example, O_TRUNC is
defined as 0x40, whereas GDB requires it to be 0x400,
causing all "w" file open modes to misbehave.
This patch has been tested with STM32F446.
Change-Id: Ifb2c740fd689e71d6f1a4bde1edaecd76fdca910
Signed-off-by: Pavel Kirienko <pavel.kirienko@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6804
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* semihosting: User defined operation, Tcl command exec on host
Enabling a portion (0x100 - 0x107) of the user defined semihosting
operation number range (0x100 - 0x1FF) to be processed with the help of
the existing target event mechanism, to implement a general-purpose Tcl
interface for the target available on the host, via semihosting
interface.
Example usage:
- The user configures a Tcl command as a callback for one of the newly
defined events (semihosting-user-cmd-0x10X) in the configuration
file.
- The target can make a semihosting call with <opnum>, passing optional
parameters for the call.
If there is no callback registered to the user defined operation number,
nothing happens.
Example usage: Configure RTT automatically with the exact, linked
control block location from target.
Signed-off-by: Zoltán Dudás <zedudi@gmail.com>
Change-Id: I10e1784b1fecd4e630d78df81cb44bf1aa2fc247
Reviewed-on: https://review.openocd.org/c/openocd/+/6748
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/smp: use a struct list_head to hold the smp targets
Instead of reinventing a simply linked list, reuse the list helper
for the list of targets in a smp cluster.
Using the existing helper, that implements a double linked list,
makes trivial going through the list in reverse order.
Change-Id: Ib36ad2955f15cd2a601b0b9e36ca6d948b12d00f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6783
Tested-by: jenkins
* helper/list: add list_for_each_entry_direction()
Use a bool flag to specify if the list should be forward or
backward iterated.
Change-Id: Ied19d049f46cdcb7f50137d459cc7c02014526bc
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6784
Tested-by: jenkins
* target/riscv: revive 'riscv resume_order'
This functionality was lost in [1], which was merged as commit
615709d14049 ("Upstream a whole host of RISC-V changes.").
Now it works as expected again.
Add convenience macro foreach_smp_target_direction().
Link: [1] https://github.com/riscv/riscv-openocd/pull/567
Change-Id: I1545fa6b45b8a07e27c8ff9dcdcfa2fc4f950cd1
Signed-off-by: Tim Newsome <tim@sifive.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6785
Tested-by: jenkins
* doxygen: fix some function prototype description
Change-Id: I49311a643ea73143839d2f6bde976cfd76f8c67f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6830
Tested-by: jenkins
* Cadence virtual debug interface (vdebug) integration
Change-Id: I1bc105b3addc3f34161c2356c482ff3011e3f2cc
Signed-off-by: Jacek Wuwer <jacekmw8@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6097
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* gdb_server: Include thread name as XML attribute
Explicitly providing a thread name in the "thread" element produces
better thread visualizations in downstream tools like IDEs.
Signed-off-by: Ben McMorran <bemcmorr@microsoft.com>
Change-Id: I102c14ddb8b87757fa474de8e3a3f6a1cfe10d98
Reviewed-on: https://review.openocd.org/c/openocd/+/6828
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Fix small memory leak.
See https://github.com/riscv/riscv-openocd/pull/672
Change-Id: Ia11ab9bcf860f770ea64ad867102c74b898f6b66
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6831
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* server: remove remaining crust from dropped eCos code
Commit 39650e2273bc ("ecosboard: delete bit-rotted eCos code") has
removed eCos code but has left some empty function that was used
during non-eCos build to replace eCos mutex.
Drop the functions and the file that contain them.
Change-Id: I31bc0237ea699c11bd70921660f960ee406ffa80
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6835
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* rtos: threadx: Add hla_target support for ThreadX
Tested with an AZ3166 dev board (which uses the STM32F412ZGT6) running
the Azure RTOS ThreadX demonstration system.
Signed-off-by: Ben McMorran <bemcmorr@microsoft.com>
Change-Id: I44c8f7701d9f1aaa872274166321cd7d34fb1855
Reviewed-on: https://review.openocd.org/c/openocd/+/6829
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* .gitmodules: switch away from repo.or.cz
The host repo.or.cz is often offline, creating issues for cloning
and building OpenOCD from scratch.
Already 'jimtcl' developer has dropped repo.or.cz, triggering the
OpenOCD commit 861e75f54efb ("jimtcl: switch to github").
Change also the link of the remaining submodules 'git2cl' and
'libjaylink' to their respective main repository.
Change-Id: Ib513237427635359ce36a480a8f2060e2fb12ba4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6834
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
* flash/nor/stm32f2x: Fix erase of bank 2 sectors
This commit corrects the erase function for stm32f2x when dealing with
sectors in bank 2, for STM32F42x/43x devices with 1MB flash.
On STM32F42x/43x with 1MB flash in dual bank configuration, the sector
numbering is not consecutive. The last sector in bank 1 is number 7, and
the first sector in bank 2 is number 12.
The sector indices used by openocd, however, _are_ consecutive (0 to 15
in this case). The arguments "first" and "last" to stm32x_erase() are of
this type, and so the logic surrounding sector numbers needed to be
corrected.
Since the two banks in dual bank mode have the same number of sectors, a
sector index in bank 2 is larger than or equal to half the total number
of sectors.
Change-Id: I15260f8a86d9002769a1ae1c40ebdf62142dae18
Signed-off-by: Simon Johansson <ampleyfly@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6810
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* target/cortex_m: fix target_to_cm() helper
The third parameter of container_of() should point to the same member
as target->arch_info points to, struct arm.
It worked just because struct arm is the first member in
struct armv7m_common.
If you move arm member from the first place, OpenOCD fails heavily.
Change-Id: I0c0a5221490945563e17a0a34d99a603f1d6c2ff
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6749
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/armv7m,cortex_m: introduce checked arch_info cast routines
target_to_armv7m() and target_to_cm() do not match the magic number
so they are not suitable for use outside of target driver code.
Add checked versions of pointer getters. Match the magic number
to ensure the returned value points to struct of the correct type.
Change-Id: If90ef7e969ef04f0f2103e0da29dcbe8e1ac1c0d
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6750
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/cortex_m: add Cortex-M part number getter
The getter checks the magic numbers in arch_info to detect eventual
type mismatch.
Change-Id: I61134b05310a97ae9831517d0516c7b4240d35a5
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6751
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* flash/nor/stm32xx: fix segfault accessing Cortex-M part number
Some of STM32 flash drivers read Cortex-M part number from
cortex_m->core_info.
In corner cases the core_info pointer was observed uninitialised
even if target_was_examined() returned true. See also [1]
Use the new and safe helper to get Cortex-M part number.
While on it switch also target_to_cm()/target_to_armv7m() to the safe
versions. This prevents a crash when the flash bank is misconfigured
with non-Cortex-M target.
Add missing checks for target_was_examined() to flash probes.
[1] 6545: fix crash in case cortex_m->core_info is not set
https://review.openocd.org/c/openocd/+/6545
Change-Id: If2471af74ebfe22f14442f48ae109b2e1bb5fa3b
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Fixes: f5898bd93ff8 (flash/stm32fxx.c: do not read CPUID as this info is stored in cortex_m_common)
Reviewed-on: https://review.openocd.org/c/openocd/+/6752
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* cpld: altera-epm240: Add additional IDCODEs
This adds some additional IDCODEs from the datasheet. It also adds
support for customizing the tap name.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I7cda10b92c229b61836c12cd9ca410de358ede2e
Reviewed-on: https://review.openocd.org/c/openocd/+/6846
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* cpld: altera-epm240: Increase adapter speed
According to the datasheet, the minimum clock period with Vccio1 = 1.5V
(the lowest voltage supported) is 143ns, or around 6MHz. Set the default
adapter speed to 5 MHz.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I21cad33fa7f1e25e81f43b5d2214d1fa4ec924de
Reviewed-on: https://review.openocd.org/c/openocd/+/6847
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: Add support for ls1088a
The LS1088A is an octo-core aarch64 processor from NXP in the layerscape
family. The JTAG is undocumented, but I was able to figure things out
from the output of `dap info`. This is the first in-tree example of
using the hwthread rtos (as far as I know), so hopefully it can serve as
an example to other developers. There are some ETMs, but I was unable to
try them out because I got 'invalid command name "etm"' when trying to
test things out.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I9b0791d27d8c41170a413a8d86431107a85feba2
Reviewed-on: https://review.openocd.org/c/openocd/+/6848
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: ls1088a: Add service processor
Normally the service processor is not necessary for debugging. However,
if you are using the hard-coded RCW or your boot source is otherwise
corrupt, then the general purpose processors will never be released from
hold-off. This will cause GDB to become confused if it tries to attach,
since they will appear to be running arm32 processors. To deal with
this, we can release the CPUs manually with the BRRL register. This
register cannot be written to from the axi target, so we need to do it
from the service processor target. This involves halting the service
processor, modifying the register, and then resuming it again. We try
and determine what state the service processor was in to avoid resuming
it if it was already halted.
The reset vector for the general purpose processors is determined by the
boot logation pointer registers in the device configuration unit.
Normally these are set using pre-boot initialization commands, but if
they are not set then they default to 0. This will cause the CPU to
almost immediately hit an illegal instruction. This is fine because we
will almost certainly want to attach to the processor and load a program
anyway.
I considered adding this as an event handler for either gdb-attach or
reset-init. However, this command shouldn't be necessary most of the
time, and so I don't think we should run it automatically.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I1b725292d8a11274d03af5313dc83678e10e944c
Reviewed-on: https://review.openocd.org/c/openocd/+/6850
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* board: Add NXP LS1088ARDB
This adds a board file for the NXP LS1088ARDB. This only covers the
"primary" JTAG header J55, and not the PCIe header (J91). The only
oddity is that the LS1088A and CPLD are muxed by adding/removing a
jumper from J48. Unfortunately, it doesn't look like OpenOCD supports
this CPLD beyond determining the irlen, so it's not very useful. Those
who are interested in experimenting can define CWTAP to access the CPLD,
but the default is to access the CPU.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: Ia07436a534f86bd907aa5fe2a78a326a27855a24
Reviewed-on: https://review.openocd.org/c/openocd/+/6849
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* gdb_server: fix double free
Commit 6541233aa78d ("Combine register lists of smp targets.")
unconditionally assigns the output pointers of the function
smp_reg_list_noread(), even if the function fails and returns
error.
This causes a double free from the caller, that has assigned NULL
to the pointers to simplify the error handling.
Use local variables in smp_reg_list_noread() and assign the output
pointers only on success.
Change-Id: Ic0fd2f26520566cf322f0190780e15637c01cfae
Fixes: 6541233aa78d ("Combine register lists of smp targets.")
Reported-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6852
Tested-by: jenkins
Reviewed-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* gdb_server: check target examined while combining reg list
Commit 6541233aa78d ("Combine register lists of smp targets.")
assumes that all the targets in the SMP cluster are already
examined and unconditionally call target_get_gdb_reg_list_noread()
that will in turn return error if the target is not examined yet.
Skip targets not examined yet.
Add an additional check in case the register list cannot be built,
e.g. because no target in the SMP cluster is examined. This should
never happen, but it's better to play safe.
Change-Id: I8609815c3d5144790fb05a870cb0c931540aef8a
Fixes: 6541233aa78d ("Combine register lists of smp targets.")
Reported-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6853
Tested-by: jenkins
Reviewed-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* flash/stm32l4x: fix maybe-uninitialized compiler error
using gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 we get:
error: ‘retval’ may be used uninitialized in this function
fixes: 13cd75b6ecfd (flash/nor/stm32xx: fix segfault accessing Cortex-M part number)
Change-Id: I897c40c5d2233f50a5385d251ebfa536023e5cf7
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6861
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Fix build.
Change-Id: Ia60246246dd859d75659a43d1c59588dbb274d46
Signed-off-by: Tim Newsome <tim@sifive.com>
Co-authored-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Co-authored-by: Julien Massot <julien.massot@iot.bzh>
Co-authored-by: Pavel Kirienko <pavel.kirienko@gmail.com>
Co-authored-by: Zoltán Dudás <zedudi@gmail.com>
Co-authored-by: Antonio Borneo <borneo.antonio@gmail.com>
Co-authored-by: Jacek Wuwer <jacekmw8@gmail.com>
Co-authored-by: Ben McMorran <bemcmorr@microsoft.com>
Co-authored-by: Simon Johansson <ampleyfly@gmail.com>
Co-authored-by: Tomas Vanek <vanekt@fbl.cz>
Co-authored-by: Sean Anderson <sean.anderson@seco.com>
Co-authored-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
2022-03-03 12:03:55 -06:00
|
|
|
@item @b{vdebug}
|
|
|
|
@* A driver for Cadence virtual Debug Interface to emulated or simulated targets.
|
|
|
|
It implements a client connecting to the vdebug server, which in turn communicates
|
2022-05-04 03:15:57 -05:00
|
|
|
with the emulated or simulated RTL model through a transactor. The driver supports
|
|
|
|
JTAG and DAP-level transports.
|
From upstream (#684)
* flash/nor/atsame5: add LAN9255 devices
Support Microchip LAN9255 devices with embedded SAME53J MCU.
Signed-off-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Change-Id: Ia811c593bf7cf73e588d32873c68eb67c6fafad7
Reviewed-on: https://review.openocd.org/c/openocd/+/6811
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/board: Add EVB-LAN9255 config
Config for EVB-LAN9255, tested using Atmel-ICE debugger on J10
connector.
Signed-off-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Change-Id: I8bcf779e9363499a98aa0b7d10819c53da6a19e7
Reviewed-on: https://review.openocd.org/c/openocd/+/6812
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* aarch64: support for aarch32 ARM_MODE_UND
Fix:
unrecognized psr mode: 0x1b
cannot read system control register in this mode: (UNRECOGNIZED : 0x1b)
Change-Id: I4dc3e72f90d57e52c0fe63cb59a7529a398757b3
Signed-off-by: Julien Massot <julien.massot@iot.bzh>
Change-Id: Ifa5d21ae97492fde9e8c79ee7d99d8a2a871b1b5
Reviewed-on: https://review.openocd.org/c/openocd/+/6808
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Combine register lists of smp targets.
This is helpful when you want to pretend to gdb that your heterogeneous
multicore system is homogeneous, because gdb cannot handle heterogeneous
systems. This won't always works, but works fine if e.g. one of the
cores has an FPU while the other does not. (Specifically, HiFive
Unleashed has 1 core with no FPU, plus 4 cores with an FPU.)
Signed-off-by: Tim Newsome <tim@sifive.com>
Change-Id: I05ff4c28646778fbc00327bc510be064bfe6c9f0
Reviewed-on: https://review.openocd.org/c/openocd/+/6362
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* semihosting: use open mode flags from GDB, not from sys/stat.h
Values defined in sys/stat.h are not guaranteed to match
the constants defined by the GDB remote protocol, which are defined in
https://sourceware.org/gdb/onlinedocs/gdb/Open-Flags.html#Open-Flags.
On my local system (Manjaro 21.2.1 x86_64), for example, O_TRUNC is
defined as 0x40, whereas GDB requires it to be 0x400,
causing all "w" file open modes to misbehave.
This patch has been tested with STM32F446.
Change-Id: Ifb2c740fd689e71d6f1a4bde1edaecd76fdca910
Signed-off-by: Pavel Kirienko <pavel.kirienko@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6804
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* semihosting: User defined operation, Tcl command exec on host
Enabling a portion (0x100 - 0x107) of the user defined semihosting
operation number range (0x100 - 0x1FF) to be processed with the help of
the existing target event mechanism, to implement a general-purpose Tcl
interface for the target available on the host, via semihosting
interface.
Example usage:
- The user configures a Tcl command as a callback for one of the newly
defined events (semihosting-user-cmd-0x10X) in the configuration
file.
- The target can make a semihosting call with <opnum>, passing optional
parameters for the call.
If there is no callback registered to the user defined operation number,
nothing happens.
Example usage: Configure RTT automatically with the exact, linked
control block location from target.
Signed-off-by: Zoltán Dudás <zedudi@gmail.com>
Change-Id: I10e1784b1fecd4e630d78df81cb44bf1aa2fc247
Reviewed-on: https://review.openocd.org/c/openocd/+/6748
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/smp: use a struct list_head to hold the smp targets
Instead of reinventing a simply linked list, reuse the list helper
for the list of targets in a smp cluster.
Using the existing helper, that implements a double linked list,
makes trivial going through the list in reverse order.
Change-Id: Ib36ad2955f15cd2a601b0b9e36ca6d948b12d00f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6783
Tested-by: jenkins
* helper/list: add list_for_each_entry_direction()
Use a bool flag to specify if the list should be forward or
backward iterated.
Change-Id: Ied19d049f46cdcb7f50137d459cc7c02014526bc
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6784
Tested-by: jenkins
* target/riscv: revive 'riscv resume_order'
This functionality was lost in [1], which was merged as commit
615709d14049 ("Upstream a whole host of RISC-V changes.").
Now it works as expected again.
Add convenience macro foreach_smp_target_direction().
Link: [1] https://github.com/riscv/riscv-openocd/pull/567
Change-Id: I1545fa6b45b8a07e27c8ff9dcdcfa2fc4f950cd1
Signed-off-by: Tim Newsome <tim@sifive.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6785
Tested-by: jenkins
* doxygen: fix some function prototype description
Change-Id: I49311a643ea73143839d2f6bde976cfd76f8c67f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6830
Tested-by: jenkins
* Cadence virtual debug interface (vdebug) integration
Change-Id: I1bc105b3addc3f34161c2356c482ff3011e3f2cc
Signed-off-by: Jacek Wuwer <jacekmw8@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6097
Tested-by: jenkins
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* gdb_server: Include thread name as XML attribute
Explicitly providing a thread name in the "thread" element produces
better thread visualizations in downstream tools like IDEs.
Signed-off-by: Ben McMorran <bemcmorr@microsoft.com>
Change-Id: I102c14ddb8b87757fa474de8e3a3f6a1cfe10d98
Reviewed-on: https://review.openocd.org/c/openocd/+/6828
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Fix small memory leak.
See https://github.com/riscv/riscv-openocd/pull/672
Change-Id: Ia11ab9bcf860f770ea64ad867102c74b898f6b66
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6831
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* server: remove remaining crust from dropped eCos code
Commit 39650e2273bc ("ecosboard: delete bit-rotted eCos code") has
removed eCos code but has left some empty function that was used
during non-eCos build to replace eCos mutex.
Drop the functions and the file that contain them.
Change-Id: I31bc0237ea699c11bd70921660f960ee406ffa80
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6835
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* rtos: threadx: Add hla_target support for ThreadX
Tested with an AZ3166 dev board (which uses the STM32F412ZGT6) running
the Azure RTOS ThreadX demonstration system.
Signed-off-by: Ben McMorran <bemcmorr@microsoft.com>
Change-Id: I44c8f7701d9f1aaa872274166321cd7d34fb1855
Reviewed-on: https://review.openocd.org/c/openocd/+/6829
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* .gitmodules: switch away from repo.or.cz
The host repo.or.cz is often offline, creating issues for cloning
and building OpenOCD from scratch.
Already 'jimtcl' developer has dropped repo.or.cz, triggering the
OpenOCD commit 861e75f54efb ("jimtcl: switch to github").
Change also the link of the remaining submodules 'git2cl' and
'libjaylink' to their respective main repository.
Change-Id: Ib513237427635359ce36a480a8f2060e2fb12ba4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6834
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
* flash/nor/stm32f2x: Fix erase of bank 2 sectors
This commit corrects the erase function for stm32f2x when dealing with
sectors in bank 2, for STM32F42x/43x devices with 1MB flash.
On STM32F42x/43x with 1MB flash in dual bank configuration, the sector
numbering is not consecutive. The last sector in bank 1 is number 7, and
the first sector in bank 2 is number 12.
The sector indices used by openocd, however, _are_ consecutive (0 to 15
in this case). The arguments "first" and "last" to stm32x_erase() are of
this type, and so the logic surrounding sector numbers needed to be
corrected.
Since the two banks in dual bank mode have the same number of sectors, a
sector index in bank 2 is larger than or equal to half the total number
of sectors.
Change-Id: I15260f8a86d9002769a1ae1c40ebdf62142dae18
Signed-off-by: Simon Johansson <ampleyfly@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6810
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* target/cortex_m: fix target_to_cm() helper
The third parameter of container_of() should point to the same member
as target->arch_info points to, struct arm.
It worked just because struct arm is the first member in
struct armv7m_common.
If you move arm member from the first place, OpenOCD fails heavily.
Change-Id: I0c0a5221490945563e17a0a34d99a603f1d6c2ff
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6749
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/armv7m,cortex_m: introduce checked arch_info cast routines
target_to_armv7m() and target_to_cm() do not match the magic number
so they are not suitable for use outside of target driver code.
Add checked versions of pointer getters. Match the magic number
to ensure the returned value points to struct of the correct type.
Change-Id: If90ef7e969ef04f0f2103e0da29dcbe8e1ac1c0d
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6750
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/cortex_m: add Cortex-M part number getter
The getter checks the magic numbers in arch_info to detect eventual
type mismatch.
Change-Id: I61134b05310a97ae9831517d0516c7b4240d35a5
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6751
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* flash/nor/stm32xx: fix segfault accessing Cortex-M part number
Some of STM32 flash drivers read Cortex-M part number from
cortex_m->core_info.
In corner cases the core_info pointer was observed uninitialised
even if target_was_examined() returned true. See also [1]
Use the new and safe helper to get Cortex-M part number.
While on it switch also target_to_cm()/target_to_armv7m() to the safe
versions. This prevents a crash when the flash bank is misconfigured
with non-Cortex-M target.
Add missing checks for target_was_examined() to flash probes.
[1] 6545: fix crash in case cortex_m->core_info is not set
https://review.openocd.org/c/openocd/+/6545
Change-Id: If2471af74ebfe22f14442f48ae109b2e1bb5fa3b
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Fixes: f5898bd93ff8 (flash/stm32fxx.c: do not read CPUID as this info is stored in cortex_m_common)
Reviewed-on: https://review.openocd.org/c/openocd/+/6752
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
* cpld: altera-epm240: Add additional IDCODEs
This adds some additional IDCODEs from the datasheet. It also adds
support for customizing the tap name.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I7cda10b92c229b61836c12cd9ca410de358ede2e
Reviewed-on: https://review.openocd.org/c/openocd/+/6846
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* cpld: altera-epm240: Increase adapter speed
According to the datasheet, the minimum clock period with Vccio1 = 1.5V
(the lowest voltage supported) is 143ns, or around 6MHz. Set the default
adapter speed to 5 MHz.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I21cad33fa7f1e25e81f43b5d2214d1fa4ec924de
Reviewed-on: https://review.openocd.org/c/openocd/+/6847
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: Add support for ls1088a
The LS1088A is an octo-core aarch64 processor from NXP in the layerscape
family. The JTAG is undocumented, but I was able to figure things out
from the output of `dap info`. This is the first in-tree example of
using the hwthread rtos (as far as I know), so hopefully it can serve as
an example to other developers. There are some ETMs, but I was unable to
try them out because I got 'invalid command name "etm"' when trying to
test things out.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I9b0791d27d8c41170a413a8d86431107a85feba2
Reviewed-on: https://review.openocd.org/c/openocd/+/6848
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: ls1088a: Add service processor
Normally the service processor is not necessary for debugging. However,
if you are using the hard-coded RCW or your boot source is otherwise
corrupt, then the general purpose processors will never be released from
hold-off. This will cause GDB to become confused if it tries to attach,
since they will appear to be running arm32 processors. To deal with
this, we can release the CPUs manually with the BRRL register. This
register cannot be written to from the axi target, so we need to do it
from the service processor target. This involves halting the service
processor, modifying the register, and then resuming it again. We try
and determine what state the service processor was in to avoid resuming
it if it was already halted.
The reset vector for the general purpose processors is determined by the
boot logation pointer registers in the device configuration unit.
Normally these are set using pre-boot initialization commands, but if
they are not set then they default to 0. This will cause the CPU to
almost immediately hit an illegal instruction. This is fine because we
will almost certainly want to attach to the processor and load a program
anyway.
I considered adding this as an event handler for either gdb-attach or
reset-init. However, this command shouldn't be necessary most of the
time, and so I don't think we should run it automatically.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: I1b725292d8a11274d03af5313dc83678e10e944c
Reviewed-on: https://review.openocd.org/c/openocd/+/6850
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* board: Add NXP LS1088ARDB
This adds a board file for the NXP LS1088ARDB. This only covers the
"primary" JTAG header J55, and not the PCIe header (J91). The only
oddity is that the LS1088A and CPLD are muxed by adding/removing a
jumper from J48. Unfortunately, it doesn't look like OpenOCD supports
this CPLD beyond determining the irlen, so it's not very useful. Those
who are interested in experimenting can define CWTAP to access the CPLD,
but the default is to access the CPU.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Change-Id: Ia07436a534f86bd907aa5fe2a78a326a27855a24
Reviewed-on: https://review.openocd.org/c/openocd/+/6849
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* gdb_server: fix double free
Commit 6541233aa78d ("Combine register lists of smp targets.")
unconditionally assigns the output pointers of the function
smp_reg_list_noread(), even if the function fails and returns
error.
This causes a double free from the caller, that has assigned NULL
to the pointers to simplify the error handling.
Use local variables in smp_reg_list_noread() and assign the output
pointers only on success.
Change-Id: Ic0fd2f26520566cf322f0190780e15637c01cfae
Fixes: 6541233aa78d ("Combine register lists of smp targets.")
Reported-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6852
Tested-by: jenkins
Reviewed-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* gdb_server: check target examined while combining reg list
Commit 6541233aa78d ("Combine register lists of smp targets.")
assumes that all the targets in the SMP cluster are already
examined and unconditionally call target_get_gdb_reg_list_noread()
that will in turn return error if the target is not examined yet.
Skip targets not examined yet.
Add an additional check in case the register list cannot be built,
e.g. because no target in the SMP cluster is examined. This should
never happen, but it's better to play safe.
Change-Id: I8609815c3d5144790fb05a870cb0c931540aef8a
Fixes: 6541233aa78d ("Combine register lists of smp targets.")
Reported-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6853
Tested-by: jenkins
Reviewed-by: Michele Bisogno <michele.bisogno.ct@renesas.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
* flash/stm32l4x: fix maybe-uninitialized compiler error
using gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 we get:
error: ‘retval’ may be used uninitialized in this function
fixes: 13cd75b6ecfd (flash/nor/stm32xx: fix segfault accessing Cortex-M part number)
Change-Id: I897c40c5d2233f50a5385d251ebfa536023e5cf7
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6861
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Fix build.
Change-Id: Ia60246246dd859d75659a43d1c59588dbb274d46
Signed-off-by: Tim Newsome <tim@sifive.com>
Co-authored-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
Co-authored-by: Julien Massot <julien.massot@iot.bzh>
Co-authored-by: Pavel Kirienko <pavel.kirienko@gmail.com>
Co-authored-by: Zoltán Dudás <zedudi@gmail.com>
Co-authored-by: Antonio Borneo <borneo.antonio@gmail.com>
Co-authored-by: Jacek Wuwer <jacekmw8@gmail.com>
Co-authored-by: Ben McMorran <bemcmorr@microsoft.com>
Co-authored-by: Simon Johansson <ampleyfly@gmail.com>
Co-authored-by: Tomas Vanek <vanekt@fbl.cz>
Co-authored-by: Sean Anderson <sean.anderson@seco.com>
Co-authored-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
2022-03-03 12:03:55 -06:00
|
|
|
|
2020-04-03 19:47:50 -05:00
|
|
|
@item @b{jtag_dpi}
|
|
|
|
@* A JTAG driver acting as a client for the SystemVerilog Direct Programming
|
|
|
|
Interface (DPI) for JTAG devices. DPI allows OpenOCD to connect to the JTAG
|
|
|
|
interface of a hardware model written in SystemVerilog, for example, on an
|
|
|
|
emulation model of target hardware.
|
|
|
|
|
2019-10-03 22:25:26 -05:00
|
|
|
@item @b{xlnx_pcie_xvc}
|
2020-02-08 18:09:04 -06:00
|
|
|
@* A JTAG driver exposing Xilinx Virtual Cable over PCI Express to OpenOCD as JTAG/SWD interface.
|
2019-10-03 22:25:26 -05:00
|
|
|
|
2024-12-10 23:43:57 -06:00
|
|
|
@item @b{linuxspidev}
|
|
|
|
@* A SPI based SWD driver using Linux SPI devices.
|
|
|
|
|
2020-12-06 11:19:01 -06:00
|
|
|
@item @b{linuxgpiod}
|
|
|
|
@* A bitbang JTAG driver using Linux GPIO through library libgpiod.
|
|
|
|
|
|
|
|
@item @b{sysfsgpio}
|
|
|
|
@* A bitbang JTAG driver using Linux legacy sysfs GPIO.
|
|
|
|
This is deprecated from Linux v5.3; prefer using @b{linuxgpiod}.
|
|
|
|
|
2022-04-21 14:48:28 -05:00
|
|
|
@item @b{esp_usb_jtag}
|
|
|
|
@* A JTAG driver to communicate with builtin debug modules of Espressif ESP32-C3 and ESP32-S3 chips using OpenOCD.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@end itemize
|
|
|
|
|
2010-12-16 02:12:22 -06:00
|
|
|
@node About Jim-Tcl
|
|
|
|
@chapter About Jim-Tcl
|
|
|
|
@cindex Jim-Tcl
|
2009-06-22 17:37:04 -05:00
|
|
|
@cindex tcl
|
|
|
|
|
2010-12-16 02:12:22 -06:00
|
|
|
OpenOCD uses a small ``Tcl Interpreter'' known as Jim-Tcl.
|
2009-06-22 17:37:04 -05:00
|
|
|
This programming language provides a simple and extensible
|
|
|
|
command interpreter.
|
|
|
|
|
2010-12-16 02:12:22 -06:00
|
|
|
All commands presented in this Guide are extensions to Jim-Tcl.
|
2009-06-22 17:37:04 -05:00
|
|
|
You can use them as simple commands, without needing to learn
|
|
|
|
much of anything about Tcl.
|
2014-01-08 09:17:56 -06:00
|
|
|
Alternatively, you can write Tcl programs with them.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
You can learn more about Jim at its website, @url{http://jim.tcl.tk}.
|
2010-12-16 02:12:22 -06:00
|
|
|
There is an active and responsive community, get on the mailing list
|
|
|
|
if you have any questions. Jim-Tcl maintainers also lurk on the
|
|
|
|
OpenOCD mailing list.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@itemize @bullet
|
2010-12-16 02:12:22 -06:00
|
|
|
@item @b{Jim vs. Tcl}
|
|
|
|
@* Jim-Tcl is a stripped down version of the well known Tcl language,
|
|
|
|
which can be found here: @url{http://www.tcl.tk}. Jim-Tcl has far
|
2011-07-21 10:16:50 -05:00
|
|
|
fewer features. Jim-Tcl is several dozens of .C files and .H files and
|
2009-06-22 17:37:04 -05:00
|
|
|
implements the basic Tcl command set. In contrast: Tcl 8.6 is a
|
2012-01-05 04:30:39 -06:00
|
|
|
4.2 MB .zip file containing 1540 files.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@item @b{Missing Features}
|
|
|
|
@* Our practice has been: Add/clone the real Tcl feature if/when
|
2010-12-16 02:12:22 -06:00
|
|
|
needed. We welcome Jim-Tcl improvements, not bloat. Also there
|
2012-01-05 04:30:39 -06:00
|
|
|
are a large number of optional Jim-Tcl features that are not
|
2010-12-16 02:12:22 -06:00
|
|
|
enabled in OpenOCD.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@item @b{Scripts}
|
2010-12-16 02:12:22 -06:00
|
|
|
@* OpenOCD configuration scripts are Jim-Tcl Scripts. OpenOCD's
|
2009-06-22 17:37:04 -05:00
|
|
|
command interpreter today is a mixture of (newer)
|
2014-01-08 09:17:56 -06:00
|
|
|
Jim-Tcl commands, and the (older) original command interpreter.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@item @b{Commands}
|
2010-05-11 00:59:22 -05:00
|
|
|
@* At the OpenOCD telnet command line (or via the GDB monitor command) one
|
2009-06-22 17:37:04 -05:00
|
|
|
can type a Tcl for() loop, set variables, etc.
|
2009-06-29 15:03:52 -05:00
|
|
|
Some of the commands documented in this guide are implemented
|
|
|
|
as Tcl scripts, from a @file{startup.tcl} file internal to the server.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@item @b{Historical Note}
|
2010-12-16 02:12:22 -06:00
|
|
|
@* Jim-Tcl was introduced to OpenOCD in spring 2008. Fall 2010,
|
2014-01-08 09:17:56 -06:00
|
|
|
before OpenOCD 0.5 release, OpenOCD switched to using Jim-Tcl
|
|
|
|
as a Git submodule, which greatly simplified upgrading Jim-Tcl
|
|
|
|
to benefit from new features and bugfixes in Jim-Tcl.
|
2009-06-22 17:37:04 -05:00
|
|
|
|
|
|
|
@item @b{Need a crash course in Tcl?}
|
|
|
|
@*@xref{Tcl Crash Course}.
|
|
|
|
@end itemize
|
|
|
|
|
2008-02-28 01:44:13 -06:00
|
|
|
@node Running
|
|
|
|
@chapter Running
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex command line options
|
|
|
|
@cindex logfile
|
|
|
|
@cindex directory search
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2010-02-21 11:29:24 -06:00
|
|
|
Properly installing OpenOCD sets up your operating system to grant it access
|
2013-03-14 17:03:00 -05:00
|
|
|
to the debug adapters. On Linux, this usually involves installing a file
|
2014-02-24 14:40:58 -06:00
|
|
|
in @file{/etc/udev/rules.d,} so OpenOCD has permissions. An example rules file
|
|
|
|
that works for many common adapters is shipped with OpenOCD in the
|
|
|
|
@file{contrib} directory. MS-Windows needs
|
2013-03-14 17:03:00 -05:00
|
|
|
complex and confusing driver configuration for every peripheral. Such issues
|
2010-02-21 11:29:24 -06:00
|
|
|
are unique to each operating system, and are not detailed in this User's Guide.
|
|
|
|
|
|
|
|
Then later you will invoke the OpenOCD server, with various options to
|
|
|
|
tell it how each debug session should work.
|
2008-11-30 16:25:43 -06:00
|
|
|
The @option{--help} option shows:
|
|
|
|
@verbatim
|
|
|
|
bash$ openocd --help
|
|
|
|
|
|
|
|
--help | -h display this help
|
|
|
|
--version | -v display OpenOCD version
|
|
|
|
--file | -f use configuration file <name>
|
|
|
|
--search | -s dir to search for config files and scripts
|
2017-04-02 05:54:43 -05:00
|
|
|
--debug | -d set debug level to 3
|
|
|
|
| -d<n> set debug level to <level>
|
2008-11-30 16:25:43 -06:00
|
|
|
--log_output | -l redirect log output to file <name>
|
|
|
|
--command | -c run <command>
|
|
|
|
@end verbatim
|
|
|
|
|
2010-01-28 16:03:29 -06:00
|
|
|
If you don't give any @option{-f} or @option{-c} options,
|
|
|
|
OpenOCD tries to read the configuration file @file{openocd.cfg}.
|
|
|
|
To specify one or more different
|
|
|
|
configuration files, use @option{-f} options. For example:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-09-20 16:17:08 -05:00
|
|
|
openocd -f config1.cfg -f config2.cfg -f config3.cfg
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-11-23 17:32:54 -06:00
|
|
|
Configuration files and scripts are searched for in
|
|
|
|
@enumerate
|
|
|
|
@item the current directory,
|
|
|
|
@item any search dir specified on the command line using the @option{-s} option,
|
2010-03-17 04:57:44 -05:00
|
|
|
@item any search dir specified using the @command{add_script_search_dir} command,
|
2015-10-06 15:47:35 -05:00
|
|
|
@item a directory in the @env{OPENOCD_SCRIPTS} environment variable (if set),
|
2016-12-24 04:38:04 -06:00
|
|
|
@item @file{%APPDATA%/OpenOCD} (only on Windows),
|
|
|
|
@item @file{$HOME/Library/Preferences/org.openocd} (only on Darwin),
|
|
|
|
@item @file{$XDG_CONFIG_HOME/openocd} (@env{$XDG_CONFIG_HOME} defaults to @file{$HOME/.config}),
|
|
|
|
@item @file{$HOME/.openocd},
|
2009-11-23 17:32:54 -06:00
|
|
|
@item the site wide script library @file{$pkgdatadir/site} and
|
|
|
|
@item the OpenOCD-supplied script library @file{$pkgdatadir/scripts}.
|
|
|
|
@end enumerate
|
|
|
|
The first found file with a matching file name will be used.
|
|
|
|
|
2010-02-10 18:42:37 -06:00
|
|
|
@quotation Note
|
|
|
|
Don't try to use configuration script names or paths which
|
2013-03-14 17:03:00 -05:00
|
|
|
include the "#" character. That character begins Tcl comments.
|
2010-02-10 18:42:37 -06:00
|
|
|
@end quotation
|
|
|
|
|
2009-12-07 16:55:07 -06:00
|
|
|
@section Simple setup, no customization
|
|
|
|
|
|
|
|
In the best case, you can use two scripts from one of the script
|
|
|
|
libraries, hook up your JTAG adapter, and start the server ... and
|
2013-03-14 17:03:00 -05:00
|
|
|
your JTAG setup will just work "out of the box". Always try to
|
2009-12-07 16:55:07 -06:00
|
|
|
start by reusing those scripts, but assume you'll need more
|
2013-03-14 17:03:00 -05:00
|
|
|
customization even if this works. @xref{OpenOCD Project Setup}.
|
2009-12-07 16:55:07 -06:00
|
|
|
|
|
|
|
If you find a script for your JTAG adapter, and for your board or
|
|
|
|
target, you may be able to hook up your JTAG adapter then start
|
2014-01-08 09:17:56 -06:00
|
|
|
the server with some variation of one of the following:
|
2009-12-07 16:55:07 -06:00
|
|
|
|
|
|
|
@example
|
|
|
|
openocd -f interface/ADAPTER.cfg -f board/MYBOARD.cfg
|
2014-01-08 09:17:56 -06:00
|
|
|
openocd -f interface/ftdi/ADAPTER.cfg -f board/MYBOARD.cfg
|
2009-12-07 16:55:07 -06:00
|
|
|
@end example
|
|
|
|
|
|
|
|
You might also need to configure which reset signals are present,
|
|
|
|
using @option{-c 'reset_config trst_and_srst'} or something similar.
|
|
|
|
If all goes well you'll see output something like
|
|
|
|
|
|
|
|
@example
|
|
|
|
Open On-Chip Debugger 0.4.0 (2010-01-14-15:06)
|
|
|
|
For bug reports, read
|
2015-04-07 03:40:53 -05:00
|
|
|
http://openocd.org/doc/doxygen/bugs.html
|
2009-12-07 16:55:07 -06:00
|
|
|
Info : JTAG tap: lm3s.cpu tap/device found: 0x3ba00477
|
|
|
|
(mfg: 0x23b, part: 0xba00, ver: 0x3)
|
|
|
|
@end example
|
|
|
|
|
|
|
|
Seeing that "tap/device found" message, and no warnings, means
|
2013-03-14 17:03:00 -05:00
|
|
|
the JTAG communication is working. That's a key milestone, but
|
2009-12-07 16:55:07 -06:00
|
|
|
you'll probably need more project-specific setup.
|
|
|
|
|
|
|
|
@section What OpenOCD does as it starts
|
|
|
|
|
2009-09-20 16:17:08 -05:00
|
|
|
OpenOCD starts by processing the configuration commands provided
|
2009-12-07 16:55:07 -06:00
|
|
|
on the command line or, if there were no @option{-c command} or
|
|
|
|
@option{-f file.cfg} options given, in @file{openocd.cfg}.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{configurationstage,,Configuration Stage}.
|
2009-09-20 16:17:08 -05:00
|
|
|
At the end of the configuration stage it verifies the JTAG scan
|
|
|
|
chain defined using those commands; your configuration should
|
|
|
|
ensure that this always succeeds.
|
2016-08-10 01:40:34 -05:00
|
|
|
Normally, OpenOCD then starts running as a server.
|
2009-09-20 16:17:08 -05:00
|
|
|
Alternatively, commands may be used to terminate the configuration
|
|
|
|
stage early, perform work (such as updating some flash memory),
|
2016-08-10 01:40:34 -05:00
|
|
|
and then shut down without acting as a server.
|
2009-09-20 16:17:08 -05:00
|
|
|
|
2016-08-10 01:40:34 -05:00
|
|
|
Once OpenOCD starts running as a server, it waits for connections from
|
|
|
|
clients (Telnet, GDB, RPC) and processes the commands issued through
|
2009-09-20 16:17:08 -05:00
|
|
|
those channels.
|
2008-04-14 01:02:11 -05:00
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
If you are having problems, you can enable internal debug messages via
|
2009-11-23 17:32:54 -06:00
|
|
|
the @option{-d} option.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2010-12-16 02:12:22 -06:00
|
|
|
Also it is possible to interleave Jim-Tcl commands w/config scripts using the
|
2008-11-30 16:25:43 -06:00
|
|
|
@option{-c} command line switch.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
To enable debug output (when reporting problems or working on OpenOCD
|
|
|
|
itself), use the @option{-d} command line switch. This sets the
|
|
|
|
@option{debug_level} to "3", outputting the most information,
|
|
|
|
including debug messages. The default setting is "2", outputting only
|
|
|
|
informational messages, warnings and errors. You can also change this
|
2013-03-14 16:38:19 -05:00
|
|
|
setting from within a telnet or gdb session using @command{debug_level<n>}
|
|
|
|
(@pxref{debuglevel,,debug_level}).
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2016-08-10 01:40:34 -05:00
|
|
|
You can redirect all output from the server to a file using the
|
2008-11-30 16:25:43 -06:00
|
|
|
@option{-l <logfile>} switch.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
Note! OpenOCD will launch the GDB & telnet server even if it can not
|
|
|
|
establish a connection with the target. In general, it is possible for
|
|
|
|
the JTAG controller to be unresponsive until the target is set up
|
|
|
|
correctly via e.g. GDB monitor commands in a GDB init script.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@node OpenOCD Project Setup
|
|
|
|
@chapter OpenOCD Project Setup
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
To use OpenOCD with your development projects, you need to do more than
|
2014-01-08 09:17:56 -06:00
|
|
|
just connect the JTAG adapter hardware (dongle) to your development board
|
|
|
|
and start the OpenOCD server.
|
|
|
|
You also need to configure your OpenOCD server so that it knows
|
|
|
|
about your adapter and board, and helps your work.
|
2009-12-07 16:55:07 -06:00
|
|
|
You may also want to connect OpenOCD to GDB, possibly
|
|
|
|
using Eclipse or some other GUI.
|
2009-06-11 16:48:36 -05:00
|
|
|
|
|
|
|
@section Hooking up the JTAG Adapter
|
|
|
|
|
|
|
|
Today's most common case is a dongle with a JTAG cable on one side
|
|
|
|
(such as a ribbon cable with a 10-pin or 20-pin IDC connector)
|
|
|
|
and a USB cable on the other.
|
From upstream (#580)
* configure: do not make Capstone dependency automagic
This adds regular ./configure options to control dependency on the
Capstone disassembly engine. See [0] for the rationale.
[0] https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Automagic_dependencies
Change-Id: I3e16dc5255d650aa1949ccf896b26dc96e522a75
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/5985
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* configure.ac: fix build with libusb0 and without libusb1
Driver 'openjtag' requires both libftdi and libusb1.
The current check is incorrect and the driver is built when
libftdi is present with libusb0 and without libusb1, which causes
the linker to fail resolving the required libusb1 symbols.
Remove the check for libusb0 on driver 'openjtag'.
Create a new adapters group LIBFTDI_USB1_ADAPTERS to hold the
driver 'openjtag'.
Change-Id: I1f5e554b519e51c829d116ede894639cb55a26aa
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5989
Tested-by: jenkins
* doc: fix over/underfull hboxes in PDF
This adds some cosmetic changes to make the PDF User Manual look
proper.
Building it now requires Texinfo 5.0 which shouldn't be problematic
according to [0]. Commit 79fdeb37f486f74658f1eaf658abac8efb3eba6a is
effectively reverted.
[0] https://repology.org/project/texinfo/versions
Change-Id: I990bc23bdb53d24c302b26d74fd770ea738e4096
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/5995
Reviewed-by: Jonathan McDowell <noodles-openocd@earth.li>
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* contrib: rpc_examples: haskell: fix ftbs with current libraries
And get rid of some warnings along the way.
Change-Id: I8fdbe1fa304276be6b0f25249b902b3576aa3793
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/5987
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Makefile.am: fix override of target 'check-recursive'
To prevent executing the Jim Tcl tests, the makefile's target
'check-recursive' has been overridden in commit 56d163ce7951
("jimtcl: update to 0.77, the current version, enable only
specific modules").
This causes a runtime warning during build:
Makefile:6332: warning: overriding recipe for target 'check-recursive'
Makefile:5098: warning: ignoring old recipe for target 'check-recursive'
Instead of override the makefile's target 'check-recursive',
prevent the recursion by re-assigning as empty the variable
SUBDIRS for this specific target only.
Change-Id: I03d1c467eba42316a59aeed4612d6bdbe6211282
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: 56d163ce7951 ("jimtcl: update to 0.77, the current version, enable only specific modules")
Reviewed-on: http://openocd.zylin.com/5986
Tested-by: jenkins
* contrib: udev file for Cypress SuperSpeed Explorer kit
lsusb output:
Bus 003 Device 011: ID 04b4:0007 Cypress Semiconductor Corp.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x04b4 Cypress Semiconductor Corp.
idProduct 0x0007
bcdDevice 0.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 114
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 2 Abstract (modem)
bFunctionProtocol 1 AT-commands (v.25ter)
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 0
CDC Header:
bcdCDC 1.10
CDC ACM:
bmCapabilities 0x02
line coding and serial state
CDC Union:
bMasterInterface 0
bSlaveInterface 1
CDC Call Management:
bmCapabilities 0x00
bDataInterface 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 4
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 5
bInterfaceProtocol 0
iInterface 0
Change-Id: I62f0300199da3551c8774a4a5a4cd106a3ab2904
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Jiri Kastner <cz172638@gmail.com>
Reviewed-on: http://openocd.zylin.com/3611
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target: fix memory leak on multiple '-gdb-port' flag
In the odd case of multiple flags '-gdb-port' during 'target
create' or following 'configure', the new strdup()'ed value will
replace the old one without freeing it.
Free the old value (if it exists) before replacing it.
Change-Id: I1673346613ce7023880046e3a9ba473e75f18b8a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6005
Tested-by: jenkins
* udev: fix permission for Ambiq Micro EVK's
Commit 68e204f1e91a ("udev: Add rules for Ambiq Micro EVK's.") was
initially proposed as http://openocd.zylin.com/3429/ then replaced
by http://openocd.zylin.com/3980/
The initial proposal was for file '99-openocd.rules', in which
MODE="664" was the norm.
After merge of http://openocd.zylin.com/2804/ the new udev rules
in '60-openocd.rules' switched to MODE="660", but the evolution of
the above patch missed this change.
Switch udev rules of Ambiq Micro EVK's to MODE="660" and uniform
them to the rest of the file.
Change-Id: I4b4eea535184ee8569da3264bff4f1fafb5bce4d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: 68e204f1e91a ("udev: Add rules for Ambiq Micro EVK's.")
Reviewed-on: http://openocd.zylin.com/6004
Tested-by: jenkins
* doc/style: fix doxygen error
Doxygen complains about non-closed nested comments:
doc/manual/style.txt:423: warning: Reached end of file
while still inside a (nested) comment. Nesting level 1
(probable line reference: 149)
This is caused by the string '/**' that is interpreted as the
beginning of a comment.
Escape the string to not let doxygen consider it as a comment
While there, replace @code/@endcode with @verbatim/@endverbatim to
properly render the line.
Change-Id: If2a27c4cf659326e317cc4ac8c0b313e97e40432
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5996
Tested-by: jenkins
* flash/nor/max32xxx: fix path of include file
The relative path should have three times '..'.
Issue identified by doxygen:
src/flash/nor/max32xxx.c:85: warning: include file
../../contrib/loaders/flash/max32xxx/max32xxx.inc not
found, perhaps you forgot to add its directory to
INCLUDE_PATH?
Change-Id: Ie7b4948c6770b8acb9eff26e08eea32945ebb219
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5997
Tested-by: jenkins
* Doxyfile.in: fix build out-of-tree
When doxygen is built out-of-tree, it fails to find the generated
file startup_tcl.inc:
src/openocd.c:59: warning: include file startup_tcl.inc
not found, perhaps you forgot to add its directory to
INCLUDE_PATH?
Add '@builddir@/src' to INCLUDE_PATH.
Change-Id: I51f2f6fe7224bba0f8b3db7219f9831de4e67139
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5998
Tested-by: jenkins
* doc/manual/primer/jtag.txt: remove duplicated section name
The section name 'primerjtag' is used twice, causing doxygen to
complain:
warning: multiple use of section label 'primerjtag',
(first occurrence: doc/manual/primer/jtag.txt, line 107)
Rename one of them.
Change-Id: Id307915dbc51a7f647fab4fb28ab431e65344d61
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5999
Tested-by: jenkins
* Doxyfile.in: exclude libjaylink from doxygen
When build using libjaylink as git submodule, doxygen includes the
libjaylink files and complains for multiple 'mainpage' comment
block, one in OpenOCD and the other in libjaylink:
src/jtag/drivers/libjaylink/libjaylink/core.c:37: warning:
found more than one \mainpage comment block! (first
occurrence: doc/manual/main.txt, line 1), Skipping current
block!
Exclude libjaylink submodule from doxygen.
Change-Id: I5e856817344c9f21f8c26f077a23c00b83cfbcb5
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6000
Tested-by: jenkins
* openocd: fix incorrect doxygen comments
Use '@param' in front of function's parameters and '@a' when the
parameter is recalled in the description.
This fixes doxygen complains:
warning: Found unknown command '@buff16'
While there, fix a minor typo s/occured/occurred/ in a comment and
the typo s/@apram/@param/ in a doxygen comment.
Change-Id: I5cd86a80adef552331310a21c55ec5d11354be21
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6001
Tested-by: jenkins
* openocd: fix doxygen parameters of functions
Add to doxygen comment the missing parameters.
Remove from doxygen comment any non-existing parameter.
Fix the parameter names in doxygen comment to match the one in the
function prototype.
Where the parameter name in the doxygen description seems better
than the one in the code, change the code.
Escape the character '<' to prevent doxygen to interpret it as an
xml tag.
Change-Id: I22da723339ac7d7a7a64ac4c1cc4336e2416c2cc
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6002
Tested-by: jenkins
* doc/manual/primer/autotools.txt: fix doxygen warning
Commit ab90b8777855 ("configure: remove AM_MAINTAINER_MODE,
effectively always enabling all the rules") removes the configure
flag '--enable-maintainer-mode' and its documentation, but have
left a reference to the removed subsection 'primermaintainermode'
and this triggers a warning in doxygen:
doc/manual/primer/autotools.txt:21: warning: unable to
resolve reference to 'primermaintainermode' for \ref
command
Remove the obsoleted paragraph.
Change-Id: I56e69ef033d546d159745bed1b47c6105827e7ae
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: ab90b8777855 ("configure: remove AM_MAINTAINER_MODE, effectively always enabling all the rules")
Reviewed-on: http://openocd.zylin.com/6003
Tested-by: jenkins
* flash/stmqspi: fix build error with -Werror=maybe-uninitialized
using gcc 9.3 on ubuntu focal fossa with -Werror=maybe-uninitialized
we get this error:
/src/flash/nor/stmqspi.c: In function ‘read_flash_id’:
/src/flash/nor/stmqspi.c:1948:6: error: ‘retval’ may be used uninitialized
Change-Id: Ifd8ae60df847fc61e22ca100c008e3914c9af79b
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@st.com>
Reviewed-on: http://openocd.zylin.com/6012
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* target/riscv: fix build error with -Werror=maybe-uninitialized
using gcc 9.3 on ubuntu focal fossa with -Werror=maybe-uninitialized
we get this error:
/src/target/riscv/riscv.c: In function ‘riscv_address_translate’:
/src/target/riscv/riscv.c:1536:13: error: ‘pte’ may be used uninitialized
Change-Id: I51e180b43f9b6996e4e4058db49c179b9f81bcdc
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@st.com>
Reviewed-on: http://openocd.zylin.com/6013
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* cortex_m: [FIX] ARMv8-M does not support VECTRESET
ref: Arm®v8-M Architecture Reference Manual (DDI0553B.m)
D1.2.3: AIRCR, Application Interrupt and Reset Control Register
Bit [0] is RES0
Change-Id: I6ef451b2c114487e2732852a60e86c292ffa6a50
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@st.com>
Reviewed-on: http://openocd.zylin.com/6014
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* driver/ftdi: skip trst in swd mode
When using the adapter olimex arm-jtag-swd (to convert to SWD a
JTAG-only FTDI adapter), the pin trst on JTAG side is re-used to
control the direction of pin SWDIO on SWD side.
There is a single reset API at adapter driver to assert/deassert
either srst and/or trst. A request to assert/deassert srst can
cause also trst to change value, hanging the SWD communication.
In SWD mode, ignore the value passed to trst.
Change-Id: I5fe1eed851177d405d77ae6079da9642dc1a08f1
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6006
Tested-by: jenkins
* configure.ac: drop macro 'AC_PROG_CC_C99' from autoconf 2.70
The macro AC_PROG_CC_C99 has been obsoleted by autoconf 2.70 and
triggers a set of warnings from both 'aclocal' and 'autoconf'.
The test of AC_PROG_CC_C99 is now included in AC_PROG_CC.
For autoconf 2.69 and earlier the macro is still required, so
cannot be simply dropped.
Use a conditional test to avoid the warning on autoconf 2.70 but
still use AC_PROG_CC_C99 on older autoconf.
Change-Id: I5e8437f5a826fb63be6d07bcb5bb824f94683020
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6009
Tested-by: jenkins
Reviewed-by: Marc Schink <dev@zapb.de>
* configure: drop macro 'AC_HEADER_TIME'
The macro AC_HEADER_TIME has been obsoleted by autoconf 2.70.
Not all systems provide 'sys/time.h', plus some old system didn't
allowed to include both 'time.h' and 'sys/time.h' because 'time.h'
was included by 'sys/time.h' and was not properly protected to
allow multiple inclusion.
The macro AC_HEADER_TIME helps to detect such odd case.
Nowadays all the systems properly protect 'time.h', so its safe to
unconditionally include 'time.h', even if it is also included by
'sys/time.h'.
The case of systems without 'sys/time.h' is already covered by
configure.ac through the directive
AC_CHECK_HEADERS([sys/time.h])
Remove the obsoleted autoconf macro and simplify the code by
including 'time.h' unconditionally and check HAVE_SYS_TIME_H to
include 'sys/time.h'.
Change-Id: Iddb3f3f1d90c22668b97f8e756e1b4f733367a7d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6010
Tested-by: jenkins
Reviewed-by: Marc Schink <dev@zapb.de>
* README.macOS: explain how to install suitable Texinfo
Change-Id: Ic5906111f412eebd906a9be3fd0e133484def3eb
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/6026
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* jlink: fix device discovery when network is off
If user specifies a serial number for the jlink device, openocd
extends the search to network jlink devices too, without checking
if the host has a valid and functional network connection. If the
network is not functional, libjaylink returns error. This error
invalidates the discovery on USB, even if it was successful.
Factor-out parts of the jlink_init into separate jlink_open_device
function, use that function to firstly discover and match USB
devices and, if matching device was not found on the USB bus and
serial number was specified, repeat discovery and matching via TCP.
Fixes: https://sourceforge.net/p/openocd/tickets/294/
Change-Id: Iea0de1640d4e5b21ecc7e9c1dd6d36f214d647c2
Signed-off-by: Bohdan Tymkiv <bohdan200@gmail.com>
Reviewed-on: http://openocd.zylin.com/6025
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
Reviewed-by: Marc Schink <dev@zapb.de>
* README: add missing items for 0.11
JTAG adapters
Cadence DPI, Cypress Kitpro, FTDI FT232R, Linux GPIOD, Mellanox rshim,
Nuvoton Nu-Link, Nu-Link2, NXP IMX GPIO, Remote Bitbang, TI XDS110,
Xilinx XVC/PCIe
Debug targets
AArch64, Cortex-M (ARMv8-M), ARCv2, MIPS64, RISC-V, ST-STM8
Flash Drivers
ATmega128RFA1, Atmel SAM, eSi-RISC, EZR32HG, MAX32, MXC, nRF52, PSoC6,
Renesas RPC HF and SH QSPI, SiFive Freedom E, ST BlueNRG,
STM32 QUAD/OCTO-SPI for Flash/FRAM/EEPROM, SWM050, TI CC13xx, TI CC26xx,
TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF
Change-Id: I341618ac5d7189e4f98268cecd66c99447b72af8
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@st.com>
Reviewed-on: http://openocd.zylin.com/6027
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* The openocd-0.11.0-rc2 release candidate
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
* Restore +dev suffix
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
* steppenprobe: fix file permission
Commit 895d4a599585 ("tcl/interface/ftdi: Add Steppenprobe open
hardware interface") erroneously set the execution permission to
the configuration file.
Strip the execution permission.
Change-Id: I556451d5e6fee4aee385451e8c90216a25b6ef46
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: http://openocd.zylin.com/5653
Reviewed-on: http://openocd.zylin.com/6038
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Tested-by: Paul Fertser <fercerpav@gmail.com>
* github: fix github wokflow while pushing a tag
this fix permits to add correctly the generated artifact (windows binaries)
into the release section.
Change-Id: Ia982370d3a1e08c623ebcabb5ac97e9fb49d00e0
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6047
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* doc: Fix type in Hooking up the JTAG Adapter
We are talking about adapter connectivity in this chapter. It should
be "dongles" instead of "cables".
Change-Id: I7bd4307765517375caa2af86dfc929d0ef66c3e6
Signed-off-by: Yasushi SHOJI <yashi@spacecubics.com>
Reviewed-on: http://openocd.zylin.com/6040
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
* doc/manual: Fix @subpage handling
The subpage "thelist" used to have a title "Pending and Open Tasks"
but the commit c41db358a0100ab changed it to "The List". With
@subpage, it now renders:
"The List of The List enumerates opportunities for"
instead of
"The List of Pending and Open Tasks enumerates opportunities for"
This commit fix it to
"The List enumerates opportunities for"
Change-Id: Ifee0dcd9b3c9f7e651a8748a7afda99eedea3c5c
Signed-off-by: Yasushi SHOJI <yashi@spacecubics.com>
Reviewed-on: http://openocd.zylin.com/6041
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* doc/manual: Fix function name typo
We have both the singular form, register_command(), and the plural form
register_commands().
Change-Id: I905ea83988b8ac70dd809b02d53b646aa4d66697
Signed-off-by: Yasushi SHOJI <yashi@spacecubics.com>
Reviewed-on: http://openocd.zylin.com/6042
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
Co-authored-by: Paul Fertser <fercerpav@gmail.com>
Co-authored-by: Antonio Borneo <borneo.antonio@gmail.com>
Co-authored-by: Jiri Kastner <cz172638@gmail.com>
Co-authored-by: Tarek BOCHKATI <tarek.bouchkati@st.com>
Co-authored-by: Bohdan Tymkiv <bohdan200@gmail.com>
Co-authored-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Co-authored-by: Yasushi SHOJI <yashi@spacecubics.com>
2021-02-11 13:27:18 -06:00
|
|
|
Instead of USB, some dongles use Ethernet;
|
2009-06-11 16:48:36 -05:00
|
|
|
older ones may use a PC parallel port, or even a serial port.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@enumerate
|
2009-06-11 16:48:36 -05:00
|
|
|
@item @emph{Start with power to your target board turned off},
|
|
|
|
and nothing connected to your JTAG adapter.
|
|
|
|
If you're particularly paranoid, unplug power to the board.
|
|
|
|
It's important to have the ground signal properly set up,
|
|
|
|
unless you are using a JTAG adapter which provides
|
|
|
|
galvanic isolation between the target board and the
|
|
|
|
debugging host.
|
|
|
|
|
|
|
|
@item @emph{Be sure it's the right kind of JTAG connector.}
|
|
|
|
If your dongle has a 20-pin ARM connector, you need some kind
|
|
|
|
of adapter (or octopus, see below) to hook it up to
|
|
|
|
boards using 14-pin or 10-pin connectors ... or to 20-pin
|
|
|
|
connectors which don't use ARM's pinout.
|
|
|
|
|
|
|
|
In the same vein, make sure the voltage levels are compatible.
|
|
|
|
Not all JTAG adapters have the level shifters needed to work
|
|
|
|
with 1.2 Volt boards.
|
|
|
|
|
|
|
|
@item @emph{Be certain the cable is properly oriented} or you might
|
2013-03-14 17:03:00 -05:00
|
|
|
damage your board. In most cases there are only two possible
|
2009-06-11 16:48:36 -05:00
|
|
|
ways to connect the cable.
|
|
|
|
Connect the JTAG cable from your adapter to the board.
|
|
|
|
Be sure it's firmly connected.
|
|
|
|
|
|
|
|
In the best case, the connector is keyed to physically
|
|
|
|
prevent you from inserting it wrong.
|
|
|
|
This is most often done using a slot on the board's male connector
|
|
|
|
housing, which must match a key on the JTAG cable's female connector.
|
|
|
|
If there's no housing, then you must look carefully and
|
|
|
|
make sure pin 1 on the cable hooks up to pin 1 on the board.
|
|
|
|
Ribbon cables are frequently all grey except for a wire on one
|
2013-03-14 17:03:00 -05:00
|
|
|
edge, which is red. The red wire is pin 1.
|
2009-06-11 16:48:36 -05:00
|
|
|
|
|
|
|
Sometimes dongles provide cables where one end is an ``octopus'' of
|
|
|
|
color coded single-wire connectors, instead of a connector block.
|
|
|
|
These are great when converting from one JTAG pinout to another,
|
|
|
|
but are tedious to set up.
|
|
|
|
Use these with connector pinout diagrams to help you match up the
|
|
|
|
adapter signals to the right board pins.
|
|
|
|
|
|
|
|
@item @emph{Connect the adapter's other end} once the JTAG cable is connected.
|
|
|
|
A USB, parallel, or serial port connector will go to the host which
|
|
|
|
you are using to run OpenOCD.
|
|
|
|
For Ethernet, consult the documentation and your network administrator.
|
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
For USB-based JTAG adapters you have an easy sanity check at this point:
|
|
|
|
does the host operating system see the JTAG adapter? If you're running
|
|
|
|
Linux, try the @command{lsusb} command. If that host is an
|
2009-12-07 16:55:07 -06:00
|
|
|
MS-Windows host, you'll need to install a driver before OpenOCD works.
|
2009-06-11 16:48:36 -05:00
|
|
|
|
|
|
|
@item @emph{Connect the adapter's power supply, if needed.}
|
|
|
|
This step is primarily for non-USB adapters,
|
|
|
|
but sometimes USB adapters need extra power.
|
|
|
|
|
|
|
|
@item @emph{Power up the target board.}
|
|
|
|
Unless you just let the magic smoke escape,
|
|
|
|
you're now ready to set up the OpenOCD server
|
|
|
|
so you can use JTAG to work with that board.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@end enumerate
|
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
Talk with the OpenOCD server using
|
|
|
|
telnet (@code{telnet localhost 4444} on many systems) or GDB.
|
|
|
|
@xref{GDB and OpenOCD}.
|
|
|
|
|
|
|
|
@section Project Directory
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
There are many ways you can configure OpenOCD and start it up.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
A simple way to organize them all involves keeping a
|
|
|
|
single directory for your work with a given board.
|
|
|
|
When you start OpenOCD from that directory,
|
2009-06-26 02:30:21 -05:00
|
|
|
it searches there first for configuration files, scripts,
|
2009-12-07 16:55:07 -06:00
|
|
|
files accessed through semihosting,
|
2009-06-11 16:48:36 -05:00
|
|
|
and for code you upload to the target board.
|
2009-06-22 17:37:04 -05:00
|
|
|
It is also the natural place to write files,
|
2009-06-11 16:48:36 -05:00
|
|
|
such as log files and data you download from the board.
|
|
|
|
|
|
|
|
@section Configuration Basics
|
|
|
|
|
|
|
|
There are two basic ways of configuring OpenOCD, and
|
|
|
|
a variety of ways you can mix them.
|
|
|
|
Think of the difference as just being how you start the server:
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item Many @option{-f file} or @option{-c command} options on the command line
|
|
|
|
@item No options, but a @dfn{user config file}
|
|
|
|
in the current directory named @file{openocd.cfg}
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
Here is an example @file{openocd.cfg} file for a setup
|
|
|
|
using a Signalyzer FT2232-based JTAG adapter to talk to
|
|
|
|
a board with an Atmel AT91SAM7X256 microcontroller:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2016-02-15 14:59:28 -06:00
|
|
|
source [find interface/ftdi/signalyzer.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
# GDB can also flash my flash!
|
2024-06-14 09:19:56 -05:00
|
|
|
gdb memory_map enable
|
|
|
|
gdb flash_program enable
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
source [find target/sam7x256.cfg]
|
|
|
|
@end example
|
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
Here is the command line equivalent of that configuration:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@example
|
2016-02-15 14:59:28 -06:00
|
|
|
openocd -f interface/ftdi/signalyzer.cfg \
|
2024-06-14 09:19:56 -05:00
|
|
|
-c "gdb memory_map enable" \
|
|
|
|
-c "gdb flash_program enable" \
|
2009-06-11 16:48:36 -05:00
|
|
|
-f target/sam7x256.cfg
|
|
|
|
@end example
|
|
|
|
|
|
|
|
You could wrap such long command lines in shell scripts,
|
|
|
|
each supporting a different development task.
|
2009-06-22 17:37:04 -05:00
|
|
|
One might re-flash the board with a specific firmware version.
|
2009-06-11 16:48:36 -05:00
|
|
|
Another might set up a particular debugging or run-time environment.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-10-07 10:56:11 -05:00
|
|
|
@quotation Important
|
|
|
|
At this writing (October 2009) the command line method has
|
|
|
|
problems with how it treats variables.
|
|
|
|
For example, after @option{-c "set VAR value"}, or doing the
|
|
|
|
same in a script, the variable @var{VAR} will have no value
|
|
|
|
that can be tested in a later script.
|
|
|
|
@end quotation
|
|
|
|
|
2013-03-14 17:03:00 -05:00
|
|
|
Here we will focus on the simpler solution: one user config
|
2009-06-11 16:48:36 -05:00
|
|
|
file, including basic configuration plus any TCL procedures
|
|
|
|
to simplify your work.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@section User Config Files
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex config file, user
|
2009-06-11 16:48:36 -05:00
|
|
|
@cindex user config file
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex config file, overview
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
A user configuration file ties together all the parts of a project
|
|
|
|
in one place.
|
|
|
|
One of the following will match your situation best:
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item Ideally almost everything comes from configuration files
|
|
|
|
provided by someone else.
|
|
|
|
For example, OpenOCD distributes a @file{scripts} directory
|
2009-06-17 19:29:39 -05:00
|
|
|
(probably in @file{/usr/share/openocd/scripts} on Linux).
|
|
|
|
Board and tool vendors can provide these too, as can individual
|
|
|
|
user sites; the @option{-s} command line option lets you say
|
2013-03-14 17:03:00 -05:00
|
|
|
where to find these files. (@xref{Running}.)
|
2009-06-11 16:48:36 -05:00
|
|
|
The AT91SAM7X256 example above works this way.
|
|
|
|
|
|
|
|
Three main types of non-user configuration file each have their
|
|
|
|
own subdirectory in the @file{scripts} directory:
|
|
|
|
|
|
|
|
@enumerate
|
2010-03-05 23:09:03 -06:00
|
|
|
@item @b{interface} -- one for each different debug adapter;
|
2009-06-11 16:48:36 -05:00
|
|
|
@item @b{board} -- one for each different board
|
|
|
|
@item @b{target} -- the chips which integrate CPUs and other JTAG TAPs
|
|
|
|
@end enumerate
|
|
|
|
|
2013-03-14 17:03:00 -05:00
|
|
|
Best case: include just two files, and they handle everything else.
|
2009-06-11 16:48:36 -05:00
|
|
|
The first is an interface config file.
|
|
|
|
The second is board-specific, and it sets up the JTAG TAPs and
|
|
|
|
their GDB targets (by deferring to some @file{target.cfg} file),
|
|
|
|
declares all flash memory, and leaves you nothing to do except
|
|
|
|
meet your deadline:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-11 16:48:36 -05:00
|
|
|
source [find interface/olimex-jtag-tiny.cfg]
|
|
|
|
source [find board/csb337.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
Boards with a single microcontroller often won't need more
|
|
|
|
than the target config file, as in the AT91SAM7X256 example.
|
|
|
|
That's because there is no external memory (flash, DDR RAM), and
|
|
|
|
the board differences are encapsulated by application code.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-11-01 19:54:47 -06:00
|
|
|
@item Maybe you don't know yet what your board looks like to JTAG.
|
|
|
|
Once you know the @file{interface.cfg} file to use, you may
|
|
|
|
need help from OpenOCD to discover what's on the board.
|
2010-03-05 23:09:03 -06:00
|
|
|
Once you find the JTAG TAPs, you can just search for appropriate
|
|
|
|
target and board
|
2009-11-01 19:54:47 -06:00
|
|
|
configuration files ... or write your own, from the bottom up.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{autoprobing,,Autoprobing}.
|
2009-11-01 19:54:47 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@item You can often reuse some standard config files but
|
|
|
|
need to write a few new ones, probably a @file{board.cfg} file.
|
|
|
|
You will be using commands described later in this User's Guide,
|
|
|
|
and working with the guidelines in the next chapter.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
For example, there may be configuration files for your JTAG adapter
|
|
|
|
and target chip, but you need a new board-specific config file
|
|
|
|
giving access to your particular flash chips.
|
|
|
|
Or you might need to write another target chip configuration file
|
2016-05-14 13:21:49 -05:00
|
|
|
for a new chip built around the Cortex-M3 core.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@quotation Note
|
|
|
|
When you write new configuration files, please submit
|
|
|
|
them for inclusion in the next OpenOCD release.
|
|
|
|
For example, a @file{board/newboard.cfg} file will help the
|
|
|
|
next users of that board, and a @file{target/newcpu.cfg}
|
|
|
|
will help support users of any board using that chip.
|
|
|
|
@end quotation
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@item
|
2020-07-04 12:38:00 -05:00
|
|
|
You may need to write some C code.
|
2014-01-08 09:17:56 -06:00
|
|
|
It may be as simple as supporting a new FT2232 or parport
|
2010-03-05 23:09:03 -06:00
|
|
|
based adapter; a bit more involved, like a NAND or NOR flash
|
2009-06-11 16:48:36 -05:00
|
|
|
controller driver; or a big piece of work like supporting
|
|
|
|
a new chip architecture.
|
|
|
|
@end itemize
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
Reuse the existing config files when you can.
|
|
|
|
Look first in the @file{scripts/boards} area, then @file{scripts/targets}.
|
|
|
|
You may find a board configuration that's a good example to follow.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
When you write config files, separate the reusable parts
|
|
|
|
(things every user of that interface, chip, or board needs)
|
|
|
|
from ones specific to your environment and debugging approach.
|
2009-08-30 12:32:56 -05:00
|
|
|
@itemize
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-08-30 12:32:56 -05:00
|
|
|
@item
|
2009-06-11 16:48:36 -05:00
|
|
|
For example, a @code{gdb-attach} event handler that invokes
|
|
|
|
the @command{reset init} command will interfere with debugging
|
|
|
|
early boot code, which performs some of the same actions
|
|
|
|
that the @code{reset-init} event handler does.
|
2009-08-30 12:32:56 -05:00
|
|
|
|
|
|
|
@item
|
2009-10-25 16:03:14 -05:00
|
|
|
Likewise, the @command{arm9 vector_catch} command (or
|
2009-08-18 05:25:28 -05:00
|
|
|
@cindex vector_catch
|
|
|
|
its siblings @command{xscale vector_catch}
|
2018-02-10 08:08:26 -06:00
|
|
|
and @command{cortex_m vector_catch}) can be a time-saver
|
2009-06-11 16:48:36 -05:00
|
|
|
during some debug sessions, but don't make everyone use that either.
|
2009-06-28 13:46:51 -05:00
|
|
|
Keep those kinds of debugging aids in your user config file,
|
|
|
|
along with messaging and tracing setup.
|
2013-03-14 16:38:19 -05:00
|
|
|
(@xref{softwaredebugmessagesandtracing,,Software Debug Messages and Tracing}.)
|
2009-06-11 16:48:36 -05:00
|
|
|
|
2009-08-30 12:32:56 -05:00
|
|
|
@item
|
|
|
|
You might need to override some defaults.
|
|
|
|
For example, you might need to move, shrink, or back up the target's
|
|
|
|
work area if your application needs much SRAM.
|
|
|
|
|
|
|
|
@item
|
2009-06-22 17:36:53 -05:00
|
|
|
TCP/IP port configuration is another example of something which
|
|
|
|
is environment-specific, and should only appear in
|
2013-03-14 17:03:00 -05:00
|
|
|
a user config file. @xref{tcpipports,,TCP/IP Ports}.
|
2009-08-30 12:32:56 -05:00
|
|
|
@end itemize
|
2009-06-22 17:36:53 -05:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
@section Project-Specific Utilities
|
|
|
|
|
|
|
|
A few project-specific utility
|
|
|
|
routines may well speed up your work.
|
|
|
|
Write them, and keep them in your project's user config file.
|
|
|
|
|
|
|
|
For example, if you are making a boot loader work on a
|
|
|
|
board, it's nice to be able to debug the ``after it's
|
|
|
|
loaded to RAM'' parts separately from the finicky early
|
|
|
|
code which sets up the DDR RAM controller and clocks.
|
|
|
|
A script like this one, or a more GDB-aware sibling,
|
|
|
|
may help:
|
|
|
|
|
|
|
|
@example
|
|
|
|
proc ramboot @{ @} @{
|
|
|
|
# Reset, running the target's "reset-init" scripts
|
|
|
|
# to initialize clocks and the DDR RAM controller.
|
|
|
|
# Leave the CPU halted.
|
|
|
|
reset init
|
|
|
|
|
|
|
|
# Load CONFIG_SKIP_LOWLEVEL_INIT version into DDR RAM.
|
|
|
|
load_image u-boot.bin 0x20000000
|
|
|
|
|
|
|
|
# Start running.
|
|
|
|
resume 0x20000000
|
|
|
|
@}
|
|
|
|
@end example
|
|
|
|
|
|
|
|
Then once that code is working you will need to make it
|
|
|
|
boot from NOR flash; a different utility would help.
|
|
|
|
Alternatively, some developers write to flash using GDB.
|
|
|
|
(You might use a similar script if you're working with a flash
|
|
|
|
based microcontroller application instead of a boot loader.)
|
|
|
|
|
|
|
|
@example
|
|
|
|
proc newboot @{ @} @{
|
2013-03-14 17:03:00 -05:00
|
|
|
# Reset, leaving the CPU halted. The "reset-init" event
|
2009-06-11 16:48:36 -05:00
|
|
|
# proc gives faster access to the CPU and to NOR flash;
|
|
|
|
# "reset halt" would be slower.
|
|
|
|
reset init
|
|
|
|
|
|
|
|
# Write standard version of U-Boot into the first two
|
|
|
|
# sectors of NOR flash ... the standard version should
|
|
|
|
# do the same lowlevel init as "reset-init".
|
|
|
|
flash protect 0 0 1 off
|
|
|
|
flash erase_sector 0 0 1
|
|
|
|
flash write_bank 0 u-boot.bin 0x0
|
|
|
|
flash protect 0 0 1 on
|
|
|
|
|
|
|
|
# Reboot from scratch using that new boot loader.
|
|
|
|
reset run
|
|
|
|
@}
|
|
|
|
@end example
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:48:36 -05:00
|
|
|
You may need more complicated utility procedures when booting
|
|
|
|
from NAND.
|
|
|
|
That often involves an extra bootloader stage,
|
|
|
|
running from on-chip SRAM to perform DDR RAM setup so it can load
|
|
|
|
the main bootloader code (which won't fit into that SRAM).
|
|
|
|
|
|
|
|
Other helper scripts might be used to write production system images,
|
|
|
|
involving considerably more than just a three stage bootloader.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-09-29 13:20:30 -05:00
|
|
|
@section Target Software Changes
|
|
|
|
|
|
|
|
Sometimes you may want to make some small changes to the software
|
|
|
|
you're developing, to help make JTAG debugging work better.
|
|
|
|
For example, in C or assembly language code you might
|
|
|
|
use @code{#ifdef JTAG_DEBUG} (or its converse) around code
|
|
|
|
handling issues like:
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
2010-01-14 01:33:53 -06:00
|
|
|
@item @b{Watchdog Timers}...
|
2018-02-10 08:08:26 -06:00
|
|
|
Watchdog timers are typically used to automatically reset systems if
|
2013-03-14 17:03:00 -05:00
|
|
|
some application task doesn't periodically reset the timer. (The
|
2010-01-14 01:33:53 -06:00
|
|
|
assumption is that the system has locked up if the task can't run.)
|
|
|
|
When a JTAG debugger halts the system, that task won't be able to run
|
|
|
|
and reset the timer ... potentially causing resets in the middle of
|
|
|
|
your debug sessions.
|
|
|
|
|
|
|
|
It's rarely a good idea to disable such watchdogs, since their usage
|
|
|
|
needs to be debugged just like all other parts of your firmware.
|
|
|
|
That might however be your only option.
|
|
|
|
|
|
|
|
Look instead for chip-specific ways to stop the watchdog from counting
|
2013-03-14 17:03:00 -05:00
|
|
|
while the system is in a debug halt state. It may be simplest to set
|
|
|
|
that non-counting mode in your debugger startup scripts. You may however
|
2010-01-14 01:33:53 -06:00
|
|
|
need a different approach when, for example, a motor could be physically
|
2013-03-14 17:03:00 -05:00
|
|
|
damaged by firmware remaining inactive in a debug halt state. That might
|
2010-01-14 01:33:53 -06:00
|
|
|
involve a type of firmware mode where that "non-counting" mode is disabled
|
|
|
|
at the beginning then re-enabled at the end; a watchdog reset might fire
|
|
|
|
and complicate the debug session, but hardware (or people) would be
|
|
|
|
protected.@footnote{Note that many systems support a "monitor mode" debug
|
2013-03-14 17:03:00 -05:00
|
|
|
that is a somewhat cleaner way to address such issues. You can think of
|
2010-01-14 01:33:53 -06:00
|
|
|
it as only halting part of the system, maybe just one task,
|
|
|
|
instead of the whole thing.
|
|
|
|
At this writing, January 2010, OpenOCD based debugging does not support
|
|
|
|
monitor mode debug, only "halt mode" debug.}
|
|
|
|
|
2009-12-04 12:11:31 -06:00
|
|
|
@item @b{ARM Semihosting}...
|
|
|
|
@cindex ARM semihosting
|
|
|
|
When linked with a special runtime library provided with many
|
|
|
|
toolchains@footnote{See chapter 8 "Semihosting" in
|
|
|
|
@uref{http://infocenter.arm.com/help/topic/com.arm.doc.dui0203i/DUI0203I_rvct_developer_guide.pdf,
|
|
|
|
ARM DUI 0203I}, the "RealView Compilation Tools Developer Guide".
|
|
|
|
The CodeSourcery EABI toolchain also includes a semihosting library.},
|
2013-03-14 17:03:00 -05:00
|
|
|
your target code can use I/O facilities on the debug host. That library
|
2009-12-04 12:11:31 -06:00
|
|
|
provides a small set of system calls which are handled by OpenOCD.
|
|
|
|
It can let the debugger provide your system console and a file system,
|
|
|
|
helping with early debugging or providing a more capable environment
|
|
|
|
for sometimes-complex tasks like installing system firmware onto
|
|
|
|
NAND or SPI flash.
|
|
|
|
|
2009-09-29 13:20:30 -05:00
|
|
|
@item @b{ARM Wait-For-Interrupt}...
|
|
|
|
Many ARM chips synchronize the JTAG clock using the core clock.
|
|
|
|
Low power states which stop that core clock thus prevent JTAG access.
|
|
|
|
Idle loops in tasking environments often enter those low power states
|
|
|
|
via the @code{WFI} instruction (or its coprocessor equivalent, before ARMv7).
|
|
|
|
|
|
|
|
You may want to @emph{disable that instruction} in source code,
|
|
|
|
or otherwise prevent using that state,
|
2010-01-14 01:33:53 -06:00
|
|
|
to ensure you can get JTAG access at any time.@footnote{As a more
|
|
|
|
polite alternative, some processors have special debug-oriented
|
|
|
|
registers which can be used to change various features including
|
|
|
|
how the low power states are clocked while debugging.
|
|
|
|
The STM32 DBGMCU_CR register is an example; at the cost of extra
|
|
|
|
power consumption, JTAG can be used during low power states.}
|
2009-09-29 13:20:30 -05:00
|
|
|
For example, the OpenOCD @command{halt} command may not
|
|
|
|
work for an idle processor otherwise.
|
|
|
|
|
|
|
|
@item @b{Delay after reset}...
|
|
|
|
Not all chips have good support for debugger access
|
|
|
|
right after reset; many LPC2xxx chips have issues here.
|
|
|
|
Similarly, applications that reconfigure pins used for
|
|
|
|
JTAG access as they start will also block debugger access.
|
|
|
|
|
|
|
|
To work with boards like this, @emph{enable a short delay loop}
|
|
|
|
the first thing after reset, before "real" startup activities.
|
|
|
|
For example, one second's delay is usually more than enough
|
|
|
|
time for a JTAG debugger to attach, so that
|
|
|
|
early code execution can be debugged
|
|
|
|
or firmware can be replaced.
|
|
|
|
|
|
|
|
@item @b{Debug Communications Channel (DCC)}...
|
|
|
|
Some processors include mechanisms to send messages over JTAG.
|
|
|
|
Many ARM cores support these, as do some cores from other vendors.
|
|
|
|
(OpenOCD may be able to use this DCC internally, speeding up some
|
|
|
|
operations like writing to memory.)
|
|
|
|
|
|
|
|
Your application may want to deliver various debugging messages
|
|
|
|
over JTAG, by @emph{linking with a small library of code}
|
|
|
|
provided with OpenOCD and using the utilities there to send
|
|
|
|
various kinds of message.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{softwaredebugmessagesandtracing,,Software Debug Messages and Tracing}.
|
2009-09-29 13:20:30 -05:00
|
|
|
|
|
|
|
@end itemize
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2010-01-21 18:15:41 -06:00
|
|
|
@section Target Hardware Setup
|
|
|
|
|
|
|
|
Chip vendors often provide software development boards which
|
|
|
|
are highly configurable, so that they can support all options
|
2013-03-14 17:03:00 -05:00
|
|
|
that product boards may require. @emph{Make sure that any
|
2010-01-21 18:15:41 -06:00
|
|
|
jumpers or switches match the system configuration you are
|
|
|
|
working with.}
|
|
|
|
|
|
|
|
Common issues include:
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
|
|
|
@item @b{JTAG setup} ...
|
|
|
|
Boards may support more than one JTAG configuration.
|
|
|
|
Examples include jumpers controlling pullups versus pulldowns
|
|
|
|
on the nTRST and/or nSRST signals, and choice of connectors
|
|
|
|
(e.g. which of two headers on the base board,
|
|
|
|
or one from a daughtercard).
|
|
|
|
For some Texas Instruments boards, you may need to jumper the
|
|
|
|
EMU0 and EMU1 signals (which OpenOCD won't currently control).
|
|
|
|
|
|
|
|
@item @b{Boot Modes} ...
|
|
|
|
Complex chips often support multiple boot modes, controlled
|
2013-03-14 17:03:00 -05:00
|
|
|
by external jumpers. Make sure this is set up correctly.
|
2010-01-21 18:15:41 -06:00
|
|
|
For example many i.MX boards from NXP need to be jumpered
|
|
|
|
to "ATX mode" to start booting using the on-chip ROM, when
|
|
|
|
using second stage bootloader code stored in a NAND flash chip.
|
|
|
|
|
|
|
|
Such explicit configuration is common, and not limited to
|
2013-03-14 17:03:00 -05:00
|
|
|
booting from NAND. You might also need to set jumpers to
|
2010-01-21 18:15:41 -06:00
|
|
|
start booting using code loaded from an MMC/SD card; external
|
|
|
|
SPI flash; Ethernet, UART, or USB links; NOR flash; OneNAND
|
|
|
|
flash; some external host; or various other sources.
|
|
|
|
|
|
|
|
|
|
|
|
@item @b{Memory Addressing} ...
|
|
|
|
Boards which support multiple boot modes may also have jumpers
|
2013-03-14 17:03:00 -05:00
|
|
|
to configure memory addressing. One board, for example, jumpers
|
2010-01-21 18:15:41 -06:00
|
|
|
external chipselect 0 (used for booting) to address either
|
|
|
|
a large SRAM (which must be pre-loaded via JTAG), NOR flash,
|
2013-03-14 17:03:00 -05:00
|
|
|
or NAND flash. When it's jumpered to address NAND flash, that
|
2010-01-21 18:15:41 -06:00
|
|
|
board must also be told to start booting from on-chip ROM.
|
|
|
|
|
|
|
|
Your @file{board.cfg} file may also need to be told this jumper
|
|
|
|
configuration, so that it can know whether to declare NOR flash
|
|
|
|
using @command{flash bank} or instead declare NAND flash with
|
|
|
|
@command{nand device}; and likewise which probe to perform in
|
|
|
|
its @code{reset-init} handler.
|
|
|
|
|
2013-03-14 17:03:00 -05:00
|
|
|
A closely related issue is bus width. Jumpers might need to
|
2010-01-21 18:15:41 -06:00
|
|
|
distinguish between 8 bit or 16 bit bus access for the flash
|
|
|
|
used to start booting.
|
|
|
|
|
|
|
|
@item @b{Peripheral Access} ...
|
|
|
|
Development boards generally provide access to every peripheral
|
|
|
|
on the chip, sometimes in multiple modes (such as by providing
|
|
|
|
multiple audio codec chips).
|
|
|
|
This interacts with software
|
|
|
|
configuration of pin multiplexing, where for example a
|
|
|
|
given pin may be routed either to the MMC/SD controller
|
2013-03-14 17:03:00 -05:00
|
|
|
or the GPIO controller. It also often interacts with
|
|
|
|
configuration jumpers. One jumper may be used to route
|
2010-01-21 18:15:41 -06:00
|
|
|
signals to an MMC/SD card slot or an expansion bus (which
|
|
|
|
might in turn affect booting); others might control which
|
|
|
|
audio or video codecs are used.
|
|
|
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
Plus you should of course have @code{reset-init} event handlers
|
|
|
|
which set up the hardware to match that jumper configuration.
|
|
|
|
That includes in particular any oscillator or PLL used to clock
|
|
|
|
the CPU, and any memory controllers needed to access external
|
2013-03-14 17:03:00 -05:00
|
|
|
memory and peripherals. Without such handlers, you won't be
|
2010-01-21 18:15:41 -06:00
|
|
|
able to access those resources without working target firmware
|
|
|
|
which can do that setup ... this can be awkward when you're
|
2013-03-14 17:03:00 -05:00
|
|
|
trying to debug that target firmware. Even if there's a ROM
|
2010-01-21 18:15:41 -06:00
|
|
|
bootloader which handles a few issues, it rarely provides full
|
|
|
|
access to all board-specific capabilities.
|
|
|
|
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@node Config File Guidelines
|
|
|
|
@chapter Config File Guidelines
|
|
|
|
|
2009-06-17 19:29:39 -05:00
|
|
|
This chapter is aimed at any user who needs to write a config file,
|
|
|
|
including developers and integrators of OpenOCD and any user who
|
|
|
|
needs to get a new board working smoothly.
|
|
|
|
It provides guidelines for creating those files.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2015-05-15 05:13:18 -05:00
|
|
|
You should find the following directories under
|
|
|
|
@t{$(INSTALLDIR)/scripts}, with config files maintained upstream. Use
|
|
|
|
them as-is where you can; or as models for new files.
|
2008-02-28 01:44:13 -06:00
|
|
|
@itemize @bullet
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @file{interface} ...
|
2015-05-15 05:13:18 -05:00
|
|
|
These are for debug adapters. Files that specify configuration to use
|
|
|
|
specific JTAG, SWD and other adapters go here.
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @file{board} ...
|
2015-05-15 05:13:18 -05:00
|
|
|
Think Circuit Board, PWA, PCB, they go by many names. Board files
|
2009-10-07 11:15:21 -05:00
|
|
|
contain initialization items that are specific to a board.
|
2015-05-15 05:13:18 -05:00
|
|
|
|
2009-10-07 11:15:21 -05:00
|
|
|
They reuse target configuration files, since the same
|
|
|
|
microprocessor chips are used on many boards,
|
2013-03-14 17:03:00 -05:00
|
|
|
but support for external parts varies widely. For
|
2009-06-22 17:36:53 -05:00
|
|
|
example, the SDRAM initialization sequence for the board, or the type
|
2013-03-14 17:03:00 -05:00
|
|
|
of external flash and what address it uses. Any initialization
|
2009-03-20 08:27:02 -05:00
|
|
|
sequence to enable that external flash or SDRAM should be found in the
|
2013-03-14 17:03:00 -05:00
|
|
|
board file. Boards may also contain multiple targets: two CPUs; or
|
2009-10-07 11:15:21 -05:00
|
|
|
a CPU and an FPGA.
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @file{target} ...
|
2015-05-15 05:13:18 -05:00
|
|
|
Think chip. The ``target'' directory represents the JTAG TAPs
|
2009-06-02 19:56:50 -05:00
|
|
|
on a chip
|
|
|
|
which OpenOCD should control, not a board. Two common types of targets
|
2008-11-30 16:25:43 -06:00
|
|
|
are ARM chips and FPGA or CPLD chips.
|
2009-06-02 19:56:50 -05:00
|
|
|
When a chip has multiple TAPs (maybe it has both ARM and DSP cores),
|
|
|
|
the target config file defines all of them.
|
2009-10-07 11:15:21 -05:00
|
|
|
@item @emph{more} ... browse for other library files which may be useful.
|
|
|
|
For example, there are various generic and CPU-specific utilities.
|
2008-11-30 16:25:43 -06:00
|
|
|
@end itemize
|
|
|
|
|
2009-06-17 19:29:39 -05:00
|
|
|
The @file{openocd.cfg} user config
|
|
|
|
file may override features in any of the above files by
|
|
|
|
setting variables before sourcing the target file, or by adding
|
|
|
|
commands specific to their situation.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@section Interface Config Files
|
|
|
|
|
2009-06-17 19:29:39 -05:00
|
|
|
The user config file
|
2009-06-22 17:36:53 -05:00
|
|
|
should be able to source one of these files with a command like this:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-17 19:29:39 -05:00
|
|
|
source [find interface/FOOBAR.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
A preconfigured interface file should exist for every debug adapter
|
|
|
|
in use today with OpenOCD.
|
|
|
|
That said, perhaps some of these config files
|
|
|
|
have only been used by the developer who created it.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-17 19:29:39 -05:00
|
|
|
A separate chapter gives information about how to set these up.
|
2010-03-05 23:09:03 -06:00
|
|
|
@xref{Debug Adapter Configuration}.
|
2012-02-13 05:11:02 -06:00
|
|
|
Read the OpenOCD source code (and Developer's Guide)
|
2010-03-05 23:09:03 -06:00
|
|
|
if you have a new kind of hardware interface
|
2009-06-17 19:29:39 -05:00
|
|
|
and need to provide a driver for it.
|
|
|
|
|
2021-11-21 17:48:26 -06:00
|
|
|
@deffn {Command} {find} 'filename'
|
|
|
|
Prints full path to @var{filename} according to OpenOCD search rules.
|
|
|
|
@end deffn
|
|
|
|
|
|
|
|
@deffn {Command} {ocd_find} 'filename'
|
|
|
|
Prints full path to @var{filename} according to OpenOCD search rules. This
|
|
|
|
is a low level function used by the @command{find}. Usually you want
|
|
|
|
to use @command{find}, instead.
|
|
|
|
@end deffn
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@section Board Config Files
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex config file, board
|
|
|
|
@cindex board config file
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-17 19:29:39 -05:00
|
|
|
The user config file
|
2009-06-22 17:36:53 -05:00
|
|
|
should be able to source one of these files with a command like this:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-17 19:29:39 -05:00
|
|
|
source [find board/FOOBAR.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
The point of a board config file is to package everything
|
|
|
|
about a given board that user config files need to know.
|
2009-03-20 08:27:02 -05:00
|
|
|
In summary the board files should contain (if present)
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@enumerate
|
2014-01-08 09:17:56 -06:00
|
|
|
@item One or more @command{source [find target/...cfg]} statements
|
2013-03-14 16:38:19 -05:00
|
|
|
@item NOR flash configuration (@pxref{norconfiguration,,NOR Configuration})
|
|
|
|
@item NAND flash configuration (@pxref{nandconfiguration,,NAND Configuration})
|
2009-06-22 17:36:53 -05:00
|
|
|
@item Target @code{reset} handlers for SDRAM and I/O configuration
|
|
|
|
@item JTAG adapter reset configuration (@pxref{Reset Configuration})
|
2008-11-30 16:25:43 -06:00
|
|
|
@item All things that are not ``inside a chip''
|
|
|
|
@end enumerate
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Generic things inside target chips belong in target config files,
|
2013-03-14 17:03:00 -05:00
|
|
|
not board config files. So for example a @code{reset-init} event
|
2009-06-22 17:36:53 -05:00
|
|
|
handler should know board-specific oscillator and PLL parameters,
|
|
|
|
which it passes to target-specific utility code.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
The most complex task of a board config file is creating such a
|
|
|
|
@code{reset-init} event handler.
|
|
|
|
Define those handlers last, after you verify the rest of the board
|
|
|
|
configuration works.
|
|
|
|
|
|
|
|
@subsection Communication Between Config files
|
|
|
|
|
|
|
|
In addition to target-specific utility code, another way that
|
|
|
|
board and target config files communicate is by following a
|
|
|
|
convention on how to use certain variables.
|
|
|
|
|
2010-12-16 02:12:22 -06:00
|
|
|
The full Tcl/Tk language supports ``namespaces'', but Jim-Tcl does not.
|
2009-06-22 17:36:53 -05:00
|
|
|
Thus the rule we follow in OpenOCD is this: Variables that begin with
|
|
|
|
a leading underscore are temporary in nature, and can be modified and
|
|
|
|
used at will within a target configuration file.
|
|
|
|
|
|
|
|
Complex board config files can do the things like this,
|
|
|
|
for a board with three chips:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-22 17:36:53 -05:00
|
|
|
# Chip #1: PXA270 for network side, big endian
|
|
|
|
set CHIPNAME network
|
|
|
|
set ENDIAN big
|
|
|
|
source [find target/pxa270.cfg]
|
|
|
|
# on return: _TARGETNAME = network.cpu
|
|
|
|
# other commands can refer to the "network.cpu" target.
|
|
|
|
$_TARGETNAME configure .... events for this CPU..
|
|
|
|
|
|
|
|
# Chip #2: PXA270 for video side, little endian
|
|
|
|
set CHIPNAME video
|
|
|
|
set ENDIAN little
|
|
|
|
source [find target/pxa270.cfg]
|
|
|
|
# on return: _TARGETNAME = video.cpu
|
|
|
|
# other commands can refer to the "video.cpu" target.
|
|
|
|
$_TARGETNAME configure .... events for this CPU..
|
|
|
|
|
|
|
|
# Chip #3: Xilinx FPGA for glue logic
|
|
|
|
set CHIPNAME xilinx
|
|
|
|
unset ENDIAN
|
|
|
|
source [find target/spartan3.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
That example is oversimplified because it doesn't show any flash memory,
|
|
|
|
or the @code{reset-init} event handlers to initialize external DRAM
|
|
|
|
or (assuming it needs it) load a configuration into the FPGA.
|
|
|
|
Such features are usually needed for low-level work with many boards,
|
|
|
|
where ``low level'' implies that the board initialization software may
|
2013-03-14 17:03:00 -05:00
|
|
|
not be working. (That's a common reason to need JTAG tools. Another
|
2009-06-22 17:36:53 -05:00
|
|
|
is to enable working with microcontroller-based systems, which often
|
|
|
|
have no debugging support except a JTAG connector.)
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Target config files may also export utility functions to board and user
|
2013-03-14 17:03:00 -05:00
|
|
|
config files. Such functions should use name prefixes, to help avoid
|
2009-06-22 17:36:53 -05:00
|
|
|
naming collisions.
|
2009-06-17 19:29:39 -05:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Board files could also accept input variables from user config files.
|
|
|
|
For example, there might be a @code{J4_JUMPER} setting used to identify
|
|
|
|
what kind of flash memory a development board is using, or how to set
|
|
|
|
up other clocks and peripherals.
|
2009-06-17 19:29:39 -05:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@subsection Variable Naming Convention
|
|
|
|
@cindex variable names
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Most boards have only one instance of a chip.
|
2009-06-17 19:29:39 -05:00
|
|
|
However, it should be easy to create a board with more than
|
2009-06-22 17:36:53 -05:00
|
|
|
one such chip (as shown above).
|
|
|
|
Accordingly, we encourage these conventions for naming
|
|
|
|
variables associated with different @file{target.cfg} files,
|
|
|
|
to promote consistency and
|
|
|
|
so that board files can override target defaults.
|
|
|
|
|
|
|
|
Inputs to target config files include:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@itemize @bullet
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @code{CHIPNAME} ...
|
|
|
|
This gives a name to the overall chip, and is used as part of
|
|
|
|
tap identifier dotted names.
|
|
|
|
While the default is normally provided by the chip manufacturer,
|
|
|
|
board files may need to distinguish between instances of a chip.
|
|
|
|
@item @code{ENDIAN} ...
|
|
|
|
By default @option{little} - although chips may hard-wire @option{big}.
|
2020-04-25 18:39:16 -05:00
|
|
|
Chips that can't change endianness don't need to use this variable.
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @code{CPUTAPID} ...
|
|
|
|
When OpenOCD examines the JTAG chain, it can be told verify the
|
|
|
|
chips against the JTAG IDCODE register.
|
|
|
|
The target file will hold one or more defaults, but sometimes the
|
|
|
|
chip in a board will use a different ID (perhaps a newer revision).
|
|
|
|
@end itemize
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Outputs from target config files include:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@itemize @bullet
|
|
|
|
@item @code{_TARGETNAME} ...
|
|
|
|
By convention, this variable is created by the target configuration
|
2008-11-30 16:25:43 -06:00
|
|
|
script. The board configuration file may make use of this variable to
|
|
|
|
configure things like a ``reset init'' script, or other things
|
|
|
|
specific to that board and that target.
|
2009-06-22 17:36:53 -05:00
|
|
|
If the chip has 2 targets, the names are @code{_TARGETNAME0},
|
|
|
|
@code{_TARGETNAME1}, ... etc.
|
|
|
|
@end itemize
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@subsection The reset-init Event Handler
|
|
|
|
@cindex event, reset-init
|
|
|
|
@cindex reset-init handler
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Board config files run in the OpenOCD configuration stage;
|
|
|
|
they can't use TAPs or targets, since they haven't been
|
|
|
|
fully set up yet.
|
|
|
|
This means you can't write memory or access chip registers;
|
|
|
|
you can't even verify that a flash chip is present.
|
|
|
|
That's done later in event handlers, of which the target @code{reset-init}
|
|
|
|
handler is one of the most important.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Except on microcontrollers, the basic job of @code{reset-init} event
|
|
|
|
handlers is setting up flash and DRAM, as normally handled by boot loaders.
|
|
|
|
Microcontrollers rarely use boot loaders; they run right out of their
|
2013-03-14 17:03:00 -05:00
|
|
|
on-chip flash and SRAM memory. But they may want to use one of these
|
2009-06-22 17:36:53 -05:00
|
|
|
handlers too, if just for developer convenience.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@quotation Note
|
|
|
|
Because this is so very board-specific, and chip-specific, no examples
|
|
|
|
are included here.
|
|
|
|
Instead, look at the board config files distributed with OpenOCD.
|
2009-10-09 17:51:16 -05:00
|
|
|
If you have a boot loader, its source code will help; so will
|
|
|
|
configuration files for other JTAG tools
|
2013-03-14 16:38:19 -05:00
|
|
|
(@pxref{translatingconfigurationfiles,,Translating Configuration Files}).
|
2009-06-22 17:36:53 -05:00
|
|
|
@end quotation
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Some of this code could probably be shared between different boards.
|
|
|
|
For example, setting up a DRAM controller often doesn't differ by
|
|
|
|
much except the bus width (16 bits or 32?) and memory timings, so a
|
|
|
|
reusable TCL procedure loaded by the @file{target.cfg} file might take
|
|
|
|
those as parameters.
|
|
|
|
Similarly with oscillator, PLL, and clock setup;
|
|
|
|
and disabling the watchdog.
|
|
|
|
Structure the code cleanly, and provide comments to help
|
|
|
|
the next developer doing such work.
|
|
|
|
(@emph{You might be that next person} trying to reuse init code!)
|
|
|
|
|
|
|
|
The last thing normally done in a @code{reset-init} handler is probing
|
2013-03-14 17:03:00 -05:00
|
|
|
whatever flash memory was configured. For most chips that needs to be
|
2009-06-22 17:36:53 -05:00
|
|
|
done while the associated target is halted, either because JTAG memory
|
|
|
|
access uses the CPU or to prevent conflicting CPU access.
|
|
|
|
|
|
|
|
@subsection JTAG Clock Rate
|
|
|
|
|
|
|
|
Before your @code{reset-init} handler has set up
|
2009-09-20 16:17:08 -05:00
|
|
|
the PLLs and clocking, you may need to run with
|
|
|
|
a low JTAG clock rate.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{jtagspeed,,JTAG Speed}.
|
2009-09-20 16:17:08 -05:00
|
|
|
Then you'd increase that rate after your handler has
|
|
|
|
made it possible to use the faster JTAG clock.
|
|
|
|
When the initial low speed is board-specific, for example
|
|
|
|
because it depends on a board-specific oscillator speed, then
|
|
|
|
you should probably set it up in the board config file;
|
|
|
|
if it's target-specific, it belongs in the target config file.
|
|
|
|
|
2009-09-17 02:56:24 -05:00
|
|
|
For most ARM-based processors the fastest JTAG clock@footnote{A FAQ
|
|
|
|
@uref{http://www.arm.com/support/faqdev/4170.html} gives details.}
|
|
|
|
is one sixth of the CPU clock; or one eighth for ARM11 cores.
|
|
|
|
Consult chip documentation to determine the peak JTAG clock rate,
|
|
|
|
which might be less than that.
|
|
|
|
|
|
|
|
@quotation Warning
|
|
|
|
On most ARMs, JTAG clock detection is coupled to the core clock, so
|
|
|
|
software using a @option{wait for interrupt} operation blocks JTAG access.
|
|
|
|
Adaptive clocking provides a partial workaround, but a more complete
|
|
|
|
solution just avoids using that instruction with JTAG debuggers.
|
|
|
|
@end quotation
|
|
|
|
|
2010-02-10 13:27:48 -06:00
|
|
|
If both the chip and the board support adaptive clocking,
|
|
|
|
use the @command{jtag_rclk}
|
2009-06-22 17:36:53 -05:00
|
|
|
command, in case your board is used with JTAG adapter which
|
2018-11-19 05:56:48 -06:00
|
|
|
also supports it. Otherwise use @command{adapter speed}.
|
2009-06-22 17:36:53 -05:00
|
|
|
Set the slow rate at the beginning of the reset sequence,
|
|
|
|
and the faster rate as soon as the clocks are at full speed.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{theinitboardprocedure}
|
2012-02-09 11:37:05 -06:00
|
|
|
@subsection The init_board procedure
|
|
|
|
@cindex init_board procedure
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
The concept of @code{init_board} procedure is very similar to @code{init_targets}
|
|
|
|
(@xref{theinittargetsprocedure,,The init_targets procedure}.) - it's a replacement of ``linear''
|
|
|
|
configuration scripts. This procedure is meant to be executed when OpenOCD enters run stage
|
|
|
|
(@xref{enteringtherunstage,,Entering the Run Stage},) after @code{init_targets}. The idea to have
|
2014-01-08 09:17:56 -06:00
|
|
|
separate @code{init_targets} and @code{init_board} procedures is to allow the first one to configure
|
2013-03-14 16:38:19 -05:00
|
|
|
everything target specific (internal flash, internal RAM, etc.) and the second one to configure
|
|
|
|
everything board specific (reset signals, chip frequency, reset-init event handler, external memory, etc.).
|
|
|
|
Additionally ``linear'' board config file will most likely fail when target config file uses
|
|
|
|
@code{init_targets} scheme (``linear'' script is executed before @code{init} and @code{init_targets} - after),
|
|
|
|
so separating these two configuration stages is very convenient, as the easiest way to overcome this
|
|
|
|
problem is to convert board config file to use @code{init_board} procedure. Board config scripts don't
|
2014-01-08 09:17:56 -06:00
|
|
|
need to override @code{init_targets} defined in target config files when they only need to add some specifics.
|
2012-02-09 11:37:05 -06:00
|
|
|
|
2014-01-08 09:17:56 -06:00
|
|
|
Just as @code{init_targets}, the @code{init_board} procedure can be overridden by ``next level'' script (which sources
|
2012-02-09 11:37:05 -06:00
|
|
|
the original), allowing greater code reuse.
|
|
|
|
|
|
|
|
@example
|
|
|
|
### board_file.cfg ###
|
|
|
|
|
|
|
|
# source target file that does most of the config in init_targets
|
|
|
|
source [find target/target.cfg]
|
|
|
|
|
|
|
|
proc enable_fast_clock @{@} @{
|
|
|
|
# enables fast on-board clock source
|
|
|
|
# configures the chip to use it
|
|
|
|
@}
|
|
|
|
|
|
|
|
# initialize only board specifics - reset, clock, adapter frequency
|
|
|
|
proc init_board @{@} @{
|
|
|
|
reset_config trst_and_srst trst_pulls_srst
|
|
|
|
|
2018-03-04 05:05:15 -06:00
|
|
|
$_TARGETNAME configure -event reset-start @{
|
2018-11-19 05:56:48 -06:00
|
|
|
adapter speed 100
|
2018-03-04 05:05:15 -06:00
|
|
|
@}
|
|
|
|
|
2012-02-09 11:37:05 -06:00
|
|
|
$_TARGETNAME configure -event reset-init @{
|
|
|
|
enable_fast_clock
|
2018-11-19 05:56:48 -06:00
|
|
|
adapter speed 10000
|
2012-02-09 11:37:05 -06:00
|
|
|
@}
|
|
|
|
@}
|
|
|
|
@end example
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@section Target Config Files
|
|
|
|
@cindex config file, target
|
|
|
|
@cindex target config file
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
Board config files communicate with target config files using
|
|
|
|
naming conventions as described above, and may source one or
|
|
|
|
more target config files like this:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-22 17:36:53 -05:00
|
|
|
source [find target/FOOBAR.cfg]
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
The point of a target config file is to package everything
|
|
|
|
about a given chip that board config files need to know.
|
|
|
|
In summary the target files should contain
|
|
|
|
|
|
|
|
@enumerate
|
|
|
|
@item Set defaults
|
|
|
|
@item Add TAPs to the scan chain
|
|
|
|
@item Add CPU targets (includes GDB support)
|
|
|
|
@item CPU/Chip/CPU-Core specific features
|
|
|
|
@item On-Chip flash
|
|
|
|
@end enumerate
|
|
|
|
|
|
|
|
As a rule of thumb, a target file sets up only one chip.
|
|
|
|
For a microcontroller, that will often include a single TAP,
|
|
|
|
which is a CPU needing a GDB target, and its on-chip flash.
|
|
|
|
|
|
|
|
More complex chips may include multiple TAPs, and the target
|
|
|
|
config file may need to define them all before OpenOCD
|
|
|
|
can talk to the chip.
|
|
|
|
For example, some phone chips have JTAG scan chains that include
|
|
|
|
an ARM core for operating system use, a DSP,
|
|
|
|
another ARM core embedded in an image processing engine,
|
|
|
|
and other processing engines.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@subsection Default Value Boiler Plate Code
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
All target configuration files should start with code like this,
|
|
|
|
letting board config files express environment-specific
|
|
|
|
differences in how things should be set up.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-06-22 17:36:53 -05:00
|
|
|
# Boards may override chip names, perhaps based on role,
|
|
|
|
# but the default should match what the vendor uses
|
2009-05-31 22:06:11 -05:00
|
|
|
if @{ [info exists CHIPNAME] @} @{
|
|
|
|
set _CHIPNAME $CHIPNAME
|
|
|
|
@} else @{
|
2008-11-30 16:25:43 -06:00
|
|
|
set _CHIPNAME sam7x256
|
|
|
|
@}
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
# ONLY use ENDIAN with targets that can change it.
|
2009-05-31 22:06:11 -05:00
|
|
|
if @{ [info exists ENDIAN] @} @{
|
|
|
|
set _ENDIAN $ENDIAN
|
|
|
|
@} else @{
|
2008-11-30 16:25:43 -06:00
|
|
|
set _ENDIAN little
|
|
|
|
@}
|
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
# TAP identifiers may change as chips mature, for example with
|
2013-03-14 17:03:00 -05:00
|
|
|
# new revision fields (the "3" here). Pick a good default; you
|
2009-06-22 17:36:53 -05:00
|
|
|
# can pass several such identifiers to the "jtag newtap" command.
|
2008-11-30 16:25:43 -06:00
|
|
|
if @{ [info exists CPUTAPID ] @} @{
|
|
|
|
set _CPUTAPID $CPUTAPID
|
|
|
|
@} else @{
|
|
|
|
set _CPUTAPID 0x3f0f0f0f
|
|
|
|
@}
|
|
|
|
@end example
|
2009-06-28 13:46:51 -05:00
|
|
|
@c but 0x3f0f0f0f is for an str73x part ...
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-22 17:36:53 -05:00
|
|
|
@emph{Remember:} Board config files may include multiple target
|
|
|
|
config files, or the same target file multiple times
|
|
|
|
(changing at least @code{CHIPNAME}).
|
|
|
|
|
|
|
|
Likewise, the target configuration file should define
|
|
|
|
@code{_TARGETNAME} (or @code{_TARGETNAME0} etc) and
|
|
|
|
use it later on when defining debug targets:
|
|
|
|
|
|
|
|
@example
|
|
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
|
|
|
target create $_TARGETNAME arm7tdmi -chain-position $_TARGETNAME
|
|
|
|
@end example
|
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
@subsection Adding TAPs to the Scan Chain
|
|
|
|
After the ``defaults'' are set up,
|
|
|
|
add the TAPs on each chip to the JTAG scan chain.
|
2009-06-07 18:10:50 -05:00
|
|
|
@xref{TAP Declaration}, and the naming convention
|
2009-06-02 19:56:50 -05:00
|
|
|
for taps.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
In the simplest case the chip has only one TAP,
|
|
|
|
probably for a CPU or FPGA.
|
|
|
|
The config file for the Atmel AT91SAM7X256
|
|
|
|
looks (in part) like this:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
@example
|
2009-11-05 13:31:32 -06:00
|
|
|
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
A board with two such at91sam7 chips would be able
|
|
|
|
to source such a config file twice, with different
|
2009-06-07 18:10:50 -05:00
|
|
|
values for @code{CHIPNAME}, so
|
2009-06-02 19:56:50 -05:00
|
|
|
it adds a different TAP each time.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-09-29 13:26:18 -05:00
|
|
|
If there are nonzero @option{-expected-id} values,
|
2009-06-22 17:36:53 -05:00
|
|
|
OpenOCD attempts to verify the actual tap id against those values.
|
|
|
|
It will issue error messages if there is mismatch, which
|
|
|
|
can help to pinpoint problems in OpenOCD configurations.
|
|
|
|
|
|
|
|
@example
|
|
|
|
JTAG tap: sam7x256.cpu tap/device found: 0x3f0f0f0f
|
|
|
|
(Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3)
|
|
|
|
ERROR: Tap: sam7x256.cpu - Expected id: 0x12345678, Got: 0x3f0f0f0f
|
|
|
|
ERROR: expected: mfg: 0x33c, part: 0x2345, ver: 0x1
|
|
|
|
ERROR: got: mfg: 0x787, part: 0xf0f0, ver: 0x3
|
|
|
|
@end example
|
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
There are more complex examples too, with chips that have
|
2013-03-14 17:03:00 -05:00
|
|
|
multiple TAPs. Ones worth looking at include:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
@itemize
|
2009-06-22 17:36:53 -05:00
|
|
|
@item @file{target/omap3530.cfg} -- with disabled ARM and DSP,
|
|
|
|
plus a JRC to enable them
|
2009-06-02 19:56:50 -05:00
|
|
|
@item @file{target/str912.cfg} -- with flash, CPU, and boundary scan
|
|
|
|
@item @file{target/ti_dm355.cfg} -- with ETM, ARM, and JRC (this JRC
|
|
|
|
is not currently used)
|
|
|
|
@end itemize
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
@subsection Add CPU targets
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
After adding a TAP for a CPU, you should set it up so that
|
|
|
|
GDB and other commands can use it.
|
|
|
|
@xref{CPU Configuration}.
|
2009-06-22 17:36:53 -05:00
|
|
|
For the at91sam7 example above, the command can look like this;
|
|
|
|
note that @code{$_ENDIAN} is not needed, since OpenOCD defaults
|
|
|
|
to little endian, and this chip doesn't support changing that.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
@example
|
2009-06-07 18:10:50 -05:00
|
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
2009-06-02 19:56:50 -05:00
|
|
|
target create $_TARGETNAME arm7tdmi -chain-position $_TARGETNAME
|
2008-11-30 16:25:43 -06:00
|
|
|
@end example
|
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
Work areas are small RAM areas associated with CPU targets.
|
|
|
|
They are used by OpenOCD to speed up downloads,
|
|
|
|
and to download small snippets of code to program flash chips.
|
|
|
|
If the chip includes a form of ``on-chip-ram'' - and many do - define
|
|
|
|
a work area if you can.
|
|
|
|
Again using the at91sam7 as an example, this can look like:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-02 19:56:50 -05:00
|
|
|
@example
|
|
|
|
$_TARGETNAME configure -work-area-phys 0x00200000 \
|
2009-06-07 18:10:50 -05:00
|
|
|
-work-area-size 0x4000 -work-area-backup 0
|
2009-06-02 19:56:50 -05:00
|
|
|
@end example
|
2011-08-10 14:32:09 -05:00
|
|
|
|
2011-05-09 10:30:55 -05:00
|
|
|
@subsection Define CPU targets working in SMP
|
|
|
|
@cindex SMP
|
|
|
|
After setting targets, you can define a list of targets working in SMP.
|
|
|
|
|
2012-01-05 04:30:39 -06:00
|
|
|
@example
|
2011-05-09 10:30:55 -05:00
|
|
|
set _TARGETNAME_1 $_CHIPNAME.cpu1
|
|
|
|
set _TARGETNAME_2 $_CHIPNAME.cpu2
|
2013-02-01 09:43:21 -06:00
|
|
|
target create $_TARGETNAME_1 cortex_a -chain-position $_CHIPNAME.dap \
|
2012-01-05 04:30:39 -06:00
|
|
|
-coreid 0 -dbgbase $_DAP_DBG1
|
2013-02-01 09:43:21 -06:00
|
|
|
target create $_TARGETNAME_2 cortex_a -chain-position $_CHIPNAME.dap \
|
2012-01-05 04:30:39 -06:00
|
|
|
-coreid 1 -dbgbase $_DAP_DBG2
|
|
|
|
#define 2 targets working in smp.
|
2011-05-09 10:30:55 -05:00
|
|
|
target smp $_CHIPNAME.cpu2 $_CHIPNAME.cpu1
|
|
|
|
@end example
|
2013-02-01 09:43:21 -06:00
|
|
|
In the above example on cortex_a, 2 cpus are working in SMP.
|
2011-05-09 10:30:55 -05:00
|
|
|
In SMP only one GDB instance is created and :
|
|
|
|
@itemize @bullet
|
|
|
|
@item a set of hardware breakpoint sets the same breakpoint on all targets in the list.
|
|
|
|
@item halt command triggers the halt of all targets in the list.
|
|
|
|
@item resume command triggers the write context and the restart of all targets in the list.
|
|
|
|
@item following a breakpoint: the target stopped by the breakpoint is displayed to the GDB session.
|
2012-01-05 04:30:39 -06:00
|
|
|
@item dedicated GDB serial protocol packets are implemented for switching/retrieving the target
|
2013-03-14 16:38:19 -05:00
|
|
|
displayed by the GDB session @pxref{usingopenocdsmpwithgdb,,Using OpenOCD SMP with GDB}.
|
2011-05-09 10:30:55 -05:00
|
|
|
@end itemize
|
|
|
|
|
2013-02-01 09:43:21 -06:00
|
|
|
The SMP behaviour can be disabled/enabled dynamically. On cortex_a following
|
2011-05-09 10:30:55 -05:00
|
|
|
command have been implemented.
|
|
|
|
@itemize @bullet
|
2018-07-19 04:50:56 -05:00
|
|
|
@item cortex_a smp on : enable SMP mode, behaviour is as described above.
|
|
|
|
@item cortex_a smp off : disable SMP mode, the current target is the one
|
2011-05-09 10:30:55 -05:00
|
|
|
displayed in the GDB session, only this target is now controlled by GDB
|
|
|
|
session. This behaviour is useful during system boot up.
|
2018-07-19 04:50:56 -05:00
|
|
|
@item cortex_a smp : display current SMP mode.
|
2013-02-01 09:43:21 -06:00
|
|
|
@item cortex_a smp_gdb : display/fix the core id displayed in GDB session see
|
2011-05-09 10:30:55 -05:00
|
|
|
following example.
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
@example
|
2013-02-01 09:43:21 -06:00
|
|
|
>cortex_a smp_gdb
|
2012-01-05 04:30:39 -06:00
|
|
|
gdb coreid 0 -> -1
|
2011-05-09 10:30:55 -05:00
|
|
|
#0 : coreid 0 is displayed to GDB ,
|
|
|
|
#-> -1 : next resume triggers a real resume
|
2013-02-01 09:43:21 -06:00
|
|
|
> cortex_a smp_gdb 1
|
2012-01-05 04:30:39 -06:00
|
|
|
gdb coreid 0 -> 1
|
2011-05-09 10:30:55 -05:00
|
|
|
#0 :coreid 0 is displayed to GDB ,
|
2012-01-05 04:30:39 -06:00
|
|
|
#->1 : next resume displays coreid 1 to GDB
|
2011-05-09 10:30:55 -05:00
|
|
|
> resume
|
2013-02-01 09:43:21 -06:00
|
|
|
> cortex_a smp_gdb
|
2011-05-09 10:30:55 -05:00
|
|
|
gdb coreid 1 -> 1
|
|
|
|
#1 :coreid 1 is displayed to GDB ,
|
|
|
|
#->1 : next resume displays coreid 1 to GDB
|
2013-02-01 09:43:21 -06:00
|
|
|
> cortex_a smp_gdb -1
|
2011-05-09 10:30:55 -05:00
|
|
|
gdb coreid 1 -> -1
|
|
|
|
#1 :coreid 1 is displayed to GDB,
|
|
|
|
#->-1 : next resume triggers a real resume
|
|
|
|
@end example
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:23:24 -05:00
|
|
|
@subsection Chip Reset Setup
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-07 18:10:50 -05:00
|
|
|
As a rule, you should put the @command{reset_config} command
|
2013-03-14 17:03:00 -05:00
|
|
|
into the board file. Most things you think you know about a
|
2009-06-07 18:10:50 -05:00
|
|
|
chip can be tweaked by the board.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
Some chips have specific ways the TRST and SRST signals are
|
2009-06-07 18:10:50 -05:00
|
|
|
managed. In the unusual case that these are @emph{chip specific}
|
|
|
|
and can never be changed by board wiring, they could go here.
|
2009-11-27 20:50:20 -06:00
|
|
|
For example, some chips can't support JTAG debugging without
|
|
|
|
both signals.
|
|
|
|
|
|
|
|
Provide a @code{reset-assert} event handler if you can.
|
|
|
|
Such a handler uses JTAG operations to reset the target,
|
|
|
|
letting this target config be used in systems which don't
|
|
|
|
provide the optional SRST signal, or on systems where you
|
|
|
|
don't want to reset all targets at once.
|
|
|
|
Such a handler might write to chip registers to force a reset,
|
|
|
|
use a JRC to do that (preferable -- the target may be wedged!),
|
|
|
|
or force a watchdog timer to trigger.
|
2013-02-01 09:34:51 -06:00
|
|
|
(For Cortex-M targets, this is not necessary. The target
|
2009-11-27 20:50:20 -06:00
|
|
|
driver knows how to use trigger an NVIC reset when SRST is
|
|
|
|
not available.)
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-11 16:23:24 -05:00
|
|
|
Some chips need special attention during reset handling if
|
|
|
|
they're going to be used with JTAG.
|
|
|
|
An example might be needing to send some commands right
|
|
|
|
after the target's TAP has been reset, providing a
|
|
|
|
@code{reset-deassert-post} event handler that writes a chip
|
|
|
|
register to report that JTAG debugging is being done.
|
2009-11-27 20:50:20 -06:00
|
|
|
Another would be reconfiguring the watchdog so that it stops
|
|
|
|
counting while the core is halted in the debugger.
|
2009-06-11 16:23:24 -05:00
|
|
|
|
2009-09-20 16:17:08 -05:00
|
|
|
JTAG clocking constraints often change during reset, and in
|
|
|
|
some cases target config files (rather than board config files)
|
|
|
|
are the right places to handle some of those issues.
|
|
|
|
For example, immediately after reset most chips run using a
|
|
|
|
slower clock than they will use later.
|
|
|
|
That means that after reset (and potentially, as OpenOCD
|
|
|
|
first starts up) they must use a slower JTAG clock rate
|
|
|
|
than they will use later.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{jtagspeed,,JTAG Speed}.
|
2009-09-20 16:17:08 -05:00
|
|
|
|
|
|
|
@quotation Important
|
|
|
|
When you are debugging code that runs right after chip
|
|
|
|
reset, getting these issues right is critical.
|
|
|
|
In particular, if you see intermittent failures when
|
|
|
|
OpenOCD verifies the scan chain after reset,
|
|
|
|
look at how you are setting up JTAG clocking.
|
|
|
|
@end quotation
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{theinittargetsprocedure}
|
2012-02-09 10:50:42 -06:00
|
|
|
@subsection The init_targets procedure
|
|
|
|
@cindex init_targets procedure
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
Target config files can either be ``linear'' (script executed line-by-line when parsed in
|
|
|
|
configuration stage, @xref{configurationstage,,Configuration Stage},) or they can contain a special
|
|
|
|
procedure called @code{init_targets}, which will be executed when entering run stage
|
|
|
|
(after parsing all config files or after @code{init} command, @xref{enteringtherunstage,,Entering the Run Stage}.)
|
2018-02-10 08:08:26 -06:00
|
|
|
Such procedure can be overridden by ``next level'' script (which sources the original).
|
|
|
|
This concept facilitates code reuse when basic target config files provide generic configuration
|
|
|
|
procedures and @code{init_targets} procedure, which can then be sourced and enhanced or changed in
|
2013-03-14 16:38:19 -05:00
|
|
|
a ``more specific'' target config file. This is not possible with ``linear'' config scripts,
|
|
|
|
because sourcing them executes every initialization commands they provide.
|
2012-02-09 10:50:42 -06:00
|
|
|
|
|
|
|
@example
|
|
|
|
### generic_file.cfg ###
|
|
|
|
|
|
|
|
proc setup_my_chip @{chip_name flash_size ram_size@} @{
|
|
|
|
# basic initialization procedure ...
|
|
|
|
@}
|
|
|
|
|
|
|
|
proc init_targets @{@} @{
|
|
|
|
# initializes generic chip with 4kB of flash and 1kB of RAM
|
|
|
|
setup_my_chip MY_GENERIC_CHIP 4096 1024
|
|
|
|
@}
|
|
|
|
|
|
|
|
### specific_file.cfg ###
|
|
|
|
|
|
|
|
source [find target/generic_file.cfg]
|
|
|
|
|
|
|
|
proc init_targets @{@} @{
|
|
|
|
# initializes specific chip with 128kB of flash and 64kB of RAM
|
|
|
|
setup_my_chip MY_CHIP_WITH_128K_FLASH_64KB_RAM 131072 65536
|
|
|
|
@}
|
|
|
|
@end example
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
The easiest way to convert ``linear'' config files to @code{init_targets} version is to
|
|
|
|
enclose every line of ``code'' (i.e. not @code{source} commands, procedures, etc.) in this procedure.
|
2012-02-09 10:50:42 -06:00
|
|
|
|
|
|
|
For an example of this scheme see LPC2000 target config files.
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
The @code{init_boards} procedure is a similar concept concerning board config files
|
|
|
|
(@xref{theinitboardprocedure,,The init_board procedure}.)
|
2012-02-09 11:37:05 -06:00
|
|
|
|
2014-03-22 07:47:37 -05:00
|
|
|
@subsection The init_target_events procedure
|
|
|
|
@cindex init_target_events procedure
|
|
|
|
|
|
|
|
A special procedure called @code{init_target_events} is run just after
|
|
|
|
@code{init_targets} (@xref{theinittargetsprocedure,,The init_targets
|
|
|
|
procedure}.) and before @code{init_board}
|
|
|
|
(@xref{theinitboardprocedure,,The init_board procedure}.) It is used
|
|
|
|
to set up default target events for the targets that do not have those
|
|
|
|
events already assigned.
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@subsection ARM Core Specific Hacks
|
|
|
|
|
2009-03-20 08:27:02 -05:00
|
|
|
If the chip has a DCC, enable it. If the chip is an ARM9 with some
|
|
|
|
special high speed download features - enable it.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
|
|
|
If present, the MMU, the MPU and the CACHE should be disabled.
|
|
|
|
|
2009-05-17 23:40:11 -05:00
|
|
|
Some ARM cores are equipped with trace support, which permits
|
2013-03-14 17:03:00 -05:00
|
|
|
examination of the instruction and data bus activity. Trace
|
2009-05-17 23:40:11 -05:00
|
|
|
activity is controlled through an ``Embedded Trace Module'' (ETM)
|
2013-03-14 17:03:00 -05:00
|
|
|
on one of the core's scan chains. The ETM emits voluminous data
|
|
|
|
through a ``trace port''. (@xref{armhardwaretracing,,ARM Hardware Tracing}.)
|
2009-05-29 20:43:21 -05:00
|
|
|
If you are using an external trace port,
|
|
|
|
configure it in your board config file.
|
|
|
|
If you are using an on-chip ``Embedded Trace Buffer'' (ETB),
|
|
|
|
configure it in your target config file.
|
2009-05-17 23:40:11 -05:00
|
|
|
|
|
|
|
@example
|
|
|
|
etm config $_TARGETNAME 16 normal full etb
|
|
|
|
etb config $_TARGETNAME $_CHIPNAME.etb
|
|
|
|
@end example
|
|
|
|
|
2008-11-30 16:25:43 -06:00
|
|
|
@subsection Internal Flash Configuration
|
|
|
|
|
|
|
|
This applies @b{ONLY TO MICROCONTROLLERS} that have flash built in.
|
|
|
|
|
|
|
|
@b{Never ever} in the ``target configuration file'' define any type of
|
2009-05-21 21:25:18 -05:00
|
|
|
flash that is external to the chip. (For example a BOOT flash on
|
|
|
|
Chip Select 0.) Such flash information goes in a board file - not
|
2008-11-30 16:25:43 -06:00
|
|
|
the TARGET (chip) file.
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
@itemize @bullet
|
|
|
|
@item at91sam7x256 - has 256K flash YES enable it.
|
|
|
|
@item str912 - has flash internal YES enable it.
|
|
|
|
@item imx27 - uses boot flash on CS0 - it goes in the board file.
|
|
|
|
@item pxa270 - again - CS0 flash - it goes in the board file.
|
|
|
|
@end itemize
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{translatingconfigurationfiles}
|
2009-10-09 17:51:16 -05:00
|
|
|
@section Translating Configuration Files
|
2009-10-09 02:03:53 -05:00
|
|
|
@cindex translation
|
2009-10-09 17:51:16 -05:00
|
|
|
If you have a configuration file for another hardware debugger
|
|
|
|
or toolset (Abatron, BDI2000, BDI3000, CCS,
|
2014-10-20 12:18:38 -05:00
|
|
|
Lauterbach, SEGGER, Macraigor, etc.), translating
|
2009-10-09 02:03:53 -05:00
|
|
|
it into OpenOCD syntax is often quite straightforward. The most tricky
|
|
|
|
part of creating a configuration script is oftentimes the reset init
|
|
|
|
sequence where e.g. PLLs, DRAM and the like is set up.
|
|
|
|
|
|
|
|
One trick that you can use when translating is to write small
|
2009-10-09 17:51:16 -05:00
|
|
|
Tcl procedures to translate the syntax into OpenOCD syntax. This
|
2009-10-09 02:03:53 -05:00
|
|
|
can avoid manual translation errors and make it easier to
|
|
|
|
convert other scripts later on.
|
|
|
|
|
|
|
|
Example of transforming quirky arguments to a simple search and
|
|
|
|
replace job:
|
|
|
|
|
|
|
|
@example
|
|
|
|
# Lauterbach syntax(?)
|
|
|
|
#
|
2009-10-09 17:51:16 -05:00
|
|
|
# Data.Set c15:0x042f %long 0x40000015
|
2009-10-09 02:03:53 -05:00
|
|
|
#
|
|
|
|
# OpenOCD syntax when using procedure below.
|
|
|
|
#
|
2009-10-09 17:51:16 -05:00
|
|
|
# setc15 0x01 0x00050078
|
|
|
|
|
2009-10-09 02:03:53 -05:00
|
|
|
proc setc15 @{regs value@} @{
|
2009-10-09 17:51:16 -05:00
|
|
|
global TARGETNAME
|
2009-10-09 02:03:53 -05:00
|
|
|
|
2009-10-09 17:51:16 -05:00
|
|
|
echo [format "set p15 0x%04x, 0x%08x" $regs $value]
|
2009-10-09 02:03:53 -05:00
|
|
|
|
2022-01-12 10:59:12 -06:00
|
|
|
arm mcr 15 [expr @{($regs >> 12) & 0x7@}] \
|
|
|
|
[expr @{($regs >> 0) & 0xf@}] [expr @{($regs >> 4) & 0xf@}] \
|
|
|
|
[expr @{($regs >> 8) & 0x7@}] $value
|
2009-10-09 02:03:53 -05:00
|
|
|
@}
|
|
|
|
@end example
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-10 01:40:34 -05:00
|
|
|
@node Server Configuration
|
|
|
|
@chapter Server Configuration
|
2009-05-24 16:08:42 -05:00
|
|
|
@cindex initialization
|
2008-12-16 13:29:50 -06:00
|
|
|
The commands here are commonly found in the openocd.cfg file and are
|
2008-11-30 16:25:43 -06:00
|
|
|
used to specify what TCP/IP ports are used, and how GDB should be
|
|
|
|
supported.
|
2009-05-24 16:08:42 -05:00
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{configurationstage}
|
2009-05-24 16:08:42 -05:00
|
|
|
@section Configuration Stage
|
|
|
|
@cindex configuration stage
|
2009-06-29 15:03:52 -05:00
|
|
|
@cindex config command
|
2009-05-24 16:08:42 -05:00
|
|
|
|
|
|
|
When the OpenOCD server process starts up, it enters a
|
|
|
|
@emph{configuration stage} which is the only time that
|
|
|
|
certain commands, @emph{configuration commands}, may be issued.
|
2010-01-02 17:52:35 -06:00
|
|
|
Normally, configuration commands are only available
|
|
|
|
inside startup scripts.
|
|
|
|
|
2009-06-29 15:03:52 -05:00
|
|
|
In this manual, the definition of a configuration command is
|
|
|
|
presented as a @emph{Config Command}, not as a @emph{Command}
|
|
|
|
which may be issued interactively.
|
2010-01-02 17:52:35 -06:00
|
|
|
The runtime @command{help} command also highlights configuration
|
|
|
|
commands, and those which may be issued at any time.
|
2009-06-29 15:03:52 -05:00
|
|
|
|
|
|
|
Those configuration commands include declaration of TAPs,
|
|
|
|
flash banks,
|
|
|
|
the interface used for JTAG communication,
|
2009-05-24 16:08:42 -05:00
|
|
|
and other basic setup.
|
|
|
|
The server must leave the configuration stage before it
|
|
|
|
may access or activate TAPs.
|
|
|
|
After it leaves this stage, configuration commands may no
|
|
|
|
longer be issued.
|
|
|
|
|
2021-11-21 17:23:32 -06:00
|
|
|
@deffn {Command} {command mode} [command_name]
|
|
|
|
Returns the command modes allowed by a command: 'any', 'config', or
|
|
|
|
'exec'. If no command is specified, returns the current command
|
|
|
|
mode. Returns 'unknown' if an unknown command is given. Command can be
|
|
|
|
multiple tokens. (command valid any time)
|
|
|
|
|
|
|
|
In this document, the modes are described as stages, 'config' and
|
|
|
|
'exec' mode correspond configuration stage and run stage. 'any' means
|
|
|
|
the command can be executed in either
|
|
|
|
stages. @xref{configurationstage,,Configuration Stage}, and
|
|
|
|
@xref{enteringtherunstage,,Entering the Run Stage}.
|
|
|
|
@end deffn
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{enteringtherunstage}
|
2009-11-01 19:54:47 -06:00
|
|
|
@section Entering the Run Stage
|
|
|
|
|
2009-09-20 16:17:08 -05:00
|
|
|
The first thing OpenOCD does after leaving the configuration
|
|
|
|
stage is to verify that it can talk to the scan chain
|
|
|
|
(list of TAPs) which has been configured.
|
|
|
|
It will warn if it doesn't find TAPs it expects to find,
|
|
|
|
or finds TAPs that aren't supposed to be there.
|
|
|
|
You should see no errors at this point.
|
|
|
|
If you see errors, resolve them by correcting the
|
|
|
|
commands you used to configure the server.
|
|
|
|
Common errors include using an initial JTAG speed that's too
|
|
|
|
fast, and not providing the right IDCODE values for the TAPs
|
|
|
|
on the scan chain.
|
|
|
|
|
2009-11-01 19:54:47 -06:00
|
|
|
Once OpenOCD has entered the run stage, a number of commands
|
|
|
|
become available.
|
|
|
|
A number of these relate to the debug targets you may have declared.
|
|
|
|
For example, the @command{mww} command will not be available until
|
2018-02-10 08:08:26 -06:00
|
|
|
a target has been successfully instantiated.
|
2009-11-01 19:54:47 -06:00
|
|
|
If you want to use those commands, you may need to force
|
|
|
|
entry to the run stage.
|
|
|
|
|
2021-04-06 16:44:37 -05:00
|
|
|
@deffn {Config Command} {init}
|
2008-11-30 16:25:43 -06:00
|
|
|
This command terminates the configuration stage and
|
2013-03-14 17:03:00 -05:00
|
|
|
enters the run stage. This helps when you need to have
|
2009-11-01 19:54:47 -06:00
|
|
|
the startup scripts manage tasks such as resetting the target,
|
2008-11-30 16:25:43 -06:00
|
|
|
programming flash, etc. To reset the CPU upon startup, add "init" and
|
|
|
|
"reset" at the end of the config script or at the end of the OpenOCD
|
|
|
|
command line using the @option{-c} command line switch.
|
|
|
|
|
|
|
|
If this command does not appear in any startup/configuration file
|
|
|
|
OpenOCD executes the command for you after processing all
|
|
|
|
configuration files and/or command line options.
|
|
|
|
|
2021-12-01 03:41:08 -06:00
|
|
|
@b{NOTE:} This command normally occurs near the end of your
|
2008-11-30 16:25:43 -06:00
|
|
|
openocd.cfg file to force OpenOCD to ``initialize'' and make the
|
|
|
|
targets ready. For example: If your openocd.cfg file needs to
|
2009-05-24 16:08:42 -05:00
|
|
|
read/write memory on your target, @command{init} must occur before
|
2013-03-14 17:03:00 -05:00
|
|
|
the memory read/write commands. This includes @command{nand probe}.
|
2021-12-01 03:41:08 -06:00
|
|
|
|
|
|
|
@command{init} calls the following internal OpenOCD commands to initialize
|
|
|
|
corresponding subsystems:
|
|
|
|
@deffn {Config Command} {target init}
|
|
|
|
@deffnx {Command} {transport init}
|
|
|
|
@deffnx {Command} {dap init}
|
|
|
|
@deffnx {Config Command} {flash init}
|
|
|
|
@deffnx {Config Command} {nand init}
|
|
|
|
@deffnx {Config Command} {pld init}
|
|
|
|
@deffnx {Command} {tpiu init}
|
|
|
|
@end deffn
|
2022-02-18 10:25:58 -06:00
|
|
|
|
|
|
|
At last, @command{init} executes all the commands that are specified in
|
|
|
|
the TCL list @var{post_init_commands}. The commands are executed in the
|
|
|
|
same order they occupy in the list. If one of the commands fails, then
|
|
|
|
the error is propagated and OpenOCD fails too.
|
|
|
|
@example
|
|
|
|
lappend post_init_commands @{echo "OpenOCD successfully initialized."@}
|
|
|
|
lappend post_init_commands @{echo "Have fun with OpenOCD !"@}
|
|
|
|
@end example
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2021-12-01 05:58:19 -06:00
|
|
|
@deffn {Config Command} {noinit}
|
|
|
|
Prevent OpenOCD from implicit @command{init} call at the end of startup.
|
|
|
|
Allows issuing configuration commands over telnet or Tcl connection.
|
|
|
|
When you are done with configuration use @command{init} to enter
|
|
|
|
the run stage.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2021-04-06 16:44:37 -05:00
|
|
|
@deffn {Overridable Procedure} {jtag_init}
|
2009-10-09 14:52:42 -05:00
|
|
|
This is invoked at server startup to verify that it can talk
|
|
|
|
to the scan chain (list of TAPs) which has been configured.
|
|
|
|
|
|
|
|
The default implementation first tries @command{jtag arp_init},
|
|
|
|
which uses only a lightweight JTAG reset before examining the
|
|
|
|
scan chain.
|
|
|
|
If that fails, it tries again, using a harder reset
|
|
|
|
from the overridable procedure @command{init_reset}.
|
2009-10-19 16:45:43 -05:00
|
|
|
|
|
|
|
Implementations must have verified the JTAG scan chain before
|
|
|
|
they return.
|
|
|
|
This is done by calling @command{jtag arp_init}
|
|
|
|
(or @command{jtag arp_init-reset}).
|
2009-10-09 14:52:42 -05:00
|
|
|
@end deffn
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{tcpipports}
|
2008-11-30 16:25:43 -06:00
|
|
|
@section TCP/IP Ports
|
2009-05-24 16:08:42 -05:00
|
|
|
@cindex TCP port
|
|
|
|
@cindex server
|
|
|
|
@cindex port
|
2009-06-13 03:38:57 -05:00
|
|
|
@cindex security
|
2009-05-24 16:08:42 -05:00
|
|
|
The OpenOCD server accepts remote commands in several syntaxes.
|
|
|
|
Each syntax uses a different TCP/IP port, which you may specify
|
|
|
|
only during configuration (before those ports are opened).
|
|
|
|
|
2009-06-13 03:38:57 -05:00
|
|
|
For reasons including security, you may wish to prevent remote
|
|
|
|
access using one or more of these ports.
|
2016-08-10 16:58:07 -05:00
|
|
|
In such cases, just specify the relevant port number as "disabled".
|
2009-06-13 03:38:57 -05:00
|
|
|
|
2023-08-01 16:46:32 -05:00
|
|
|
You can request the operating system to select one of the available
|
|
|
|
ports for the server by specifying the relevant port number as "0".
|
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@anchor{gdb port}
|
|
|
|
@deffn {Config Command} {gdb port} [number]
|
2009-05-24 16:08:42 -05:00
|
|
|
@cindex GDB server
|
2010-09-27 15:55:30 -05:00
|
|
|
Normally gdb listens to a TCP/IP port, but GDB can also
|
|
|
|
communicate via pipes(stdin/out or named pipes). The name
|
2024-06-14 09:19:56 -05:00
|
|
|
"gdb port" stuck because it covers probably more than 90% of
|
2010-09-27 15:55:30 -05:00
|
|
|
the normal use cases.
|
|
|
|
|
2012-01-05 04:30:39 -06:00
|
|
|
No arguments reports GDB port. "pipe" means listen to stdin
|
2015-12-23 11:10:32 -06:00
|
|
|
output to stdout, an integer is base port number, "disabled"
|
2010-09-27 15:55:30 -05:00
|
|
|
disables the gdb server.
|
|
|
|
|
|
|
|
When using "pipe", also use log_output to redirect the log
|
|
|
|
output to a file so as not to flood the stdin/out pipes.
|
|
|
|
|
2012-01-05 04:30:39 -06:00
|
|
|
Any other string is interpreted as named pipe to listen to.
|
2010-09-27 15:55:30 -05:00
|
|
|
Output pipe is the same name as input pipe, but with 'o' appended,
|
|
|
|
e.g. /var/gdb, /var/gdbo.
|
2012-01-05 04:30:39 -06:00
|
|
|
|
|
|
|
The GDB port for the first target will be the base port, the
|
2024-06-14 09:19:56 -05:00
|
|
|
second target will listen on port + 1, and so on.
|
2009-05-24 16:08:42 -05:00
|
|
|
When not specified during the configuration stage,
|
|
|
|
the port @var{number} defaults to 3333.
|
From upstream (#331)
* flash/nor: Add support for TI CC26xx/CC13xx flash
Added cc26xx flash driver to support the TI CC26xx and CC13xx
microcontrollers. Driver is capable of determining which MCU
is connected and configures itself accordingly. Added config
files for four specific variants: CC26x0, CC13x0, CC26x2, and
CC13x2.
Note that the flash loader code is based on the sources used
to support flash in Code Composer Studio and Uniflash from TI.
Removed cc26xx.cfg file made obsolete by this patch.
Change-Id: Ie2b0f74f8af7517a9184704b839677d1c9787862
Signed-off-by: Edward Fewell <efewell@ti.com>
Reviewed-on: http://openocd.zylin.com/4358
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Fredrik Hederstierna <fredrik@hederstierna.com>
* flash/nor/nrf5: remove is_erased setting and autoerase before write
Cached flash erase state in sectors[].is_erased is not reliable as running
target can change the flash.
Autoerase was issued before flash write on condition is_erased != 1
Remove autoerase completely as it is a quite non-standard feature.
Change-Id: I19bef459e6afdc4c5fcaa2ccd194cf05be8a42b6
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4400
Tested-by: jenkins
* src/flash/tms470: remove testing of sectors[].is_erased state
The erase check routine checked sectors only if is_erased != 1
Check sector unconditionally.
While on it fix clang static analyzer warnings.
Change-Id: I9988615fd8530c55a9b0c54b1900f89b550345e9
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4401
Tested-by: jenkins
* tcl/target/stm32f7x: configure faster system clock in reset-init
STM32F7xx devices need faster clock for flash programming
over JTAG transport. Using reset default 16 MHz clock
resulted in lot of DAP WAITs and substantial decrease
of flashing performance.
Adapted to the restructured dap support
(see 2231da8ec4e7d7ae9b652f3dd1a7104f5a110f3f).
Change-Id: Ida6915331dd924c9c0d08822fd94c04ad408cdc5
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4464
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
* flash/nor/psoc5lp: fix compile issue on GCC 8.1.0
Issue already identified by Alex https://sourceforge.net/u/alexbour/
in ticket #191 https://sourceforge.net/p/openocd/tickets/191/
src/flash/nor/psoc5lp.c:237:2: error: ‘strncpy’ output
truncated before terminating nul copying 2 bytes from a
string of the same length [-Werror=stringop-truncation]
Fix it by assigning the value to the array elements.
Change-Id: I22468e5700efa64ea48ae8cdec930c48b4a7d8fb
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4563
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/arm: Add PLD command to ARM disassembler.
Updates the ARM disassembler to handle PLD (PreLoad Data) commands.
Previously handled by printing a TODO message. There are three forms of
the command: literal, register, and immediate. Simply decode based off
of the A1 encoding for the instructions in the ARM ARM. Also fixes mask
to handle PLDW commands.
Change-Id: I63bf97f16af254e838462c7cfac80f6c4681c556
Signed-off-by: James Marshall <jcmarsh@gwmail.gwu.edu>
Reviewed-on: http://openocd.zylin.com/4348
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* mips_m4k.c: Fix build with --disable-target64
Replace PRIx64 with TARGET_PRIxADDR to avoid build problems
when --disable-target64 is used during configure.
Change-Id: I054a27a491e86c42c9386a0488194320b808ba96
Signed-off-by: Liviu Ionescu <ilg@livius.net>
Reviewed-on: http://openocd.zylin.com/4566
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Tim Newsome <tim@sifive.com>
* target/arm_adi_v5: sync CSW and TAR cache on apreg write
When using apreg to change AP registers CSW or TAR we get internal
cached value not valid anymore.
Reuse the setup functions for CSW and TAR to write them.
Invalidate the cached value before the call to force the write, thus
keeping original apreg behaviour.
Change-Id: Ib14fafd5e584345de94f2e983de55406c588ac1c
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4565
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/arm_adi_v5: keep CSW and TAR cache updated
The call to dap_queue_ap_write() can fail and the value in CSW and
TAR becomes unknown.
Invalidate the OpenOCD cache if dap_queue_ap_write() fails.
Change-Id: Id6ec370b4c5ad07e454464780c1a1c8ae34ac870
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4564
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/target: Add Renesas R-Car R8A7794 E2 target
Add configuration for the Renesas R-Car R8A7794 E2 target.
This is an SoC with two Cortex A7 ARMv7a cores, both A7
cores are supported.
Change-Id: Ic1c81840e3bfcef8ee1de5acedffae5c83612a5e
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Reviewed-on: http://openocd.zylin.com/4531
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Add Renesas R-Car R8A7790 H2 Stout board
Add configuration for the Renesas R-Car R8A7790 H2
based Stout ADAS board.
Change-Id: Ib880b5d2e1fab5c8c0bc0dbcedcdce8055463fe2
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Reviewed-on: http://openocd.zylin.com/4497
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Add Renesas R-Car R8A7791 M2W Porter board
Add configuration for the Renesas R-Car R8A7791 M2W
based Porter evaluation board.
Change-Id: Iaadb18f29748f890ebb68519ea9ddbd18e7649af
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Reviewed-on: http://openocd.zylin.com/4498
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Add Renesas R-Car R8A7794 E2 Silk board
Add configuration for the Renesas R-Car R8A7794 E2
based Silk evaluation board.
Change-Id: I504b5630b1a2791ed6967c6c2af8851ceef9723f
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
---
NOTE: This requires SW7[1] in position 1 (default is 0)
Reviewed-on: http://openocd.zylin.com/4532
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Factor out common R-Car Gen2 code
Factor out the code shared by all R-Car Gen2 boards into a single
file to get rid of the duplication.
Change-Id: I70b302c2e71f4e6fdccb2817dd65a5493bb393d8
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Reviewed-on: http://openocd.zylin.com/4533
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* jtag/drivers/cmsis-dap: fix connect in cmsis_dap_swd_switch_seq()
The proc cmsis_dap_swd_switch_seq() is part of the SWD API for
this interface driver. It is valid only when the interface is
used in SWD mode.
In this proc there is the need to call, in sequence, first
cmsis_dap_cmd_DAP_Disconnect() then cmsis_dap_cmd_DAP_Connect().
The latter call requires the connection mode as parameter, that
inside cmsis_dap_swd_switch_seq() can only be CONNECT_SWD.
The current implementation is not correct and in some cases can
pass mode CONNECT_JTAG. Moreover, JTAG is optional in CMSIS-DAP
and passing mode CONNECT_JTAG triggers an error with SWD-only
interfaces.
Use mode CONNECT_SWD in SWD specific cmsis_dap_swd_switch_seq().
Change-Id: Ib455bf5b69cb2a2d146a6c8875387b00c27a5690
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4571
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_m: return error if breakpoint address is out of range
If the "Flash Patch and Breakpoint" unit is rev.1 then it can only
accept breakpoint addresses below 0x1FFFFFFF.
Detailed info in "ARM v7-M Architecture Reference Manual", DDI0403E
at chapter "C1.11 Flash Patch and Breakpoint unit".
Print a message and return error if the address of hardware
breakpoint cannot be handled by the breakpoint unit.
Change-Id: I95c92b1f058f0dfc568bf03015f99e439b27c59b
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4535
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Christopher Head <chead@zaber.com>
* flash/nor/stm32: Report errors in wait_status_busy
Flash operation errors that occur during algorithm programming are
reported via the algorithm return value. However, Flash operation
errors that occur during non-algorithm work (erasing, programming
without a work area, programming the last non-multiple-of-32-bytes on
an H7, etc.) generally end with a call to stm32x_wait_status_busy,
which reads the status register and clears the error flags but fails
to actually report that something went wrong should an error flag
(other than WRPERR) be set. Return an error status from
stm32x_wait_status_busy in those cases. Correct a log message
accordingly.
Change-Id: I09369ea5f924fe58833aec1f45e52320ab4aaf43
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4519
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/stm32: Eliminate working area leak
On a specific early-return path, an allocated working area was not
freed. Free it.
Change-Id: I7c8fe51ff475f191624086996be1c77251780b77
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4520
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/stm32h7: Fix incorrect comment
The name of the bit according to the reference manual is inconsistency
error, not increment error.
Change-Id: Ie3b73c0312db586e35519e03fd1a5cb225673d97
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4521
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
* target: fix 'bp' command help message
"asid" and "length" are separate arguments of the command.
Put space between them.
Change-Id: I36cfc1e3a01caafef4fc3b26972a0cc192b0b963
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4511
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* Add ARM v8 AArch64 semihosting support
This patch implements semihosting support for AArch64. This picks
code from previously submitted AArch64 semihosting support patch
and rebases on top of reworked semihosting code. Tested in AArch64
mode on a Lemaker Hikey Board with NewLib and GDB.
Change-Id: I228a38f1de24f79e49ba99d8514d822a28c2950b
Signed-off-by: Omair Javaid <omair.javaid@linaro.org>
Reviewed-on: http://openocd.zylin.com/4537
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* GDB fileIO stdout support
This patch fixes gdb fileio support to allow gdb console to be used as stdout.
Now we can do something like
gdb <inferior file>
(gdb) tar ext :3333
(gdb) load
(gdb) monitor arm semihosting enable
(gdb) monitor arm semihosting_fileio enable
(gdb) continue
Here: Output from inferior using puts, printf etc will be routed to gdb console.
Change-Id: I9cb0dddda1de58038c84f5b035c38229828cd744
Signed-off-by: Omair Javaid <omair.javaid@linaro.org>
Reviewed-on: http://openocd.zylin.com/4538
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target: armv8: Avoid semihosting segfault on halt
Avoid a NULL pointer dereference when halting an aarch64 core.
Change-Id: I333d40475ab26e2f0dca5c27302a5fa4d817a12f
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/4593
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl: target: Add NXP LS1012A config
As seen on the FRDM-LS1012A board.
Change-Id: Ifc9074b3f7535167b9ded5f544501ec2879f5db7
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/4594
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl: board: Add NXP Freedom FRDM-LS1012A config
An update for the K20 CMSIS-DAP firmware can be found here:
https://community.nxp.com/thread/387080?commentID=840141#comment-840141
Change-Id: I149d7f8610aa56daf1aeb95f14ee1bf88f7cb647
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/4595
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* gdb_server: only trigger once the event gdb-detach at gdb quit
When GDB quits (e.g. with "quit" command) we first execute
gdb_detach() to reply "OK" then, at GDB disconnect (either TCP
or pipe connection type), we execute gdb_connection_closed().
In case GDB is killed or it crashes, OpenOCD only executes the
latter when detects the disconnection.
Both gdb_detach() and gdb_connection_closed() trigger the event
TARGET_EVENT_GDB_DETACH thus getting it triggered twice on clean
GDB quit.
Do not trigger the event TARGET_EVENT_GDB_DETACH in gdb_detach()
and let only gdb_connection_closed() to handle it.
Change-Id: Iacf035c855b8b3e2239c1c0e259c279688b418ee
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4585
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* gdb_server: set current_target from connection's one
In a multi-target environment we are supposed to have a single
gdb server for each target (or for each group of targets within
a SMP node).
By default, the gdb attached to a server sends its command to
the target (or to the SMP node targets) linked to that server.
This is working fine for the normal gdb commands, but it is
broken for the native OpenOCD commands executed through gdb
"monitor" command. In the latter case, gdb "monitor" commands
will be executed on the current target of OpenOCD configuration
script (that is either the last target created or the target
specified in a "targets" command).
Fixed in gdb_new_connection() by replacing the current target
in the connection's copy of command context.
Change-Id: If7c8f2dce4a3138f0907d3000dd0b15e670cfa80
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4586
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Christopher Head <chead@zaber.com>
* target/image: make i/j unsigned to avoid ubsan runtime error
src/target/image.c:1055:15: runtime error: left shift of 128 by 24 places cannot be represented in type 'int'
Change-Id: I322fd391cf3f242beffc8a274824763c8c5e69a4
Signed-off-by: Cody Schafer <openocd@codyps.com>
Reviewed-on: http://openocd.zylin.com/4584
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Christopher Head <chead@zaber.com>
* target/stm32f7x: Clear stuck HSE clock with CSS
Change-Id: Ica0025ea465910dd664ab546b66f4f25b271f1f5
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4570
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* psoc5lp: fix erase check, add free_driver_priv
psoc5lp_erase_check() was not properly adapted to the new
armv7m_blank_check_memory() in the hot fix 53376dbbede4f0bf42e724ff
This change fixes handling of num_sectors in dependecy of ecc_enabled.
Also add comments how ecc_enabled influences num_sectors.
Add pointer to default_flash_free_driver_priv() to all psoc5lp flash
drivers to keep valgrind happy.
Change-Id: Ie1806538becd364fe0efb7a414f0fe6a84b2055b
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4569
Tested-by: jenkins
* target: atmel samd10 xplained mini
cortex m0+ on a tiny board, with an mEDBG (CMSIS-DAP) debug interface.
Change-Id: Iaedfab578b4eb4aa2d923bd80f220f59b34e6ef9
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
Reviewed-on: http://openocd.zylin.com/3402
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/board: add SAMD11 Xplained Pro evaluation board
Change-Id: Id996c4de6dc9f25f71424017bf07689fea7bd3af
Signed-off-by: Peter Lawrence <majbthrd@gmail.com>
Reviewed-on: http://openocd.zylin.com/4507
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* Adds SAMD11D14AU flash support.
Corrects names of SAMD11D14AM and SAMD11D14ASS per datasheet.
Change-Id: I8beb15d5376966a4f8d7de76bfb2cbda2db440dc
Signed-off-by: Christopher Hoover <ch@murgatroid.com>
Reviewed-on: http://openocd.zylin.com/4597
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* nds32: Avoid detected JTAG clock
AICE2 doesn't support scan for the maximum clock frequency of
JTAG chain. It will cause USB command timeout.
Change-Id: I41d1e3be387b6ed5a4dd0be663385a5f053fbcf9
Signed-off-by: Hellosun Wu <wujiheng.tw@gmail.com>
Reviewed-on: http://openocd.zylin.com/4292
Tested-by: jenkins
Reviewed-by: Hsiangkai Wang <hsiangkai@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/tcl: Distinguish between sectors and blocks in status messages
Use the right word in flash protect command status messages based on
whether the target bank defines num_prot_blocks. Minor message style
tidy-up.
Change-Id: I5f40fb5627422536ce737f242fbf80feafe7a1fc
Signed-off-by: Dominik Peklo <dom.peklo@gmail.com>
Reviewed-on: http://openocd.zylin.com/4573
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Christopher Head <chead@zaber.com>
* drivers: cmsis-dap: pull up common connect code
Just a minor deduplication
Change-Id: Idd256883e5f6d4bd4dcc18462dd5468991f507b3
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
Reviewed-on: http://openocd.zylin.com/3403
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* drivers: cmsis-dap: Print version info when available
No need to wait until after connecting, might help diagnose part information by
printing earlier.
Change-Id: I51eb0d584be306baa811fbeb1ad6a604773e602c
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
Reviewed-on: http://openocd.zylin.com/3404
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor: add support for TI MSP432 devices
Added msp432 flash driver to support the TI MSP432P4x and
MSP432E4x microcontrollers. Implemented the flash algo
helper as used in the TI debug and flash tools. This
implemention supports the MSP432E4, Falcon, and Falcon 2M
variants. The flash driver automatically detects the
connected variant and configures itself appropriately.
Added command to mass erase device for consistency with
TI tools and added command to unlock the protected BSL
region.
Tested using MSP432E401Y, MSP432P401R, and MSP432P4111
LaunchPads.
Tested with embedded XDS110 debug probe in CMSIS-DAP
mode and with external SEGGER J-Link probe.
Removed ti_msp432p4xx.cfg file made obsolete by this
patch.
Change-Id: I3b29d39ccc492524ef2c4a1733f7f9942c2684c0
Signed-off-by: Edward Fewell <efewell@ti.com>
Reviewed-on: http://openocd.zylin.com/4153
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/at91sam4: fix sam4sa16c flash banks and its gpnvms count
There was already a github fork that had this fixed, but as we try
to use the latest, non-modified version of all software we use,
I would like to have this fix in the next releases of OpenOCD so
that if people uses $packagemanager, they will not have issues flashing
the last part of the flash of sam4sa16c chips.
Additionally, I've added some more logging related to the flash
bank that was used, and the chip ID that was detected.
Change-Id: I7ea5970105906e4560b727e46222ae9a91e41559
Signed-off-by: Erwin Oegema <blablaechthema@hotmail.com>
Reviewed-on: http://openocd.zylin.com/4599
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
* flash/nor/stm32lx: Add revision 'V' for STM32L1xx Cat.3 devices
Change-Id: Ic92b0fb5b738af3bec79ae335876aa9e26f5f4cd
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4600
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Avoid null target->semihosting references.
The new common semihosting code introduced a bug,
in certain conditions target->semihosting was
used without semihosting being initialised.
The solution was to explicitly test for
target->semihosting before dereferencing it.
Change-Id: I4c83e596140c68fe4ab32e586e51f7e981a40798
Signed-off-by: Liviu Ionescu <ilg@livius.net>
Reviewed-on: http://openocd.zylin.com/4603
Tested-by: jenkins
Reviewed-by: Jonathan Larmour <jifl@eCosCentric.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* nrf5: Add HWID 0x139 (52832 rev E0)
Change-Id: I71b7471ccfcb8fcc6de30da57ce4165c7fb1f73f
Signed-off-by: James Jacobsson <slowcoder@gmail.com>
Reviewed-on: http://openocd.zylin.com/4604
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target: Fix segfault for 'mem2array'
Call 'mem2array' without arguments to reproduce the segmentation
fault.
Change-Id: I02bf46cc8bd317abbb721a8c75d7cbfac99eb34e
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4534
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Christopher Head <chead@zaber.com>
* target/armv7m_trace: Fix typo in enum
Change-Id: I6364ee5011ef2d55c59674e3b97504a285de0cb2
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/3904
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target/armv7m_trace: Use prefix for enums
Change-Id: I3f199e6053146a1094d96b98ea174b41bb021599
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/3905
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target/aarch64: Call aarch64_init_debug_access() earlier in aarch64_deassert_reset()
On Renesas R-Car, calling 'reset halt' and 'reset init' always made DAP inaccessible. Calling 'reset' and 'halt' seperatly worked fine.
The only differences seems to be the point in time when aarch64_init_debug_access() is called. This patch aligns the behaviour.
Change-Id: I2296c65e48414a7d9846f12a395e5eca315b49ca
Signed-off-by: Dennis Ostermann <dennis.ostermann@renesas.com>
Reviewed-on: http://openocd.zylin.com/4607
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* server: Improve signal handling under Linux
Commit 5087a955 added custom signal handlers for the openocd
server process.
Before this commit, when openocd is run as a background process
having the same controlling terminal as gdb, Control-C would be
handled by gdb to stop target execution and return to the gdb prompt.
However, after commit 5087a955, the SIGINT caused by pressing
Control-C also terminates openocd, effectively crashing the
debugging session. The only way to avoid this is run openocd in
a different controling terminal or to detach openocd from its
controlling terminal,
thus losing all job control for the openocd process.
This patch improves the server's handling of POSIX signals:
1) Keyboard generated signals (INT and QUIT) are ignored
when server process has is no controlling terminal.
2) SIGHUP and SIGPIPE are handled to ensure that .quit functions
for each interface are called if user's logs out of X
session or there is a network failure.
SIG_INT & SIG_QUIT still stop openocd
when it is running in the foreground.
Change-Id: I03ad645e62408fdaf4edc49a3550b89b287eda10
Signed-off-by: Brent Roman <genosensor@gmail.com>
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/3963
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* armv7a: read ttbcr and ttb0/1 at every entry in debug state
Commit bfc5c764df145f68835543119865eabe462e19c2 avoids reading
ttbcr and ttb0/1 at every virt2phys translation by caching them,
and it updates the cached values in armv7a_arch_state().
But the purpose of any (*arch_state)() method, thus including
armv7a_arch_state(), is to only print out and inform the user
about some architecture specific status.
Moreover, to reduce the verbosity during a GDB session, the
method (*arch_state)() is not executed anymore at debug state
entry (check use of target->verbose_halt_msg in src/openocd.c),
thus the state of translation table gets out-of-sync triggering
Error: Address translation failure
or even using a wrong address in the memory R/W operation.
In addition, the commit above breaks the case of armv7r by
calling armv7a_read_ttbcr() unconditionally.
Fixed by moving in cortex_a_post_debug_entry() the call to
armv7a_read_ttbcr() on armv7a case only.
Remove the call to armv7a_read_ttbcr() in armv7a_identify_cache()
since it is (conditionally) called only in the same procedure
cortex_a_post_debug_entry().
Fixes: bfc5c764df14 ("armv7a: cache ttbcr and ttb0/1 on debug
state entry")
Change-Id: Ifc20eca190111832e339a01b7f85d28c1547c8ba
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4601
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* Avoid dereferencing NULL pointer.
If a NULL pointer is passed, don't attempt to increment it. This avoids
passing the now not-NULL pointer on and eventually segfaulting. Also
remove some unnecessary temporary variables.
Change-Id: I268e225121aa283d59179bfae407ebf6959d3a4e
Signed-off-by: Darius Rad <darius@bluespec.com>
Reviewed-on: http://openocd.zylin.com/4550
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* Remove FSF mailing address.
Checkpatch complains about this (FSF_MAILING_ADDRESS).
Change-Id: Ib46a7704f9aed4ed16ce7733d43c58254a094149
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: http://openocd.zylin.com/4559
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
* drivers: cmsis_dap_usb: implement cmd JTAG_TMS
Simply add a wrapper around cmsis_dap_cmd_DAP_SWJ_Sequence()
Change-Id: Icf86f84b24e9fec56e2f9e155396aac34b0e06d2
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4517
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
* arm_adi_v5: put SWJ-DP back to JTAG mode at exit
When SWD mode is used, current OpenOCD code left the SWJ-DP in
SWD mode at exit. Also, current code is unable to switch back the
SWJ-DP in JTAG at next run, thus a power cycle of both target and
interface is required in order to run OpenOCD in JTAG mode again.
Put the SWJ-DP back to JTAG mode before exit from OpenOCD.
Use switch_seq(SWD_TO_JTAG) instead of dap_to_jtag(), because the
latter is not implemented on some interfaces. This is aligned
with the use of switch_seq(JTAG_TO_SWD) in swd_connect().
Change-Id: I55d3faebe60d6402037ec39dd9700dc5f17c53b0
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4493
Tested-by: jenkins
Reviewed-by: Bohdan Tymkiv <bhdt@cypress.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* Add RISC-V support.
This supports both 0.11 and 0.13 versions of the debug spec.
Support for `-rtos riscv` will come in a separate commit since it was
easy to separate out, and is likely to be more controversial.
Flash support for the SiFive boards will also come in a later commit.
Change-Id: I1d38fe669c2041b4e21a5c54a091594aac3e2190
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: http://openocd.zylin.com/4578
Tested-by: jenkins
Reviewed-by: Liviu Ionescu <ilg@livius.net>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* usb_blaster: Don't unnecessarily go through DR-/IR-Pause
There is no need to pass through DR-/IR-Pause after a scan if we want to
go to DR-/IR-Update. We just have to skip the first step of the path to
the end state because we already did that step when shifting the last
bit.
v2:
- Fix comments as remarked in review of v1
Change-Id: I3c10f02794b2233f63d2150934e2768430873caa
Signed-off-by: Daniel Glöckner <daniel-gl@gmx.net>
Reviewed-on: http://openocd.zylin.com/4245
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* cortex_a: fix virt2phys when mmu is disabled
When the MMU is not enabled on debug state entry, virt2phys cannot
perform a translation since it is unknown whether a valid MMU
configuration existed before. In this case, return the virtual
address as physical address.
Change-Id: I6f85a7a5dbc200be1a4b5badf10a1a717f1c79c0
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/4480
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* drivers: cmsis-dap: print serial if available
Helpful for sanity checking connections
Change-Id: Ife0d8b4e12d4c03685aac8115c9739a4c1e994fe
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
Reviewed-on: http://openocd.zylin.com/3405
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_m: make a variable local
The vec_ids variable is not referenced anywhere other than the vector
catch command handler. Make it local to that function.
Change-Id: Ie5865e8f78698c19a09f0b9d58269ced1c9db440
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4606
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_a: fix compile error for uninitialized variable
Commit ad6c71e151590f9d07eb07eda978a8d2a845259c introduced the
variable "mmu_enabled" whose pointer is passed to cortex_a_mmu()
that initialises it.
This initialization is not visible to the compiler that issue
a compile error.
The same situation is common across the same file and the usual
workaround is to initialize it to zero; thus the same fix i
applied here.
Ticket: https://sourceforge.net/p/openocd/tickets/197/
Fixes: commit ad6c71e15159 ("cortex_a: fix virt2phys when mmu is disabled")
Change-Id: I77dec41acdf4c715b45ae37b72e36719d96d9283
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4619
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* mips_m4k: add optional reset handler
In some cases by using SRST we can't halt CPU early enough. And
option PrRst is not available too. In this case the only way is
to set BOOT flag over EJTAG and reset CPU or SoC from CPU itself.
For example by writing to some reset register.
This patch is providing possibility to use user defined reset-assert
handler which will be enabled only in case SRST is disabled. It is
needed to be able switch between two different reset variants on run
time.
Change-Id: I6ef98f1871ea657115877190f7cc7a5e8f3233e4
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4404
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/target: add config for Qualcomm QCA4531
The QCA4531 is a two stream (2x2) 802.11b/g/n single-band programmable
Wi-Fi System-on-Chip (SoC) for the Internet of Things (IoT).
https://www.qualcomm.com/products/qca4531
Change-Id: I58398c00943b005cfaf0ac1eaad92d1fa4e2cba7
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4405
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/board: add config for 8devices LIMA board
More information about this board can be found here:
https://www.8devices.com/products/lima
Change-Id: Id35a35d3e986630d58d37b47828870afd107cc6a
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4406
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/target|board: move common AR9331 code to atheros_ar9331.cfg
The ar9331_25mhz_pll_init and ar9331_ddr1_init routines
can be used not only for TP-Link MR3020 board,
so move them to the common atheros_ar9331.cfg file.
Change-Id: I04090856b08151d6bb0f5ef9cc654efae1c81835
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Reviewed-on: http://openocd.zylin.com/2999
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/target/atheros_ar9331: add DDR2 helper
this helper works on many different boards, so it is
good to have it in target config
Change-Id: I068deac36fdd73dbbcedffc87865cc5b9d992c1d
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4422
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/target/atheros_ar9331: add documentation and extra helpers
Sync it with experience gathered on Qualcomm QCA4531 SoC. This
chips are in many ways similar.
Change-Id: I06b9c85e5985a09a9be3cb6cc0ce3b37695d2e54
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4423
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl/board: add DPTechnics DPT-Board-v1
it is Atheros AR9331 based IoT dev board.
Change-Id: I6fc3cdea1bef49c53045018ff5acfec4d5610ba6
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4424
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* fpga/altera-10m50: add all device id
add all currently know Intel (Alter) MAX 10 device ids
Change-Id: I6a88fef222c8e206812499d41be863c3d89fa944
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-on: http://openocd.zylin.com/4598
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target|board: Add Intel (Altera) Arria 10 target and related board
Target information about this SoC can be found here:
https://www.altera.com/products/fpga/arria-series/arria-10/overview.html
Achilles Instant-Development Kit Arria 10 SoC SoM:
https://www.reflexces.com/products-solutions/development-kits/arria-10/achilles-instant-development-kit-arria-10-soc-som
Change-Id: Id78c741be6a8b7d3a70f37d41088e47ee61b437a
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-on: http://openocd.zylin.com/4583
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target/riscv: fix compile error with gcc 8.1.1
Fix compile error:
src/target/riscv/riscv-011.c: In function ‘slot_offset’:
src/target/riscv/riscv-011.c:238:4: error: this statement may fall through
[-Werror=implicit-fallthrough=]
switch (slot) {
^~~~~~
src/target/riscv/riscv-011.c:243:3: note: here
case 64:
^~~~
Fixes: a51ab8ddf63a ("Add RISC-V support.")
Change-Id: I7fa86b305bd90cc590fd4359c3698632d44712e5
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4618
Tested-by: jenkins
Reviewed-by: Jiri Kastner <cz172638@gmail.com>
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* server: explicitly call "shutdown" when catch CTRL-C or a signal
Every TCL command can be renamed (or deleted) and then replaced by
a TCL proc that has the same name of the original TCL command.
This can be used either to completely replace an existing command
or to wrap the original command to extend its functionality.
This applies also to the OpenOCD command "shutdown" and can be
useful, for example, to set back some default value to the target
before quitting OpenOCD.
E.g. (TCL code):
rename shutdown original_shutdown
proc shutdown {} {
puts "This is my implementation of shutdown"
# my own stuff before exit OpenOCD
original_shutdown
}
Unfortunately, sending a signal (or pressing CTRL-C) to terminate
OpenOCD doesn't trigger calling the original "shutdown" command
nor its (eventual) replacement.
Detect if the main loop is terminated by an external signal and
in such case execute explicitly the command "shutdown".
Replace with enum the magic numbers assumed by "shutdown_openocd".
Please notice that it's possible to write a custom "shutdown" TCL
proc that does not call the original "shutdown" command. This is
useful, for example, to prevent the user to quit OpenOCD by typing
"shutdown" in the telnet session.
Such case will not prevent OpenOCD to terminate when receiving a
signal; OpenOCD will quit after executing the custom "shutdown"
command.
Change-Id: I86b8f9eab8dbd7a28dad58b8cafd97caa7a82f43
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4551
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* zy1000: fix compile error with gcc 8.1.1
The fall-through comment is not taken in consideration by gcc 8.1.1
because it is inside the braces of a C-code block.
Move the comment outside the C block.
Change-Id: I22d87b2dee109fb8bcf2071ac55fdf7171ffcf4b
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4614
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/tcl.c: fix flash bank bounds check in 'flash fill' command handler
Steps to reproduce ( STM32F103 'Blue Pill', 128KiB of flash ):
> flash fillh 0x0801FFFE 00 1
wrote 2 bytes to 0x0801fffe in 0.019088s (0.102 KiB/s)
> flash fillw 0x0801FFFE 00 1
Error: stm32f1x.cpu -- clearing lockup after double fault
Error: error waiting for target flash write algorithm
Error: error writing to flash at address 0x08000000 at offset 0x0001fffe
Change-Id: I145092ec5e45bc586b3df48bf37c38c9226915c1
Signed-off-by: Bohdan Tymkiv <bhdt@cypress.com>
Reviewed-on: http://openocd.zylin.com/4516
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/arm_adi_v5: add command "dpreg"
For very low level debug or development around DAP, it is useful
to have direct access to DP registers.
Add command "dpreg" by mimic the syntax of the existing "apreg"
command:
$dap_name dpreg reg [value]
Change-Id: Ic4ab451eb5e74453133adee61050b4c6f656ffa3
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4612
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* nrf5: add free_driver_priv
Change-Id: I429a9868deb0c4b51f47a4bbad844bdc348e8d21
Signed-off-by: Jim Paris <jim@jtan.com>
Reviewed-on: http://openocd.zylin.com/4608
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* rtos: add support for NuttX
This patch introduces RTOS support for NuttX. Currently,
only ARM Cortex-M (both FPU and FPU-less) targets are supported.
To use, add the following lines to ~/.gdbinit.
define hookpost-file
eval "monitor nuttx.pid_offset %d", &((struct tcb_s *)(0))->pid
eval "monitor nuttx.xcpreg_offset %d", &((struct tcb_s *)(0))->xcp.regs
eval "monitor nuttx.state_offset %d", &((struct tcb_s *)(0))->task_state
eval "monitor nuttx.name_offset %d", &((struct tcb_s *)(0))->name
eval "monitor nuttx.name_size %d", sizeof(((struct tcb_s *)(0))->name)
end
And please make sure the above values are the same as in
src/rtos/nuttx_header.h
Change-Id: I2aaf8644d24dfb84b500516a9685382d5d8fe48f
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Signed-off-by: Masatoshi Tateishi <Masatoshi.Tateishi@jp.sony.com>
Signed-off-by: Nobuto Kobayashi <Nobuto.Kobayashi@sony.com>
Reviewed-on: http://openocd.zylin.com/4103
Tested-by: jenkins
Reviewed-by: Alan Carvalho de Assis <acassis@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* server/server: Add ability to remove services
Add the ability to remove services while OpenOCD is running.
Change-Id: I4067916fda6d03485463fa40901b40484d94e24e
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4054
Tested-by: jenkins
Reviewed-by: Fredrik Hederstierna <fredrik@hederstierna.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_m: fix incorrect comment
The code sets C_MASKINTS if that bit is not already set (correctly). Fix
the comment to agree.
Change-Id: If4543e2660a9fa2cdabb2d2698427a6c8d9a274c
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4620
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/target/stm32f0x: Allow overriding the Flash bank size
Copy & paste from another stm32 target.
Change-Id: I0f6cbcec974ce70c23c1850526354106caee1172
Signed-off-by: Dominik Peklo <dom.peklo@gmail.com>
Reviewed-on: http://openocd.zylin.com/4575
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/target: add Allwinner V3s SoC support
Change-Id: I2459d2b137050985b7301047f9651951d72d9e9e
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-on: http://openocd.zylin.com/4427
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target/arm_adi_v5: allow commands apsel and apcsw during init phase
The current implementation of apsel cannot be executed during the
initialization phase because it queries the DAP AP to retrieve and
print the content of IDR register, and the query is only possible
later on during the exec phase.
But IDR information is already printed by the dedicated command
apid, making redundant printing it by apsel too.
Being unable to run apsel during initialization, makes also apcsw
command (that depends on apsel) not usable in such phase.
Modify the command apsel to only set the current AP, without making
any transfer to the (possibly not initialized yet) DAP. When run
without parameters, just print the current AP number.
Change mode to COMMAND_ANY to apsel and to apcsw.
Change-Id: Ibea6d531e435d1d49d782de1ed8ee6846e91bfdf
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4624
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_a: allow command dacrfixup during init phase
There is no reason to restrict the command "cortex_a dacrfixup"
to the EXEC phase only.
Change the command mode to ANY so the command can be used in
the initialization phase too.
Change-Id: I498cc6b2dbdc48b3b2dd5f0445519a51857b295f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4623
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/armv7a_cache: add gdb keep-alive and fix a missing dpm finish
Depending on range size, the loop on cache operations can take quite
some time, causing gdb to timeout.
Add keep-alive to prevent gdb to timeout.
Add also a missing dpm->finish() to balance dpm->prepare().
Change-Id: Ia87934b1ec19a0332bb50e3010b582381e5f3685
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4627
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* Add detail to `wrong register size` error.
Signed-off-by: Tim Newsome <tim@sifive.com>
Change-Id: Id31499c94b539969970251145e42c89c943fd87c
Reviewed-on: http://openocd.zylin.com/4577
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* doc: fix typo in cortex_m maskisr command
Change-Id: I37795c320ff7cbf6f2c7434e03b26dbaf6fc6db4
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4621
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_m: restore C_MASKINTS after reset
The cortex_m maskisr user-facing setting is not changed across a target
reset. However, the in-core C_MASKINTS bit was always cleared as part of
reset processing, meaning that a cortex_m maskisr on setting would not
be respected after a reset. Set C_MASKINTS based on the user-facing
setting value rather than always clearing it after reset.
Change-Id: I5aa5b9dfde04a0fb9c6816fa55b5ef1faf39f8de
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4605
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/board: update all uses of interface/stlink-v2-1 to interface/stlink
Change-Id: I5e27e84d022f73101376e8b4a1bdc65f58fd348a
Signed-off-by: Cody P Schafer <openocd@codyps.com>
Reviewed-on: http://openocd.zylin.com/4456
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/riscv/riscv-011: fix compile warning about uninitialized variable
In MSYS2 MinGW 64-bit
git clone git://git.code.sf.net/p/openocd/code openocd
$ gcc --version
gcc.exe (Rev1, Built by MSYS2 project) 8.2.0
./bootstrap
./configure --prefix=
$ cat config.status | grep CFLAGS
CFLAGS='-g -O2'
make bindir = "bin-x64"
depbase=`echo src/target/riscv/riscv-011.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -D__USE_MINGW_ANSI_STDIO -I./src -I./src -I./src/helper -DPKGDATADIR=\"/mingw64/share/openocd\" -DBINDIR=\"bin-x64\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/target/riscv/riscv-011.lo -MD -MP -MF $depbase.Tpo -c -o src/target/riscv/riscv-011.lo src/target/riscv/riscv-011.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: gcc -DHAVE_CONFIG_H -I. -D__USE_MINGW_ANSI_STDIO -I./src -I./src -I./src/helper -DPKGDATADIR=\"/mingw64/share/openocd\" -DBINDIR=\"bin-x64\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/target/riscv/riscv-011.lo -MD -MP -MF src/target/riscv/.deps/riscv-011.Tpo -c src/target/riscv/riscv-011.c -o src/target/riscv/riscv-011.o
src/target/riscv/riscv-011.c: In function 'poll_target':
src/target/riscv/riscv-011.c:1799:6: error: 'reg' may be used uninitialized in this function [-Werror=maybe-uninitialized]
reg_cache_set(target, reg, ((data & 0xffffffff) << 32) | value);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/target/riscv/riscv-011.c:1686:17: note: 'reg' was declared here
unsigned int reg;
^~~
cc1.exe: all warnings being treated as errors
make[2]: *** [Makefile:3250: src/target/riscv/riscv-011.lo] Error 1
Change-Id: I6996dcb866fbace26817636f4bedba09510a087f
Signed-off-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
Reviewed-on: http://openocd.zylin.com/4635
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* max32xxx: Support for MAX32XXX devices.
Adding flash programming support for Maxim Integrated MAX32XXX
devices.
Change-Id: I5b0f57a885f9d813240e4bc2d9f765b743e1cfc3
Signed-off-by: Kevin Gillespie <kgills@gmail.com>
Reviewed-on: http://openocd.zylin.com/3543
Tested-by: jenkins
Reviewed-by: Ismail H. KOSE <ihkose@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* flash/at91sam4: run probe just once
Reread registers in sam4_GetInfo()
Change-Id: I3b023b3e642a9c052b5c41673d196317f7e7f2e3
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4609
Tested-by: jenkins
Reviewed-by: Erwin Oegema <blablaechthema@hotmail.com>
Reviewed-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
* flash/at91sam4: emit flash bank info
Change related LOG_INFO to LOG_DEBUG
Change-Id: I0c09b1ec83da631b26980dc8632b9031fe2921a3
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4610
Tested-by: jenkins
Reviewed-by: Erwin Oegema <blablaechthema@hotmail.com>
Reviewed-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
* flash/at91sam4: set wait states only once per write
Read-modify-write setting of FMR register requires an USB turnaround.
Setting FMR before each page write is not necessary and decreases the
write speed.
Change-Id: I67844c898aaf117f155c762c979840b603c767ed
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4611
Tested-by: jenkins
Reviewed-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
* flash/at91sam4: fix clang static analyzer warning
Change-Id: I5e5319d855c868adfa012f68086f7f809ec5a069
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4639
Tested-by: jenkins
* rtos/linux.c: fix clang static analyzer warning
Remove sizeof(int64_t) from string size computation.
Change-Id: I029b394df5d62a2594a723c4c0e13608b3423b9b
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4640
Tested-by: jenkins
* target: armv8: Ensure target is halted for virt2phys
Othewise the error reported as
Timeout waiting for dpm prepare
Change-Id: Ieed2fdcd94ae4e877a749df3eec07a01dbf80b10
Closes: https://sourceforge.net/p/openocd/tickets/201/
Found-by: Matthias Welwarsky <matthias@welwarsky.de>
Signed-off-by: Guido Günther <guido.gunther@puri.sm>
Reviewed-on: http://openocd.zylin.com/4647
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* adi_v5: enforce check on AP number value
The AP number value is restricted in 8 bits unsigned by ADI-v5
specification. Nevertheless, an "invalid" value is used by
target cortex-m to force an automatic detection of the AP.
Replace magic numbers by using new macros for AP max number and
for the value of AP invalid.
Check the value passed through -ap-num flag during configuration.
Change-Id: Ic19a367db0ab11c0ebd070750eca0647d25279a5
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4668
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* gdb_server: add per target option "-gdb-port"
The argument passed to global config command "gdb_port" is usually,
but not always, a TCP port number. In case of multiple targets, this
numeric value is used as the first port of a set of consecutive TCP
ports assigned one per target.
If the argument is not a numeric value (e.g. "pipe", "disabled", ...)
then incrementing it for the next target has no sense.
Add the option "-gdb-port number" to the commands "target create" and
"$target_name configure" to override, for the specific target, the
general global configuration.
This permits to use a per target "-gdb-port disabled", when no gdb
port is required for that specific target.
It also makes possible to choose a custom TCP port number for each
target, overriding the usual sequence of consecutive port numbers.
Change-Id: I3b9a1910b28ab4bc757e839d0e5d08ffc29f7ab4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4530
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* libusb: return oocd error values
keep same return style where possible
Change-Id: I2f9b85dbc307a483609f76a84de77e3c74d346c7
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-on: http://openocd.zylin.com/4588
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* rtos-helpers: fix minor typo in uC/OS-III helper
This patch corrects a spelling error in uCOS-III-openocd.c.
Change-Id: I6d1923ff1f5e6361358c45cec3dd6c08ca9ccef0
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4659
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* flash/stm32f2x: add stm32f7 revision Z identification
Signed-off-by: Cody P Schafer <openocd@codyps.com>
Change-Id: Ia0169514d494bae2a98d92ebc97c8eccc10bc6c4
Reviewed-on: http://openocd.zylin.com/4657
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/mem_ap: generic mem-ap target
This pseudo target allows attaching to any access point on the DAP at the
MEM-AP level and read and write addresses on the connected bus. For
example, one can create a mem_ap target on the APB-AP and read and write
registers of debug components directly. This allows many diagnostic
and other features be programmed entirely using TCL, without necessity
of adding drivers to OpenOCD.
Change-Id: I53229ffd68fb0f96fb68be15b0f3a76cc8843c8e
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/4002
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Leonard Crestez <cdleonard@gmail.com>
* interface: adapter configuration for FTDI C232HM
This patch adds support for the C232HM-DDSL-0 and C232HM-EDSL-0
FT232H-based cables from FTDI. For more information, see:
http://www.ftdichip.com/Products/Cables/USBMPSSE.htm
Change-Id: Ic97423eb1e2f6b5ebae04943cd5cce86f38771d5
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4081
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* ftdi: extend ftdi_location format
To existing <bus>:<port>,<port> format add <bus>-<port>.<port> support.
The last format is used by kernel and other drivers.
Change-Id: I6528970d3af4f6a8bf7b27a0f7a763b5957fdf2b
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-on: http://openocd.zylin.com/4631
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: poll all targets in SMP node after halt
The periodic poll scans all the targets in the same order they
have been declared in the configuration file.
When one target in a SMP node halts, the transition is detected
in the following poll and this triggers a halt request to all the
other cores of the SMP node.
The targets that will be polled afterwards will be identified as
"halted", but the targets already scanned will remain as
"running" until the next periodic poll.
This creates a race condition with GDB; GDB sets the breakpoints
when runs the target and removes them as soon as the target is
halted. When it receives the halt event, it starts removing the
breakpoints and fails on the targets that are still reported as
"running".
Fixed by polling all the targets in the SMP node before informing
GDB about the halt event.
This implementation is almost copy/paste from the one in aarch64.
Change-Id: Id2bd99f1e56b014e48e9e34ccb891b4219c518f8
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4622
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Add Emcraft imx8 SOM BSB support
Tested with Olimex ARM-USB-TINY-H adapter
Simple commands work fine but there are currently issues when attaching
remote gdb or running virt2phys:
https://sourceforge.net/p/openocd/tickets/201/
Change-Id: I86ccf1d93c5d23870bb522f92b3e2af190d529e8
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Reviewed-on: http://openocd.zylin.com/4646
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* arm_adi_v5: remove useless cast to int
The field ap_num in struct adiv5_private_config is already of type int.
Casting it to type int has no sense.
Change-Id: Ida642e808c02591bb58609425eccd096d404e2c4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4666
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nrf5: time-based timeout waiting for flash controller
Change-Id: Id214df154dc359ca130c8d8fe1554d106621b9cd
Signed-off-by: Kai Geissdoerfer <kai.geissdoerfer@tu-dresden.de>
Reviewed-on: http://openocd.zylin.com/4648
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nrf5: support for nRF52840 Q1AAC0
Change-Id: Id3280dadece84e1d68544936e44d506c7930a55d
Signed-off-by: Kai Geissdoerfer <kai.geissdoerfer@tu-dresden.de>
Reviewed-on: http://openocd.zylin.com/4649
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* doc: fix use of deprecated config file in the example
Commit 31c58c139d85 ("jtag: drivers: stlink: handle all versions with
single config") deprecates the use of "interface/stlink-v2-1.cfg" in
favor of a unique config file "interface/stlink.cfg".
Update the example in the documentation.
Change-Id: I1aed7c70e15f4edb4f81a3ee8e3bce575fde873b
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4667
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* Added support for STM32L4X option bytes writing.
Enables the programming of Write protection lock bits.
- Updated/re-factored with option_read, option_write and option_load commands.
Change-Id: I86358c7eb1285c3c0baac1564e46da8ced5fd025
Signed-off-by: Thomas Søhus <tls@ceepro.dk>
Reviewed-on: http://openocd.zylin.com/4654
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* Clarify what exactly the RISC-V code supports.
Change-Id: I8da657426cc52c738ab41bfb0164cbc6721c0aef
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: http://openocd.zylin.com/4655
Tested-by: jenkins
Reviewed-by: Philipp Guehring <pg@futureware.at>
Reviewed-by: Liviu Ionescu <ilg@livius.net>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/cortex_m: fix typo
The subunit of the debug unit is called the Flash Patch and Breakpoint
unit, abbreviated (by ARM no less) as FPB, not FBP.
Change-Id: Ia2f08470da705f0f1518feeca878f0f500507308
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4675
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* contrib/60-openocd.rules: provide hint to reload udev rules
No need to reboot the Linux box when new rules are added to udev.
Suggest the command in the script header.
Change-Id: Ie95383bfd73914a3d2e2c05d77fa3eb32e68b7e2
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4665
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* target/stm32: make APCSW cacheable
Change-Id: I7c5c9720ded329848647f17db95f845e46c01c19
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4674
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/atsamv: make APCSW cacheable
Change-Id: Ic00d3192642c682f370a6f7f8b70ae29744eb746
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4678
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* gdb_server: avoid gdb server for virtual targets
Virtual targets, like mem_ap, do not or cannot implement the required
functionality to accept a GDB connection. In the case of mem_ap, the
method get_gdb_reg_list() is missing and a following connection from
gdb causes OpenOCD to segfault.
OpenOCD opens a GDB port for each target; it's always possible to
connect, by mistake, GDB to one virtual target.
Add a method to check if the target supports GDB connections (for the
moment just checking if get_gdb_reg_list is implemented).
Skip opening a gdb server for every targets that don't support GDB
connections.
Change-Id: Ia439a43efe1a9adbb1771cd9d252db8ffa32eb9d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4676
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/target: Add Renesas R-Car Gen3 targets
Add configuration for the Renesas R-Car Generation 3 targets.
These are SoCs with Cortex A57s, A53s, and R7s. All cores
are supported.
Change-Id: I795233210e4f647a1a2a0adea7c058ae98b5db70
Signed-off-by: Adam Bass <adam.bass@renesas.com>
Reviewed-on: http://openocd.zylin.com/4669
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* tcl/board: Add Renesas R-Car Salvator-X(S) boards.
Add configuration for the Renesas R-Car Salvator-X
and Renesas R-Car Salvator-XS boards.
Change-Id: I898008f56adb31908d30760f18217583fabf1c51
Signed-off-by: Adam Bass <adam.bass@renesas.com>
Reviewed-on: http://openocd.zylin.com/4670
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* flash/nrf5: support for nRF52810
Change-Id: I01c430bfa593d20ea7a51c90d67052e374d239b3
Signed-off-by: Anders Westrup <anders@westrup.se>
Reviewed-on: http://openocd.zylin.com/4680
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Slowcoder <slowcoder@gmail.com>
* drivers: cmsis-dap: fix connection in JTAG mode
Commit 5aceec24122bc222896cfcfd91f7f082f630ac83 ("drivers:
cmsis-dap: pull up common connect code") breaks the driver and it
cannot connect anymore in JTAG mode.
The issue is caused in cmsis_dap_init() by anticipating the call to
cmsis_dap_usb_open(), which then sets cmsis_dap_handle and makes the
following test to always fail.
Actually the original code was quite tricky:
if (swd_mode)
do something that also sets cmsis_dap_handle;
if (cmsis_dap_handle == NULL)
do something for !swd_mode;
Convert the sequence of tricky "if"s in a single "if-then-else" to
handle clearly the cases swd_mode and !swd_mode.
Change-Id: I359a23bf26a3edc2461f4352daa0be83e78868f7
Fixes: 5aceec24122b ("drivers: cmsis-dap: pull up common connect code")
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4697
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
* register: support non-existent registers
This patch fixes a number of bugs caused by incomplete support for
non-existent registers. This is needed for targets that provide optional
registers or non-linear register numbers.
Change-Id: I216196e0051f28887a2c3da410959382369eed80
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4113
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* rtos: support gdb_get_register_packet
This patch adds support for p packet responses by targets configured
with RTOS support. This change required moving to a rtos_reg struct,
which is similar to struct reg used by targets, which resulted in
needing to update each stacking with register numbers. This patch also
allows targets with non-linear register numbers to function with RTOSes
as well.
Change-Id: I5b189d74110d6b6f2fa851a67ab0762ae6b1832f
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4121
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* gdb_server: add support for architecture element
This change adds optional support for a target to report architecture
information in the target description to GDB. This is needed by some GDB
implementations to properly support remote target with custom behavior.
More information on the architecture element can be found here:
https://sourceware.org/gdb/onlinedocs/gdb/Target-Description-Format.html#Target-Description-Format
Change-Id: I57b19cae5ac3496256e4e5cc52cf6526ca5c322d
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4078
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* jtag: make cmd_queue_scan_field_clone public
This patch makes the cmd_queue_scan_field_clone function public. This
permits targets to insert fields without affecting the submitted
scan_field list. This will be used in an upcoming target implementation
that needs to insert additional padding bits.
Change-Id: I8fbd3b9b4e413432471f4f1444048932c8fa189e
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4082
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* esirisc: support eSi-RISC targets
eSi-RISC is a highly configurable microprocessor architecture for
embedded systems provided by EnSilica. This patch adds support for
32-bit targets and also includes an internal flash driver and
uC/OS-III RTOS support. This is a non-traditional target and required
a number of additional changes to support non-linear register numbers
and the 'p' packet in RTOS support for proper integration into
EnSilica's GDB port.
Change-Id: I59d5c40b3bb2ace1b1a01b2538bfab211adf113f
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4660
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* rtos: check symbol list when updating uCOS-III
This patch corrects a crash in uCOS-III on a new GDB connection when
RTOS autodetection is not used. The crash was caused by not checking if
the symbol list had been loaded prior to updating threads.
Change-Id: I64c5133e02fe22fc8d14584cc40d87b49c935b0b
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4719
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* ftdi: demote unhelpful debug messages
Some protocols make use of empty scan fields for optional padding, which
causes the log to fill with unhelpful messages that a field is empty.
The remaining LOG_DEBUG messages in ftdi_execute_scan have been demoted
to DEBUG_JTAG_IO such that these messages are only seen when debugging
JTAG.
Change-Id: I61fd4551411ce851da34e67d003bca5d7a71cd92
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4112
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
* tcl: Add support for the Numato Lab Mimas A7 board
The Mimas A7 FPGA board has FTDI FT2232 whose channel B is connected to
Artix-7 FPGA's JTAG interface. Hence, OpenOCD can easily interface with
it via the its ftdi driver interface. Tested to be working great up to
30 MHz.
Change-Id: Ieda015fbc6135bf95ad5a069cbf38650da45911e
Signed-off-by: Rohit Singh <rohit91.2008@gmail.com>
Reviewed-on: http://openocd.zylin.com/4720
Tested-by: jenkins
Reviewed-by: Tim "mithro" Ansell <me@mith.ro>
Reviewed-by: Robert Jordens <jordens@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* target/arm_adi_v5: fix sync CSW cache on apreg write
Commit 0057c71ab6b81d0679b232318fc5f84b4becc471 updates the OpenOCD
cached values of CSW and TAR registers if these registers are modified
by an apreg command.
The condition to force the update of CSW cache is incorrect and it will
erase the default CSW value.
Moreover, calling mem_ap_setup_csw() does not honor the value requested
in the apreg command because such value is incorrectly bitwise or-ed
with csw_default.
Fix it by updating csw_value, instead of erasing csw_default, and writing
directly in CSW register the new value from the command line.
Change-Id: I40273cb64d22ccfb9b6d3499bd39b586eb60de38
Fixes: 0057c71ab6b8 ("target/arm_adi_v5: sync CSW and TAR cache on apreg write")
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4679
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* tcl/board: Add Arty-S7 Spartan 7 FPGA Development Board
Change-Id: I8bfe780cb67a1777d5112a68e8a9781bfe4f2038
Signed-off-by: William D. Jones <wjones@wdj-consulting.com>
Reviewed-on: http://openocd.zylin.com/4525
Reviewed-by: Robert Jordens <jordens@gmail.com>
Tested-by: jenkins
Reviewed-by: Rohit Singh <rohit91.2008@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* xilinx-xc7: Add additional IDCODEs.
Add/detect missing IDCODEs for the Spartan 7 family and Artix 25T
and Artix 12T.
Change-Id: Ib6c83c5592e90df1eb8e715e79b279da9a95f9c6
Signed-off-by: William D. Jones <wjones@wdj-consulting.com>
Reviewed-on: http://openocd.zylin.com/4428
Reviewed-by: Robert Jördens
Tested-by: jenkins
Reviewed-by: Rohit Singh <rohit91.2008@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: fix temporary breakpoint during step
Commit c8926d14579528bfcead1e179baf7cb846513db4 introduces the
context and hybrid breakpoint types beside existing SW and HW
types. The new field "asid" is non-zero only for these new types.
The commit above did not properly initialize "asid" to 0 for a
temporarily HW breakpoint used during single step. This causes
cortex_a_unset_breakpoint() to identify this breakpoint as of
type "hybrid".
Identified through valgrind error:
Conditional jump or move depends on uninitialised value(s)
Actually valgrind triggers a total of 10 messages about use of
uninitialized variables, but they are all caused by the first
conditional jump bases on "asid != 0".
Fixed by initializing "asid" to 0 in cortex_a_step().
Fixes: c8926d145795 ("cortex_a hybrid & context breakpoints")
Change-Id: Ib674d8457d1e02e10332fd9d73554d13719ef93d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4613
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* zynq_7000: Add zynqpl_program command
This allows for programming the PL part of the Xilinx Zynq 7000
Change-Id: I89e86c0f381951091f6948c46802d17d7f1f3500
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
Reviewed-on: http://openocd.zylin.com/4177
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/target.c: adding keep_alive() to while loop.
Adding the call to keep_alive() to suppress warnings when
running the async flash algorithm. Issue observed when
loading large pieces of code on slower debuggers.
Change-Id: I7660fa05f68ebd7be07b2ca0a55b0f3b6ae718f3
Signed-off-by: Kevin Gillespie <kgills@gmail.com>
Reviewed-on: http://openocd.zylin.com/4686
Tested-by: jenkins
Reviewed-by: Jesse Marroquin
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* drivers/cmsis-dap: speed up sending multiple HID requests
The performance of CMSIS-DAP in long data transfers was improved substantially in
ef02b69b14d133b061217a91add5a028a77e86bc. But it not as good as some
other USB/MCU based adapters. Using HID and therefore interrupt endpoint
is slower than USB bulk transfer.
CMSIS-DAP adapter implements multiple HID buffer handling and OpenOCD already
reads number of buffers from info command.
This change adds capability to sumbit more than one HID requests before
driver waits for a HID response. This scenario is used for long transfers only.
Results show about double speed on USB FS and ~140% speed on USB HS:
| w/o this change | with multi HIDrq
-----------------------------------------+-----------------+-----------------
Open source CMSIS-DAP, USB FS, adapter_khz 1000
dump_image ram32k.bin 0x1fffe000 0x8000 | 23.225 KiB/s | 45.901 KiB/s
load_image ram32k.bin 0x1fffe000 | 23.324 KiB/s | 46.552 KiB/s
Cypress' Kitprog in CMSIS-DAP mode, USB FS, adapter_khz 1000 (over firmware limit)
dump_image ram64k.bin 0x20000000 0x10000 | 15.537 KiB/s | 42.558 KiB/s
load_image ram64k.bin 0x20000000 | 15.605 KiB/s | 43.291 KiB/s
Atmel's EDBG, USB HS, adapter_khz 10000 (#3945 applied)
dump_image ram384k.bin 0x20400000 0x6000 | 248.402 KiB/s | 345.250 KiB/s
load_image ram384k.bin 0x20400000 | 256.039 KiB/s | 365.945 KiB/s
Change-Id: I9edbe018086176d357c6aaba5d6b657a5e5e1c64
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4080
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
* tcl: target: omit apcsw for hla
When using stlink for CM7 targets we have to rely on its firmware
to do the right thing as direct DAP access is not possible.
Change-Id: Ieee69f4eeea5c911f89f060f31ce86ed043bdfd0
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/4732
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* flash/nor/at91samd: add SAMR21E19A DID
While on it correct RAM amount of SAMR21x16A devices
Change-Id: Ie9ab9de1551bdceff17af7597a9a2ee41f5aebe0
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4734
Reviewed-by: Eduardo Montoya
Tested-by: jenkins
* arm_adi_v5: do not deactivate power domains while trying to clear sticky error
At OpenOCD start-up the operation of clearing the sticky error in
CTRL/STAT register ignores the current value of the power domains
bits CDBGPWRUPREQ and CSYSPWRUPREQ in the same register and
incorrectly set them to zero.
This abrupt disable does not follow the requirement in IHI0031 to
wait for the acknowledgment of power disabled before continuing.
The power domains are then re-enabled immediately after; it is
possible that such short disable period has passed undetected or
has been tested only on devices that do not implement the power
domains.
Anyway, this sequence is incorrect and can generate unexpected
and hard-to-debug issues while OpenOCD attaches to a running
target that implements power domains.
Anticipate the initialization of dap->dp_ctrl_stat and use it
while clearing the sticky bit. This has the additional effect of
avoiding a power disable in the error recovery part of the
function dap_dp_read_atomic().
Keep the same sequence of read/write in dap_dp_init() to avoid
breaking the initialization of some problematic target.
Add comments to document these choices.
Change-Id: I8d6da788f2dd11909792b5d6b69bc90fbe4df25d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4677
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* flash/nor/stm32f1x: Use of protection blocks, improved option bytes handling
Handle write protection status in blocks instead of sectors, removing
unnecessary complexity in the process. Now closer to stm32f2x.
Support sequential modification of option bytes by read/modify/write
directly to option bytes area instead of always starting with the
currently loaded bytes from FLASH_OBR/WRPR registers.
Added new command 'options_load' to force re-load of option bytes w/o
having to power cycle target.
Change-Id: I5c76191e29c17a1e11482df06379d10ca8d6d04d
Signed-off-by: Dominik Peklo <dom.peklo@gmail.com>
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4576
Tested-by: jenkins
Reviewed-by: Jan Vojtěch <honza.vojtech@gmail.com>
* target/cortex_a: remove unused code controlled by "fast_reg_read"
The variable fast_reg_read is always zero, causing some code to
never be executed.
Such code try to read the target registers by dumping them in
memory and then reading back the memory through the debugger. But
it is broken due to lack of cache and MMU management.
This code also uses the broken memory_ap access that is going to
be removed soon.
Remove all the code that depends on fast_reg_read not zero.
Add a missing check on arm_dpm_read_current_registers() return.
Keep the unused function cortex_a_dap_write_coreregister_u32()
to balance the used "read" version.
Change-Id: If2ff28a8c49eb0a87dc85207f5431978efd158db
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4746
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: remove buggy memory AP accesses
The armv7m debug port provides a direct access to the CPU memory
bus, allowing the debugger to bypass the CPU for every memory
operation.
The armv7a debug port doesn't offer the same feature, mainly
because CPU caches and MMU makes the direct memory access more
tricky. Nevertheless most SoC with armv7a provide direct memory
access through an AHB bus available on another DAP access port,
different from the debug port.
The original port of cortex_a in OpenOCD was inspired from the
working cortex_m code, and provided optional memory access
through the AHB, if present.
The code for AHB access is problematic and partially buggy due
to incomplete management of cache coherency and missing check of
page boundary during virtual address operations.
With the commit 5d458cf72734a4474f38bbed10eea4d9acfe93a2
("target/mem_ap: generic mem-ap target") we have a clean support
for memory access through system buses connected to DAP AP, which
obsoletes the buggy memory AP hack in cortex_a.
Remove any code that uses the memory AP accesses in cortex_a.
Change-Id: I7cd1f94885e5817448058953e043d8da90dea3cc
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4748
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/arm_dpm: uniform names of exported functions
The name of the function dpm_modeswitch() does not follow the
common style of the other function names in the same file.
Rename it as arm_dpm_modeswitch().
Change-Id: Idebf3c7bbddcd9b3c7b44f8d0dea1e5f7549b0eb
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4756
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* target/cortex_a: remove duplicate code to read target registers
The functions cortex_a_dap_{read,write}_coreregister_u32() are
duplicate of the functions dpm_{read,write}_reg().
Remove both duplicated functions in cortex_a.c while export only
dpm_read_reg(), since dpm_write_reg() is currently not used.
Rename dpm_read_reg() as arm_dpm_read_reg() to keep uniform the
naming style.
Change-Id: I501bc99dc402039e630c47917a086a0bb382782c
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4747
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Tested-by: jenkins
* armv7a: ARMv7-A MMU tools
factor out mmu-related code from armv7a.c, add a 'dump' command for
page tables.
Change-Id: Ic1ac3c645d7fd097e9d625c7c8302e7065875dd4
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/4327
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
* jtag/bitq: array boundary overflow
The for loop inside bitq_path_move function is not correct, this will
overflow the cmd->path array and produces an unpredictable result.
Change-Id: I81e3bc9ee6d1dd948acd2fe4c667103ac22bb26f
Signed-off-by: xuguangxiao <szgxxu@qq.com>
Reviewed-on: http://openocd.zylin.com/4733
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* target/stm32h7x: Fix documentation of reset_config
The stm32h7x.cfg does not specify connect_assert_srst or
connect_deassert_srst in its reset_config. The comment claims that it
will therefore connect in reset. However, per the manual, the default
configuration is actually connect_deassert_srst, not
connect_assert_srst. In actual fact, connect_assert_srst does not work
on the STM32H7 because, while SRST is asserted, everything on the AXI
bus is inaccessible. The CPU core is accessible, but since the
examine-end event handler also pokes at the DBGMCU peripheral, that will
fail in connect_assert_srst mode. So using connect_deassert_srst is
appropriate, so fix the comment accordingly.
Change-Id: If3e32e871fb19cc61183bdf911b7c5efd80b62e2
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4741
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
* docs: fix typo in manual
Change-Id: I28717105eb2a907b0cb4b03f4b5ff1f47194413b
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/4751
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* README: fix stlink instructions
Since 31c58c139d85c35cc8ebce4196edb2c5eb157c7a there is a unified config
for all stlink versions.
Change-Id: Id736063496ecd96e2024ed69dcb67a22c44b80bb
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/4672
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
* Permit null target on TCL connection
In previous versions of OpenOCD, it was possible to connect to the TCL
RPC interface without a current target. In `tcl_new_connection`, the
curent target would be queried by number, and the possibility of a null
current target was handled properly.
In commit bb9d9c60264a905926e0d15f84842858d0de80b7, the
`get_target_by_num` call was replaced by a `get_current_target` call,
without noticing that `get_current_target` aborts if there is no current
target, whereas `tcl_new_connection` is perfectly able to handle that
situation.
Provide a `get_current_target_or_null` function for use by consumers who
are OK with a null current target, and use it in `tcl_new_connection`.
Change-Id: I06f7e1e149f1169e23c73ba328c7ad9f9425cc2a
Signed-off-by: Christopher Head <chead@zaber.com>
Reviewed-on: http://openocd.zylin.com/4730
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Franck Jullien <franck.jullien@gmail.com>
* riscv_get_thread_reg_list matches new prototype.
None of the existing test cases cause this function to be called. I
suspect it never gets called, since it is weird to have a function that
only returns the GPRs as a full list of registers.
Change-Id: Ib54f182c1b2fc4dd711c877cb5c9b3e0af77461d
* Fix conflict resolutions.
Change-Id: I5228c308a08ee54530f8c1cadac2afe1c974d41e
2018-11-19 14:46:40 -06:00
|
|
|
When @var{number} is not a numeric value, incrementing it to compute
|
|
|
|
the next port number does not work. In this case, specify the proper
|
|
|
|
@var{number} for each target by using the option @code{-gdb-port} of the
|
|
|
|
commands @command{target create} or @command{$target_name configure}.
|
|
|
|
@xref{gdbportoverride,,option -gdb-port}.
|
2015-10-22 15:13:52 -05:00
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
Note: when using "gdb port pipe", increasing the default remote timeout in
|
2015-10-22 15:13:52 -05:00
|
|
|
gdb (with 'set remotetimeout') is recommended. An insufficient timeout may
|
|
|
|
cause initialization to fail with "Unknown remote qXfer reply: OK".
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2024-06-17 02:12:34 -05:00
|
|
|
@deffn {Config Command} {tcl port} [number]
|
2009-05-24 16:08:42 -05:00
|
|
|
Specify or query the port used for a simplified RPC
|
|
|
|
connection that can be used by clients to issue TCL commands and get the
|
2009-03-20 08:27:02 -05:00
|
|
|
output from the Tcl engine.
|
2009-05-24 16:08:42 -05:00
|
|
|
Intended as a machine interface.
|
|
|
|
When not specified during the configuration stage,
|
|
|
|
the port @var{number} defaults to 6666.
|
2016-08-10 16:58:07 -05:00
|
|
|
When specified as "disabled", this service is not activated.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2024-06-24 09:26:02 -05:00
|
|
|
@deffn {Config Command} {telnet port} [number]
|
2009-05-24 16:08:42 -05:00
|
|
|
Specify or query the
|
|
|
|
port on which to listen for incoming telnet connections.
|
|
|
|
This port is intended for interaction with one human through TCL commands.
|
|
|
|
When not specified during the configuration stage,
|
|
|
|
the port @var{number} defaults to 4444.
|
2016-08-10 16:58:07 -05:00
|
|
|
When specified as "disabled", this service is not activated.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{gdbconfiguration}
|
2009-05-31 22:06:11 -05:00
|
|
|
@section GDB Configuration
|
2009-05-24 16:08:42 -05:00
|
|
|
@cindex GDB
|
|
|
|
@cindex GDB configuration
|
|
|
|
You can reconfigure some GDB behaviors if needed.
|
|
|
|
The ones listed here are static and global.
|
2013-03-14 16:38:19 -05:00
|
|
|
@xref{targetconfiguration,,Target Configuration}, about configuring individual targets.
|
|
|
|
@xref{targetevents,,Target Events}, about configuring target-specific event handling.
|
2009-05-24 16:08:42 -05:00
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{gdbbreakpointoverride}
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Command} {gdb breakpoint_override} [@option{hard}|@option{soft}|@option{disable}]
|
2009-05-24 16:08:42 -05:00
|
|
|
Force breakpoint type for gdb @command{break} commands.
|
2009-06-07 18:10:50 -05:00
|
|
|
This option supports GDB GUIs which don't
|
2009-05-24 16:08:42 -05:00
|
|
|
distinguish hard versus soft breakpoints, if the default OpenOCD and
|
2013-03-14 17:03:00 -05:00
|
|
|
GDB behaviour is not sufficient. GDB normally uses hardware
|
2008-08-13 16:08:14 -05:00
|
|
|
breakpoints if the memory map has been set up for flash regions.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{gdbflashprogram}
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Config Command} {gdb flash_program} (@option{enable}|@option{disable})
|
2009-06-07 18:10:50 -05:00
|
|
|
Set to @option{enable} to cause OpenOCD to program the flash memory when a
|
2009-05-24 16:08:42 -05:00
|
|
|
vFlash packet is received.
|
2009-06-07 18:10:50 -05:00
|
|
|
The default behaviour is @option{enable}.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Config Command} {gdb memory_map} (@option{enable}|@option{disable})
|
2009-06-07 18:10:50 -05:00
|
|
|
Set to @option{enable} to cause OpenOCD to send the memory configuration to GDB when
|
2009-03-20 08:27:02 -05:00
|
|
|
requested. GDB will then know when to set hardware breakpoints, and program flash
|
2024-06-14 09:19:56 -05:00
|
|
|
using the GDB load command. @command{gdb flash_program enable} must also be enabled
|
2008-10-17 07:26:27 -05:00
|
|
|
for flash programming to work.
|
2009-06-07 18:10:50 -05:00
|
|
|
Default behaviour is @option{enable}.
|
2024-06-14 09:19:56 -05:00
|
|
|
@xref{gdbflashprogram,,gdb flash_program}.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Config Command} {gdb report_data_abort} (@option{enable}|@option{disable})
|
2009-05-24 16:08:42 -05:00
|
|
|
Specifies whether data aborts cause an error to be reported
|
|
|
|
by GDB memory read packets.
|
2009-06-07 18:10:50 -05:00
|
|
|
The default behaviour is @option{disable};
|
|
|
|
use @option{enable} see these errors reported.
|
2009-05-24 16:08:42 -05:00
|
|
|
@end deffn
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Config Command} {gdb report_register_access_error} (@option{enable}|@option{disable})
|
2018-03-06 16:10:04 -06:00
|
|
|
Specifies whether register accesses requested by GDB register read/write
|
|
|
|
packets report errors or not.
|
|
|
|
The default behaviour is @option{disable};
|
|
|
|
use @option{enable} see these errors reported.
|
|
|
|
@end deffn
|
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Config Command} {gdb target_description} (@option{enable}|@option{disable})
|
2013-08-15 14:52:23 -05:00
|
|
|
Set to @option{enable} to cause OpenOCD to send the target descriptions to gdb via qXfer:features:read packet.
|
2015-05-13 06:33:59 -05:00
|
|
|
The default behaviour is @option{enable}.
|
2013-08-15 14:52:23 -05:00
|
|
|
@end deffn
|
|
|
|
|
2024-06-14 09:19:56 -05:00
|
|
|
@deffn {Command} {gdb save_tdesc}
|
2018-02-10 08:08:26 -06:00
|
|
|
Saves the target description file to the local file system.
|
2013-08-15 14:52:23 -05:00
|
|
|
|
|
|
|
The file name is @i{target_name}.xml.
|
|
|
|
@end deffn
|
|
|
|
|
2013-03-14 16:38:19 -05:00
|
|
|
@anchor{eventpolling}
|
2009-06-09 23:06:25 -05:00
|
|
|
@section Event Polling
|
|
|
|
|
|
|
|
Hardware debuggers are parts of asynchronous systems,
|
|
|
|
where significant events can happen at any time.
|
|
|
|
The OpenOCD server needs to detect some of these events,
|
|
|
|
so it can report them to through TCL command line
|
|
|
|
or to GDB.
|
|
|
|
|
|
|
|
Examples of such events include:
|
|
|
|
|
|
|
|
@itemize
|
|
|
|
@item One of the targets can stop running ... maybe it triggers
|
|
|
|
a code breakpoint or data watchpoint, or halts itself.
|
|
|
|
@item Messages may be sent over ``debug message'' channels ... many
|
|
|
|
targets support such messages sent over JTAG,
|
|
|
|
for receipt by the person debugging or tools.
|
|
|
|
@item Loss of power ... some adapters can detect these events.
|
|
|
|
@item Resets not issued through JTAG ... such reset sources
|
|
|
|
can include button presses or other system hardware, sometimes
|
|
|
|
including the target itself (perhaps through a watchdog).
|
|
|
|
@item Debug instrumentation sometimes supports event triggering
|
|
|
|
such as ``trace buffer full'' (so it can quickly be emptied)
|
|
|
|
or other signals (to correlate with code behavior).
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
None of those events are signaled through standard JTAG signals.
|
|
|
|
However, most conventions for JTAG connectors include voltage
|
|
|
|
level and system reset (SRST) signal detection.
|
|
|
|
Some connectors also include instrumentation signals, which
|
|
|
|
can imply events when those signals are inputs.
|
|
|
|
|
|
|
|
In general, OpenOCD needs to periodically check for those events,
|
|
|
|
either by looking at the status of signals on the JTAG connector
|
|
|
|
or by sending synchronous ``tell me your status'' JTAG requests
|
|
|
|
to the various active targets.
|
|
|
|
There is a command to manage and monitor that polling,
|
|
|
|
which is normally done in the background.
|
|
|
|
|
2021-04-06 16:31:32 -05:00
|
|
|
@deffn {Command} {poll} [@option{on}|@option{off}]
|
2009-06-09 23:06:25 -05:00
|
|
|
Poll the current target for its current state.
|
2013-03-14 16:38:19 -05:00
|
|
|
(Also, @pxref{targetcurstate,,target curstate}.)
|
2009-06-09 23:06:25 -05:00
|
|
|
If that target is in debug mode, architecture
|
|
|
|
specific information about the current state is printed.
|
|
|
|
An optional parameter
|
|
|
|
allows background polling to be enabled and disabled.
|
|
|
|
|
|
|
|
You could use this from the TCL command shell, or
|
|
|
|
from GDB using @command{monitor poll} command.
|
2009-12-26 12:35:24 -06:00
|
|
|
Leave background polling enabled while you're using GDB.
|
2009-06-09 23:06:25 -05:00
|
|
|
@example
|
|
|
|
> poll
|
|
|
|
background polling: on
|
|
|
|
target state: halted
|
|
|
|
target halted in ARM state due to debug-request, \
|
|
|
|
current mode: Supervisor
|
|
|
|
cpsr: 0x800000d3 pc: 0x11081bfc
|
|
|
|
MMU: disabled, D-Cache: disabled, I-Cache: enabled
|
|
|
|
>
|
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
@node Debug Adapter Configuration
|
|
|
|
@chapter Debug Adapter Configuration
|
2009-06-17 19:29:39 -05:00
|
|
|
@cindex config file, interface
|
|
|
|
@cindex interface config file
|
|
|
|
|
2010-02-21 11:29:24 -06:00
|
|
|
Correctly installing OpenOCD includes making your operating system give
|
2013-03-14 17:03:00 -05:00
|
|
|
OpenOCD access to debug adapters. Once that has been done, Tcl commands
|
2010-02-21 11:29:24 -06:00
|
|
|
are used to select which one is used, and to configure how it is used.
|
|
|
|
|
2010-03-05 23:09:03 -06:00
|
|
|
@quotation Note
|
|
|
|
Because OpenOCD started out with a focus purely on JTAG, you may find
|
|
|
|
places where it wrongly presumes JTAG is the only transport protocol
|
2013-03-14 17:03:00 -05:00
|
|
|
in use. Be aware that recent versions of OpenOCD are removing that
|
|
|
|
limitation. JTAG remains more functional than most other transports.
|
2010-03-05 23:09:03 -06:00
|
|
|
Other transports do not support boundary scan operations, or may be
|
2013-03-14 17:03:00 -05:00
|
|
|
specific to a given chip vendor. Some might be usable only for
|
2010-03-05 23:09:03 -06:00
|
|
|
programming flash memory, instead of also for debugging.
|
|
|
|
@end quotation
|
|
|
|
|
|
|
|
Debug Adapters/Interfaces/Dongles are normally configured
|
2009-06-03 19:54:25 -05:00
|
|
|
through commands in an interface configuration
|
|
|
|
file which is sourced by your @file{openocd.cfg} file, or
|
|
|
|
through a command line @option{-f interface/....cfg} option.
|
|
|
|
|
|
|
|
@example
|
|
|
|
source [find interface/olimex-jtag-tiny.cfg]
|
|
|
|
@end example
|
|
|
|
|
|
|
|
These commands tell
|
|
|
|
OpenOCD what type of JTAG adapter you have, and how to talk to it.
|
|
|
|
A few cases are so simple that you only need to say what driver to use:
|
|
|
|
|
|
|
|
@example
|
2008-11-30 16:25:43 -06:00
|
|
|
# jlink interface
|
2019-08-23 09:07:12 -05:00
|
|
|
adapter driver jlink
|
2009-06-03 19:54:25 -05:00
|
|
|
@end example
|
|
|
|
|
|
|
|
Most adapters need a bit more configuration than that.
|
|
|
|
|
2009-06-02 19:59:13 -05:00
|
|
|
|
2018-11-19 05:56:48 -06:00
|
|
|
@section Adapter Configuration
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2018-11-19 05:56:48 -06:00
|
|
|
The @command{adapter driver} command tells OpenOCD what type of debug adapter you are
|
2010-03-05 23:09:03 -06:00
|
|
|
using. Depending on the type of adapter, you may need to use one or
|
|
|
|
more additional commands to further identify or configure the adapter.
|
2008-02-28 01:44:13 -06:00
|
|
|
|
2018-11-19 05:56:48 -06:00
|
|
|
@deffn {Config Command} {adapter driver} name
|
|
|
|
Use the adapter driver @var{name} to connect to the
|
2009-06-02 19:59:13 -05:00
|
|
|
target.
|
|
|
|
@end deffn
|
|
|
|
|
2021-04-06 16:24:49 -05:00
|
|
|
@deffn {Command} {adapter list}
|
2010-03-27 12:07:13 -05:00
|
|
|
List the debug adapter drivers that have been built into
|
2009-06-08 08:16:57 -05:00
|
|
|
the running copy of OpenOCD.
|
|
|
|
@end deffn
|
2021-04-07 07:42:36 -05:00
|
|
|
@deffn {Config Command} {adapter transports} transport_name+
|
2010-07-02 15:45:28 -05:00
|
|
|
Specifies the transports supported by this debug adapter.
|
|
|
|
The adapter driver builds-in similar knowledge; use this only
|
|
|
|
when external configuration (such as jumpering) changes what
|
|
|
|
the hardware can support.
|
|
|
|
@end deffn
|
|
|
|
|
2022-05-04 16:51:48 -05:00
|
|
|
@anchor{adapter gpio}
|
|
|
|
@deffn {Config Command} {adapter gpio [ @
|
|
|
|
@option{tdo} | @option{tdi} | @option{tms} | @option{tck} | @option{trst} | @
|
|
|
|
@option{swdio} | @option{swdio_dir} | @option{swclk} | @option{srst} | @
|
|
|
|
@option{led} @
|
|
|
|
[ @
|
|
|
|
gpio_number | @option{-chip} chip_number | @
|
|
|
|
@option{-active-high} | @option{-active-low} | @
|
|
|
|
@option{-push-pull} | @option{-open-drain} | @option{-open-source} | @
|
|
|
|
@option{-pull-none} | @option{-pull-up} | @option{-pull-down} | @
|
|
|
|
@option{-init-inactive} | @option{-init-active} | @option{-init-input} @
|
|
|
|
] ]}
|
|
|
|
|
|
|
|
Define the GPIO mapping that the adapter will use. The following signals can be
|
|
|
|
defined:
|
|
|
|
|
|
|
|
@itemize @minus
|
|
|
|
@item @option{tdo}, @option{tdi}, @option{tms}, @option{tck}, @option{trst}:
|
|
|
|
JTAG transport signals
|
|
|
|
@item @option{swdio}, @option{swclk}: SWD transport signals
|
|
|
|
@item @option{swdio_dir}: optional swdio buffer control signal
|
|
|
|
@item @option{srst}: system reset signal
|
|
|
|
@item @option{led}: optional activity led
|
2010-07-02 15:45:28 -05:00
|
|
|
|
2022-05-04 16:51:48 -05:00
|
|
|
@end itemize
|
|
|
|
|
|
|
|
Some adapters require that the GPIO chip number is set in addition to the GPIO
|
|
|
|
number. The configuration options enable signals to be defined as active-high or
|
|
|
|
active-low. The output drive mode can be set to push-pull, open-drain or
|
|
|
|
open-source. Most adapters will have to emulate open-drain or open-source drive
|
|
|
|
modes by switching between an input and output. Input and output signals can be
|
|
|
|
instructed to use a pull-up or pull-down resistor, assuming it is supported by
|
|
|
|
the adaptor driver and hardware. The initial state of outputs may also be set,
|
|
|
|
"active" state means 1 for active-high outputs and 0 for active-low outputs.
|
|
|
|
Bidirectional signals may also be initialized as an input. If the swdio signal
|
|
|
|
is buffered the buffer direction can be controlled with the swdio_dir signal;
|
|
|
|
the active state means that the buffer should be set as an output with respect
|
|
|
|
to the adapter. The command options are cumulative with later commands able to
|
|
|
|
override settings defined by earlier ones. The two commands @command{gpio led 7
|
|
|
|
-active-high} and @command{gpio led -chip 1 -active-low} sent sequentially are
|
|
|
|
equivalent to issuing the single command @command{gpio led 7 -chip 1
|
|
|
|
-active-low}. It is not permissible to set the drive mode or initial state for
|
|
|
|
signals which are inputs. The drive mode for the srst and trst signals must be
|
|
|
|
set with the @command{adapter reset_config} command. It is not permissible to
|
|
|
|
set the initial state of swdio_dir as it is derived from the initial state of
|
|
|
|
swdio. The command @command{adapter gpio} prints the current configuration for
|
|
|
|
all GPIOs while the command @command{adapter gpio gpio_name} prints the current
|
|
|
|
configuration for gpio_name. Not all adapters support this generic GPIO mapping,
|
|
|
|
some require their own commands to define the GPIOs used. Adapters that support
|
|
|
|
the generic mapping may not support all of the listed options.
|
|
|
|
@end deffn
|
2009-06-08 08:16:57 -05:00
|
|
|
|
2021-04-06 16:24:49 -05:00
|
|
|
@deffn {Command} {adapter name}
|
2010-03-27 12:07:13 -05:00
|
|
|
Returns the name of the debug adapter driver being used.
|
2009-06-02 19:59:13 -05:00
|
|
|
@end deffn
|
|
|
|
|
2021-04-07 07:42:36 -05:00
|
|
|
@deffn {Config Command} {adapter usb location} [<bus>-<port>[.<port>]...]
|
2019-05-07 06:20:30 -05:00
|
|
|
Displays or specifies the physical USB port of the adapter to use. The path
|
2018-11-16 01:56:25 -06:00
|
|
|
roots at @var{bus} and walks down the physical ports, with each
|
|
|
|
@var{port} option specifying a deeper level in the bus topology, the last
|
|
|
|
@var{port} denoting where the target adapter is actually plugged.
|
|
|
|
The USB bus topology can be queried with the command @emph{lsusb -t} or @emph{dmesg}.
|
|
|
|
|
|
|
|
This command is only available if your libusb1 is at least version 1.0.16.
|
|
|
|
@end deffn
|
|
|
|
|
2021-10-07 12:27:31 -05:00
|
|
|
@deffn {Config Command} {adapter serial} serial_string
|
|
|
|
Specifies the @var{serial_string} of the adapter to use.
|
|
|
|
If this command is not specified, serial strings are not checked.
|
2021-10-07 12:42:54 -05:00
|
|
|
Only the following adapter drivers use the serial string from this command:
|
2024-10-12 04:48:05 -05:00
|
|
|
arm-jtag-ew, cmsis_dap, esp_usb_jtag, ft232r, ftdi, hla (ti-icdi), jlink, kitprog, opendus,
|
2021-10-19 06:09:25 -05:00
|
|
|
openjtag, osbdm, presto, rlink, st-link, usb_blaster (ublast2), usbprog, vsllink, xds110.
|
2021-10-07 12:27:31 -05:00
|
|
|
@end deffn
|
|
|
|
|
2009-06-02 19:59:13 -05:00
|
|
|
@section Interface Drivers
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
Each of the interface drivers listed here must be explicitly
|
|
|
|
enabled when OpenOCD is configured, in order to be made
|
|
|
|
available at run time.
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {amt_jtagaccel}
|
|
|
|
Amontec Chameleon in its JTAG Accelerator configuration,
|
|
|
|
connected to a PC's EPP mode parallel port.
|
|
|
|
This defines some driver-specific commands:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2021-07-30 10:39:11 -05:00
|
|
|
@deffn {Config Command} {parport port} number
|
2009-06-03 19:54:25 -05:00
|
|
|
Specifies either the address of the I/O port (default: 0x378 for LPT1) or
|
|
|
|
the number of the @file{/dev/parport} device.
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2021-04-06 16:44:37 -05:00
|
|
|
@deffn {Config Command} {rtck} [@option{enable}|@option{disable}]
|
2009-06-03 19:54:25 -05:00
|
|
|
Displays status of RTCK option.
|
|
|
|
Optionally sets that option first.
|
|
|
|
@end deffn
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2023-06-16 18:11:15 -05:00
|
|
|
@deffn {Interface Driver} {angie}
|
|
|
|
This is the NanoXplore's ANGIE USB-JTAG Adapter.
|
|
|
|
@end deffn
|
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {arm-jtag-ew}
|
|
|
|
Olimex ARM-JTAG-EW USB adapter
|
|
|
|
This has one driver-specific command:
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2021-04-06 16:24:49 -05:00
|
|
|
@deffn {Command} {armjtagew_info}
|
2009-06-03 19:54:25 -05:00
|
|
|
Logs some status
|
|
|
|
@end deffn
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {at91rm9200}
|
|
|
|
Supports bitbanged JTAG from the local system,
|
|
|
|
presuming that system is an Atmel AT91rm9200
|
|
|
|
and a specific set of GPIOs is used.
|
|
|
|
@c command: at91rm9200_device NAME
|
|
|
|
@c chooses among list of bit configs ... only one option
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2013-12-19 15:33:19 -06:00
|
|
|
@deffn {Interface Driver} {cmsis-dap}
|
2020-11-08 15:34:26 -06:00
|
|
|
ARM CMSIS-DAP compliant based adapter v1 (USB HID based)
|
|
|
|
or v2 (USB bulk).
|
2013-12-19 15:33:19 -06:00
|
|
|
|
2023-11-06 08:50:40 -06:00
|
|
|
@deffn {Config Command} {cmsis-dap vid_pid} [vid pid]+
|
2013-12-19 15:33:19 -06:00
|
|
|
The vendor ID and product ID of the CMSIS-DAP device. If not specified
|
2014-01-27 08:21:25 -06:00
|
|
|
the driver will attempt to auto detect the CMSIS-DAP device.
|
2013-12-19 15:33:19 -06:00
|
|
|
Currently, up to eight [@var{vid}, @var{pid}] pairs may be given, e.g.
|
|
|
|
@example
|
2023-11-06 08:50:40 -06:00
|
|
|
cmsis-dap vid_pid 0xc251 0xf001 0x0d28 0x0204
|
2013-12-19 15:33:19 -06:00
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2023-11-06 08:50:40 -06:00
|
|
|
@deffn {Config Command} {cmsis-dap backend} [@option{auto}|@option{usb_bulk}|@option{hid}]
|
2020-11-08 15:34:26 -06:00
|
|
|
Specifies how to communicate with the adapter:
|
|
|
|
|
|
|
|
@itemize @minus
|
|
|
|
@item @option{hid} Use HID generic reports - CMSIS-DAP v1
|
|
|
|
@item @option{usb_bulk} Use USB bulk - CMSIS-DAP v2
|
|
|
|
@item @option{auto} First try USB bulk CMSIS-DAP v2, if not found try HID CMSIS-DAP v1.
|
2023-11-06 08:50:40 -06:00
|
|
|
This is the default if @command{cmsis-dap backend} is not specified.
|
2020-11-08 15:34:26 -06:00
|
|
|
@end itemize
|
|
|
|
@end deffn
|
|
|
|
|
2023-11-06 08:50:40 -06:00
|
|
|
@deffn {Config Command} {cmsis-dap usb interface} [number]
|
2020-11-08 15:34:26 -06:00
|
|
|
Specifies the @var{number} of the USB interface to use in v2 mode (USB bulk).
|
|
|
|
In most cases need not to be specified and interfaces are searched by
|
|
|
|
interface string or for user class interface.
|
|
|
|
@end deffn
|
|
|
|
|
2023-11-07 07:45:45 -06:00
|
|
|
@deffn {Command} {cmsis-dap quirk} [@option{enable}|@option{disable}]
|
|
|
|
Enables or disables the following workarounds of known CMSIS-DAP adapter
|
|
|
|
quirks:
|
|
|
|
@itemize @minus
|
|
|
|
@item disconnect and re-connect before sending a switch sequence
|
|
|
|
@item packets pipelining is suppressed, only one packet at a time is
|
|
|
|
submitted to the adapter
|
|
|
|
@end itemize
|
|
|
|
The quirk workarounds are disabled by default.
|
|
|
|
The command without a parameter displays current setting.
|
|
|
|
@end deffn
|
|
|
|
|
2013-12-19 15:33:19 -06:00
|
|
|
@deffn {Command} {cmsis-dap info}
|
|
|
|
Display various device information, like hardware version, firmware version, current bus status.
|
|
|
|
@end deffn
|
2021-11-20 10:53:03 -06:00
|
|
|
|
|
|
|
@deffn {Command} {cmsis-dap cmd} number number ...
|
|
|
|
Execute an arbitrary CMSIS-DAP command. Use for adapter testing or for handling
|
|
|
|
of an adapter vendor specific command from a Tcl script.
|
|
|
|
|
|
|
|
Take given numbers as bytes, assemble a CMSIS-DAP protocol command packet
|
|
|
|
from them and send it to the adapter. The first 4 bytes of the adapter response
|
|
|
|
are logged.
|
|
|
|
See @url{https://arm-software.github.io/CMSIS_5/DAP/html/group__DAP__Commands__gr.html}
|
|
|
|
@end deffn
|
2013-12-19 15:33:19 -06:00
|
|
|
@end deffn
|
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {dummy}
|
|
|
|
A dummy software-only driver for debugging.
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {ep93xx}
|
|
|
|
Cirrus Logic EP93xx based single-board computer bit-banging (in development)
|
|
|
|
@end deffn
|
2008-11-30 16:25:43 -06:00
|
|
|
|
2012-12-27 20:22:22 -06:00
|
|
|
@deffn {Interface Driver} {ftdi}
|
|
|
|
This driver is for adapters using the MPSSE (Multi-Protocol Synchronous Serial
|
|
|
|
Engine) mode built into many FTDI chips, such as the FT2232, FT4232 and FT232H.
|
|
|
|
|
|
|
|
The driver is using libusb-1.0 in asynchronous mode to talk to the FTDI device,
|
2021-10-12 01:28:34 -05:00
|
|
|
bypassing intermediate libraries like libftdi.
|
2012-12-27 20:22:22 -06:00
|
|
|
|
2018-02-10 08:08:26 -06:00
|
|
|
Support for new FTDI based adapters can be added completely through
|
2017-01-02 17:18:34 -06:00
|
|
|
configuration files, without the need to patch and rebuild OpenOCD.
|
2012-12-27 20:22:22 -06:00
|
|
|
|
|
|
|
The driver uses a signal abstraction to enable Tcl configuration files to
|
|
|
|
define outputs for one or several FTDI GPIO. These outputs can then be
|
2021-06-23 12:39:24 -05:00
|
|
|
controlled using the @command{ftdi set_signal} command. Special signal names
|
2012-12-27 20:22:22 -06:00
|
|
|
are reserved for nTRST, nSRST and LED (for blink) so that they, if defined,
|
2015-02-25 02:18:27 -06:00
|
|
|
will be used for their customary purpose. Inputs can be read using the
|
2021-06-23 12:39:24 -05:00
|
|
|
@command{ftdi get_signal} command.
|
2012-12-27 20:22:22 -06:00
|
|
|
|
2017-01-02 17:18:34 -06:00
|
|
|
To support SWD, a signal named SWD_EN must be defined. It is set to 1 when the
|
|
|
|
SWD protocol is selected. When set, the adapter should route the SWDIO pin to
|
|
|
|
the data input. An SWDIO_OE signal, if defined, will be set to 1 or 0 as
|
|
|
|
required by the protocol, to tell the adapter to drive the data output onto
|
|
|
|
the SWDIO pin or keep the SWDIO pin Hi-Z, respectively.
|
|
|
|
|
2012-12-27 20:22:22 -06:00
|
|
|
Depending on the type of buffer attached to the FTDI GPIO, the outputs have to
|
|
|
|
be controlled differently. In order to support tristateable signals such as
|
|
|
|
nSRST, both a data GPIO and an output-enable GPIO can be specified for each
|
|
|
|
signal. The following output buffer configurations are supported:
|
|
|
|
|
|
|
|
@itemize @minus
|
|
|
|
@item Push-pull with one FTDI output as (non-)inverted data line
|
|
|
|
@item Open drain with one FTDI output as (non-)inverted output-enable
|
|
|
|
@item Tristate with one FTDI output as (non-)inverted data line and another
|
|
|
|
FTDI output as (non-)inverted output-enable
|
|
|
|
@item Unbuffered, using the FTDI GPIO as a tristate output directly by
|
|
|
|
switching data and direction as necessary
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
These interfaces have several commands, used to configure the driver
|
|
|
|
before initializing the JTAG scan chain:
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Config Command} {ftdi vid_pid} [vid pid]+
|
2017-01-02 17:18:34 -06:00
|
|
|
The vendor ID and product ID of the adapter. Up to eight
|
|
|
|
[@var{vid}, @var{pid}] pairs may be given, e.g.
|
2012-12-27 20:22:22 -06:00
|
|
|
@example
|
2021-06-23 12:39:24 -05:00
|
|
|
ftdi vid_pid 0x0403 0xcff8 0x15ba 0x0003
|
2012-12-27 20:22:22 -06:00
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Config Command} {ftdi device_desc} description
|
2012-12-27 20:22:22 -06:00
|
|
|
Provides the USB device description (the @emph{iProduct string})
|
|
|
|
of the adapter. If not specified, the device description is ignored
|
|
|
|
during device selection.
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Config Command} {ftdi channel} channel
|
2012-12-27 20:22:22 -06:00
|
|
|
Selects the channel of the FTDI device to use for MPSSE operations. Most
|
|
|
|
adapters use the default, channel 0, but there are exceptions.
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Config Command} {ftdi layout_init} data direction
|
2012-12-27 20:22:22 -06:00
|
|
|
Specifies the initial values of the FTDI GPIO data and direction registers.
|
|
|
|
Each value is a 16-bit number corresponding to the concatenation of the high
|
|
|
|
and low FTDI GPIO registers. The values should be selected based on the
|
|
|
|
schematics of the adapter, such that all signals are set to safe levels with
|
|
|
|
minimal impact on the target system. Avoid floating inputs, conflicting outputs
|
|
|
|
and initially asserted reset signals.
|
|
|
|
@end deffn
|
|
|
|
|
2022-06-08 15:11:21 -05:00
|
|
|
@deffn {Command} {ftdi oscan1_mode} on|off
|
2022-09-19 16:47:50 -05:00
|
|
|
Enable or disable OScan1 mode. This mode is intended for use with an adapter,
|
2022-06-08 15:11:21 -05:00
|
|
|
such as the ARM-JTAG-SWD by Olimex, that sits in between the FTDI chip and the
|
2022-09-19 16:47:50 -05:00
|
|
|
target. The cJTAG prococol is composed of two wires: TCKC (clock) and TMSC (data).
|
|
|
|
TMSC is a bidirectional signal which is time-multiplexed alternating TDI, TMS and
|
|
|
|
TDO. The multiplexing is achieved by a tri-state buffer which puts TMSC in Hi-Z
|
|
|
|
when the device is supposed to take the control of the line (TDO phase).
|
|
|
|
|
|
|
|
The ARM-JTAG-SWD adapter uses standard TRST and TMS signals to control TMSC
|
|
|
|
direction. TRST is used by the adapter as selector for the multiplexers which set
|
|
|
|
the JTAG probe in 2-wire mode. Whatever signal is used for this purpose, it must
|
|
|
|
be defined with the name JTAG_SEL using @command{ftdi layout_signal}. JTAG_SEL is
|
|
|
|
set to 0 during OScan1 initialization.
|
|
|
|
|
|
|
|
Some JTAG probes like the Digilent JTAG-HS2, support cJTAG by using a
|
|
|
|
separate pin to control when TMS is driven onto TMSC. You can use such
|
|
|
|
probes by defining the signal TMSC_EN using
|
|
|
|
@command{ftdi layout_signal TMSC_EN -data <mask>}.
|
2022-06-08 15:11:21 -05:00
|
|
|
@end deffn
|
|
|
|
|
2022-09-30 04:53:35 -05:00
|
|
|
@deffn {Command} {ftdi jscan3_mode} on|off
|
|
|
|
Enable or disable JScan3 mode. This mode uses the classic 4-wire JTAG protocol
|
|
|
|
in chips whose JTAG port is only compliant with the cJTAG standard (IEEE 1149.7).
|
|
|
|
|
|
|
|
Since cJTAG needs a 2-wire escape sequence to select the operating mode,
|
|
|
|
a cJTAG adapter like ARM-JTAG-SWD by Olimex is still required. This means
|
|
|
|
that a cJTAG probe configuration script must be used too.
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Command} {ftdi layout_signal} name [@option{-data}|@option{-ndata} data_mask] [@option{-input}|@option{-ninput} input_mask] [@option{-oe}|@option{-noe} oe_mask] [@option{-alias}|@option{-nalias} name]
|
2012-12-27 20:22:22 -06:00
|
|
|
Creates a signal with the specified @var{name}, controlled by one or more FTDI
|
|
|
|
GPIO pins via a range of possible buffer connections. The masks are FTDI GPIO
|
|
|
|
register bitmasks to tell the driver the connection and type of the output
|
|
|
|
buffer driving the respective signal. @var{data_mask} is the bitmask for the
|
|
|
|
pin(s) connected to the data input of the output buffer. @option{-ndata} is
|
|
|
|
used with inverting data inputs and @option{-data} with non-inverting inputs.
|
|
|
|
The @option{-oe} (or @option{-noe}) option tells where the output-enable (or
|
2015-02-25 02:18:27 -06:00
|
|
|
not-output-enable) input to the output buffer is connected. The options
|
|
|
|
@option{-input} and @option{-ninput} specify the bitmask for pins to be read
|
2021-06-23 12:39:24 -05:00
|
|
|
with the method @command{ftdi get_signal}.
|
2012-12-27 20:22:22 -06:00
|
|
|
|
|
|
|
Both @var{data_mask} and @var{oe_mask} need not be specified. For example, a
|
|
|
|
simple open-collector transistor driver would be specified with @option{-oe}
|
|
|
|
only. In that case the signal can only be set to drive low or to Hi-Z and the
|
|
|
|
driver will complain if the signal is set to drive high. Which means that if
|
|
|
|
it's a reset signal, @command{reset_config} must be specified as
|
|
|
|
@option{srst_open_drain}, not @option{srst_push_pull}.
|
|
|
|
|
|
|
|
A special case is provided when @option{-data} and @option{-oe} is set to the
|
|
|
|
same bitmask. Then the FTDI pin is considered being connected straight to the
|
|
|
|
target without any buffer. The FTDI pin is then switched between output and
|
|
|
|
input as necessary to provide the full set of low, high and Hi-Z
|
|
|
|
characteristics. In all other cases, the pins specified in a signal definition
|
|
|
|
are always driven by the FTDI.
|
2014-06-20 03:47:24 -05:00
|
|
|
|
|
|
|
If @option{-alias} or @option{-nalias} is used, the signal is created
|
|
|
|
identical (or with data inverted) to an already specified signal
|
|
|
|
@var{name}.
|
2012-12-27 20:22:22 -06:00
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Command} {ftdi set_signal} name @option{0}|@option{1}|@option{z}
|
2012-12-27 20:22:22 -06:00
|
|
|
Set a previously defined signal to the specified level.
|
|
|
|
@itemize @minus
|
|
|
|
@item @option{0}, drive low
|
|
|
|
@item @option{1}, drive high
|
|
|
|
@item @option{z}, set to high-impedance
|
|
|
|
@end itemize
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Command} {ftdi get_signal} name
|
2015-02-25 02:18:27 -06:00
|
|
|
Get the value of a previously defined signal.
|
|
|
|
@end deffn
|
|
|
|
|
2021-06-23 12:39:24 -05:00
|
|
|
@deffn {Command} {ftdi tdo_sample_edge} @option{rising}|@option{falling}
|
2016-01-19 15:36:54 -06:00
|
|
|
Configure TCK edge at which the adapter samples the value of the TDO signal
|
|
|
|
|
|
|
|
Due to signal propagation delays, sampling TDO on rising TCK can become quite
|
2018-02-10 08:08:26 -06:00
|
|
|
peculiar at high JTAG clock speeds. However, FTDI chips offer a possibility to sample
|
2016-01-19 15:36:54 -06:00
|
|
|
TDO on falling edge of TCK. With some board/adapter configurations, this may increase
|
|
|
|
stability at higher JTAG clocks.
|
|
|
|
@itemize @minus
|
|
|
|
@item @option{rising}, sample TDO on rising edge of TCK - this is the default
|
|
|
|
@item @option{falling}, sample TDO on falling edge of TCK
|
|
|
|
@end itemize
|
|
|
|
@end deffn
|
|
|
|
|
2012-12-27 20:22:22 -06:00
|
|
|
For example adapter definitions, see the configuration files shipped in the
|
|
|
|
@file{interface/ftdi} directory.
|
2016-01-19 15:36:54 -06:00
|
|
|
|
2012-12-27 20:22:22 -06:00
|
|
|
@end deffn
|
|
|
|
|
2017-09-03 05:19:41 -05:00
|
|
|
@deffn {Interface Driver} {ft232r}
|
2018-09-27 08:12:10 -05:00
|
|
|
This driver is implementing synchronous bitbang mode of an FTDI FT232R,
|
|
|
|
FT230X, FT231X and similar USB UART bridge ICs by reusing RS232 signals as GPIO.
|
|
|
|
It currently doesn't support using CBUS pins as GPIO.
|
2017-09-03 05:19:41 -05:00
|
|
|
|
2018-09-27 08:12:10 -05:00
|
|
|
List of connections (default physical pin numbers for FT232R in 28-pin SSOP package):
|
2017-09-03 05:19:41 -05:00
|
|
|
@itemize @minus
|
|
|
|
@item RXD(5) - TDI
|
|
|
|
@item TXD(1) - TCK
|
|
|
|
@item RTS(3) - TDO
|
|
|
|
@item CTS(11) - TMS
|
|
|
|
@item DTR(2) - TRST
|
|
|
|
@item DCD(10) - SRST
|
|
|
|
@end itemize
|
|
|
|
|
2018-09-27 08:12:10 -05:00
|
|
|
User can change default pinout by supplying configuration
|
|
|
|
commands with GPIO numbers or RS232 signal names.
|
|
|
|
GPIO numbers correspond to bit numbers in FTDI GPIO register.
|
|
|
|
They differ from physical pin numbers.
|
|
|
|
For details see actual FTDI chip datasheets.
|
|
|
|
Every JTAG line must be configured to unique GPIO number
|
|
|
|
different than any other JTAG line, even those lines
|
|
|
|
that are sometimes not used like TRST or SRST.
|
|
|
|
|
|
|
|
FT232R
|
|
|
|
@itemize @minus
|
|
|
|
@item bit 7 - RI
|
|
|
|
@item bit 6 - DCD
|
|
|
|
@item bit 5 - DSR
|
|
|
|
@item bit 4 - DTR
|
|
|
|
@item bit 3 - CTS
|
|
|
|
@item bit 2 - RTS
|
|
|
|
@item bit 1 - RXD
|
|
|
|
@item bit 0 - TXD
|
|
|
|
@end itemize
|
|
|
|
|
2017-09-03 05:19:41 -05:00
|
|
|
These interfaces have several commands, used to configure the driver
|
|
|
|
before initializing the JTAG scan chain:
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r vid_pid} @var{vid} @var{pid}
|
2017-09-03 05:19:41 -05:00
|
|
|
The vendor ID and product ID of the adapter. If not specified, default
|
|
|
|
0x0403:0x6001 is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r jtag_nums} @var{tck} @var{tms} @var{tdi} @var{tdo}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set four JTAG GPIO numbers at once.
|
|
|
|
If not specified, default 0 3 1 2 or TXD CTS RXD RTS is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r tck_num} @var{tck}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set TCK GPIO number. If not specified, default 0 or TXD is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r tms_num} @var{tms}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set TMS GPIO number. If not specified, default 3 or CTS is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r tdi_num} @var{tdi}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set TDI GPIO number. If not specified, default 1 or RXD is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r tdo_num} @var{tdo}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set TDO GPIO number. If not specified, default 2 or RTS is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r trst_num} @var{trst}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set TRST GPIO number. If not specified, default 4 or DTR is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r srst_num} @var{srst}
|
2018-09-27 08:12:10 -05:00
|
|
|
Set SRST GPIO number. If not specified, default 6 or DCD is used.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:20:22 -05:00
|
|
|
@deffn {Config Command} {ft232r restore_serial} @var{word}
|
2018-09-27 08:12:10 -05:00
|
|
|
Restore serial port after JTAG. This USB bitmode control word
|
|
|
|
(16-bit) will be sent before quit. Lower byte should
|
|
|
|
set GPIO direction register to a "sane" state:
|
|
|
|
0x15 for TXD RTS DTR as outputs (1), others as inputs (0). Higher
|
|
|
|
byte is usually 0 to disable bitbang mode.
|
|
|
|
When kernel driver reattaches, serial port should continue to work.
|
|
|
|
Value 0xFFFF disables sending control word and serial port,
|
|
|
|
then kernel driver will not reattach.
|
|
|
|
If not specified, default 0xFFFF is used.
|
|
|
|
@end deffn
|
|
|
|
|
2017-09-03 05:19:41 -05:00
|
|
|
@end deffn
|
|
|
|
|
2011-08-25 15:29:33 -05:00
|
|
|
@deffn {Interface Driver} {remote_bitbang}
|
2021-01-30 15:46:50 -06:00
|
|
|
Drive JTAG and SWD from a remote process. This sets up a UNIX or TCP socket
|
|
|
|
connection with a remote process and sends ASCII encoded bitbang requests to
|
|
|
|
that process instead of directly driving JTAG and SWD.
|
2011-08-25 15:29:33 -05:00
|
|
|
|
|
|
|
The remote_bitbang driver is useful for debugging software running on
|
|
|
|
processors which are being simulated.
|
|
|
|
|
2021-07-30 11:01:09 -05:00
|
|
|
@deffn {Config Command} {remote_bitbang port} number
|
2011-08-25 15:29:33 -05:00
|
|
|
Specifies the TCP port of the remote process to connect to or 0 to use UNIX
|
|
|
|
sockets instead of TCP.
|
|
|
|
@end deffn
|
|
|
|
|
2021-07-30 11:01:09 -05:00
|
|
|
@deffn {Config Command} {remote_bitbang host} hostname
|
2011-08-25 15:29:33 -05:00
|
|
|
Specifies the hostname of the remote process to connect to using TCP, or the
|
2021-07-30 11:01:09 -05:00
|
|
|
name of the UNIX socket to use if remote_bitbang port is 0.
|
2011-08-25 15:29:33 -05:00
|
|
|
@end deffn
|
|
|
|
|
2023-02-06 20:02:31 -06:00
|
|
|
@deffn {Config Command} {remote_bitbang use_remote_sleep} (on|off)
|
|
|
|
If this option is enabled, delays will not be executed locally but instead
|
|
|
|
forwarded to the remote host. This is useful if the remote host performs its
|
|
|
|
own request queuing rather than executing requests immediately.
|
|
|
|
|
|
|
|
This is disabled by default. This option must only be enabled if the given
|
|
|
|
remote_bitbang host supports receiving the delay information.
|
|
|
|
@end deffn
|
|
|
|
|
2011-08-25 15:29:33 -05:00
|
|
|
For example, to connect remotely via TCP to the host foobar you might have
|
|
|
|
something like:
|
|
|
|
|
|
|
|
@example
|
2019-08-23 09:07:12 -05:00
|
|
|
adapter driver remote_bitbang
|
2021-07-30 11:01:09 -05:00
|
|
|
remote_bitbang port 3335
|
|
|
|
remote_bitbang host foobar
|
2011-08-25 15:29:33 -05:00
|
|
|
@end example
|
|
|
|
|
2023-02-06 20:02:31 -06:00
|
|
|
And if you also wished to enable remote sleeping:
|
|
|
|
|
|
|
|
@example
|
|
|
|
adapter driver remote_bitbang
|
|
|
|
remote_bitbang port 3335
|
|
|
|
remote_bitbang host foobar
|
|
|
|
remote_bitbang use_remote_sleep on
|
|
|
|
@end example
|
|
|
|
|
2011-08-25 15:29:33 -05:00
|
|
|
To connect to another process running locally via UNIX sockets with socket
|
|
|
|
named mysocket:
|
|
|
|
|
|
|
|
@example
|
2019-08-23 09:07:12 -05:00
|
|
|
adapter driver remote_bitbang
|
2021-07-30 11:01:09 -05:00
|
|
|
remote_bitbang port 0
|
|
|
|
remote_bitbang host mysocket
|
2011-08-25 15:29:33 -05:00
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2009-12-26 17:05:06 -06:00
|
|
|
@deffn {Interface Driver} {usb_blaster}
|
|
|
|
USB JTAG/USB-Blaster compatibles over one of the userspace libraries
|
2013-03-14 17:03:00 -05:00
|
|
|
for FTDI chips. These interfaces have several commands, used to
|
2009-12-26 17:05:06 -06:00
|
|
|
configure the driver before initializing the JTAG scan chain:
|
|
|
|
|
2021-08-01 07:12:23 -05:00
|
|
|
@deffn {Config Command} {usb_blaster vid_pid} vid pid
|
2009-12-26 17:05:06 -06:00
|
|
|
The vendor ID and product ID of the FTDI FT245 device. If not specified,
|
|
|
|
default values are used.
|
|
|
|
Currently, only one @var{vid}, @var{pid} pair may be given, e.g. for
|
|
|
|
Altera USB-Blaster (default):
|
|
|
|
@example
|
2021-08-01 07:12:23 -05:00
|
|
|
usb_blaster vid_pid 0x09FB 0x6001
|
2009-12-26 17:05:06 -06:00
|
|
|
@end example
|
|
|
|
The following VID/PID is for Kolja Waschk's USB JTAG:
|
|
|
|
@example
|
2021-08-01 07:12:23 -05:00
|
|
|
usb_blaster vid_pid 0x16C0 0x06AD
|
2009-12-26 17:05:06 -06:00
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:12:23 -05:00
|
|
|
@deffn {Command} {usb_blaster pin} (@option{pin6}|@option{pin8}) (@option{0}|@option{1}|@option{s}|@option{t})
|
2015-05-16 02:18:19 -05:00
|
|
|
Sets the state or function of the unused GPIO pins on USB-Blasters
|
|
|
|
(pins 6 and 8 on the female JTAG header). These pins can be used as
|
|
|
|
SRST and/or TRST provided the appropriate connections are made on the
|
|
|
|
target board.
|
2009-12-26 17:05:06 -06:00
|
|
|
|
2015-05-16 02:18:19 -05:00
|
|
|
For example, to use pin 6 as SRST:
|
2009-12-26 17:05:06 -06:00
|
|
|
@example
|
2021-08-01 07:12:23 -05:00
|
|
|
usb_blaster pin pin6 s
|
2015-05-16 02:18:19 -05:00
|
|
|
reset_config srst_only
|
2009-12-26 17:05:06 -06:00
|
|
|
@end example
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:12:23 -05:00
|
|
|
@deffn {Config Command} {usb_blaster lowlevel_driver} (@option{ftdi}|@option{ublast2})
|
2015-05-16 03:10:31 -05:00
|
|
|
Chooses the low level access method for the adapter. If not specified,
|
|
|
|
@option{ftdi} is selected unless it wasn't enabled during the
|
|
|
|
configure stage. USB-Blaster II needs @option{ublast2}.
|
|
|
|
@end deffn
|
|
|
|
|
2021-08-01 07:12:23 -05:00
|
|
|
@deffn {Config Command} {usb_blaster firmware} @var{path}
|
2015-05-16 03:10:31 -05:00
|
|
|
This command specifies @var{path} to access USB-Blaster II firmware
|
|
|
|
image. To be used with USB-Blaster II only.
|
|
|
|
@end deffn
|
|
|
|
|
2009-12-26 17:05:06 -06:00
|
|
|
@end deffn
|
|
|
|
|
2009-06-03 19:54:25 -05:00
|
|
|
@deffn {Interface Driver} {gw16012}
|
|
|
|
Gateworks GW16012 JTAG programmer.
|
|
|
|
This has one driver-specific command:
|
|
|
|
|
2021-07-30 10:39:11 -05:00
|
|
|
@deffn {Config Command} {parport port} [port_number]
|
2010-01-09 23:56:11 -06:00
|
|
|
Display either the address of the I/O port
|
|
|
|
(default: 0x378 for LPT1) or the number of the @file{/dev/parport} device.
|
|
|
|
If a parameter is provided, first switch to use that port.
|
|
|
|
This is a write-once setting.
|
2009-06-03 19:54:25 -05:00
|
|
|
@end deffn
|
|
|
|
@end deffn
|
|
|
|
|
|
|
|
@deffn {Interface Driver} {jlink}
|
2014-10-20 12:18:38 -05:00
|
|
|
SEGGER J-Link family of USB adapters. It currently supports JTAG and SWD
|
|
|
|
transports.
|
2012-05-29 06:52:04 -05:00
|
|
|
|
|
|
|
@quotation Compatibility Note
|
2018-02-10 08:08:26 -06:00
|
|
|
SEGGER released many firmware versions for the many hardware versions they
|
2012-05-29 06:52:04 -05:00
|
|
|
produced. OpenOCD was extensively tested and intended to run on all of them,
|
|
|
|
but some combinations were reported as incompatible. As a general
|
|
|
|
recommendation, it is advisable to use the latest firmware version
|
|
|
|
available for each hardware version. However the current V8 is a moving
|
|