1This is openocd.info, produced by makeinfo version 6.5 from 2openocd.texi. 3 4This User's Guide documents release 0.11.0, dated 7 March 2021, of the 5Open On-Chip Debugger (OpenOCD). 6 7 * Copyright (C) 2008 The OpenOCD Project 8 * Copyright (C) 2007-2008 Spencer Oliver <spen@spen-soft.co.uk> 9 * Copyright (C) 2008-2010 Oyvind Harboe <oyvind.harboe@zylin.com> 10 * Copyright (C) 2008 Duane Ellis <openocd@duaneellis.com> 11 * Copyright (C) 2009-2010 David Brownell 12 13 Permission is granted to copy, distribute and/or modify this 14 document under the terms of the GNU Free Documentation License, 15 Version 1.2 or any later version published by the Free Software 16 Foundation; with no Invariant Sections, no Front-Cover Texts, and 17 no Back-Cover Texts. A copy of the license is included in the 18 section entitled "GNU Free Documentation License". 19INFO-DIR-SECTION Development 20START-INFO-DIR-ENTRY 21* OpenOCD: (openocd). OpenOCD User's Guide 22END-INFO-DIR-ENTRY 23 24 25File: openocd.info, Node: Flash Programming, Next: PLD/FPGA Commands, Prev: Flash Commands, Up: Top 26 2713 Flash Programming 28******************** 29 30OpenOCD implements numerous ways to program the target flash, whether 31internal or external. Programming can be achieved by either using *note 32Programming using GDB: programmingusinggdb, or using the commands given 33in *note Flash Programming Commands: flashprogrammingcommands. 34 35 36To simplify using the flash commands directly a jimtcl script is 37available that handles the programming and verify stage. OpenOCD will 38program/verify/reset the target and optionally shutdown. 39 40The script is executed as follows and by default the following actions 41will be performed. 42 1. 'init' is executed. 43 2. 'reset init' is called to reset and halt the target, any 'reset 44 init' scripts are executed. 45 3. 'flash write_image' is called to erase and write any flash using 46 the filename given. 47 4. If the 'preverify' parameter is given, the target is "verified" 48 first and only flashed if this fails. 49 5. 'verify_image' is called if 'verify' parameter is given. 50 6. 'reset run' is called if 'reset' parameter is given. 51 7. OpenOCD is shutdown if 'exit' parameter is given. 52 53An example of usage is given below. *Note program::. 54 55 # program and verify using elf/hex/s19. verify and reset 56 # are optional parameters 57 openocd -f board/stm32f3discovery.cfg \ 58 -c "program filename.elf verify reset exit" 59 60 # binary files need the flash address passing 61 openocd -f board/stm32f3discovery.cfg \ 62 -c "program filename.bin exit 0x08000000" 63 64 65File: openocd.info, Node: PLD/FPGA Commands, Next: General Commands, Prev: Flash Programming, Up: Top 66 6714 PLD/FPGA Commands 68******************** 69 70Programmable Logic Devices (PLDs) and the more flexible Field 71Programmable Gate Arrays (FPGAs) are both types of programmable 72hardware. OpenOCD can support programming them. Although PLDs are 73generally restrictive (cells are less functional, and there are no 74special purpose cells for memory or computational tasks), they share the 75same OpenOCD infrastructure. Accordingly, both are called PLDs here. 76 7714.1 PLD/FPGA Configuration and Commands 78======================================== 79 80As it does for JTAG TAPs, debug targets, and flash chips (both NOR and 81NAND), OpenOCD maintains a list of PLDs available for use in various 82commands. Also, each such PLD requires a driver. 83 84They are referenced by the number shown by the 'pld devices' command, 85and new PLDs are defined by 'pld device driver_name'. 86 87 -- Config Command: pld device driver_name tap_name [driver_options] 88 Defines a new PLD device, supported by driver DRIVER_NAME, using 89 the TAP named TAP_NAME. The driver may make use of any 90 DRIVER_OPTIONS to configure its behavior. 91 92 -- Command: pld devices 93 Lists the PLDs and their numbers. 94 95 -- Command: pld load num filename 96 Loads the file 'filename' into the PLD identified by NUM. The file 97 format must be inferred by the driver. 98 9914.2 PLD/FPGA Drivers, Options, and Commands 100============================================ 101 102Drivers may support PLD-specific options to the 'pld device' definition 103command, and may also define commands usable only with that particular 104type of PLD. 105 106 -- FPGA Driver: virtex2 [no_jstart] 107 Virtex-II is a family of FPGAs sold by Xilinx. It supports the 108 IEEE 1532 standard for In-System Configuration (ISC). 109 110 If NO_JSTART is non-zero, the JSTART instruction is not used after 111 loading the bitstream. While required for Series2, Series3, and 112 Series6, it breaks bitstream loading on Series7. 113 114 -- Command: virtex2 read_stat num 115 Reads and displays the Virtex-II status register (STAT) for 116 FPGA NUM. 117 118 119File: openocd.info, Node: General Commands, Next: Architecture and Core Commands, Prev: PLD/FPGA Commands, Up: Top 120 12115 General Commands 122******************* 123 124The commands documented in this chapter here are common commands that 125you, as a human, may want to type and see the output of. Configuration 126type commands are documented elsewhere. 127 128Intent: 129 * Source Of Commands 130 OpenOCD commands can occur in a configuration script (discussed 131 elsewhere) or typed manually by a human or supplied 132 programmatically, or via one of several TCP/IP Ports. 133 134 * From the human 135 A human should interact with the telnet interface (default port: 136 4444) or via GDB (default port 3333). 137 138 To issue commands from within a GDB session, use the 'monitor' 139 command, e.g. use 'monitor poll' to issue the 'poll' command. All 140 output is relayed through the GDB session. 141 142 * Machine Interface The Tcl interface's intent is to be a machine 143 interface. The default Tcl port is 5555. 144 14515.1 Server Commands 146==================== 147 148 -- Command: exit 149 Exits the current telnet session. 150 151 -- Command: help [string] 152 With no parameters, prints help text for all commands. Otherwise, 153 prints each helptext containing STRING. Not every command provides 154 helptext. 155 156 Configuration commands, and commands valid at any time, are 157 explicitly noted in parenthesis. In most cases, no such 158 restriction is listed; this indicates commands which are only 159 available after the configuration stage has completed. 160 161 -- Command: sleep msec ['busy'] 162 Wait for at least MSEC milliseconds before resuming. If 'busy' is 163 passed, busy-wait instead of sleeping. (This option is strongly 164 discouraged.) Useful in connection with script files ('script' 165 command and 'target_name' configuration). 166 167 -- Command: shutdown ['error'] 168 Close the OpenOCD server, disconnecting all clients (GDB, telnet, 169 other). If option 'error' is used, OpenOCD will return a non-zero 170 exit code to the parent process. 171 172 Like any TCL commands, also 'shutdown' can be redefined, e.g.: 173 # redefine shutdown 174 rename shutdown original_shutdown 175 proc shutdown {} { 176 puts "This is my implementation of shutdown" 177 # my own stuff before exit OpenOCD 178 original_shutdown 179 } 180 If user types CTRL-C or kills OpenOCD, either the command 181 'shutdown' or its replacement will be automatically executed before 182 OpenOCD exits. 183 184 -- Command: debug_level [n] 185 Display debug level. If N (from 0..4) is provided, then set it to 186 that level. This affects the kind of messages sent to the server 187 log. Level 0 is error messages only; level 1 adds warnings; level 188 2 adds informational messages; level 3 adds debugging messages; and 189 level 4 adds verbose low-level debug messages. The default is 190 level 2, but that can be overridden on the command line along with 191 the location of that log file (which is normally the server's 192 standard output). *Note Running::. 193 194 -- Command: echo [-n] message 195 Logs a message at "user" priority. Output MESSAGE to stdout. 196 Option "-n" suppresses trailing newline. 197 echo "Downloading kernel -- please wait" 198 199 -- Command: log_output [filename | "default"] 200 Redirect logging to FILENAME or set it back to default output; the 201 default log output channel is stderr. 202 203 -- Command: add_script_search_dir [directory] 204 Add DIRECTORY to the file/script search path. 205 206 -- Command: bindto [NAME] 207 Specify hostname or IPv4 address on which to listen for incoming 208 TCP/IP connections. By default, OpenOCD will listen on the 209 loopback interface only. If your network environment is safe, 210 'bindto 0.0.0.0' can be used to cover all available interfaces. 211 21215.2 Target State handling 213========================== 214 215In this section "target" refers to a CPU configured as shown earlier 216(*note CPU Configuration::). These commands, like many, implicitly 217refer to a current target which is used to perform the various 218operations. The current target may be changed by using 'targets' 219command with the name of the target which should become current. 220 221 -- Command: reg [(number|name) [(value|'force')]] 222 Access a single register by NUMBER or by its NAME. The target must 223 generally be halted before access to CPU core registers is allowed. 224 Depending on the hardware, some other registers may be accessible 225 while the target is running. 226 227 _With no arguments_: list all available registers for the current 228 target, showing number, name, size, value, and cache status. For 229 valid entries, a value is shown; valid entries which are also dirty 230 (and will be written back later) are flagged as such. 231 232 _With number/name_: display that register's value. Use FORCE 233 argument to read directly from the target, bypassing any internal 234 cache. 235 236 _With both number/name and value_: set register's value. Writes 237 may be held in a writeback cache internal to OpenOCD, so that 238 setting the value marks the register as dirty instead of 239 immediately flushing that value. Resuming CPU execution (including 240 by single stepping) or otherwise activating the relevant module 241 will flush such values. 242 243 Cores may have surprisingly many registers in their Debug and trace 244 infrastructure: 245 246 > reg 247 ===== ARM registers 248 (0) r0 (/32): 0x0000D3C2 (dirty) 249 (1) r1 (/32): 0xFD61F31C 250 (2) r2 (/32) 251 ... 252 (164) ETM_contextid_comparator_mask (/32) 253 > 254 255 -- Command: halt [ms] 256 -- Command: wait_halt [ms] 257 The 'halt' command first sends a halt request to the target, which 258 'wait_halt' doesn't. Otherwise these behave the same: wait up to 259 MS milliseconds, or 5 seconds if there is no parameter, for the 260 target to halt (and enter debug mode). Using 0 as the MS parameter 261 prevents OpenOCD from waiting. 262 263 Warning: On ARM cores, software using the _wait for interrupt_ 264 operation often blocks the JTAG access needed by a 'halt' 265 command. This is because that operation also puts the core 266 into a low power mode by gating the core clock; but the core 267 clock is needed to detect JTAG clock transitions. 268 269 One partial workaround uses adaptive clocking: when the core 270 is interrupted the operation completes, then JTAG clocks are 271 accepted at least until the interrupt handler completes. 272 However, this workaround is often unusable since the 273 processor, board, and JTAG adapter must all support adaptive 274 JTAG clocking. Also, it can't work until an interrupt is 275 issued. 276 277 A more complete workaround is to not use that operation while 278 you work with a JTAG debugger. Tasking environments generally 279 have idle loops where the body is the _wait for interrupt_ 280 operation. (On older cores, it is a coprocessor action; newer 281 cores have a 'wfi' instruction.) Such loops can just remove 282 that operation, at the cost of higher power consumption 283 (because the CPU is needlessly clocked). 284 285 -- Command: resume [address] 286 Resume the target at its current code position, or the optional 287 ADDRESS if it is provided. OpenOCD will wait 5 seconds for the 288 target to resume. 289 290 -- Command: step [address] 291 Single-step the target at its current code position, or the 292 optional ADDRESS if it is provided. 293 294 -- Command: reset 295 -- Command: reset run 296 -- Command: reset halt 297 -- Command: reset init 298 Perform as hard a reset as possible, using SRST if possible. _All 299 defined targets will be reset, and target events will fire during 300 the reset sequence._ 301 302 The optional parameter specifies what should happen after the 303 reset. If there is no parameter, a 'reset run' is executed. The 304 other options will not work on all systems. *Note Reset 305 Configuration::. 306 307 - run Let the target run 308 - halt Immediately halt the target 309 - init Immediately halt the target, and execute the reset-init 310 script 311 312 -- Command: soft_reset_halt 313 Requesting target halt and executing a soft reset. This is often 314 used when a target cannot be reset and halted. The target, after 315 reset is released begins to execute code. OpenOCD attempts to stop 316 the CPU and then sets the program counter back to the reset vector. 317 Unfortunately the code that was executed may have left the hardware 318 in an unknown state. 319 320 -- Command: adapter assert [signal [assert|deassert signal]] 321 -- Command: adapter deassert [signal [assert|deassert signal]] 322 Set values of reset signals. Without parameters returns current 323 status of the signals. The SIGNAL parameter values may be 'srst', 324 indicating that srst signal is to be asserted or deasserted, 325 'trst', indicating that trst signal is to be asserted or 326 deasserted. 327 328 The 'reset_config' command should already have been used to 329 configure how the board and the adapter treat these two signals, 330 and to say if either signal is even present. *Note Reset 331 Configuration::. Trying to assert a signal that is not present 332 triggers an error. If a signal is present on the adapter and not 333 specified in the command, the signal will not be modified. 334 335 Note: TRST is specially handled. It actually signifies JTAG's 336 RESET state. So if the board doesn't support the optional 337 TRST signal, or it doesn't support it along with the specified 338 SRST value, JTAG reset is triggered with TMS and TCK signals 339 instead of the TRST signal. And no matter how that JTAG reset 340 is triggered, once the scan chain enters RESET with TRST 341 inactive, TAP 'post-reset' events are delivered to all TAPs 342 with handlers for that event. 343 34415.3 I/O Utilities 345================== 346 347These commands are available when OpenOCD is built with 348'--enable-ioutil'. They are mainly useful on embedded targets, notably 349the ZY1000. Hosts with operating systems have complementary tools. 350 351_Note:_ there are several more such commands. 352 353 -- Command: append_file filename [string]* 354 Appends the STRING parameters to the text file 'filename'. Each 355 string except the last one is followed by one space. The last 356 string is followed by a newline. 357 358 -- Command: cat filename 359 Reads and displays the text file 'filename'. 360 361 -- Command: cp src_filename dest_filename 362 Copies contents from the file 'src_filename' into 'dest_filename'. 363 364 -- Command: ip 365 _No description provided._ 366 367 -- Command: ls 368 _No description provided._ 369 370 -- Command: mac 371 _No description provided._ 372 373 -- Command: meminfo 374 Display available RAM memory on OpenOCD host. Used in OpenOCD 375 regression testing scripts. 376 377 -- Command: peek 378 _No description provided._ 379 380 -- Command: poke 381 _No description provided._ 382 383 -- Command: rm filename 384 Unlinks the file 'filename'. 385 386 -- Command: trunc filename 387 Removes all data in the file 'filename'. 388 38915.4 Memory access commands 390=========================== 391 392These commands allow accesses of a specific size to the memory system. 393Often these are used to configure the current target in some special 394way. For example - one may need to write certain values to the SDRAM 395controller to enable SDRAM. 396 397 1. Use the 'targets' (plural) command to change the current target. 398 2. In system level scripts these commands are deprecated. Please use 399 their TARGET object siblings to avoid making assumptions about what 400 TAP is the current target, or about MMU configuration. 401 402 -- Command: mdd [phys] addr [count] 403 -- Command: mdw [phys] addr [count] 404 -- Command: mdh [phys] addr [count] 405 -- Command: mdb [phys] addr [count] 406 Display contents of address ADDR, as 64-bit doublewords ('mdd'), 407 32-bit words ('mdw'), 16-bit halfwords ('mdh'), or 8-bit bytes 408 ('mdb'). When the current target has an MMU which is present and 409 active, ADDR is interpreted as a virtual address. Otherwise, or if 410 the optional PHYS flag is specified, ADDR is interpreted as a 411 physical address. If COUNT is specified, displays that many units. 412 (If you want to manipulate the data instead of displaying it, see 413 the 'mem2array' primitives.) 414 415 -- Command: mwd [phys] addr doubleword [count] 416 -- Command: mww [phys] addr word [count] 417 -- Command: mwh [phys] addr halfword [count] 418 -- Command: mwb [phys] addr byte [count] 419 Writes the specified DOUBLEWORD (64 bits), WORD (32 bits), HALFWORD 420 (16 bits), or BYTE (8-bit) value, at the specified address ADDR. 421 When the current target has an MMU which is present and active, 422 ADDR is interpreted as a virtual address. Otherwise, or if the 423 optional PHYS flag is specified, ADDR is interpreted as a physical 424 address. If COUNT is specified, fills that many units of 425 consecutive address. 426 42715.5 Image loading commands 428=========================== 429 430 -- Command: dump_image filename address size 431 Dump SIZE bytes of target memory starting at ADDRESS to the binary 432 file named FILENAME. 433 434 -- Command: fast_load 435 Loads an image stored in memory by 'fast_load_image' to the current 436 target. Must be preceded by fast_load_image. 437 438 -- Command: fast_load_image filename address ['bin'|'ihex'|'elf'|'s19'] 439 Normally you should be using 'load_image' or GDB load. However, 440 for testing purposes or when I/O overhead is significant(OpenOCD 441 running on an embedded host), storing the image in memory and 442 uploading the image to the target can be a way to upload e.g. 443 multiple debug sessions when the binary does not change. Arguments 444 are the same as 'load_image', but the image is stored in OpenOCD 445 host memory, i.e. does not affect target. This approach is also 446 useful when profiling target programming performance as I/O and 447 target programming can easily be profiled separately. 448 449 -- Command: load_image filename address [['bin'|'ihex'|'elf'|'s19'] 450 'min_addr' 'max_length'] 451 Load image from file FILENAME to target memory offset by ADDRESS 452 from its load address. The file format may optionally be specified 453 ('bin', 'ihex', 'elf', or 's19'). In addition the following 454 arguments may be specified: MIN_ADDR - ignore data below MIN_ADDR 455 (this is w.r.t. to the target's load address + ADDRESS) MAX_LENGTH 456 - maximum number of bytes to load. 457 proc load_image_bin {fname foffset address length } { 458 # Load data from fname filename at foffset offset to 459 # target at address. Load at most length bytes. 460 load_image $fname [expr $address - $foffset] bin \ 461 $address $length 462 } 463 464 -- Command: test_image filename [address ['bin'|'ihex'|'elf']] 465 Displays image section sizes and addresses as if FILENAME were 466 loaded into target memory starting at ADDRESS (defaults to zero). 467 The file format may optionally be specified ('bin', 'ihex', or 468 'elf') 469 470 -- Command: verify_image filename address ['bin'|'ihex'|'elf'] 471 Verify FILENAME against target memory starting at ADDRESS. The 472 file format may optionally be specified ('bin', 'ihex', or 'elf') 473 This will first attempt a comparison using a CRC checksum, if this 474 fails it will try a binary compare. 475 476 -- Command: verify_image_checksum filename address ['bin'|'ihex'|'elf'] 477 Verify FILENAME against target memory starting at ADDRESS. The 478 file format may optionally be specified ('bin', 'ihex', or 'elf') 479 This perform a comparison using a CRC checksum only 480 48115.6 Breakpoint and Watchpoint commands 482======================================= 483 484CPUs often make debug modules accessible through JTAG, with hardware 485support for a handful of code breakpoints and data watchpoints. In 486addition, CPUs almost always support software breakpoints. 487 488 -- Command: bp [address len ['hw']] 489 With no parameters, lists all active breakpoints. Else sets a 490 breakpoint on code execution starting at ADDRESS for LENGTH bytes. 491 This is a software breakpoint, unless 'hw' is specified in which 492 case it will be a hardware breakpoint. 493 494 (*Note arm9 vector_catch: arm9vectorcatch, or *note xscale 495 vector_catch: xscalevectorcatch, for similar mechanisms that do not 496 consume hardware breakpoints.) 497 498 -- Command: rbp 'all' | address 499 Remove the breakpoint at ADDRESS or all breakpoints. 500 501 -- Command: rwp address 502 Remove data watchpoint on ADDRESS 503 504 -- Command: wp [address len [('r'|'w'|'a') [value [mask]]]] 505 With no parameters, lists all active watchpoints. Else sets a data 506 watchpoint on data from ADDRESS for LENGTH bytes. The watch point 507 is an "access" watchpoint unless the 'r' or 'w' parameter is 508 provided, defining it as respectively a read or write watchpoint. 509 If a VALUE is provided, that value is used when determining if the 510 watchpoint should trigger. The value may be first be masked using 511 MASK to mark "don't care" fields. 512 51315.7 Real Time Transfer (RTT) 514============================= 515 516Real Time Transfer (RTT) is an interface specified by SEGGER based on 517basic memory reads and writes to transfer data bidirectionally between 518target and host. The specification is independent of the target 519architecture. Every target that supports so called "background memory 520access", which means that the target memory can be accessed by the 521debugger while the target is running, can be used. This interface is 522especially of interest for targets without Serial Wire Output (SWO), 523such as ARM Cortex-M0, or where semihosting is not applicable because of 524real-time constraints. 525 526 Note: The current implementation supports only single target 527 devices. 528 529The data transfer between host and target device is organized through 530unidirectional up/down-channels for target-to-host and host-to-target 531communication, respectively. 532 533 Note: The current implementation does not respect channel buffer 534 flags. They are used to determine what happens when writing to a 535 full buffer, for example. 536 537Channels are exposed via raw TCP/IP connections. One or more RTT 538servers can be assigned to each channel to make them accessible to an 539unlimited number of TCP/IP connections. 540 541 -- Command: rtt setup address size ID 542 Configure RTT for the currently selected target. Once RTT is 543 started, OpenOCD searches for a control block with the identifier 544 ID starting at the memory address ADDRESS within the next SIZE 545 bytes. 546 547 -- Command: rtt start 548 Start RTT. If the control block location is not known, OpenOCD 549 starts searching for it. 550 551 -- Command: rtt stop 552 Stop RTT. 553 554 -- Command: rtt polling_interval [interval] 555 Display the polling interval. If INTERVAL is provided, set the 556 polling interval. The polling interval determines (in 557 milliseconds) how often the up-channels are checked for new data. 558 559 -- Command: rtt channels 560 Display a list of all channels and their properties. 561 562 -- Command: rtt channellist 563 Return a list of all channels and their properties as Tcl list. 564 The list can be manipulated easily from within scripts. 565 566 -- Command: rtt server start port channel 567 Start a TCP server on PORT for the channel CHANNEL. 568 569 -- Command: rtt server stop port 570 Stop the TCP sever with port PORT. 571 572The following example shows how to setup RTT using the SEGGER RTT 573implementation on the target device. 574 575 resume 576 577 rtt setup 0x20000000 2048 "SEGGER RTT" 578 rtt start 579 580 rtt server start 9090 0 581 582In this example, OpenOCD searches the control block with the ID "SEGGER 583RTT" starting at 0x20000000 for 2048 bytes. The RTT channel 0 is 584exposed through the TCP/IP port 9090. 585 58615.8 Misc Commands 587================== 588 589 -- Command: profile seconds filename [start end] 590 Profiling samples the CPU's program counter as quickly as possible, 591 which is useful for non-intrusive stochastic profiling. Saves up 592 to 10000 samples in 'filename' using "gmon.out" format. Optional 593 'start' and 'end' parameters allow to limit the address range. 594 595 -- Command: version 596 Displays a string identifying the version of this OpenOCD server. 597 598 -- Command: virt2phys virtual_address 599 Requests the current target to map the specified VIRTUAL_ADDRESS to 600 its corresponding physical address, and displays the result. 601 602 603File: openocd.info, Node: Architecture and Core Commands, Next: JTAG Commands, Prev: General Commands, Up: Top 604 60516 Architecture and Core Commands 606********************************* 607 608Most CPUs have specialized JTAG operations to support debugging. 609OpenOCD packages most such operations in its standard command framework. 610Some of those operations don't fit well in that framework, so they are 611exposed here as architecture or implementation (core) specific commands. 612 61316.1 ARM Hardware Tracing 614========================= 615 616CPUs based on ARM cores may include standard tracing interfaces, based 617on an "Embedded Trace Module" (ETM) which sends voluminous address and 618data bus trace records to a "Trace Port". 619 620 * Development-oriented boards will sometimes provide a high speed 621 trace connector for collecting that data, when the particular CPU 622 supports such an interface. (The standard connector is a 38-pin 623 Mictor, with both JTAG and trace port support.) Those trace 624 connectors are supported by higher end JTAG adapters and some logic 625 analyzer modules; frequently those modules can buffer several 626 megabytes of trace data. Configuring an ETM coupled to such an 627 external trace port belongs in the board-specific configuration 628 file. 629 * If the CPU doesn't provide an external interface, it probably has 630 an "Embedded Trace Buffer" (ETB) on the chip, which is a dedicated 631 SRAM. 4KBytes is one common ETB size. Configuring an ETM coupled 632 only to an ETB belongs in the CPU-specific (target) configuration 633 file, since it works the same on all boards. 634 635ETM support in OpenOCD doesn't seem to be widely used yet. 636 637 Issues: ETM support may be buggy, and at least some 'etm config' 638 parameters should be detected by asking the ETM for them. 639 640 ETM trigger events could also implement a kind of complex hardware 641 breakpoint, much more powerful than the simple watchpoint hardware 642 exported by EmbeddedICE modules. _Such breakpoints can be 643 triggered even when using the dummy trace port driver_. 644 645 It seems like a GDB hookup should be possible, as well as tracing 646 only during specific states (perhaps _handling IRQ 23_ or _calls 647 foo()_). 648 649 There should be GUI tools to manipulate saved trace data and help 650 analyse it in conjunction with the source code. It's unclear how 651 much of a common interface is shared with the current XScale trace 652 support, or should be shared with eventual Nexus-style trace module 653 support. 654 655 At this writing (November 2009) only ARM7, ARM9, and ARM11 support 656 for ETM modules is available. The code should be able to work with 657 some newer cores; but not all of them support this original style 658 of JTAG access. 659 66016.1.1 ETM Configuration 661------------------------ 662 663ETM setup is coupled with the trace port driver configuration. 664 665 -- Config Command: etm config target width mode clocking driver 666 Declares the ETM associated with TARGET, and associates it with a 667 given trace port DRIVER. *Note Trace Port Drivers: 668 traceportdrivers. 669 670 Several of the parameters must reflect the trace port capabilities, 671 which are a function of silicon capabilities (exposed later using 672 'etm info') and of what hardware is connected to that port (such as 673 an external pod, or ETB). The WIDTH must be either 4, 8, or 16, 674 except with ETMv3.0 and newer modules which may also support 1, 2, 675 24, 32, 48, and 64 bit widths. (With those versions, 'etm info' 676 also shows whether the selected port width and mode are supported.) 677 678 The MODE must be 'normal', 'multiplexed', or 'demultiplexed'. The 679 CLOCKING must be 'half' or 'full'. 680 681 Warning: With ETMv3.0 and newer, the bits set with the MODE 682 and CLOCKING parameters both control the mode. This modified 683 mode does not map to the values supported by previous ETM 684 modules, so this syntax is subject to change. 685 686 Note: You can see the ETM registers using the 'reg' command. 687 Not all possible registers are present in every ETM. Most of 688 the registers are write-only, and are used to configure what 689 CPU activities are traced. 690 691 -- Command: etm info 692 Displays information about the current target's ETM. This includes 693 resource counts from the 'ETM_CONFIG' register, as well as silicon 694 capabilities (except on rather old modules). from the 695 'ETM_SYS_CONFIG' register. 696 697 -- Command: etm status 698 Displays status of the current target's ETM and trace port driver: 699 is the ETM idle, or is it collecting data? Did trace data 700 overflow? Was it triggered? 701 702 -- Command: etm tracemode [type context_id_bits cycle_accurate 703 branch_output] 704 Displays what data that ETM will collect. If arguments are 705 provided, first configures that data. When the configuration 706 changes, tracing is stopped and any buffered trace data is 707 invalidated. 708 709 * TYPE ... describing how data accesses are traced, when they 710 pass any ViewData filtering that was set up. The value is one 711 of 'none' (save nothing), 'data' (save data), 'address' (save 712 addresses), 'all' (save data and addresses) 713 * CONTEXT_ID_BITS ... 0, 8, 16, or 32 714 * CYCLE_ACCURATE ... 'enable' or 'disable' cycle-accurate 715 instruction tracing. Before ETMv3, enabling this causes much 716 extra data to be recorded. 717 * BRANCH_OUTPUT ... 'enable' or 'disable'. Disable this unless 718 you need to try reconstructing the instruction trace stream 719 without an image of the code. 720 721 -- Command: etm trigger_debug ('enable'|'disable') 722 Displays whether ETM triggering debug entry (like a breakpoint) is 723 enabled or disabled, after optionally modifying that configuration. 724 The default behaviour is 'disable'. Any change takes effect after 725 the next 'etm start'. 726 727 By using script commands to configure ETM registers, you can make 728 the processor enter debug state automatically when certain 729 conditions, more complex than supported by the breakpoint hardware, 730 happen. 731 73216.1.2 ETM Trace Operation 733-------------------------- 734 735After setting up the ETM, you can use it to collect data. That data can 736be exported to files for later analysis. It can also be parsed with 737OpenOCD, for basic sanity checking. 738 739To configure what is being traced, you will need to write various trace 740registers using 'reg ETM_*' commands. For the definitions of these 741registers, read ARM publication _IHI 0014, "Embedded Trace Macrocell, 742Architecture Specification"_. Be aware that most of the relevant 743registers are write-only, and that ETM resources are limited. There are 744only a handful of address comparators, data comparators, counters, and 745so on. 746 747Examples of scenarios you might arrange to trace include: 748 749 * Code flow within a function, _excluding_ subroutines it calls. Use 750 address range comparators to enable tracing for instruction access 751 within that function's body. 752 * Code flow within a function, _including_ subroutines it calls. Use 753 the sequencer and address comparators to activate tracing on an 754 "entered function" state, then deactivate it by exiting that state 755 when the function's exit code is invoked. 756 * Code flow starting at the fifth invocation of a function, combining 757 one of the above models with a counter. 758 * CPU data accesses to the registers for a particular device, using 759 address range comparators and the ViewData logic. 760 * Such data accesses only during IRQ handling, combining the above 761 model with sequencer triggers which on entry and exit to the IRQ 762 handler. 763 * _... more_ 764 765At this writing, September 2009, there are no Tcl utility procedures to 766help set up any common tracing scenarios. 767 768 -- Command: etm analyze 769 Reads trace data into memory, if it wasn't already present. 770 Decodes and prints the data that was collected. 771 772 -- Command: etm dump filename 773 Stores the captured trace data in 'filename'. 774 775 -- Command: etm image filename [base_address] [type] 776 Opens an image file. 777 778 -- Command: etm load filename 779 Loads captured trace data from 'filename'. 780 781 -- Command: etm start 782 Starts trace data collection. 783 784 -- Command: etm stop 785 Stops trace data collection. 786 78716.1.3 Trace Port Drivers 788------------------------- 789 790To use an ETM trace port it must be associated with a driver. 791 792 -- Trace Port Driver: dummy 793 Use the 'dummy' driver if you are configuring an ETM that's not 794 connected to anything (on-chip ETB or off-chip trace connector). 795 _This driver lets OpenOCD talk to the ETM, but it does not expose 796 any trace data collection._ 797 -- Config Command: etm_dummy config target 798 Associates the ETM for TARGET with a dummy driver. 799 800 -- Trace Port Driver: etb 801 Use the 'etb' driver if you are configuring an ETM to use on-chip 802 ETB memory. 803 -- Config Command: etb config target etb_tap 804 Associates the ETM for TARGET with the ETB at ETB_TAP. You 805 can see the ETB registers using the 'reg' command. 806 -- Command: etb trigger_percent [percent] 807 This displays, or optionally changes, ETB behavior after the 808 ETM's configured _trigger_ event fires. It controls how much 809 more trace data is saved after the (single) trace trigger 810 becomes active. 811 812 * The default corresponds to _trace around_ usage, 813 recording 50 percent data before the event and the rest 814 afterwards. 815 * The minimum value of PERCENT is 2 percent, recording 816 almost exclusively data before the trigger. Such extreme 817 _trace before_ usage can help figure out what caused that 818 event to happen. 819 * The maximum value of PERCENT is 100 percent, recording 820 data almost exclusively after the event. This extreme 821 _trace after_ usage might help sort out how the event 822 caused trouble. 823 824 -- Trace Port Driver: oocd_trace 825 This driver isn't available unless OpenOCD was explicitly 826 configured with the '--enable-oocd_trace' option. You probably 827 don't want to configure it unless you've built the appropriate 828 prototype hardware; it's _proof-of-concept_ software. 829 830 Use the 'oocd_trace' driver if you are configuring an ETM that's 831 connected to an off-chip trace connector. 832 833 -- Config Command: oocd_trace config target tty 834 Associates the ETM for TARGET with a trace driver which 835 collects data through the serial port TTY. 836 837 -- Command: oocd_trace resync 838 Re-synchronizes with the capture clock. 839 840 -- Command: oocd_trace status 841 Reports whether the capture clock is locked or not. 842 84316.2 ARM Cross-Trigger Interface 844================================ 845 846The ARM Cross-Trigger Interface (CTI) is a generic CoreSight component 847that connects event sources like tracing components or CPU cores with 848each other through a common trigger matrix (CTM). For ARMv8 849architecture, a CTI is mandatory for core run control and each core has 850an individual CTI instance attached to it. OpenOCD has limited support 851for CTI using the _cti_ group of commands. 852 853 -- Command: cti create cti_name '-dap' dap_name '-ap-num' apn 854 '-baseaddr' base_address 855 Creates a CTI instance CTI_NAME on the DAP instance DAP_NAME on 856 MEM-AP APN. The BASE_ADDRESS must match the base address of the 857 CTI on the respective MEM-AP. All arguments are mandatory. This 858 creates a new command '$cti_name' which is used for various 859 purposes including additional configuration. 860 861 -- Command: $cti_name enable 'on|off' 862 Enable ('on') or disable ('off') the CTI. 863 864 -- Command: $cti_name dump 865 Displays a register dump of the CTI. 866 867 -- Command: $cti_name write REG_NAME VALUE 868 Write VALUE to the CTI register with the symbolic name REG_NAME. 869 870 -- Command: $cti_name read REG_NAME 871 Print the value read from the CTI register with the symbolic name 872 REG_NAME. 873 874 -- Command: $cti_name ack EVENT 875 Acknowledge a CTI EVENT. 876 877 -- Command: $cti_name channel CHANNEL_NUMBER OPERATION 878 Perform a specific channel operation, the possible operations are: 879 gate, ungate, set, clear and pulse 880 881 -- Command: $cti_name testmode 'on|off' 882 Enable ('on') or disable ('off') the integration test mode of the 883 CTI. 884 885 -- Command: cti names 886 Prints a list of names of all CTI objects created. This command is 887 mainly useful in TCL scripting. 888 88916.3 Generic ARM 890================ 891 892These commands should be available on all ARM processors. They are 893available in addition to other core-specific commands that may be 894available. 895 896 -- Command: arm core_state ['arm'|'thumb'] 897 Displays the core_state, optionally changing it to process either 898 'arm' or 'thumb' instructions. The target may later be resumed in 899 the currently set core_state. (Processors may also support the 900 Jazelle state, but that is not currently supported in OpenOCD.) 901 902 -- Command: arm disassemble address [count ['thumb']] 903 Disassembles COUNT instructions starting at ADDRESS. If COUNT is 904 not specified, a single instruction is disassembled. If 'thumb' is 905 specified, or the low bit of the address is set, Thumb2 (mixed 906 16/32-bit) instructions are used; else ARM (32-bit) instructions 907 are used. (Processors may also support the Jazelle state, but 908 those instructions are not currently understood by OpenOCD.) 909 910 Note that all Thumb instructions are Thumb2 instructions, so older 911 processors (without Thumb2 support) will still see correct 912 disassembly of Thumb code. Also, ThumbEE opcodes are the same as 913 Thumb2, with a handful of exceptions. ThumbEE disassembly 914 currently has no explicit support. 915 916 -- Command: arm mcr pX op1 CRn CRm op2 value 917 Write VALUE to a coprocessor PX register passing parameters CRN, 918 CRM, opcodes OPC1 and OPC2, and using the MCR instruction. 919 (Parameter sequence matches the ARM instruction, but omits an ARM 920 register.) 921 922 -- Command: arm mrc pX coproc op1 CRn CRm op2 923 Read a coprocessor PX register passing parameters CRN, CRM, opcodes 924 OPC1 and OPC2, and the MRC instruction. Returns the result so it 925 can be manipulated by Jim scripts. (Parameter sequence matches the 926 ARM instruction, but omits an ARM register.) 927 928 -- Command: arm reg 929 Display a table of all banked core registers, fetching the current 930 value from every core mode if necessary. 931 932 -- Command: arm semihosting ['enable'|'disable'] 933 Display status of semihosting, after optionally changing that 934 status. 935 936 Semihosting allows for code executing on an ARM target to use the 937 I/O facilities on the host computer i.e. the system where OpenOCD 938 is running. The target application must be linked against a 939 library implementing the ARM semihosting convention that forwards 940 operation requests by using a special SVC instruction that is 941 trapped at the Supervisor Call vector by OpenOCD. 942 943 -- Command: arm semihosting_cmdline ['enable'|'disable'] 944 Set the command line to be passed to the debugger. 945 946 arm semihosting_cmdline argv0 argv1 argv2 ... 947 948 This option lets one set the command line arguments to be passed to 949 the program. The first argument (argv0) is the program name in a 950 standard C environment (argv[0]). Depending on the program (not 951 much programs look at argv[0]), argv0 is ignored and can be any 952 string. 953 954 -- Command: arm semihosting_fileio ['enable'|'disable'] 955 Display status of semihosting fileio, after optionally changing 956 that status. 957 958 Enabling this option forwards semihosting I/O to GDB process using 959 the File-I/O remote protocol extension. This is especially useful 960 for interacting with remote files or displaying console messages in 961 the debugger. 962 963 -- Command: arm semihosting_resexit ['enable'|'disable'] 964 Enable resumable SEMIHOSTING_SYS_EXIT. 965 966 When SEMIHOSTING_SYS_EXIT is called outside a debug session, things 967 are simple, the openocd process calls exit() and passes the value 968 returned by the target. 969 970 When SEMIHOSTING_SYS_EXIT is called during a debug session, by 971 default execution returns to the debugger, leaving the debugger in 972 a HALT state, similar to the state entered when encountering a 973 break. 974 975 In some use cases, it is useful to have SEMIHOSTING_SYS_EXIT return 976 normally, as any semihosting call, and do not break to the 977 debugger. The standard allows this to happen, but the condition to 978 trigger it is a bit obscure ("by performing an RDI_Execute request 979 or equivalent"). 980 981 To make the SEMIHOSTING_SYS_EXIT call return normally, enable this 982 option (default: disabled). 983 98416.4 ARMv4 and ARMv5 Architecture 985================================= 986 987The ARMv4 and ARMv5 architectures are widely used in embedded systems, 988and introduced core parts of the instruction set in use today. That 989includes the Thumb instruction set, introduced in the ARMv4T variant. 990 99116.4.1 ARM7 and ARM9 specific commands 992-------------------------------------- 993 994These commands are specific to ARM7 and ARM9 cores, like ARM7TDMI, 995ARM720T, ARM9TDMI, ARM920T or ARM926EJ-S. They are available in addition 996to the ARM commands, and any other core-specific commands that may be 997available. 998 999 -- Command: arm7_9 dbgrq ['enable'|'disable'] 1000 Displays the value of the flag controlling use of the EmbeddedIce 1001 DBGRQ signal to force entry into debug mode, instead of 1002 breakpoints. If a boolean parameter is provided, first assigns 1003 that flag. 1004 1005 This should be safe for all but ARM7TDMI-S cores (like NXP LPC). 1006 This feature is enabled by default on most ARM9 cores, including 1007 ARM9TDMI, ARM920T, and ARM926EJ-S. 1008 1009 -- Command: arm7_9 dcc_downloads ['enable'|'disable'] 1010 Displays the value of the flag controlling use of the debug 1011 communications channel (DCC) to write larger (>128 byte) amounts of 1012 memory. If a boolean parameter is provided, first assigns that 1013 flag. 1014 1015 DCC downloads offer a huge speed increase, but might be unsafe, 1016 especially with targets running at very low speeds. This command 1017 was introduced with OpenOCD rev. 60, and requires a few bytes of 1018 working area. 1019 1020 -- Command: arm7_9 fast_memory_access ['enable'|'disable'] 1021 Displays the value of the flag controlling use of memory writes and 1022 reads that don't check completion of the operation. If a boolean 1023 parameter is provided, first assigns that flag. 1024 1025 This provides a huge speed increase, especially with USB JTAG 1026 cables (FT2232), but might be unsafe if used with targets running 1027 at very low speeds, like the 32kHz startup clock of an AT91RM9200. 1028 102916.4.2 ARM720T specific commands 1030-------------------------------- 1031 1032These commands are available to ARM720T based CPUs, which are 1033implementations of the ARMv4T architecture based on the ARM7TDMI-S 1034integer core. They are available in addition to the ARM and ARM7/ARM9 1035commands. 1036 1037 -- Command: arm720t cp15 opcode [value] 1038 _DEPRECATED - avoid using this. Use the 'arm mrc' or 'arm mcr' 1039 commands instead._ 1040 1041 Display cp15 register returned by the ARM instruction OPCODE; else 1042 if a VALUE is provided, that value is written to that register. 1043 The OPCODE should be the value of either an MRC or MCR instruction. 1044 104516.4.3 ARM9 specific commands 1046----------------------------- 1047 1048ARM9-family cores are built around ARM9TDMI or ARM9E (including ARM9EJS) 1049integer processors. Such cores include the ARM920T, ARM926EJ-S, and 1050ARM966. 1051 1052 -- Command: arm9 vector_catch ['all'|'none'|list] 1053 Vector Catch hardware provides a sort of dedicated breakpoint for 1054 hardware events such as reset, interrupt, and abort. You can use 1055 this to conserve normal breakpoint resources, so long as you're not 1056 concerned with code that branches directly to those hardware 1057 vectors. 1058 1059 This always finishes by listing the current configuration. If 1060 parameters are provided, it first reconfigures the vector catch 1061 hardware to intercept 'all' of the hardware vectors, 'none' of 1062 them, or a list with one or more of the following: 'reset' 'undef' 1063 'swi' 'pabt' 'dabt' 'irq' 'fiq'. 1064 106516.4.4 ARM920T specific commands 1066-------------------------------- 1067 1068These commands are available to ARM920T based CPUs, which are 1069implementations of the ARMv4T architecture built using the ARM9TDMI 1070integer core. They are available in addition to the ARM, ARM7/ARM9, and 1071ARM9 commands. 1072 1073 -- Command: arm920t cache_info 1074 Print information about the caches found. This allows to see 1075 whether your target is an ARM920T (2x16kByte cache) or ARM922T 1076 (2x8kByte cache). 1077 1078 -- Command: arm920t cp15 regnum [value] 1079 Display cp15 register REGNUM; else if a VALUE is provided, that 1080 value is written to that register. This uses "physical access" and 1081 the register number is as shown in bits 38..33 of table 9-9 in the 1082 ARM920T TRM. (Not all registers can be written.) 1083 1084 -- Command: arm920t cp15i opcode [value [address]] 1085 _DEPRECATED - avoid using this. Use the 'arm mrc' or 'arm mcr' 1086 commands instead._ 1087 1088 Interpreted access using ARM instruction OPCODE, which should be 1089 the value of either an MRC or MCR instruction (as shown tables 1090 9-11, 9-12, and 9-13 in the ARM920T TRM). If no VALUE is provided, 1091 the result is displayed. Else if that value is written using the 1092 specified ADDRESS, or using zero if no other address is provided. 1093 1094 -- Command: arm920t read_cache filename 1095 Dump the content of ICache and DCache to a file named 'filename'. 1096 1097 -- Command: arm920t read_mmu filename 1098 Dump the content of the ITLB and DTLB to a file named 'filename'. 1099 110016.4.5 ARM926ej-s specific commands 1101----------------------------------- 1102 1103These commands are available to ARM926ej-s based CPUs, which are 1104implementations of the ARMv5TEJ architecture based on the ARM9EJ-S 1105integer core. They are available in addition to the ARM, ARM7/ARM9, and 1106ARM9 commands. 1107 1108The Feroceon cores also support these commands, although they are not 1109built from ARM926ej-s designs. 1110 1111 -- Command: arm926ejs cache_info 1112 Print information about the caches found. 1113 111416.4.6 ARM966E specific commands 1115-------------------------------- 1116 1117These commands are available to ARM966 based CPUs, which are 1118implementations of the ARMv5TE architecture. They are available in 1119addition to the ARM, ARM7/ARM9, and ARM9 commands. 1120 1121 -- Command: arm966e cp15 regnum [value] 1122 Display cp15 register REGNUM; else if a VALUE is provided, that 1123 value is written to that register. The six bit REGNUM values are 1124 bits 37..32 from table 7-2 of the ARM966E-S TRM. There is no 1125 current control over bits 31..30 from that table, as required for 1126 BIST support. 1127 112816.4.7 XScale specific commands 1129------------------------------- 1130 1131Some notes about the debug implementation on the XScale CPUs: 1132 1133The XScale CPU provides a special debug-only mini-instruction cache 1134(mini-IC) in which exception vectors and target-resident debug handler 1135code are placed by OpenOCD. In order to get access to the CPU, OpenOCD 1136must point vector 0 (the reset vector) to the entry of the debug 1137handler. However, this means that the complete first cacheline in the 1138mini-IC is marked valid, which makes the CPU fetch all exception 1139handlers from the mini-IC, ignoring the code in RAM. 1140 1141To address this situation, OpenOCD provides the 'xscale vector_table' 1142command, which allows the user to explicitly write individual entries to 1143either the high or low vector table stored in the mini-IC. 1144 1145It is recommended to place a pc-relative indirect branch in the vector 1146table, and put the branch destination somewhere in memory. Doing so 1147makes sure the code in the vector table stays constant regardless of 1148code layout in memory: 1149 _vectors: 1150 ldr pc,[pc,#0x100-8] 1151 ldr pc,[pc,#0x100-8] 1152 ldr pc,[pc,#0x100-8] 1153 ldr pc,[pc,#0x100-8] 1154 ldr pc,[pc,#0x100-8] 1155 ldr pc,[pc,#0x100-8] 1156 ldr pc,[pc,#0x100-8] 1157 ldr pc,[pc,#0x100-8] 1158 .org 0x100 1159 .long real_reset_vector 1160 .long real_ui_handler 1161 .long real_swi_handler 1162 .long real_pf_abort 1163 .long real_data_abort 1164 .long 0 /* unused */ 1165 .long real_irq_handler 1166 .long real_fiq_handler 1167 1168Alternatively, you may choose to keep some or all of the mini-IC vector 1169table entries synced with those written to memory by your system 1170software. The mini-IC can not be modified while the processor is 1171executing, but for each vector table entry not previously defined using 1172the 'xscale vector_table' command, OpenOCD will copy the value from 1173memory to the mini-IC every time execution resumes from a halt. This is 1174done for both high and low vector tables (although the table not in use 1175may not be mapped to valid memory, and in this case that copy operation 1176will silently fail). This means that you will need to briefly halt 1177execution at some strategic point during system start-up; e.g., after 1178the software has initialized the vector table, but before exceptions are 1179enabled. A breakpoint can be used to accomplish this once the 1180appropriate location in the start-up code has been identified. A 1181watchpoint over the vector table region is helpful in finding the 1182location if you're not sure. Note that the same situation exists any 1183time the vector table is modified by the system software. 1184 1185The debug handler must be placed somewhere in the address space using 1186the 'xscale debug_handler' command. The allowed locations for the debug 1187handler are either (0x800 - 0x1fef800) or (0xfe000800 - 0xfffff800). 1188The default value is 0xfe000800. 1189 1190XScale has resources to support two hardware breakpoints and two 1191watchpoints. However, the following restrictions on watchpoint 1192functionality apply: (1) the value and mask arguments to the 'wp' 1193command are not supported, (2) the watchpoint length must be a power of 1194two and not less than four, and can not be greater than the watchpoint 1195address, and (3) a watchpoint with a length greater than four consumes 1196all the watchpoint hardware resources. This means that at any one time, 1197you can have enabled either two watchpoints with a length of four, or 1198one watchpoint with a length greater than four. 1199 1200These commands are available to XScale based CPUs, which are 1201implementations of the ARMv5TE architecture. 1202 1203 -- Command: xscale analyze_trace 1204 Displays the contents of the trace buffer. 1205 1206 -- Command: xscale cache_clean_address address 1207 Changes the address used when cleaning the data cache. 1208 1209 -- Command: xscale cache_info 1210 Displays information about the CPU caches. 1211 1212 -- Command: xscale cp15 regnum [value] 1213 Display cp15 register REGNUM; else if a VALUE is provided, that 1214 value is written to that register. 1215 1216 -- Command: xscale debug_handler target address 1217 Changes the address used for the specified target's debug handler. 1218 1219 -- Command: xscale dcache ['enable'|'disable'] 1220 Enables or disable the CPU's data cache. 1221 1222 -- Command: xscale dump_trace filename 1223 Dumps the raw contents of the trace buffer to 'filename'. 1224 1225 -- Command: xscale icache ['enable'|'disable'] 1226 Enables or disable the CPU's instruction cache. 1227 1228 -- Command: xscale mmu ['enable'|'disable'] 1229 Enables or disable the CPU's memory management unit. 1230 1231 -- Command: xscale trace_buffer ['enable'|'disable' ['fill' [n] | 1232 'wrap']] 1233 Displays the trace buffer status, after optionally enabling or 1234 disabling the trace buffer and modifying how it is emptied. 1235 1236 -- Command: xscale trace_image filename [offset [type]] 1237 Opens a trace image from 'filename', optionally rebasing its 1238 segment addresses by OFFSET. The image TYPE may be one of 'bin' 1239 (binary), 'ihex' (Intel hex), 'elf' (ELF file), 's19' (Motorola 1240 s19), 'mem', or 'builder'. 1241 1242 -- Command: xscale vector_catch [mask] 1243 Display a bitmask showing the hardware vectors to catch. If the 1244 optional parameter is provided, first set the bitmask to that 1245 value. 1246 1247 The mask bits correspond with bit 16..23 in the DCSR: 1248 0x01 Trap Reset 1249 0x02 Trap Undefined Instructions 1250 0x04 Trap Software Interrupt 1251 0x08 Trap Prefetch Abort 1252 0x10 Trap Data Abort 1253 0x20 reserved 1254 0x40 Trap IRQ 1255 0x80 Trap FIQ 1256 1257 -- Command: xscale vector_table [('low'|'high') index value] 1258 1259 Set an entry in the mini-IC vector table. There are two tables: 1260 one for low vectors (at 0x00000000), and one for high vectors 1261 (0xFFFF0000), each holding the 8 exception vectors. INDEX can be 1262 1-7, because vector 0 points to the debug handler entry and can not 1263 be overwritten. VALUE holds the 32-bit opcode that is placed in 1264 the mini-IC. 1265 1266 Without arguments, the current settings are displayed. 1267 126816.5 ARMv6 Architecture 1269======================= 1270 127116.5.1 ARM11 specific commands 1272------------------------------ 1273 1274 -- Command: arm11 memwrite burst ['enable'|'disable'] 1275 Displays the value of the memwrite burst-enable flag, which is 1276 enabled by default. If a boolean parameter is provided, first 1277 assigns that flag. Burst writes are only used for memory writes 1278 larger than 1 word. They improve performance by assuming that the 1279 CPU has read each data word over JTAG and completed its write 1280 before the next word arrives, instead of polling for a status flag 1281 to verify that completion. This is usually safe, because JTAG runs 1282 much slower than the CPU. 1283 1284 -- Command: arm11 memwrite error_fatal ['enable'|'disable'] 1285 Displays the value of the memwrite error_fatal flag, which is 1286 enabled by default. If a boolean parameter is provided, first 1287 assigns that flag. When set, certain memory write errors cause 1288 earlier transfer termination. 1289 1290 -- Command: arm11 step_irq_enable ['enable'|'disable'] 1291 Displays the value of the flag controlling whether IRQs are enabled 1292 during single stepping; they are disabled by default. If a boolean 1293 parameter is provided, first assigns that. 1294 1295 -- Command: arm11 vcr [value] 1296 Displays the value of the _Vector Catch Register (VCR)_, 1297 coprocessor 14 register 7. If VALUE is defined, first assigns 1298 that. 1299 1300 Vector Catch hardware provides dedicated breakpoints for certain 1301 hardware events. The specific bit values are core-specific (as in 1302 fact is using coprocessor 14 register 7 itself) but all current 1303 ARM11 cores _except the ARM1176_ use the same six bits. 1304 130516.6 ARMv7 and ARMv8 Architecture 1306================================= 1307 130816.6.1 ARMv7-A specific commands 1309-------------------------------- 1310 1311 -- Command: cortex_a cache_info 1312 display information about target caches 1313 1314 -- Command: cortex_a dacrfixup ['on'|'off'] 1315 Work around issues with software breakpoints when the program text 1316 is mapped read-only by the operating system. This option sets the 1317 CP15 DACR to "all-manager" to bypass MMU permission checks on 1318 memory access. Defaults to 'off'. 1319 1320 -- Command: cortex_a dbginit 1321 Initialize core debug Enables debug by unlocking the Software Lock 1322 and clearing sticky powerdown indications 1323 1324 -- Command: cortex_a smp [on|off] 1325 Display/set the current SMP mode 1326 1327 -- Command: cortex_a smp_gdb [core_id] 1328 Display/set the current core displayed in GDB 1329 1330 -- Command: cortex_a maskisr ['on'|'off'] 1331 Selects whether interrupts will be processed when single stepping 1332 1333 -- Command: cache_config l2x [base way] 1334 configure l2x cache 1335 1336 -- Command: cortex_a mmu dump ['0'|'1'|'addr' address ['num_entries']] 1337 Dump the MMU translation table from TTB0 or TTB1 register, or from 1338 physical memory location ADDRESS. When dumping the table from 1339 ADDRESS, print at most NUM_ENTRIES page table entries. NUM_ENTRIES 1340 is optional, if omitted, the maximum possible (4096) entries are 1341 printed. 1342 134316.6.2 ARMv7-R specific commands 1344-------------------------------- 1345 1346 -- Command: cortex_r dbginit 1347 Initialize core debug Enables debug by unlocking the Software Lock 1348 and clearing sticky powerdown indications 1349 1350 -- Command: cortex_r maskisr ['on'|'off'] 1351 Selects whether interrupts will be processed when single stepping 1352 135316.6.3 ARMv7-M specific commands 1354-------------------------------- 1355 1356 -- Command: tpiu config ('disable' | (('external' | 'internal (FILENAME 1357 | :PORT | -)') ('sync PORT_WIDTH' | (('manchester' | 'uart') 1358 FORMATTER_ENABLE)) TRACECLKIN_FREQ [TRACE_FREQ])) 1359 1360 ARMv7-M architecture provides several modules to generate debugging 1361 information internally (ITM, DWT and ETM). Their output is directed 1362 through TPIU to be captured externally either on an SWO pin (this 1363 configuration is called SWV) or on a synchronous parallel trace 1364 port. 1365 1366 This command configures the TPIU module of the target and, if 1367 internal capture mode is selected, starts to capture trace output 1368 by using the debugger adapter features. 1369 1370 Some targets require additional actions to be performed in the 1371 trace-config handler for trace port to be activated. 1372 1373 Command options: 1374 - 'disable' disable TPIU handling; 1375 - 'external' configure TPIU to let user capture trace output 1376 externally (with an additional UART or logic analyzer 1377 hardware). 1378 - 'internal (FILENAME | :PORT | -)' configure TPIU and debug 1379 adapter to gather trace data then: 1380 1381 - append it to a regular file or a named pipe if FILENAME 1382 is specified. 1383 - listen to a TCP/IP port if :PORT is specified, then 1384 broadcast the trace data over this port. 1385 - if '-' is specified, OpenOCD will forward trace data to 1386 'tcl_trace' command. 1387 Note: while broadcasting to file or TCP, the forwarding 1388 to 'tcl_trace' will remain active. 1389 1390 - 'sync PORT_WIDTH' use synchronous parallel trace output mode, 1391 and set port width to PORT_WIDTH. 1392 - 'manchester' use asynchronous SWO mode with Manchester coding. 1393 - 'uart' use asynchronous SWO mode with NRZ (same as regular 1394 UART 8N1) coding. 1395 - FORMATTER_ENABLE is 'on' or 'off' to enable or disable TPIU 1396 formatter which needs to be used when both ITM and ETM data is 1397 to be output via SWO. 1398 - TRACECLKIN_FREQ this should be specified to match target's 1399 current TRACECLKIN frequency (usually the same as HCLK). 1400 - TRACE_FREQ trace port frequency. Can be omitted in internal 1401 mode to let the adapter driver select the maximum supported 1402 rate automatically. 1403 1404 Example usage: 1405 1. STM32L152 board is programmed with an application that 1406 configures PLL to provide core clock with 24MHz frequency; to 1407 use ITM output it's enough to: 1408 #include <libopencm3/cm3/itm.h> 1409 ... 1410 ITM_STIM8(0) = c; 1411 ... 1412 (the most obvious way is to use the first stimulus port for 1413 printf, for that this ITM_STIM8 assignment can be used inside 1414 _write(); to make it blocking to avoid data loss, add 'while 1415 (!(ITM_STIM8(0) & ITM_STIM_FIFOREADY));'); 1416 2. An FT2232H UART is connected to the SWO pin of the board; 1417 3. Commands to configure UART for 12MHz baud rate: 1418 $ setserial /dev/ttyUSB1 spd_cust divisor 5 1419 $ stty -F /dev/ttyUSB1 38400 1420 (FT2232H's base frequency is 60MHz, spd_cust allows to alias 1421 38400 baud with our custom divisor to get 12MHz) 1422 4. 'itmdump -f /dev/ttyUSB1 -d1' 1423 5. OpenOCD invocation line: 1424 openocd -f interface/stlink.cfg \ 1425 -c "transport select hla_swd" \ 1426 -f target/stm32l1.cfg \ 1427 -c "tpiu config external uart off 24000000 12000000" 1428 1429 -- Command: itm port PORT ('0'|'1'|'on'|'off') 1430 Enable or disable trace output for ITM stimulus PORT (counting from 1431 0). Port 0 is enabled on target creation automatically. 1432 1433 -- Command: itm ports ('0'|'1'|'on'|'off') 1434 Enable or disable trace output for all ITM stimulus ports. 1435 143616.6.4 Cortex-M specific commands 1437--------------------------------- 1438 1439 -- Command: cortex_m maskisr ('auto'|'on'|'off'|'steponly') 1440 Control masking (disabling) interrupts during target step/resume. 1441 1442 The 'auto' option handles interrupts during stepping in a way that 1443 they get served but don't disturb the program flow. The step 1444 command first allows pending interrupt handlers to execute, then 1445 disables interrupts and steps over the next instruction where the 1446 core was halted. After the step interrupts are enabled again. If 1447 the interrupt handlers don't complete within 500ms, the step 1448 command leaves with the core running. 1449 1450 The 'steponly' option disables interrupts during single-stepping 1451 but enables them during normal execution. This can be used as a 1452 partial workaround for 702596 erratum in Cortex-M7 r0p1. See 1453 "Cortex-M7 (AT610) and Cortex-M7 with FPU (AT611) Software 1454 Developer Errata Notice" from ARM for further details. 1455 1456 Note that a free hardware (FPB) breakpoint is required for the 1457 'auto' option. If no breakpoint is available at the time of the 1458 step, then the step is taken with interrupts enabled, i.e. the 1459 same way the 'off' option does. 1460 1461 Default is 'auto'. 1462 1463 -- Command: cortex_m vector_catch ['all'|'none'|list] 1464 Vector Catch hardware provides dedicated breakpoints for certain 1465 hardware events. 1466 1467 Parameters request interception of 'all' of these hardware event 1468 vectors, 'none' of them, or one or more of the following: 1469 'hard_err' for a HardFault exception; 'mm_err' for a MemManage 1470 exception; 'bus_err' for a BusFault exception; 'irq_err', 1471 'state_err', 'chk_err', or 'nocp_err' for various UsageFault 1472 exceptions; or 'reset'. If NVIC setup code does not enable them, 1473 MemManage, BusFault, and UsageFault exceptions are mapped to 1474 HardFault. UsageFault checks for divide-by-zero and unaligned 1475 access must also be explicitly enabled. 1476 1477 This finishes by listing the current vector catch configuration. 1478 1479 -- Command: cortex_m reset_config ('sysresetreq'|'vectreset') 1480 Control reset handling if hardware srst is not fitted *Note 1481 reset_config: reset_config. 1482 1483 - 'sysresetreq' use AIRCR SYSRESETREQ to reset system. 1484 - 'vectreset' use AIRCR VECTRESET to reset system (default). 1485 1486 Using 'vectreset' is a safe option for Cortex-M3, M4 and M7 cores. 1487 This however has the disadvantage of only resetting the core, all 1488 peripherals are unaffected. A solution would be to use a 1489 'reset-init' event handler to manually reset the peripherals. 1490 *Note Target Events: targetevents. 1491 1492 Cortex-M0, M0+ and M1 do not support 'vectreset', use 'sysresetreq' 1493 instead. 1494 149516.6.5 ARMv8-A specific commands 1496-------------------------------- 1497 1498 -- Command: aarch64 cache_info 1499 Display information about target caches 1500 1501 -- Command: aarch64 dbginit 1502 This command enables debugging by clearing the OS Lock and sticky 1503 power-down and reset indications. It also establishes the 1504 expected, basic cross-trigger configuration the aarch64 target code 1505 relies on. In a configuration file, the command would typically be 1506 called from a 'reset-end' or 'reset-deassert-post' handler, to 1507 re-enable debugging after a system reset. However, normally it is 1508 not necessary to use the command at all. 1509 1510 -- Command: aarch64 disassemble address [count] 1511 Disassembles COUNT instructions starting at ADDRESS. If COUNT is 1512 not specified, a single instruction is disassembled. 1513 1514 -- Command: aarch64 smp [on|off] 1515 Display, enable or disable SMP handling mode. The state of SMP 1516 handling influences the way targets in an SMP group are handled by 1517 the run control. With SMP handling enabled, issuing halt or resume 1518 to one core will trigger halting or resuming of all cores in the 1519 group. The command 'target smp' defines which targets are in the 1520 SMP group. With SMP handling disabled, all targets need to be 1521 treated individually. 1522 1523 -- Command: aarch64 maskisr ['on'|'off'] 1524 Selects whether interrupts will be processed when single stepping. 1525 The default configuration is 'on'. 1526 1527 -- Command: $target_name catch_exc 1528 ['off'|'sec_el1'|'sec_el3'|'nsec_el1'|'nsec_el2']+ 1529 Cause '$target_name' to halt when an exception is taken. Any 1530 combination of Secure (sec) EL1/EL3 or Non-Secure (nsec) EL1/EL2 is 1531 valid. The target '$target_name' will halt before taking the 1532 exception. In order to resume the target, the exception catch must 1533 be disabled again with '$target_name catch_exc off'. Issuing the 1534 command without options prints the current configuration. 1535 153616.7 EnSilica eSi-RISC Architecture 1537=================================== 1538 1539eSi-RISC is a highly configurable microprocessor architecture for 1540embedded systems provided by EnSilica. (See: 1541<http://www.ensilica.com/risc-ip/>.) 1542 154316.7.1 eSi-RISC Configuration 1544----------------------------- 1545 1546 -- Command: esirisc cache_arch ('harvard'|'von_neumann') 1547 Configure the caching architecture. Targets with the 1548 'UNIFIED_ADDRESS_SPACE' option disabled employ a Harvard 1549 architecture. By default, 'von_neumann' is assumed. 1550 1551 -- Command: esirisc hwdc ('all'|'none'|mask ...) 1552 Configure hardware debug control. The HWDC register controls which 1553 exceptions return control back to the debugger. Possible masks are 1554 'all', 'none', 'reset', 'interrupt', 'syscall', 'error', and 1555 'debug'. By default, 'reset', 'error', and 'debug' are enabled. 1556 155716.7.2 eSi-RISC Operation 1558------------------------- 1559 1560 -- Command: esirisc flush_caches 1561 Flush instruction and data caches. This command requires that the 1562 target is halted when the command is issued and configured with an 1563 instruction or data cache. 1564 156516.7.3 eSi-Trace Configuration 1566------------------------------ 1567 1568eSi-RISC targets may be configured with support for instruction tracing. 1569Trace data may be written to an in-memory buffer or FIFO. If a FIFO is 1570configured, DMA is typically employed to move trace data off-device 1571using a high-speed peripheral (eg. SPI). Collected trace data is 1572encoded in one of three different formats. At a minimum, 'esirisc trace 1573buffer' or 'esirisc trace fifo' must be issued along with 'esirisc trace 1574format' before trace data can be collected. 1575 1576OpenOCD provides rudimentary analysis of collected trace data. If more 1577detail is needed, collected trace data can be dumped to a file and 1578processed by external tooling. 1579 1580 Issues: OpenOCD is unable to process trace data sent to a FIFO. A 1581 potential workaround for this issue is to configure DMA to copy 1582 trace data to an in-memory buffer, which can then be passed to the 1583 'esirisc trace analyze' and 'esirisc trace dump' commands. 1584 1585 It is possible to corrupt trace data when using a FIFO if the 1586 peripheral responsible for draining data from the FIFO is not fast 1587 enough. This can be managed by enabling flow control, however this 1588 can impact timing-sensitive software operation on the CPU. 1589 1590 -- Command: esirisc trace buffer address size ['wrap'] 1591 Configure trace buffer using the provided address and size. If the 1592 'wrap' option is specified, trace collection will continue once the 1593 end of the buffer is reached. By default, wrap is disabled. 1594 1595 -- Command: esirisc trace fifo address 1596 Configure trace FIFO using the provided address. 1597 1598 -- Command: esirisc trace flow_control ('enable'|'disable') 1599 Enable or disable stalling the CPU to collect trace data. By 1600 default, flow control is disabled. 1601 1602 -- Command: esirisc trace format ('full'|'branch'|'icache') pc_bits 1603 Configure trace format and number of PC bits to be captured. 1604 'pc_bits' must be within 1 and 31 as the LSB is not collected. If 1605 external tooling is used to analyze collected trace data, these 1606 values must match. 1607 1608 Supported trace formats: 1609 * 'full' capture full trace data, allowing execution history and 1610 timing to be determined. 1611 * 'branch' capture taken branch instructions and branch target 1612 addresses. 1613 * 'icache' capture instruction cache misses. 1614 1615 -- Command: esirisc trace trigger start ('condition') [start_data 1616 start_mask] 1617 Configure trigger start condition using the provided start data and 1618 mask. A brief description of each condition is provided below; for 1619 more detail on how these values are used, see the eSi-RISC 1620 Architecture Manual. 1621 1622 Supported conditions: 1623 * 'none' manual tracing (see 'esirisc trace start'). 1624 * 'pc' start tracing if the PC matches start data and mask. 1625 * 'load' start tracing if the effective address of a load 1626 instruction matches start data and mask. 1627 * 'store' start tracing if the effective address of a store 1628 instruction matches start data and mask. 1629 * 'exception' start tracing if the EID of an exception matches 1630 start data and mask. 1631 * 'eret' start tracing when an 'ERET' instruction is executed. 1632 * 'wait' start tracing when a 'WAIT' instruction is executed. 1633 * 'stop' start tracing when a 'STOP' instruction is executed. 1634 * 'high' start tracing when an external signal is a logical 1635 high. 1636 * 'low' start tracing when an external signal is a logical low. 1637 1638 -- Command: esirisc trace trigger stop ('condition') [stop_data 1639 stop_mask] 1640 Configure trigger stop condition using the provided stop data and 1641 mask. A brief description of each condition is provided below; for 1642 more detail on how these values are used, see the eSi-RISC 1643 Architecture Manual. 1644 1645 Supported conditions: 1646 * 'none' manual tracing (see 'esirisc trace stop'). 1647 * 'pc' stop tracing if the PC matches stop data and mask. 1648 * 'load' stop tracing if the effective address of a load 1649 instruction matches stop data and mask. 1650 * 'store' stop tracing if the effective address of a store 1651 instruction matches stop data and mask. 1652 * 'exception' stop tracing if the EID of an exception matches 1653 stop data and mask. 1654 * 'eret' stop tracing when an 'ERET' instruction is executed. 1655 * 'wait' stop tracing when a 'WAIT' instruction is executed. 1656 * 'stop' stop tracing when a 'STOP' instruction is executed. 1657 1658 -- Command: esirisc trace trigger delay ('trigger') [cycles] 1659 Configure trigger start/stop delay in clock cycles. 1660 1661 Supported triggers: 1662 * 'none' no delay to start or stop collection. 1663 * 'start' delay 'cycles' after trigger to start collection. 1664 * 'stop' delay 'cycles' after trigger to stop collection. 1665 * 'both' delay 'cycles' after both triggers to start or stop 1666 collection. 1667 166816.7.4 eSi-Trace Operation 1669-------------------------- 1670 1671 -- Command: esirisc trace init 1672 Initialize trace collection. This command must be called any time 1673 the configuration changes. If a trace buffer has been configured, 1674 the contents will be overwritten when trace collection starts. 1675 1676 -- Command: esirisc trace info 1677 Display trace configuration. 1678 1679 -- Command: esirisc trace status 1680 Display trace collection status. 1681 1682 -- Command: esirisc trace start 1683 Start manual trace collection. 1684 1685 -- Command: esirisc trace stop 1686 Stop manual trace collection. 1687 1688 -- Command: esirisc trace analyze [address size] 1689 Analyze collected trace data. This command may only be used if a 1690 trace buffer has been configured. If a trace FIFO has been 1691 configured, trace data must be copied to an in-memory buffer 1692 identified by the 'address' and 'size' options using DMA. 1693 1694 -- Command: esirisc trace dump [address size] 'filename' 1695 Dump collected trace data to file. This command may only be used 1696 if a trace buffer has been configured. If a trace FIFO has been 1697 configured, trace data must be copied to an in-memory buffer 1698 identified by the 'address' and 'size' options using DMA. 1699 170016.8 Intel Architecture 1701======================= 1702 1703Intel Quark X10xx is the first product in the Quark family of SoCs. It 1704is an IA-32 (Pentium x86 ISA) compatible SoC. The core CPU in the X10xx 1705is codenamed Lakemont. Lakemont version 1 (LMT1) is used in X10xx. The 1706CPU TAP (Lakemont TAP) is used for software debug and the CLTAP is used 1707for SoC level operations. Useful docs are here: 1708https://communities.intel.com/community/makers/documentation 1709 * Intel Quark SoC X1000 OpenOCD/GDB/Eclipse App Note (web search for 1710 doc num 330015) 1711 * Intel Quark SoC X1000 Debug Operations User Guide (web search for 1712 doc num 329866) 1713 * Intel Quark SoC X1000 Datasheet (web search for doc num 329676) 1714 171516.8.1 x86 32-bit specific commands 1716----------------------------------- 1717 1718The three main address spaces for x86 are memory, I/O and configuration 1719space. These commands allow a user to read and write to the 64Kbyte I/O 1720address space. 1721 1722 -- Command: x86_32 idw address 1723 Display the contents of a 32-bit I/O port from address range 0x0000 1724 - 0xffff. 1725 1726 -- Command: x86_32 idh address 1727 Display the contents of a 16-bit I/O port from address range 0x0000 1728 - 0xffff. 1729 1730 -- Command: x86_32 idb address 1731 Display the contents of a 8-bit I/O port from address range 0x0000 1732 - 0xffff. 1733 1734 -- Command: x86_32 iww address 1735 Write the contents of a 32-bit I/O port to address range 0x0000 - 1736 0xffff. 1737 1738 -- Command: x86_32 iwh address 1739 Write the contents of a 16-bit I/O port to address range 0x0000 - 1740 0xffff. 1741 1742 -- Command: x86_32 iwb address 1743 Write the contents of a 8-bit I/O port to address range 0x0000 - 1744 0xffff. 1745 174616.9 OpenRISC Architecture 1747========================== 1748 1749The OpenRISC CPU is a soft core. It is used in a programmable SoC which 1750can be configured with any of the TAP / Debug Unit available. 1751 175216.9.1 TAP and Debug Unit selection commands 1753-------------------------------------------- 1754 1755 -- Command: tap_select ('vjtag'|'mohor'|'xilinx_bscan') 1756 Select between the Altera Virtual JTAG , Xilinx Virtual JTAG and 1757 Mohor TAP. 1758 -- Command: du_select ('adv'|'mohor') [option] 1759 Select between the Advanced Debug Interface and the classic one. 1760 1761 An option can be passed as a second argument to the debug unit. 1762 1763 When using the Advanced Debug Interface, option = 1 means the RTL 1764 core is configured with ADBG_USE_HISPEED = 1. This configuration 1765 skips status checking between bytes while doing read or write 1766 bursts. 1767 176816.9.2 Registers commands 1769------------------------- 1770 1771 -- Command: addreg [name] [address] [feature] [reg_group] 1772 Add a new register in the cpu register list. This register will be 1773 included in the generated target descriptor file. 1774 1775 *[feature]* must be "org.gnu.gdb.or1k.group[0..10]". 1776 1777 *[reg_group]* can be anything. The default register list defines 1778 "system", "dmmu", "immu", "dcache", "icache", "mac", "debug", 1779 "perf", "power", "pic" and "timer" groups. 1780 1781 _example:_ 1782 addreg rtest 0x1234 org.gnu.gdb.or1k.group0 system 1783 1784 -- Command: readgroup ('group') 1785 Display all registers in _group_. 1786 1787 _group_ can be "system", "dmmu", "immu", "dcache", "icache", "mac", 1788 "debug", "perf", "power", "pic", "timer" or any new group created 1789 with addreg command. 1790 179116.10 RISC-V Architecture 1792========================= 1793 1794RISC-V (http://riscv.org/) is a free and open ISA. OpenOCD supports JTAG 1795debug of RV32 and RV64 cores in heterogeneous multicore systems of up to 179632 harts. (It's possible to increase this limit to 1024 by changing 1797RISCV_MAX_HARTS in riscv.h.) OpenOCD primarily supports 0.13 of the 1798RISC-V Debug Specification, but there is also support for legacy targets 1799that implement version 0.11. 1800 180116.10.1 RISC-V Terminology 1802-------------------------- 1803 1804A _hart_ is a hardware thread. A hart may share resources (eg. FPU) 1805with another hart, or may be a separate core. RISC-V treats those the 1806same, and OpenOCD exposes each hart as a separate core. 1807 180816.10.2 RISC-V Debug Configuration Commands 1809------------------------------------------- 1810 1811 -- Command: riscv expose_csrs n0[-m0][,n1[-m1]]... 1812 Configure a list of inclusive ranges for CSRs to expose in addition 1813 to the standard ones. This must be executed before 'init'. 1814 1815 By default OpenOCD attempts to expose only CSRs that are mentioned 1816 in a spec, and then only if the corresponding extension appears to 1817 be implemented. This command can be used if OpenOCD gets this 1818 wrong, or a target implements custom CSRs. 1819 1820 -- Command: riscv expose_custom n0[-m0][,n1[-m1]]... 1821 The RISC-V Debug Specification allows targets to expose custom 1822 registers through abstract commands. (See Section 3.5.1.1 in that 1823 document.) This command configures a list of inclusive ranges of 1824 those registers to expose. Number 0 indicates the first custom 1825 register, whose abstract command number is 0xc000. This command 1826 must be executed before 'init'. 1827 1828 -- Command: riscv set_command_timeout_sec [seconds] 1829 Set the wall-clock timeout (in seconds) for individual commands. 1830 The default should work fine for all but the slowest targets (eg. 1831 simulators). 1832 1833 -- Command: riscv set_reset_timeout_sec [seconds] 1834 Set the maximum time to wait for a hart to come out of reset after 1835 reset is deasserted. 1836 1837 -- Command: riscv set_scratch_ram none|[address] 1838 Set the address of 16 bytes of scratch RAM the debugger can use, or 1839 'none'. This is used to access 64-bit floating point registers on 1840 32-bit targets. 1841 1842 -- Command: riscv set_prefer_sba on|off 1843 When on, prefer to use System Bus Access to access memory. When 1844 off (default), prefer to use the Program Buffer to access memory. 1845 1846 -- Command: riscv set_enable_virtual on|off 1847 When on, memory accesses are performed on physical or virtual 1848 memory depending on the current system configuration. When off 1849 (default), all memory accessses are performed on physical memory. 1850 1851 -- Command: riscv set_enable_virt2phys on|off 1852 When on (default), memory accesses are performed on physical or 1853 virtual memory depending on the current satp configuration. When 1854 off, all memory accessses are performed on physical memory. 1855 1856 -- Command: riscv resume_order normal|reversed 1857 Some software assumes all harts are executing nearly continuously. 1858 Such software may be sensitive to the order that harts are resumed 1859 in. On harts that don't support hasel, this option allows the user 1860 to choose the order the harts are resumed in. If you are using 1861 this option, it's probably masking a race condition problem in your 1862 code. 1863 1864 Normal order is from lowest hart index to highest. This is the 1865 default behavior. Reversed order is from highest hart index to 1866 lowest. 1867 1868 -- Command: riscv set_ir ('idcode'|'dtmcs'|'dmi') [value] 1869 Set the IR value for the specified JTAG register. This is useful, 1870 for example, when using the existing JTAG interface on a Xilinx 1871 FPGA by way of BSCANE2 primitives that only permit a limited 1872 selection of IR values. 1873 1874 When utilizing version 0.11 of the RISC-V Debug Specification, 1875 'dtmcs' and 'dmi' set the IR values for the DTMCONTROL and DBUS 1876 registers, respectively. 1877 1878 -- Command: riscv use_bscan_tunnel value 1879 Enable or disable use of a BSCAN tunnel to reach DM. Supply the 1880 width of the DM transport TAP's instruction register to enable. 1881 Supply a value of 0 to disable. 1882 1883 -- Command: riscv set_ebreakm on|off 1884 Control dcsr.ebreakm. When on (default), M-mode ebreak 1885 instructions trap to OpenOCD. When off, they generate a breakpoint 1886 exception handled internally. 1887 1888 -- Command: riscv set_ebreaks on|off 1889 Control dcsr.ebreaks. When on (default), S-mode ebreak 1890 instructions trap to OpenOCD. When off, they generate a breakpoint 1891 exception handled internally. 1892 1893 -- Command: riscv set_ebreaku on|off 1894 Control dcsr.ebreaku. When on (default), U-mode ebreak 1895 instructions trap to OpenOCD. When off, they generate a breakpoint 1896 exception handled internally. 1897 189816.10.3 RISC-V Authentication Commands 1899-------------------------------------- 1900 1901The following commands can be used to authenticate to a RISC-V system. 1902Eg. a trivial challenge-response protocol could be implemented as 1903follows in a configuration file, immediately following 'init': 1904 set challenge [riscv authdata_read] 1905 riscv authdata_write [expr $challenge + 1] 1906 1907 -- Command: riscv authdata_read 1908 Return the 32-bit value read from authdata. 1909 1910 -- Command: riscv authdata_write value 1911 Write the 32-bit value to authdata. 1912 191316.10.4 RISC-V DMI Commands 1914--------------------------- 1915 1916The following commands allow direct access to the Debug Module 1917Interface, which can be used to interact with custom debug features. 1918 1919 -- Command: riscv dmi_read address 1920 Perform a 32-bit DMI read at address, returning the value. 1921 1922 -- Command: riscv dmi_write address value 1923 Perform a 32-bit DMI write of value at address. 1924 192516.11 ARC Architecture 1926====================== 1927 1928Synopsys DesignWare ARC Processors are a family of 32-bit CPUs that SoC 1929designers can optimize for a wide range of uses, from deeply embedded to 1930high-performance host applications in a variety of market segments. See 1931more at: 1932<http://www.synopsys.com/IP/ProcessorIP/ARCProcessors/Pages/default.aspx>. 1933OpenOCD currently supports ARC EM processors. There is a set 1934ARC-specific OpenOCD commands that allow low-level access to the core 1935and provide necessary support for ARC extensibility and configurability 1936capabilities. ARC processors has much more configuration capabilities 1937than most of the other processors and in addition there is an extension 1938interface that allows SoC designers to add custom registers and 1939instructions. For the OpenOCD that mostly means that set of core and 1940AUX registers in target will vary and is not fixed for a particular 1941processor model. To enable extensibility several TCL commands are 1942provided that allow to describe those optional registers in OpenOCD 1943configuration files. Moreover those commands allow for a dynamic target 1944features discovery. 1945 194616.11.1 General ARC commands 1947---------------------------- 1948 1949 -- Config Command: arc add-reg configparams 1950 1951 Add a new register to processor target. By default newly created 1952 register is marked as not existing. CONFIGPARAMS must have 1953 following required arguments: 1954 1955 * '-name' name 1956 Name of a register. 1957 1958 * '-num' number 1959 Architectural register number: core register number or AUX 1960 register number. 1961 1962 * '-feature' XML_feature 1963 Name of GDB XML target description feature. 1964 1965 CONFIGPARAMS may have following optional arguments: 1966 1967 * '-gdbnum' number 1968 GDB register number. It is recommended to not assign GDB 1969 register number manually, because there would be a risk that 1970 two register will have same number. When register GDB number 1971 is not set with this option, then register will get a previous 1972 register number + 1. This option is required only for those 1973 registers that must be at particular address expected by GDB. 1974 1975 * '-core' 1976 This option specifies that register is a core registers. If 1977 not - this is an AUX register. AUX registers and core 1978 registers reside in different address spaces. 1979 1980 * '-bcr' 1981 This options specifies that register is a BCR register. BCR 1982 means Build Configuration Registers - this is a special type 1983 of AUX registers that are read only and non-volatile, that is 1984 - they never change their value. Therefore OpenOCD never 1985 invalidates values of those registers in internal caches. 1986 Because BCR is a type of AUX registers, this option cannot be 1987 used with '-core'. 1988 1989 * '-type' type_name 1990 Name of type of this register. This can be either one of the 1991 basic GDB types, or a custom types described with 'arc 1992 add-reg-type-[flags|struct]'. 1993 1994 * '-g' 1995 If specified then this is a "general" register. General 1996 registers are always read by OpenOCD on context save (when 1997 core has just been halted) and is always transferred to GDB 1998 client in a response to g-packet. Contrary to this, 1999 non-general registers are read and sent to GDB client 2000 on-demand. In general it is not recommended to apply this 2001 option to custom registers. 2002 2003 -- Config Command: arc add-reg-type-flags -name name flags... 2004 Adds new register type of "flags" class. "Flags" types can contain 2005 only one-bit fields. Each flag definition looks like '-flag name 2006 bit-position'. 2007 2008 -- Config Command: arc add-reg-type-struct -name name structs... 2009 Adds new register type of "struct" class. "Struct" types can 2010 contain either bit-fields or fields of other types, however at the 2011 moment only bit fields are supported. Structure bit field 2012 definition looks like '-bitfield name startbit endbit'. 2013 2014 -- Command: arc get-reg-field reg-name field-name 2015 Returns value of bit-field in a register. Register must be 2016 "struct" register type, *Note add-reg-type-struct:: command 2017 definition. 2018 2019 -- Command: arc set-reg-exists reg-names... 2020 Specify that some register exists. Any amount of names can be 2021 passed as an argument for a single command invocation. 2022 202316.11.2 ARC JTAG commands 2024------------------------- 2025 2026 -- Command: arc jtag set-aux-reg regnum value 2027 This command writes value to AUX register via its number. This 2028 command access register in target directly via JTAG, bypassing any 2029 OpenOCD internal caches, therefore it is unsafe to use if that 2030 register can be operated by other means. 2031 2032 -- Command: arc jtag set-core-reg regnum value 2033 This command is similar to 'arc jtag set-aux-reg' but is for core 2034 registers. 2035 2036 -- Command: arc jtag get-aux-reg regnum 2037 This command returns the value storded in AUX register via its 2038 number. This commands access register in target directly via JTAG, 2039 bypassing any OpenOCD internal caches, therefore it is unsafe to 2040 use if that register can be operated by other means. 2041 2042 -- Command: arc jtag get-core-reg regnum 2043 This command is similar to 'arc jtag get-aux-reg' but is for core 2044 registers. 2045 204616.12 STM8 Architecture 2047======================= 2048 2049STM8 (http://st.com/stm8/) is a 8-bit microcontroller platform from 2050STMicroelectronics, based on a proprietary 8-bit core architecture. 2051 2052OpenOCD supports debugging STM8 through the STMicroelectronics debug 2053protocol SWIM, *note SWIM: swimtransport. 2054 205516.13 Software Debug Messages and Tracing 2056========================================= 2057 2058OpenOCD can process certain requests from target software, when the 2059target uses appropriate libraries. The most powerful mechanism is 2060semihosting, but there is also a lighter weight mechanism using only the 2061DCC channel. 2062 2063Currently 'target_request debugmsgs' is supported only for 'arm7_9' and 2064'cortex_m' cores. These messages are received as part of target 2065polling, so you need to have 'poll on' active to receive them. They are 2066intrusive in that they will affect program execution times. If that is 2067a problem, *note ARM Hardware Tracing: armhardwaretracing. 2068 2069See 'libdcc' in the contrib dir for more details. In addition to 2070sending strings, characters, and arrays of various size integers from 2071the target, 'libdcc' also exports a software trace point mechanism. The 2072target being debugged may issue trace messages which include a 24-bit 2073"trace point" number. Trace point support includes two distinct 2074mechanisms, each supported by a command: 2075 2076 * _History_ ... A circular buffer of trace points can be set up, and 2077 then displayed at any time. This tracks where code has been, which 2078 can be invaluable in finding out how some fault was triggered. 2079 2080 The buffer may overflow, since it collects records continuously. 2081 It may be useful to use some of the 24 bits to represent a 2082 particular event, and other bits to hold data. 2083 2084 * _Counting_ ... An array of counters can be set up, and then 2085 displayed at any time. This can help establish code coverage and 2086 identify hot spots. 2087 2088 The array of counters is directly indexed by the trace point 2089 number, so trace points with higher numbers are not counted. 2090 2091Linux-ARM kernels have a "Kernel low-level debugging via EmbeddedICE DCC 2092channel" option (CONFIG_DEBUG_ICEDCC, depends on CONFIG_DEBUG_LL) which 2093uses this mechanism to deliver messages before a serial console can be 2094activated. This is not the same format used by 'libdcc'. Other 2095software, such as the U-Boot boot loader, sometimes does the same thing. 2096 2097 -- Command: target_request debugmsgs ['enable'|'disable'|'charmsg'] 2098 Displays current handling of target DCC message requests. These 2099 messages may be sent to the debugger while the target is running. 2100 The optional 'enable' and 'charmsg' parameters both enable the 2101 messages, while 'disable' disables them. 2102 2103 With 'charmsg' the DCC words each contain one character, as used by 2104 Linux with CONFIG_DEBUG_ICEDCC; otherwise the libdcc format is 2105 used. 2106 2107 -- Command: trace history ['clear'|count] 2108 With no parameter, displays all the trace points that have 2109 triggered in the order they triggered. With the parameter 'clear', 2110 erases all current trace history records. With a COUNT parameter, 2111 allocates space for that many history records. 2112 2113 -- Command: trace point ['clear'|identifier] 2114 With no parameter, displays all trace point identifiers and how 2115 many times they have been triggered. With the parameter 'clear', 2116 erases all current trace point counters. With a numeric IDENTIFIER 2117 parameter, creates a new a trace point counter and associates it 2118 with that identifier. 2119 2120 _Important:_ The identifier and the trace point number are not 2121 related except by this command. These trace point numbers always 2122 start at zero (from server startup, or after 'trace point clear') 2123 and count up from there. 2124 2125 2126File: openocd.info, Node: JTAG Commands, Next: Boundary Scan Commands, Prev: Architecture and Core Commands, Up: Top 2127 212817 JTAG Commands 2129**************** 2130 2131Most general purpose JTAG commands have been presented earlier. (*Note 2132JTAG Speed: jtagspeed, *note Reset Configuration::, and *note TAP 2133Declaration::.) Lower level JTAG commands, as presented here, may be 2134needed to work with targets which require special attention during 2135operations such as reset or initialization. 2136 2137To use these commands you will need to understand some of the basics of 2138JTAG, including: 2139 2140 * A JTAG scan chain consists of a sequence of individual TAP devices 2141 such as a CPUs. 2142 * Control operations involve moving each TAP through the same 2143 standard state machine (in parallel) using their shared TMS and 2144 clock signals. 2145 * Data transfer involves shifting data through the chain of 2146 instruction or data registers of each TAP, writing new register 2147 values while the reading previous ones. 2148 * Data register sizes are a function of the instruction active in a 2149 given TAP, while instruction register sizes are fixed for each TAP. 2150 All TAPs support a BYPASS instruction with a single bit data 2151 register. 2152 * The way OpenOCD differentiates between TAP devices is by shifting 2153 different instructions into (and out of) their instruction 2154 registers. 2155 215617.1 Low Level JTAG Commands 2157============================ 2158 2159These commands are used by developers who need to access JTAG 2160instruction or data registers, possibly controlling the order of TAP 2161state transitions. If you're not debugging OpenOCD internals, or 2162bringing up a new JTAG adapter or a new type of TAP device (like a CPU 2163or JTAG router), you probably won't need to use these commands. In a 2164debug session that doesn't use JTAG for its transport protocol, these 2165commands are not available. 2166 2167 -- Command: drscan tap [numbits value]+ ['-endstate' tap_state] 2168 Loads the data register of TAP with a series of bit fields that 2169 specify the entire register. Each field is NUMBITS bits long with 2170 a numeric VALUE (hexadecimal encouraged). The return value holds 2171 the original value of each of those fields. 2172 2173 For example, a 38 bit number might be specified as one field of 32 2174 bits then one of 6 bits. _For portability, never pass fields which 2175 are more than 32 bits long. Many OpenOCD implementations do not 2176 support 64-bit (or larger) integer values._ 2177 2178 All TAPs other than TAP must be in BYPASS mode. The single bit in 2179 their data registers does not matter. 2180 2181 When TAP_STATE is specified, the JTAG state machine is left in that 2182 state. For example DRPAUSE might be specified, so that more 2183 instructions can be issued before re-entering the RUN/IDLE state. 2184 If the end state is not specified, the RUN/IDLE state is entered. 2185 2186 Warning: OpenOCD does not record information about data 2187 register lengths, so _it is important that you get the bit 2188 field lengths right_. Remember that different JTAG 2189 instructions refer to different data registers, which may have 2190 different lengths. Moreover, those lengths may not be fixed; 2191 the SCAN_N instruction can change the length of the register 2192 accessed by the INTEST instruction (by connecting a different 2193 scan chain). 2194 2195 -- Command: flush_count 2196 Returns the number of times the JTAG queue has been flushed. This 2197 may be used for performance tuning. 2198 2199 For example, flushing a queue over USB involves a minimum latency, 2200 often several milliseconds, which does not change with the amount 2201 of data which is written. You may be able to identify performance 2202 problems by finding tasks which waste bandwidth by flushing small 2203 transfers too often, instead of batching them into larger 2204 operations. 2205 2206 -- Command: irscan [tap instruction]+ ['-endstate' tap_state] 2207 For each TAP listed, loads the instruction register with its 2208 associated numeric INSTRUCTION. (The number of bits in that 2209 instruction may be displayed using the 'scan_chain' command.) For 2210 other TAPs, a BYPASS instruction is loaded. 2211 2212 When TAP_STATE is specified, the JTAG state machine is left in that 2213 state. For example IRPAUSE might be specified, so the data 2214 register can be loaded before re-entering the RUN/IDLE state. If 2215 the end state is not specified, the RUN/IDLE state is entered. 2216 2217 Note: OpenOCD currently supports only a single field for 2218 instruction register values, unlike data register values. For 2219 TAPs where the instruction register length is more than 32 2220 bits, portable scripts currently must issue only BYPASS 2221 instructions. 2222 2223 -- Command: pathmove start_state [next_state ...] 2224 Start by moving to START_STATE, which must be one of the _stable_ 2225 states. Unless it is the only state given, this will often be the 2226 current state, so that no TCK transitions are needed. Then, in a 2227 series of single state transitions (conforming to the JTAG state 2228 machine) shift to each NEXT_STATE in sequence, one per TCK cycle. 2229 The final state must also be stable. 2230 2231 -- Command: runtest NUM_CYCLES 2232 Move to the RUN/IDLE state, and execute at least NUM_CYCLES of the 2233 JTAG clock (TCK). Instructions often need some time to execute 2234 before they take effect. 2235 2236 -- Command: verify_ircapture ('enable'|'disable') 2237 Verify values captured during IRCAPTURE and returned during IR 2238 scans. Default is enabled, but this can be overridden by 2239 'verify_jtag'. This flag is ignored when validating JTAG chain 2240 configuration. 2241 2242 -- Command: verify_jtag ('enable'|'disable') 2243 Enables verification of DR and IR scans, to help detect programming 2244 errors. For IR scans, 'verify_ircapture' must also be enabled. 2245 Default is enabled. 2246 224717.2 TAP state names 2248==================== 2249 2250The TAP_STATE names used by OpenOCD in the 'drscan', 'irscan', and 2251'pathmove' commands are the same as those used in SVF boundary scan 2252documents, except that SVF uses IDLE instead of RUN/IDLE. 2253 2254 * RESET ... _stable_ (with TMS high); acts as if TRST were pulsed 2255 * RUN/IDLE ... _stable_; don't assume this always means IDLE 2256 * DRSELECT 2257 * DRCAPTURE 2258 * DRSHIFT ... _stable_; TDI/TDO shifting through the data register 2259 * DREXIT1 2260 * DRPAUSE ... _stable_; data register ready for update or more 2261 shifting 2262 * DREXIT2 2263 * DRUPDATE 2264 * IRSELECT 2265 * IRCAPTURE 2266 * IRSHIFT ... _stable_; TDI/TDO shifting through the instruction 2267 register 2268 * IREXIT1 2269 * IRPAUSE ... _stable_; instruction register ready for update or 2270 more shifting 2271 * IREXIT2 2272 * IRUPDATE 2273 2274Note that only six of those states are fully "stable" in the face of TMS 2275fixed (low except for RESET) and a free-running JTAG clock. For all the 2276others, the next TCK transition changes to a new state. 2277 2278 * From DRSHIFT and IRSHIFT, clock transitions will produce side 2279 effects by changing register contents. The values to be latched in 2280 upcoming DRUPDATE or IRUPDATE states may not be as expected. 2281 * RUN/IDLE, DRPAUSE, and IRPAUSE are reasonable choices after 2282 'drscan' or 'irscan' commands, since they are free of JTAG side 2283 effects. 2284 * RUN/IDLE may have side effects that appear at non-JTAG levels, such 2285 as advancing the ARM9E-S instruction pipeline. Consult the 2286 documentation for the TAP(s) you are working with. 2287 2288 2289File: openocd.info, Node: Boundary Scan Commands, Next: Utility Commands, Prev: JTAG Commands, Up: Top 2290 229118 Boundary Scan Commands 2292************************* 2293 2294One of the original purposes of JTAG was to support boundary scan based 2295hardware testing. Although its primary focus is to support On-Chip 2296Debugging, OpenOCD also includes some boundary scan commands. 2297 229818.1 SVF: Serial Vector Format 2299============================== 2300 2301The Serial Vector Format, better known as "SVF", is a way to represent 2302JTAG test patterns in text files. In a debug session using JTAG for its 2303transport protocol, OpenOCD supports running such test files. 2304 2305 -- Command: svf 'filename' ['-tap TAPNAME'] ['[-]quiet'] ['[-]nil'] 2306 ['[-]progress'] ['[-]ignore_error'] 2307 This issues a JTAG reset (Test-Logic-Reset) and then runs the SVF 2308 script from 'filename'. 2309 2310 Arguments can be specified in any order; the optional dash doesn't 2311 affect their semantics. 2312 2313 Command options: 2314 - '-tap TAPNAME' ignore IR and DR headers and footers specified 2315 by the SVF file with HIR, TIR, HDR and TDR commands; instead, 2316 calculate them automatically according to the current JTAG 2317 chain configuration, targeting TAPNAME; 2318 - '[-]quiet' do not log every command before execution; 2319 - '[-]nil' "dry run", i.e., do not perform any operations on the 2320 real interface; 2321 - '[-]progress' enable progress indication; 2322 - '[-]ignore_error' continue execution despite TDO check errors. 2323 232418.2 XSVF: Xilinx Serial Vector Format 2325====================================== 2326 2327The Xilinx Serial Vector Format, better known as "XSVF", is a binary 2328representation of SVF which is optimized for use with Xilinx devices. 2329In a debug session using JTAG for its transport protocol, OpenOCD 2330supports running such test files. 2331 2332 Important: Not all XSVF commands are supported. 2333 2334 -- Command: xsvf (tapname|'plain') filename ['virt2'] ['quiet'] 2335 This issues a JTAG reset (Test-Logic-Reset) and then runs the XSVF 2336 script from 'filename'. When a TAPNAME is specified, the commands 2337 are directed at that TAP. When 'virt2' is specified, the XRUNTEST 2338 command counts are interpreted as TCK cycles instead of 2339 microseconds. Unless the 'quiet' option is specified, messages are 2340 logged for comments and some retries. 2341 2342The OpenOCD sources also include two utility scripts for working with 2343XSVF; they are not currently installed after building the software. You 2344may find them useful: 2345 2346 * _svf2xsvf_ ... converts SVF files into the extended XSVF syntax 2347 understood by the 'xsvf' command; see notes below. 2348 * _xsvfdump_ ... converts XSVF files into a text output format; 2349 understands the OpenOCD extensions. 2350 2351The input format accepts a handful of non-standard extensions. These 2352include three opcodes corresponding to SVF extensions from Lattice 2353Semiconductor (LCOUNT, LDELAY, LDSR), and two opcodes supporting a more 2354accurate translation of SVF (XTRST, XWAITSTATE). If _xsvfdump_ shows a 2355file is using those opcodes, it probably will not be usable with other 2356XSVF tools. 2357 2358 2359File: openocd.info, Node: Utility Commands, Next: GDB and OpenOCD, Prev: Boundary Scan Commands, Up: Top 2360 236119 Utility Commands 2362******************* 2363 236419.1 RAM testing 2365================ 2366 2367There is often a need to stress-test random access memory (RAM) for 2368errors. OpenOCD comes with a Tcl implementation of well-known memory 2369testing procedures allowing the detection of all sorts of issues with 2370electrical wiring, defective chips, PCB layout and other common hardware 2371problems. 2372 2373To use them, you usually need to initialise your RAM controller first; 2374consult your SoC's documentation to get the recommended list of register 2375operations and translate them to the corresponding 'mww'/'mwb' commands. 2376 2377Load the memory testing functions with 2378 2379 source [find tools/memtest.tcl] 2380 2381to get access to the following facilities: 2382 2383 -- Command: memTestDataBus address 2384 Test the data bus wiring in a memory region by performing a walking 2385 1's test at a fixed address within that region. 2386 2387 -- Command: memTestAddressBus baseaddress size 2388 Perform a walking 1's test on the relevant bits of the address and 2389 check for aliasing. This test will find single-bit address 2390 failures such as stuck-high, stuck-low, and shorted pins. 2391 2392 -- Command: memTestDevice baseaddress size 2393 Test the integrity of a physical memory device by performing an 2394 increment/decrement test over the entire region. In the process 2395 every storage bit in the device is tested as zero and as one. 2396 2397 -- Command: runAllMemTests baseaddress size 2398 Run all of the above tests over a specified memory region. 2399 240019.2 Firmware recovery helpers 2401============================== 2402 2403OpenOCD includes an easy-to-use script to facilitate mass-market devices 2404recovery with JTAG. 2405 2406For quickstart instructions run: 2407 openocd -f tools/firmware-recovery.tcl -c firmware_help 2408 2409 2410File: openocd.info, Node: GDB and OpenOCD, Next: Tcl Scripting API, Prev: Utility Commands, Up: Top 2411 241220 GDB and OpenOCD 2413****************** 2414 2415OpenOCD complies with the remote gdbserver protocol and, as such, can be 2416used to debug remote targets. Setting up GDB to work with OpenOCD can 2417involve several components: 2418 2419 * The OpenOCD server support for GDB may need to be configured. 2420 *Note GDB Configuration: gdbconfiguration. 2421 * GDB's support for OpenOCD may need configuration, as shown in this 2422 chapter. 2423 * If you have a GUI environment like Eclipse, that also will probably 2424 need to be configured. 2425 2426Of course, the version of GDB you use will need to be one which has been 2427built to know about the target CPU you're using. It's probably part of 2428the tool chain you're using. For example, if you are doing 2429cross-development for ARM on an x86 PC, instead of using the native x86 2430'gdb' command you might use 'arm-none-eabi-gdb' if that's the tool chain 2431used to compile your code. 2432 243320.1 Connecting to GDB 2434====================== 2435 2436Use GDB 6.7 or newer with OpenOCD if you run into trouble. For instance 2437GDB 6.3 has a known bug that produces bogus memory access errors, which 2438has since been fixed; see 2439<http://osdir.com/ml/gdb.bugs.discuss/2004-12/msg00018.html> 2440 2441OpenOCD can communicate with GDB in two ways: 2442 2443 1. A socket (TCP/IP) connection is typically started as follows: 2444 target extended-remote localhost:3333 2445 This would cause GDB to connect to the gdbserver on the local pc 2446 using port 3333. 2447 2448 The extended remote protocol is a super-set of the remote protocol 2449 and should be the preferred choice. More details are available in 2450 GDB documentation 2451 <https://sourceware.org/gdb/onlinedocs/gdb/Connecting.html> 2452 2453 To speed-up typing, any GDB command can be abbreviated, including 2454 the extended remote command above that becomes: 2455 tar ext :3333 2456 2457 Note: If any backward compatibility issue requires using the old 2458 remote protocol in place of the extended remote one, the former 2459 protocol is still available through the command: 2460 target remote localhost:3333 2461 2462 2. A pipe connection is typically started as follows: 2463 target extended-remote | \ 2464 openocd -c "gdb_port pipe; log_output openocd.log" 2465 This would cause GDB to run OpenOCD and communicate using pipes 2466 (stdin/stdout). Using this method has the advantage of GDB 2467 starting/stopping OpenOCD for the debug session. log_output sends 2468 the log output to a file to ensure that the pipe is not saturated 2469 when using higher debug level outputs. 2470 2471To list the available OpenOCD commands type 'monitor help' on the GDB 2472command line. 2473 247420.2 Sample GDB session startup 2475=============================== 2476 2477With the remote protocol, GDB sessions start a little differently than 2478they do when you're debugging locally. Here's an example showing how to 2479start a debug session with a small ARM program. In this case the 2480program was linked to be loaded into SRAM on a Cortex-M3. Most programs 2481would be written into flash (address 0) and run from there. 2482 2483 $ arm-none-eabi-gdb example.elf 2484 (gdb) target extended-remote localhost:3333 2485 Remote debugging using localhost:3333 2486 ... 2487 (gdb) monitor reset halt 2488 ... 2489 (gdb) load 2490 Loading section .vectors, size 0x100 lma 0x20000000 2491 Loading section .text, size 0x5a0 lma 0x20000100 2492 Loading section .data, size 0x18 lma 0x200006a0 2493 Start address 0x2000061c, load size 1720 2494 Transfer rate: 22 KB/sec, 573 bytes/write. 2495 (gdb) continue 2496 Continuing. 2497 ... 2498 2499You could then interrupt the GDB session to make the program break, type 2500'where' to show the stack, 'list' to show the code around the program 2501counter, 'step' through code, set breakpoints or watchpoints, and so on. 2502 250320.3 Configuring GDB for OpenOCD 2504================================ 2505 2506OpenOCD supports the gdb 'qSupported' packet, this enables information 2507to be sent by the GDB remote server (i.e. OpenOCD) to GDB. Typical 2508information includes packet size and the device's memory map. You do 2509not need to configure the packet size by hand, and the relevant parts of 2510the memory map should be automatically set up when you declare (NOR) 2511flash banks. 2512 2513However, there are other things which GDB can't currently query. You 2514may need to set those up by hand. As OpenOCD starts up, you will often 2515see a line reporting something like: 2516 2517 Info : lm3s.cpu: hardware has 6 breakpoints, 4 watchpoints 2518 2519You can pass that information to GDB with these commands: 2520 2521 set remote hardware-breakpoint-limit 6 2522 set remote hardware-watchpoint-limit 4 2523 2524With that particular hardware (Cortex-M3) the hardware breakpoints only 2525work for code running from flash memory. Most other ARM systems do not 2526have such restrictions. 2527 2528Rather than typing such commands interactively, you may prefer to save 2529them in a file and have GDB execute them as it starts, perhaps using a 2530'.gdbinit' in your project directory or starting GDB using 'gdb -x 2531filename'. 2532 253320.4 Programming using GDB 2534========================== 2535 2536By default the target memory map is sent to GDB. This can be disabled by 2537the following OpenOCD configuration option: 2538 gdb_memory_map disable 2539For this to function correctly a valid flash configuration must also be 2540set in OpenOCD. For faster performance you should also configure a valid 2541working area. 2542 2543Informing GDB of the memory map of the target will enable GDB to protect 2544any flash areas of the target and use hardware breakpoints by default. 2545This means that the OpenOCD option 'gdb_breakpoint_override' is not 2546required when using a memory map. *Note gdb_breakpoint_override: 2547gdbbreakpointoverride. 2548 2549To view the configured memory map in GDB, use the GDB command 'info 2550mem'. All other unassigned addresses within GDB are treated as RAM. 2551 2552GDB 6.8 and higher set any memory area not in the memory map as 2553inaccessible. This can be changed to the old behaviour by using the 2554following GDB command 2555 set mem inaccessible-by-default off 2556 2557If 'gdb_flash_program enable' is also used, GDB will be able to program 2558any flash memory using the vFlash interface. 2559 2560GDB will look at the target memory map when a load command is given, if 2561any areas to be programmed lie within the target flash area the vFlash 2562packets will be used. 2563 2564If the target needs configuring before GDB programming, set target event 2565gdb-flash-erase-start: 2566 $_TARGETNAME configure -event gdb-flash-erase-start BODY 2567*Note Target Events: targetevents, for other GDB programming related 2568events. 2569 2570To verify any flash programming the GDB command 'compare-sections' can 2571be used. 2572 257320.5 Using GDB as a non-intrusive memory inspector 2574================================================== 2575 2576If your project controls more than a blinking LED, let's say a heavy 2577industrial robot or an experimental nuclear reactor, stopping the 2578controlling process just because you want to attach GDB is not a good 2579option. 2580 2581OpenOCD does not support GDB non-stop mode (might be implemented in the 2582future). Though there is a possible setup where the target does not get 2583stopped and GDB treats it as it were running. If the target supports 2584background access to memory while it is running, you can use GDB in this 2585mode to inspect memory (mainly global variables) without any intrusion 2586of the target process. 2587 2588Remove default setting of gdb-attach event. *Note Target Events: 2589targetevents. Place following command after target configuration: 2590 $_TARGETNAME configure -event gdb-attach {} 2591 2592If any of installed flash banks does not support probe on running 2593target, switch off gdb_memory_map: 2594 gdb_memory_map disable 2595 2596Ensure GDB is configured without interrupt-on-connect. Some GDB 2597versions set it by default, some does not. 2598 set remote interrupt-on-connect off 2599 2600If you switched gdb_memory_map off, you may want to setup GDB memory map 2601manually or issue 'set mem inaccessible-by-default off' 2602 2603Now you can issue GDB command 'target extended-remote ...' and inspect 2604memory of a running target. Do not use GDB commands 'continue', 'step' 2605or 'next' as they synchronize GDB with your target and GDB would require 2606stopping the target to get the prompt back. 2607 2608Do not use this mode under an IDE like Eclipse as it caches values of 2609previously shown variables. 2610 2611It's also possible to connect more than one GDB to the same target by 2612the target's configuration option '-gdb-max-connections'. This allows, 2613for example, one GDB to run a script that continuously polls a set of 2614variables while other GDB can be used interactively. Be extremely 2615careful in this case, because the two GDB can easily get out-of-sync. 2616 261720.6 RTOS Support 2618================= 2619 2620OpenOCD includes RTOS support, this will however need enabling as it 2621defaults to disabled. It can be enabled by passing '-rtos' arg to the 2622target. *Note RTOS Type: rtostype. 2623 2624*Note Debugging Programs with Multiple Threads: (gdb)Threads, for 2625details about relevant GDB commands. 2626 2627 2628An example setup is below: 2629 2630 $_TARGETNAME configure -rtos auto 2631 2632This will attempt to auto detect the RTOS within your application. 2633 2634Currently supported rtos's include: 2635 * 'eCos' 2636 * 'ThreadX' 2637 * 'FreeRTOS' 2638 * 'linux' 2639 * 'ChibiOS' 2640 * 'embKernel' 2641 * 'mqx' 2642 * 'uCOS-III' 2643 * 'nuttx' 2644 * 'RIOT' 2645 * 'hwthread' (This is not an actual RTOS. *Note Using OpenOCD SMP 2646 with GDB: usingopenocdsmpwithgdb.) 2647 2648Before an RTOS can be detected, it must export certain symbols; 2649otherwise, it cannot be used by OpenOCD. Below is a list of the required 2650symbols for each supported RTOS. 2651 2652'eCos symbols' 2653 Cyg_Thread::thread_list, Cyg_Scheduler_Base::current_thread. 2654'ThreadX symbols' 2655 _tx_thread_current_ptr, _tx_thread_created_ptr, 2656 _tx_thread_created_count. 2657'FreeRTOS symbols' 2658 pxCurrentTCB, pxReadyTasksLists, xDelayedTaskList1, 2659 xDelayedTaskList2, pxDelayedTaskList, pxOverflowDelayedTaskList, 2660 xPendingReadyList, uxCurrentNumberOfTasks, uxTopUsedPriority. 2661'linux symbols' 2662 init_task. 2663'ChibiOS symbols' 2664 rlist, ch_debug, chSysInit. 2665'embKernel symbols' 2666 Rtos::sCurrentTask, Rtos::sListReady, Rtos::sListSleep, 2667 Rtos::sListSuspended, Rtos::sMaxPriorities, 2668 Rtos::sCurrentTaskCount. 2669'mqx symbols' 2670 _mqx_kernel_data, MQX_init_struct. 2671'uC/OS-III symbols' 2672 OSRunning, OSTCBCurPtr, OSTaskDbgListPtr, OSTaskQty. 2673'nuttx symbols' 2674 g_readytorun, g_tasklisttable. 2675'RIOT symbols' 2676 sched_threads, sched_num_threads, sched_active_pid, max_threads, 2677 _tcb_name_offset. 2678 2679For most RTOS supported the above symbols will be exported by default. 2680However for some, eg. FreeRTOS and uC/OS-III, extra steps must be 2681taken. 2682 2683These RTOSes may require additional OpenOCD-specific file to be linked 2684along with the project: 2685 2686'FreeRTOS' 2687 contrib/rtos-helpers/FreeRTOS-openocd.c 2688'uC/OS-III' 2689 contrib/rtos-helpers/uCOS-III-openocd.c 2690 269120.7 Using OpenOCD SMP with GDB 2692=============================== 2693 2694OpenOCD includes a pseudo RTOS called _hwthread_ that presents CPU cores 2695("hardware threads") in an SMP system as threads to GDB. With this 2696extension, GDB can be used to inspect the state of an SMP system in a 2697natural way. After halting the system, using the GDB command 'info 2698threads' will list the context of each active CPU core in the system. 2699GDB's 'thread' command can be used to switch the view to a different CPU 2700core. The 'step' and 'stepi' commands can be used to step a specific 2701core while other cores are free-running or remain halted, depending on 2702the scheduler-locking mode configured in GDB. 2703 270420.8 Legacy SMP core switching support 2705====================================== 2706 2707 Note: This method is deprecated in favor of the _hwthread_ pseudo 2708 RTOS. 2709 2710For SMP support following GDB serial protocol packet have been defined : 2711 * j - smp status request 2712 * J - smp set request 2713 2714OpenOCD implements : 2715 * 'jc' packet for reading core id displayed by GDB connection. Reply 2716 is 'XXXXXXXX' (8 hex digits giving core id) or 'E01' for target not 2717 smp. 2718 * 'JcXXXXXXXX' (8 hex digits) packet for setting core id displayed at 2719 next GDB continue (core id -1 is reserved for returning to normal 2720 resume mode). Reply 'E01' for target not smp or 'OK' on success. 2721 2722Handling of this packet within GDB can be done : 2723 * by the creation of an internal variable (i.e '_core') by mean of 2724 function allocate_computed_value allowing following GDB command. 2725 set $_core 1 2726 #Jc01 packet is sent 2727 print $_core 2728 #jc packet is sent and result is affected in $ 2729 2730 * by the usage of GDB maintenance command as described in following 2731 example (2 cpus in SMP with core id 0 and 1 *note Define CPU 2732 targets working in SMP: definecputargetsworkinginsmp.). 2733 2734 # toggle0 : force display of coreid 0 2735 define toggle0 2736 maint packet Jc0 2737 continue 2738 main packet Jc-1 2739 end 2740 # toggle1 : force display of coreid 1 2741 define toggle1 2742 maint packet Jc1 2743 continue 2744 main packet Jc-1 2745 end 2746 2747 2748File: openocd.info, Node: Tcl Scripting API, Next: FAQ, Prev: GDB and OpenOCD, Up: Top 2749 275021 Tcl Scripting API 2751******************** 2752 275321.1 API rules 2754============== 2755 2756Tcl commands are stateless; e.g. the 'telnet' command has a concept of 2757currently active target, the Tcl API proc's take this sort of state 2758information as an argument to each proc. 2759 2760There are three main types of return values: single value, name value 2761pair list and lists. 2762 2763Name value pair. The proc 'foo' below returns a name/value pair list. 2764 2765 > set foo(me) Duane 2766 > set foo(you) Oyvind 2767 > set foo(mouse) Micky 2768 > set foo(duck) Donald 2769 2770If one does this: 2771 2772 > set foo 2773 2774The result is: 2775 2776 me Duane you Oyvind mouse Micky duck Donald 2777 2778Thus, to get the names of the associative array is easy: 2779 2780foreach { name value } [set foo] { 2781 puts "Name: $name, Value: $value" 2782} 2783 2784Lists returned should be relatively small. Otherwise, a range should be 2785passed in to the proc in question. 2786 278721.2 Internal low-level Commands 2788================================ 2789 2790By "low-level," we mean commands that a human would typically not invoke 2791directly. 2792 2793 * mem2array <VARNAME> <WIDTH> <ADDR> <NELEMS> 2794 2795 Read memory and return as a Tcl array for script processing 2796 * array2mem <VARNAME> <WIDTH> <ADDR> <NELEMS> 2797 2798 Convert a Tcl array to memory locations and write the values 2799 * flash banks <DRIVER> <BASE> <SIZE> <CHIP_WIDTH> <BUS_WIDTH> 2800 <TARGET> ['driver options' ...] 2801 2802 Return information about the flash banks 2803 2804 * capture <COMMAND> 2805 2806 Run <COMMAND> and return full log output that was produced during 2807 its execution. Example: 2808 2809 > capture "reset init" 2810 2811OpenOCD commands can consist of two words, e.g. "flash banks". The 2812'startup.tcl' "unknown" proc will translate this into a Tcl proc called 2813"flash_banks". 2814 281521.3 OpenOCD specific Global Variables 2816====================================== 2817 2818Real Tcl has ::tcl_platform(), and platform::identify, and many other 2819variables. JimTCL, as implemented in OpenOCD creates $ocd_HOSTOS which 2820holds one of the following values: 2821 2822 * cygwin Running under Cygwin 2823 * darwin Darwin (Mac-OS) is the underlying operating system. 2824 * freebsd Running under FreeBSD 2825 * openbsd Running under OpenBSD 2826 * netbsd Running under NetBSD 2827 * linux Linux is the underlying operating system 2828 * mingw32 Running under MingW32 2829 * winxx Built using Microsoft Visual Studio 2830 * ecos Running under eCos 2831 * other Unknown, none of the above. 2832 2833Note: 'winxx' was chosen because today (March-2009) no distinction is 2834made between Win32 and Win64. 2835 2836 Note: We should add support for a variable like Tcl variable 2837 'tcl_platform(platform)', it should be called 'jim_platform' 2838 (because it is jim, not real tcl). 2839 284021.4 Tcl RPC server 2841=================== 2842 2843OpenOCD provides a simple RPC server that allows to run arbitrary Tcl 2844commands and receive the results. 2845 2846To access it, your application needs to connect to a configured TCP port 2847(see 'tcl_port'). Then it can pass any string to the interpreter 2848terminating it with '0x1a' and wait for the return value (it will be 2849terminated with '0x1a' as well). This can be repeated as many times as 2850desired without reopening the connection. 2851 2852It is not needed anymore to prefix the OpenOCD commands with 'ocd_' to 2853get the results back. But sometimes you might need the 'capture' 2854command. 2855 2856See 'contrib/rpc_examples/' for specific client implementations. 2857 285821.5 Tcl RPC server notifications 2859================================= 2860 2861Notifications are sent asynchronously to other commands being executed 2862over the RPC server, so the port must be polled continuously. 2863 2864Target event, state and reset notifications are emitted as Tcl 2865associative arrays in the following format. 2866 2867type target_event event [event-name] 2868type target_state state [state-name] 2869type target_reset mode [reset-mode] 2870 2871 -- Command: tcl_notifications [on/off] 2872 Toggle output of target notifications to the current Tcl RPC 2873 server. Only available from the Tcl RPC server. Defaults to off. 2874 287521.6 Tcl RPC server trace output 2876================================ 2877 2878Trace data is sent asynchronously to other commands being executed over 2879the RPC server, so the port must be polled continuously. 2880 2881Target trace data is emitted as a Tcl associative array in the following 2882format. 2883 2884type target_trace data [trace-data-hex-encoded] 2885 2886 -- Command: tcl_trace [on/off] 2887 Toggle output of target trace data to the current Tcl RPC server. 2888 Only available from the Tcl RPC server. Defaults to off. 2889 2890 See an example application here: 2891 <https://github.com/apmorton/OpenOcdTraceUtil> [OpenOcdTraceUtil] 2892 2893 2894File: openocd.info, Node: FAQ, Next: Tcl Crash Course, Prev: Tcl Scripting API, Up: Top 2895 289622 FAQ 2897****** 2898 2899 1. RTCK, also known as: Adaptive Clocking - What is it? 2900 2901 In digital circuit design it is often referred to as "clock 2902 synchronisation" the JTAG interface uses one clock (TCK or TCLK) 2903 operating at some speed, your CPU target is operating at another. 2904 The two clocks are not synchronised, they are "asynchronous" 2905 2906 In order for the two to work together they must be synchronised 2907 well enough to work; JTAG can't go ten times faster than the CPU, 2908 for example. There are 2 basic options: 2909 1. Use a special "adaptive clocking" circuit to change the JTAG 2910 clock rate to match what the CPU currently supports. 2911 2. The JTAG clock must be fixed at some speed that's enough 2912 slower than the CPU clock that all TMS and TDI transitions can 2913 be detected. 2914 2915 Does this really matter? For some chips and some situations, this 2916 is a non-issue, like a 500MHz ARM926 with a 5 MHz JTAG link; the 2917 CPU has no difficulty keeping up with JTAG. Startup sequences are 2918 often problematic though, as are other situations where the CPU 2919 clock rate changes (perhaps to save power). 2920 2921 For example, Atmel AT91SAM chips start operation from reset with a 2922 32kHz system clock. Boot firmware may activate the main oscillator 2923 and PLL before switching to a faster clock (perhaps that 500 MHz 2924 ARM926 scenario). If you're using JTAG to debug that startup 2925 sequence, you must slow the JTAG clock to sometimes 1 to 4kHz. 2926 After startup completes, JTAG can use a faster clock. 2927 2928 Consider also debugging a 500MHz ARM926 hand held battery powered 2929 device that enters a low power "deep sleep" mode, at 32kHz CPU 2930 clock, between keystrokes unless it has work to do. When would 2931 that 5 MHz JTAG clock be usable? 2932 2933 Solution #1 - A special circuit 2934 2935 In order to make use of this, your CPU, board, and JTAG adapter 2936 must all support the RTCK feature. Not all of them support this; 2937 keep reading! 2938 2939 The RTCK ("Return TCK") signal in some ARM chips is used to help 2940 with this problem. ARM has a good description of the problem 2941 described at this link: 2942 <http://www.arm.com/support/faqdev/4170.html> [checked 2943 28/nov/2008]. Link title: "How does the JTAG synchronisation logic 2944 work? / how does adaptive clocking work?". 2945 2946 The nice thing about adaptive clocking is that "battery powered 2947 hand held device example" - the adaptiveness works perfectly all 2948 the time. One can set a break point or halt the system in the deep 2949 power down code, slow step out until the system speeds up. 2950 2951 Note that adaptive clocking may also need to work at the board 2952 level, when a board-level scan chain has multiple chips. Parallel 2953 clock voting schemes are good way to implement this, both within 2954 and between chips, and can easily be implemented with a CPLD. It's 2955 not difficult to have logic fan a module's input TCK signal out to 2956 each TAP in the scan chain, and then wait until each TAP's RTCK 2957 comes back with the right polarity before changing the output RTCK 2958 signal. Texas Instruments makes some clock voting logic available 2959 for free (with no support) in VHDL form; see 2960 <http://tiexpressdsp.com/index.php/Adaptive_Clocking> 2961 2962 Solution #2 - Always works - but may be slower 2963 2964 Often this is a perfectly acceptable solution. 2965 2966 In most simple terms: Often the JTAG clock must be 1/10 to 1/12 of 2967 the target clock speed. But what that "magic division" is varies 2968 depending on the chips on your board. ARM rule of thumb Most ARM 2969 based systems require an 6:1 division; ARM11 cores use an 8:1 2970 division. Xilinx rule of thumb is 1/12 the clock speed. 2971 2972 Note: most full speed FT2232 based JTAG adapters are limited to a 2973 maximum of 6MHz. The ones using USB high speed chips (FT2232H) 2974 often support faster clock rates (and adaptive clocking). 2975 2976 You can still debug the 'low power' situations - you just need to 2977 either use a fixed and very slow JTAG clock rate ... or else 2978 manually adjust the clock speed at every step. (Adjusting is 2979 painful and tedious, and is not always practical.) 2980 2981 It is however easy to "code your way around it" - i.e.: Cheat a 2982 little, have a special debug mode in your application that does a 2983 "high power sleep". If you are careful - 98% of your problems can 2984 be debugged this way. 2985 2986 Note that on ARM you may need to avoid using the _wait for 2987 interrupt_ operation in your idle loops even if you don't otherwise 2988 change the CPU clock rate. That operation gates the CPU clock, and 2989 thus the JTAG clock; which prevents JTAG access. One consequence 2990 is not being able to 'halt' cores which are executing that _wait 2991 for interrupt_ operation. 2992 2993 To set the JTAG frequency use the command: 2994 2995 # Example: 1.234MHz 2996 adapter speed 1234 2997 2998 2. Win32 Pathnames Why don't backslashes work in Windows paths? 2999 3000 OpenOCD uses Tcl and a backslash is an escape char. Use { and } 3001 around Windows filenames. 3002 3003 > echo \a 3004 3005 > echo {\a} 3006 \a 3007 > echo "\a" 3008 3009 > 3010 3011 3. Missing: cygwin1.dll OpenOCD complains about a missing cygwin1.dll. 3012 3013 Make sure you have Cygwin installed, or at least a version of 3014 OpenOCD that claims to come with all the necessary DLLs. When 3015 using Cygwin, try launching OpenOCD from the Cygwin shell. 3016 3017 4. Breakpoint Issue I'm trying to set a breakpoint using GDB (or a 3018 front-end like Insight or Eclipse), but OpenOCD complains that 3019 "Info: arm7_9_common.c:213 arm7_9_add_breakpoint(): sw breakpoint 3020 requested, but software breakpoints not enabled". 3021 3022 GDB issues software breakpoints when a normal breakpoint is 3023 requested, or to implement source-line single-stepping. On ARMv4T 3024 systems, like ARM7TDMI, ARM720T or ARM920T, software breakpoints 3025 consume one of the two available hardware breakpoints. 3026 3027 5. LPC2000 Flash When erasing or writing LPC2000 on-chip flash, the 3028 operation fails at random. 3029 3030 Make sure the core frequency specified in the 'flash lpc2000' line 3031 matches the clock at the time you're programming the flash. If 3032 you've specified the crystal's frequency, make sure the PLL is 3033 disabled. If you've specified the full core speed (e.g. 60MHz), 3034 make sure the PLL is enabled. 3035 3036 6. Amontec Chameleon When debugging using an Amontec Chameleon in its 3037 JTAG Accelerator configuration, I keep getting "Error: 3038 amt_jtagaccel.c:184 amt_wait_scan_busy(): amt_jtagaccel timed out 3039 while waiting for end of scan, rtck was disabled". 3040 3041 Make sure your PC's parallel port operates in EPP mode. You might 3042 have to try several settings in your PC BIOS (ECP, EPP, and 3043 different versions of those). 3044 3045 7. Data Aborts When debugging with OpenOCD and GDB (plain GDB, 3046 Insight, or Eclipse), I get lots of "Error: arm7_9_common.c:1771 3047 arm7_9_read_memory(): memory read caused data abort". 3048 3049 The errors are non-fatal, and are the result of GDB trying to trace 3050 stack frames beyond the last valid frame. It might be possible to 3051 prevent this by setting up a proper "initial" stack frame, if you 3052 happen to know what exactly has to be done, feel free to add this 3053 here. 3054 3055 Simple: In your startup code - push 8 registers of zeros onto the 3056 stack before calling main(). What GDB is doing is "climbing" the 3057 run time stack by reading various values on the stack using the 3058 standard call frame for the target. GDB keeps going - until one of 3059 2 things happen #1 an invalid frame is found, or #2 some huge 3060 number of stackframes have been processed. By pushing zeros on the 3061 stack, GDB gracefully stops. 3062 3063 Debugging Interrupt Service Routines - In your ISR before you call 3064 your C code, do the same - artificially push some zeros onto the 3065 stack, remember to pop them off when the ISR is done. 3066 3067 Also note: If you have a multi-threaded operating system, they 3068 often do not in the intrest of saving memory waste these few bytes. 3069 Painful... 3070 3071 8. JTAG Reset Config I get the following message in the OpenOCD 3072 console (or log file): "Warning: arm7_9_common.c:679 3073 arm7_9_assert_reset(): srst resets test logic, too". 3074 3075 This warning doesn't indicate any serious problem, as long as you 3076 don't want to debug your core right out of reset. Your .cfg file 3077 specified 'reset_config trst_and_srst srst_pulls_trst' to tell 3078 OpenOCD that either your board, your debugger or your target uC 3079 (e.g. LPC2000) can't assert the two reset signals independently. 3080 With this setup, it's not possible to halt the core right out of 3081 reset, everything else should work fine. 3082 3083 9. USB Power When using OpenOCD in conjunction with Amontec JTAGkey 3084 and the Yagarto toolchain (Eclipse, arm-elf-gcc, arm-elf-gdb), the 3085 debugging seems to be unstable. When single-stepping over large 3086 blocks of code, GDB and OpenOCD quit with an error message. Is 3087 there a stability issue with OpenOCD? 3088 3089 No, this is not a stability issue concerning OpenOCD. Most users 3090 have solved this issue by simply using a self-powered USB hub, 3091 which they connect their Amontec JTAGkey to. Apparently, some 3092 computers do not provide a USB power supply stable enough for the 3093 Amontec JTAGkey to be operated. 3094 3095 Laptops running on battery have this problem too... 3096 3097 10. GDB Disconnects When using the Amontec JTAGkey, sometimes OpenOCD 3098 crashes with the following error message: "Error: gdb_server.c:101 3099 gdb_get_char(): read: 10054". What does that mean and what might 3100 be the reason for this? 3101 3102 Error code 10054 corresponds to WSAECONNRESET, which means that the 3103 debugger (GDB) has closed the connection to OpenOCD. This might be 3104 a GDB issue. 3105 3106 11. LPC2000 Flash In the configuration file in the section where flash 3107 device configurations are described, there is a parameter for 3108 specifying the clock frequency for LPC2000 internal flash devices 3109 (e.g. 'flash bank $_FLASHNAME lpc2000 0x0 0x40000 0 0 $_TARGETNAME 3110 lpc2000_v1 14746 calc_checksum'), which must be specified in 3111 kilohertz. However, I do have a quartz crystal of a frequency that 3112 contains fractions of kilohertz (e.g. 14,745,600 Hz, i.e. 3113 14,745.600 kHz). Is it possible to specify real numbers for the 3114 clock frequency? 3115 3116 No. The clock frequency specified here must be given as an 3117 integral number. However, this clock frequency is used by the 3118 In-Application-Programming (IAP) routines of the LPC2000 family 3119 only, which seems to be very tolerant concerning the given clock 3120 frequency, so a slight difference between the specified clock 3121 frequency and the actual clock frequency will not cause any 3122 trouble. 3123 3124 12. Command Order Do I have to keep a specific order for the commands 3125 in the configuration file? 3126 3127 Well, yes and no. Commands can be given in arbitrary order, yet 3128 the devices listed for the JTAG scan chain must be given in the 3129 right order (jtag newdevice), with the device closest to the 3130 TDO-Pin being listed first. In general, whenever objects of the 3131 same type exist which require an index number, then these objects 3132 must be given in the right order (jtag newtap, targets and flash 3133 banks - a target references a jtag newtap and a flash bank 3134 references a target). 3135 3136 You can use the "scan_chain" command to verify and display the tap 3137 order. 3138 3139 Also, some commands can't execute until after 'init' has been 3140 processed. Such commands include 'nand probe' and everything else 3141 that needs to write to controller registers, perhaps for setting up 3142 DRAM and loading it with code. 3143 3144 13. JTAG TAP Order Do I have to declare the TAPS in some particular 3145 order? 3146 3147 Yes; whenever you have more than one, you must declare them in the 3148 same order used by the hardware. 3149 3150 Many newer devices have multiple JTAG TAPs. For example: 3151 STMicroelectronics STM32 chips have two TAPs, a "boundary scan TAP" 3152 and "Cortex-M3" TAP. Example: The STM32 reference manual, Document 3153 ID: RM0008, Section 26.5, Figure 259, page 651/681, the "TDI" pin 3154 is connected to the boundary scan TAP, which then connects to the 3155 Cortex-M3 TAP, which then connects to the TDO pin. 3156 3157 Thus, the proper order for the STM32 chip is: (1) The Cortex-M3, 3158 then (2) The boundary scan TAP. If your board includes an 3159 additional JTAG chip in the scan chain (for example a Xilinx CPLD 3160 or FPGA) you could place it before or after the STM32 chip in the 3161 chain. For example: 3162 3163 * OpenOCD_TDI(output) -> STM32 TDI Pin (BS Input) 3164 * STM32 BS TDO (output) -> STM32 Cortex-M3 TDI (input) 3165 * STM32 Cortex-M3 TDO (output) -> SM32 TDO Pin 3166 * STM32 TDO Pin (output) -> Xilinx TDI Pin (input) 3167 * Xilinx TDO Pin -> OpenOCD TDO (input) 3168 3169 The "jtag device" commands would thus be in the order shown below. 3170 Note: 3171 3172 * jtag newtap Xilinx tap -irlen ... 3173 * jtag newtap stm32 cpu -irlen ... 3174 * jtag newtap stm32 bs -irlen ... 3175 * # Create the debug target and say where it is 3176 * target create stm32.cpu -chain-position stm32.cpu ... 3177 3178 14. SYSCOMP Sometimes my debugging session terminates with an error. 3179 When I look into the log file, I can see these error messages: 3180 Error: arm7_9_common.c:561 arm7_9_execute_sys_speed(): timeout 3181 waiting for SYSCOMP 3182 3183 TODO. 3184 3185 3186File: openocd.info, Node: Tcl Crash Course, Next: License, Prev: FAQ, Up: Top 3187 318823 Tcl Crash Course 3189******************* 3190 3191Not everyone knows Tcl - this is not intended to be a replacement for 3192learning Tcl, the intent of this chapter is to give you some idea of how 3193the Tcl scripts work. 3194 3195This chapter is written with two audiences in mind. (1) OpenOCD users 3196who need to understand a bit more of how Jim-Tcl works so they can do 3197something useful, and (2) those that want to add a new command to 3198OpenOCD. 3199 320023.1 Tcl Rule #1 3201================ 3202 3203There is a famous joke, it goes like this: 3204 1. Rule #1: The wife is always correct 3205 2. Rule #2: If you think otherwise, See Rule #1 3206 3207The Tcl equal is this: 3208 3209 1. Rule #1: Everything is a string 3210 2. Rule #2: If you think otherwise, See Rule #1 3211 3212As in the famous joke, the consequences of Rule #1 are profound. Once 3213you understand Rule #1, you will understand Tcl. 3214 321523.2 Tcl Rule #1b 3216================= 3217 3218There is a second pair of rules. 3219 1. Rule #1: Control flow does not exist. Only commands 3220 For example: the classic FOR loop or IF statement is not a control 3221 flow item, they are commands, there is no such thing as control 3222 flow in Tcl. 3223 2. Rule #2: If you think otherwise, See Rule #1 3224 Actually what happens is this: There are commands that by 3225 convention, act like control flow key words in other languages. 3226 One of those commands is the word "for", another command is "if". 3227 322823.3 Per Rule #1 - All Results are strings 3229========================================== 3230 3231Every Tcl command results in a string. The word "result" is used 3232deliberately. No result is just an empty string. Remember: Rule #1 - 3233Everything is a string 3234 323523.4 Tcl Quoting Operators 3236========================== 3237 3238In life of a Tcl script, there are two important periods of time, the 3239difference is subtle. 3240 1. Parse Time 3241 2. Evaluation Time 3242 3243The two key items here are how "quoted things" work in Tcl. Tcl has 3244three primary quoting constructs, the [square-brackets] the 3245{curly-braces} and "double-quotes" 3246 3247By now you should know $VARIABLES always start with a $DOLLAR sign. 3248BTW: To set a variable, you actually use the command "set", as in "set 3249VARNAME VALUE" much like the ancient BASIC language "let x = 1" 3250statement, but without the equal sign. 3251 3252 * [square-brackets] 3253 [square-brackets] are command substitutions. It operates much like 3254 Unix Shell 'back-ticks'. The result of a [square-bracket] 3255 operation is exactly 1 string. Remember Rule #1 - Everything is a 3256 string. These two statements are roughly identical: 3257 # bash example 3258 X=`date` 3259 echo "The Date is: $X" 3260 # Tcl example 3261 set X [date] 3262 puts "The Date is: $X" 3263 * "double-quoted-things" 3264 "double-quoted-things" are just simply quoted text. $VARIABLES and 3265 [square-brackets] are expanded in place - the result however is 3266 exactly 1 string. Remember Rule #1 - Everything is a string 3267 set x "Dinner" 3268 puts "It is now \"[date]\", $x is in 1 hour" 3269 * {Curly-Braces} 3270 {Curly-Braces} are magic: $VARIABLES and [square-brackets] are 3271 parsed, but are NOT expanded or executed. {Curly-Braces} are like 3272 'single-quote' operators in BASH shell scripts, with the added 3273 feature: {curly-braces} can be nested, single quotes can not. 3274 {{{this is nested 3 times}}} NOTE: [date] is a bad example; at this 3275 writing, Jim/OpenOCD does not have a date command. 3276 327723.5 Consequences of Rule 1/2/3/4 3278================================= 3279 3280The consequences of Rule 1 are profound. 3281 328223.5.1 Tokenisation & Execution. 3283-------------------------------- 3284 3285Of course, whitespace, blank lines and #comment lines are handled in the 3286normal way. 3287 3288As a script is parsed, each (multi) line in the script file is tokenised 3289and according to the quoting rules. After tokenisation, that line is 3290immediately executed. 3291 3292Multi line statements end with one or more "still-open" {curly-braces} 3293which - eventually - closes a few lines later. 3294 329523.5.2 Command Execution 3296------------------------ 3297 3298Remember earlier: There are no "control flow" statements in Tcl. 3299Instead there are COMMANDS that simply act like control flow operators. 3300 3301Commands are executed like this: 3302 3303 1. Parse the next line into (argc) and (argv[]). 3304 2. Look up (argv[0]) in a table and call its function. 3305 3. Repeat until End Of File. 3306 3307It sort of works like this: 3308 for(;;){ 3309 ReadAndParse( &argc, &argv ); 3310 3311 cmdPtr = LookupCommand( argv[0] ); 3312 3313 (*cmdPtr->Execute)( argc, argv ); 3314 } 3315 3316When the command "proc" is parsed (which creates a procedure function) 3317it gets 3 parameters on the command line. 1 the name of the proc 3318(function), 2 the list of parameters, and 3 the body of the function. 3319Not the choice of words: LIST and BODY. The PROC command stores these 3320items in a table somewhere so it can be found by "LookupCommand()" 3321 332223.5.3 The FOR command 3323---------------------- 3324 3325The most interesting command to look at is the FOR command. In Tcl, the 3326FOR command is normally implemented in C. Remember, FOR is a command 3327just like any other command. 3328 3329When the ascii text containing the FOR command is parsed, the parser 3330produces 5 parameter strings, (If in doubt: Refer to Rule #1) they are: 3331 3332 0. The ascii text 'for' 3333 1. The start text 3334 2. The test expression 3335 3. The next text 3336 4. The body text 3337 3338Sort of reminds you of "main( int argc, char **argv )" does it not? 3339Remember Rule #1 - Everything is a string. The key point is this: Often 3340many of those parameters are in {curly-braces} - thus the variables 3341inside are not expanded or replaced until later. 3342 3343Remember that every Tcl command looks like the classic "main( argc, argv 3344)" function in C. In JimTCL - they actually look like this: 3345 3346 int 3347 MyCommand( Jim_Interp *interp, 3348 int *argc, 3349 Jim_Obj * const *argvs ); 3350 3351Real Tcl is nearly identical. Although the newer versions have 3352introduced a byte-code parser and interpreter, but at the core, it still 3353operates in the same basic way. 3354 335523.5.4 FOR command implementation 3356--------------------------------- 3357 3358To understand Tcl it is perhaps most helpful to see the FOR command. 3359Remember, it is a COMMAND not a control flow structure. 3360 3361In Tcl there are two underlying C helper functions. 3362 3363Remember Rule #1 - You are a string. 3364 3365The first helper parses and executes commands found in an ascii string. 3366Commands can be separated by semicolons, or newlines. While parsing, 3367variables are expanded via the quoting rules. 3368 3369The second helper evaluates an ascii string as a numerical expression 3370and returns a value. 3371 3372Here is an example of how the FOR command could be implemented. The 3373pseudo code below does not show error handling. 3374 void Execute_AsciiString( void *interp, const char *string ); 3375 3376 int Evaluate_AsciiExpression( void *interp, const char *string ); 3377 3378 int 3379 MyForCommand( void *interp, 3380 int argc, 3381 char **argv ) 3382 { 3383 if( argc != 5 ){ 3384 SetResult( interp, "WRONG number of parameters"); 3385 return ERROR; 3386 } 3387 3388 // argv[0] = the ascii string just like C 3389 3390 // Execute the start statement. 3391 Execute_AsciiString( interp, argv[1] ); 3392 3393 // Top of loop test 3394 for(;;){ 3395 i = Evaluate_AsciiExpression(interp, argv[2]); 3396 if( i == 0 ) 3397 break; 3398 3399 // Execute the body 3400 Execute_AsciiString( interp, argv[3] ); 3401 3402 // Execute the LOOP part 3403 Execute_AsciiString( interp, argv[4] ); 3404 } 3405 3406 // Return no error 3407 SetResult( interp, "" ); 3408 return SUCCESS; 3409 } 3410 3411Every other command IF, WHILE, FORMAT, PUTS, EXPR, everything works in 3412the same basic way. 3413 341423.6 OpenOCD Tcl Usage 3415====================== 3416 341723.6.1 source and find commands 3418------------------------------- 3419 3420Where: In many configuration files 3421Example: source [find FILENAME] 3422Remember the parsing rules 3423 1. The 'find' command is in square brackets, and is executed with the 3424 parameter FILENAME. It should find and return the full path to a 3425 file with that name; it uses an internal search path. The RESULT 3426 is a string, which is substituted into the command line in place of 3427 the bracketed 'find' command. (Don't try to use a FILENAME which 3428 includes the "#" character. That character begins Tcl comments.) 3429 2. The 'source' command is executed with the resulting filename; it 3430 reads a file and executes as a script. 3431 343223.6.2 format command 3433--------------------- 3434 3435Where: Generally occurs in numerous places. 3436Tcl has no command like printf(), instead it has format, which is really 3437more like sprintf(). Example 3438 set x 6 3439 set y 7 3440 puts [format "The answer: %d" [expr $x * $y]] 3441 1. The SET command creates 2 variables, X and Y. 3442 2. The double [nested] EXPR command performs math 3443 The EXPR command produces numerical result as a string. 3444 Refer to Rule #1 3445 3. The format command is executed, producing a single string 3446 Refer to Rule #1. 3447 4. The PUTS command outputs the text. 3448 344923.6.3 Body or Inlined Text 3450--------------------------- 3451 3452Where: Various TARGET scripts. 3453 #1 Good 3454 proc someproc {} { 3455 ... multiple lines of stuff ... 3456 } 3457 $_TARGETNAME configure -event FOO someproc 3458 #2 Good - no variables 3459 $_TARGETNAME configure -event foo "this ; that;" 3460 #3 Good Curly Braces 3461 $_TARGETNAME configure -event FOO { 3462 puts "Time: [date]" 3463 } 3464 #4 DANGER DANGER DANGER 3465 $_TARGETNAME configure -event foo "puts \"Time: [date]\"" 3466 1. The $_TARGETNAME is an OpenOCD variable convention. 3467 $_TARGETNAME represents the last target created, the value changes 3468 each time a new target is created. Remember the parsing rules. 3469 When the ascii text is parsed, the $_TARGETNAME becomes a simple 3470 string, the name of the target which happens to be a TARGET 3471 (object) command. 3472 2. The 2nd parameter to the '-event' parameter is a TCBODY 3473 There are 4 examples: 3474 1. The TCLBODY is a simple string that happens to be a proc name 3475 2. The TCLBODY is several simple commands separated by semicolons 3476 3. The TCLBODY is a multi-line {curly-brace} quoted string 3477 4. The TCLBODY is a string with variables that get expanded. 3478 3479 In the end, when the target event FOO occurs the TCLBODY is 3480 evaluated. Method #1 and #2 are functionally identical. For 3481 Method #3 and #4 it is more interesting. What is the TCLBODY? 3482 3483 Remember the parsing rules. In case #3, {curly-braces} mean the 3484 $VARS and [square-brackets] are expanded later, when the EVENT 3485 occurs, and the text is evaluated. In case #4, they are replaced 3486 before the "Target Object Command" is executed. This occurs at the 3487 same time $_TARGETNAME is replaced. In case #4 the date will never 3488 change. {BTW: [date] is a bad example; at this writing, 3489 Jim/OpenOCD does not have a date command} 3490 349123.6.4 Global Variables 3492----------------------- 3493 3494Where: You might discover this when writing your own procs 3495In simple terms: Inside a PROC, if you need to access a global variable 3496you must say so. See also "upvar". Example: 3497 proc myproc { } { 3498 set y 0 #Local variable Y 3499 global x #Global variable X 3500 puts [format "X=%d, Y=%d" $x $y] 3501 } 3502 350323.7 Other Tcl Hacks 3504==================== 3505 3506Dynamic variable creation 3507 # Dynamically create a bunch of variables. 3508 for { set x 0 } { $x < 32 } { set x [expr $x + 1]} { 3509 # Create var name 3510 set vn [format "BIT%d" $x] 3511 # Make it a global 3512 global $vn 3513 # Set it. 3514 set $vn [expr (1 << $x)] 3515 } 3516Dynamic proc/command creation 3517 # One "X" function - 5 uart functions. 3518 foreach who {A B C D E} 3519 proc [format "show_uart%c" $who] { } "show_UARTx $who" 3520 } 3521 3522 3523File: openocd.info, Node: License, Next: OpenOCD Concept Index, Prev: Tcl Crash Course, Up: Top 3524 3525Appendix A The GNU Free Documentation License. 3526********************************************** 3527 3528 Version 1.2, November 2002 3529 3530 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 3531 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 3532 3533 Everyone is permitted to copy and distribute verbatim copies 3534 of this license document, but changing it is not allowed. 3535 3536 0. PREAMBLE 3537 3538 The purpose of this License is to make a manual, textbook, or other 3539 functional and useful document "free" in the sense of freedom: to 3540 assure everyone the effective freedom to copy and redistribute it, 3541 with or without modifying it, either commercially or 3542 noncommercially. Secondarily, this License preserves for the 3543 author and publisher a way to get credit for their work, while not 3544 being considered responsible for modifications made by others. 3545 3546 This License is a kind of "copyleft", which means that derivative 3547 works of the document must themselves be free in the same sense. 3548 It complements the GNU General Public License, which is a copyleft 3549 license designed for free software. 3550 3551 We have designed this License in order to use it for manuals for 3552 free software, because free software needs free documentation: a 3553 free program should come with manuals providing the same freedoms 3554 that the software does. But this License is not limited to 3555 software manuals; it can be used for any textual work, regardless 3556 of subject matter or whether it is published as a printed book. We 3557 recommend this License principally for works whose purpose is 3558 instruction or reference. 3559 3560 1. APPLICABILITY AND DEFINITIONS 3561 3562 This License applies to any manual or other work, in any medium, 3563 that contains a notice placed by the copyright holder saying it can 3564 be distributed under the terms of this License. Such a notice 3565 grants a world-wide, royalty-free license, unlimited in duration, 3566 to use that work under the conditions stated herein. The 3567 "Document", below, refers to any such manual or work. Any member 3568 of the public is a licensee, and is addressed as "you". You accept 3569 the license if you copy, modify or distribute the work in a way 3570 requiring permission under copyright law. 3571 3572 A "Modified Version" of the Document means any work containing the 3573 Document or a portion of it, either copied verbatim, or with 3574 modifications and/or translated into another language. 3575 3576 A "Secondary Section" is a named appendix or a front-matter section 3577 of the Document that deals exclusively with the relationship of the 3578 publishers or authors of the Document to the Document's overall 3579 subject (or to related matters) and contains nothing that could 3580 fall directly within that overall subject. (Thus, if the Document 3581 is in part a textbook of mathematics, a Secondary Section may not 3582 explain any mathematics.) The relationship could be a matter of 3583 historical connection with the subject or with related matters, or 3584 of legal, commercial, philosophical, ethical or political position 3585 regarding them. 3586 3587 The "Invariant Sections" are certain Secondary Sections whose 3588 titles are designated, as being those of Invariant Sections, in the 3589 notice that says that the Document is released under this License. 3590 If a section does not fit the above definition of Secondary then it 3591 is not allowed to be designated as Invariant. The Document may 3592 contain zero Invariant Sections. If the Document does not identify 3593 any Invariant Sections then there are none. 3594 3595 The "Cover Texts" are certain short passages of text that are 3596 listed, as Front-Cover Texts or Back-Cover Texts, in the notice 3597 that says that the Document is released under this License. A 3598 Front-Cover Text may be at most 5 words, and a Back-Cover Text may 3599 be at most 25 words. 3600 3601 A "Transparent" copy of the Document means a machine-readable copy, 3602 represented in a format whose specification is available to the 3603 general public, that is suitable for revising the document 3604 straightforwardly with generic text editors or (for images composed 3605 of pixels) generic paint programs or (for drawings) some widely 3606 available drawing editor, and that is suitable for input to text 3607 formatters or for automatic translation to a variety of formats 3608 suitable for input to text formatters. A copy made in an otherwise 3609 Transparent file format whose markup, or absence of markup, has 3610 been arranged to thwart or discourage subsequent modification by 3611 readers is not Transparent. An image format is not Transparent if 3612 used for any substantial amount of text. A copy that is not 3613 "Transparent" is called "Opaque". 3614 3615 Examples of suitable formats for Transparent copies include plain 3616 ASCII without markup, Texinfo input format, LaTeX input format, 3617 SGML or XML using a publicly available DTD, and standard-conforming 3618 simple HTML, PostScript or PDF designed for human modification. 3619 Examples of transparent image formats include PNG, XCF and JPG. 3620 Opaque formats include proprietary formats that can be read and 3621 edited only by proprietary word processors, SGML or XML for which 3622 the DTD and/or processing tools are not generally available, and 3623 the machine-generated HTML, PostScript or PDF produced by some word 3624 processors for output purposes only. 3625 3626 The "Title Page" means, for a printed book, the title page itself, 3627 plus such following pages as are needed to hold, legibly, the 3628 material this License requires to appear in the title page. For 3629 works in formats which do not have any title page as such, "Title 3630 Page" means the text near the most prominent appearance of the 3631 work's title, preceding the beginning of the body of the text. 3632 3633 A section "Entitled XYZ" means a named subunit of the Document 3634 whose title either is precisely XYZ or contains XYZ in parentheses 3635 following text that translates XYZ in another language. (Here XYZ 3636 stands for a specific section name mentioned below, such as 3637 "Acknowledgements", "Dedications", "Endorsements", or "History".) 3638 To "Preserve the Title" of such a section when you modify the 3639 Document means that it remains a section "Entitled XYZ" according 3640 to this definition. 3641 3642 The Document may include Warranty Disclaimers next to the notice 3643 which states that this License applies to the Document. These 3644 Warranty Disclaimers are considered to be included by reference in 3645 this License, but only as regards disclaiming warranties: any other 3646 implication that these Warranty Disclaimers may have is void and 3647 has no effect on the meaning of this License. 3648 3649 2. VERBATIM COPYING 3650 3651 You may copy and distribute the Document in any medium, either 3652 commercially or noncommercially, provided that this License, the 3653 copyright notices, and the license notice saying this License 3654 applies to the Document are reproduced in all copies, and that you 3655 add no other conditions whatsoever to those of this License. You 3656 may not use technical measures to obstruct or control the reading 3657 or further copying of the copies you make or distribute. However, 3658 you may accept compensation in exchange for copies. If you 3659 distribute a large enough number of copies you must also follow the 3660 conditions in section 3. 3661 3662 You may also lend copies, under the same conditions stated above, 3663 and you may publicly display copies. 3664 3665 3. COPYING IN QUANTITY 3666 3667 If you publish printed copies (or copies in media that commonly 3668 have printed covers) of the Document, numbering more than 100, and 3669 the Document's license notice requires Cover Texts, you must 3670 enclose the copies in covers that carry, clearly and legibly, all 3671 these Cover Texts: Front-Cover Texts on the front cover, and 3672 Back-Cover Texts on the back cover. Both covers must also clearly 3673 and legibly identify you as the publisher of these copies. The 3674 front cover must present the full title with all words of the title 3675 equally prominent and visible. You may add other material on the 3676 covers in addition. Copying with changes limited to the covers, as 3677 long as they preserve the title of the Document and satisfy these 3678 conditions, can be treated as verbatim copying in other respects. 3679 3680 If the required texts for either cover are too voluminous to fit 3681 legibly, you should put the first ones listed (as many as fit 3682 reasonably) on the actual cover, and continue the rest onto 3683 adjacent pages. 3684 3685 If you publish or distribute Opaque copies of the Document 3686 numbering more than 100, you must either include a machine-readable 3687 Transparent copy along with each Opaque copy, or state in or with 3688 each Opaque copy a computer-network location from which the general 3689 network-using public has access to download using public-standard 3690 network protocols a complete Transparent copy of the Document, free 3691 of added material. If you use the latter option, you must take 3692 reasonably prudent steps, when you begin distribution of Opaque 3693 copies in quantity, to ensure that this Transparent copy will 3694 remain thus accessible at the stated location until at least one 3695 year after the last time you distribute an Opaque copy (directly or 3696 through your agents or retailers) of that edition to the public. 3697 3698 It is requested, but not required, that you contact the authors of 3699 the Document well before redistributing any large number of copies, 3700 to give them a chance to provide you with an updated version of the 3701 Document. 3702 3703 4. MODIFICATIONS 3704 3705 You may copy and distribute a Modified Version of the Document 3706 under the conditions of sections 2 and 3 above, provided that you 3707 release the Modified Version under precisely this License, with the 3708 Modified Version filling the role of the Document, thus licensing 3709 distribution and modification of the Modified Version to whoever 3710 possesses a copy of it. In addition, you must do these things in 3711 the Modified Version: 3712 3713 A. Use in the Title Page (and on the covers, if any) a title 3714 distinct from that of the Document, and from those of previous 3715 versions (which should, if there were any, be listed in the 3716 History section of the Document). You may use the same title 3717 as a previous version if the original publisher of that 3718 version gives permission. 3719 3720 B. List on the Title Page, as authors, one or more persons or 3721 entities responsible for authorship of the modifications in 3722 the Modified Version, together with at least five of the 3723 principal authors of the Document (all of its principal 3724 authors, if it has fewer than five), unless they release you 3725 from this requirement. 3726 3727 C. State on the Title page the name of the publisher of the 3728 Modified Version, as the publisher. 3729 3730 D. Preserve all the copyright notices of the Document. 3731 3732 E. Add an appropriate copyright notice for your modifications 3733 adjacent to the other copyright notices. 3734 3735 F. Include, immediately after the copyright notices, a license 3736 notice giving the public permission to use the Modified 3737 Version under the terms of this License, in the form shown in 3738 the Addendum below. 3739 3740 G. Preserve in that license notice the full lists of Invariant 3741 Sections and required Cover Texts given in the Document's 3742 license notice. 3743 3744 H. Include an unaltered copy of this License. 3745 3746 I. Preserve the section Entitled "History", Preserve its Title, 3747 and add to it an item stating at least the title, year, new 3748 authors, and publisher of the Modified Version as given on the 3749 Title Page. If there is no section Entitled "History" in the 3750 Document, create one stating the title, year, authors, and 3751 publisher of the Document as given on its Title Page, then add 3752 an item describing the Modified Version as stated in the 3753 previous sentence. 3754 3755 J. Preserve the network location, if any, given in the Document 3756 for public access to a Transparent copy of the Document, and 3757 likewise the network locations given in the Document for 3758 previous versions it was based on. These may be placed in the 3759 "History" section. You may omit a network location for a work 3760 that was published at least four years before the Document 3761 itself, or if the original publisher of the version it refers 3762 to gives permission. 3763 3764 K. For any section Entitled "Acknowledgements" or "Dedications", 3765 Preserve the Title of the section, and preserve in the section 3766 all the substance and tone of each of the contributor 3767 acknowledgements and/or dedications given therein. 3768 3769 L. Preserve all the Invariant Sections of the Document, unaltered 3770 in their text and in their titles. Section numbers or the 3771 equivalent are not considered part of the section titles. 3772 3773 M. Delete any section Entitled "Endorsements". Such a section 3774 may not be included in the Modified Version. 3775 3776 N. Do not retitle any existing section to be Entitled 3777 "Endorsements" or to conflict in title with any Invariant 3778 Section. 3779 3780 O. Preserve any Warranty Disclaimers. 3781 3782 If the Modified Version includes new front-matter sections or 3783 appendices that qualify as Secondary Sections and contain no 3784 material copied from the Document, you may at your option designate 3785 some or all of these sections as invariant. To do this, add their 3786 titles to the list of Invariant Sections in the Modified Version's 3787 license notice. These titles must be distinct from any other 3788 section titles. 3789 3790 You may add a section Entitled "Endorsements", provided it contains 3791 nothing but endorsements of your Modified Version by various 3792 parties--for example, statements of peer review or that the text 3793 has been approved by an organization as the authoritative 3794 definition of a standard. 3795 3796 You may add a passage of up to five words as a Front-Cover Text, 3797 and a passage of up to 25 words as a Back-Cover Text, to the end of 3798 the list of Cover Texts in the Modified Version. Only one passage 3799 of Front-Cover Text and one of Back-Cover Text may be added by (or 3800 through arrangements made by) any one entity. If the Document 3801 already includes a cover text for the same cover, previously added 3802 by you or by arrangement made by the same entity you are acting on 3803 behalf of, you may not add another; but you may replace the old 3804 one, on explicit permission from the previous publisher that added 3805 the old one. 3806 3807 The author(s) and publisher(s) of the Document do not by this 3808 License give permission to use their names for publicity for or to 3809 assert or imply endorsement of any Modified Version. 3810 3811 5. COMBINING DOCUMENTS 3812 3813 You may combine the Document with other documents released under 3814 this License, under the terms defined in section 4 above for 3815 modified versions, provided that you include in the combination all 3816 of the Invariant Sections of all of the original documents, 3817 unmodified, and list them all as Invariant Sections of your 3818 combined work in its license notice, and that you preserve all 3819 their Warranty Disclaimers. 3820 3821 The combined work need only contain one copy of this License, and 3822 multiple identical Invariant Sections may be replaced with a single 3823 copy. If there are multiple Invariant Sections with the same name 3824 but different contents, make the title of each such section unique 3825 by adding at the end of it, in parentheses, the name of the 3826 original author or publisher of that section if known, or else a 3827 unique number. Make the same adjustment to the section titles in 3828 the list of Invariant Sections in the license notice of the 3829 combined work. 3830 3831 In the combination, you must combine any sections Entitled 3832 "History" in the various original documents, forming one section 3833 Entitled "History"; likewise combine any sections Entitled 3834 "Acknowledgements", and any sections Entitled "Dedications". You 3835 must delete all sections Entitled "Endorsements." 3836 3837 6. COLLECTIONS OF DOCUMENTS 3838 3839 You may make a collection consisting of the Document and other 3840 documents released under this License, and replace the individual 3841 copies of this License in the various documents with a single copy 3842 that is included in the collection, provided that you follow the 3843 rules of this License for verbatim copying of each of the documents 3844 in all other respects. 3845 3846 You may extract a single document from such a collection, and 3847 distribute it individually under this License, provided you insert 3848 a copy of this License into the extracted document, and follow this 3849 License in all other respects regarding verbatim copying of that 3850 document. 3851 3852 7. AGGREGATION WITH INDEPENDENT WORKS 3853 3854 A compilation of the Document or its derivatives with other 3855 separate and independent documents or works, in or on a volume of a 3856 storage or distribution medium, is called an "aggregate" if the 3857 copyright resulting from the compilation is not used to limit the 3858 legal rights of the compilation's users beyond what the individual 3859 works permit. When the Document is included in an aggregate, this 3860 License does not apply to the other works in the aggregate which 3861 are not themselves derivative works of the Document. 3862 3863 If the Cover Text requirement of section 3 is applicable to these 3864 copies of the Document, then if the Document is less than one half 3865 of the entire aggregate, the Document's Cover Texts may be placed 3866 on covers that bracket the Document within the aggregate, or the 3867 electronic equivalent of covers if the Document is in electronic 3868 form. Otherwise they must appear on printed covers that bracket 3869 the whole aggregate. 3870 3871 8. TRANSLATION 3872 3873 Translation is considered a kind of modification, so you may 3874 distribute translations of the Document under the terms of section 3875 4. Replacing Invariant Sections with translations requires special 3876 permission from their copyright holders, but you may include 3877 translations of some or all Invariant Sections in addition to the 3878 original versions of these Invariant Sections. You may include a 3879 translation of this License, and all the license notices in the 3880 Document, and any Warranty Disclaimers, provided that you also 3881 include the original English version of this License and the 3882 original versions of those notices and disclaimers. In case of a 3883 disagreement between the translation and the original version of 3884 this License or a notice or disclaimer, the original version will 3885 prevail. 3886 3887 If a section in the Document is Entitled "Acknowledgements", 3888 "Dedications", or "History", the requirement (section 4) to 3889 Preserve its Title (section 1) will typically require changing the 3890 actual title. 3891 3892 9. TERMINATION 3893 3894 You may not copy, modify, sublicense, or distribute the Document 3895 except as expressly provided for under this License. Any other 3896 attempt to copy, modify, sublicense or distribute the Document is 3897 void, and will automatically terminate your rights under this 3898 License. However, parties who have received copies, or rights, 3899 from you under this License will not have their licenses terminated 3900 so long as such parties remain in full compliance. 3901 3902 10. FUTURE REVISIONS OF THIS LICENSE 3903 3904 The Free Software Foundation may publish new, revised versions of 3905 the GNU Free Documentation License from time to time. Such new 3906 versions will be similar in spirit to the present version, but may 3907 differ in detail to address new problems or concerns. See 3908 <http://www.gnu.org/copyleft/>. 3909 3910 Each version of the License is given a distinguishing version 3911 number. If the Document specifies that a particular numbered 3912 version of this License "or any later version" applies to it, you 3913 have the option of following the terms and conditions either of 3914 that specified version or of any later version that has been 3915 published (not as a draft) by the Free Software Foundation. If the 3916 Document does not specify a version number of this License, you may 3917 choose any version ever published (not as a draft) by the Free 3918 Software Foundation. 3919 3920ADDENDUM: How to use this License for your documents 3921==================================================== 3922 3923To use this License in a document you have written, include a copy of 3924the License in the document and put the following copyright and license 3925notices just after the title page: 3926 3927 Copyright (C) YEAR YOUR NAME. 3928 Permission is granted to copy, distribute and/or modify this document 3929 under the terms of the GNU Free Documentation License, Version 1.2 3930 or any later version published by the Free Software Foundation; 3931 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover 3932 Texts. A copy of the license is included in the section entitled ``GNU 3933 Free Documentation License''. 3934 3935If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, 3936replace the "with...Texts." line with this: 3937 3938 with the Invariant Sections being LIST THEIR TITLES, with 3939 the Front-Cover Texts being LIST, and with the Back-Cover Texts 3940 being LIST. 3941 3942If you have Invariant Sections without Cover Texts, or some other 3943combination of the three, merge those two alternatives to suit the 3944situation. 3945 3946If your document contains nontrivial examples of program code, we 3947recommend releasing these examples in parallel under your choice of free 3948software license, such as the GNU General Public License, to permit 3949their use in free software. 3950 3951 3952File: openocd.info, Node: OpenOCD Concept Index, Next: Command and Driver Index, Prev: License, Up: Top 3953 3954OpenOCD Concept Index 3955********************* 3956 3957[index] 3958* Menu: 3959 3960* aarch64: Architecture and Core Commands. 3961 (line 896) 3962* about: About. (line 6) 3963* adaptive clocking: Debug Adapter Configuration. 3964 (line 1007) 3965* adaptive clocking <1>: FAQ. (line 6) 3966* ambiqmicro: Flash Commands. (line 608) 3967* apollo: Flash Commands. (line 608) 3968* ARC: Architecture and Core Commands. 3969 (line 1326) 3970* Architecture Specific Commands: Architecture and Core Commands. 3971 (line 6) 3972* ARM: Architecture and Core Commands. 3973 (line 290) 3974* ARM semihosting: OpenOCD Project Setup. 3975 (line 314) 3976* ARM semihosting <1>: Architecture and Core Commands. 3977 (line 331) 3978* ARM semihosting <2>: Architecture and Core Commands. 3979 (line 342) 3980* ARM semihosting <3>: Architecture and Core Commands. 3981 (line 353) 3982* ARM semihosting <4>: Architecture and Core Commands. 3983 (line 362) 3984* ARM11: Architecture and Core Commands. 3985 (line 672) 3986* ARM7: Architecture and Core Commands. 3987 (line 392) 3988* ARM720T: Architecture and Core Commands. 3989 (line 430) 3990* ARM9: Architecture and Core Commands. 3991 (line 392) 3992* ARM9 <1>: Architecture and Core Commands. 3993 (line 446) 3994* ARM920T: Architecture and Core Commands. 3995 (line 466) 3996* ARM926ej-s: Architecture and Core Commands. 3997 (line 501) 3998* ARM966E: Architecture and Core Commands. 3999 (line 515) 4000* ARMv4: Architecture and Core Commands. 4001 (line 385) 4002* ARMv5: Architecture and Core Commands. 4003 (line 385) 4004* ARMv6: Architecture and Core Commands. 4005 (line 668) 4006* ARMv7: Architecture and Core Commands. 4007 (line 706) 4008* ARMv8: Architecture and Core Commands. 4009 (line 705) 4010* ARMv8-A: Architecture and Core Commands. 4011 (line 896) 4012* at91sam3: Flash Commands. (line 724) 4013* at91sam4: Flash Commands. (line 779) 4014* at91sam4l: Flash Commands. (line 784) 4015* at91samd: Flash Commands. (line 646) 4016* ath79: Flash Commands. (line 557) 4017* Atheros ath79 SPI driver: Flash Commands. (line 557) 4018* atsame5: Flash Commands. (line 795) 4019* atsamv: Flash Commands. (line 848) 4020* autoprobe: TAP Declaration. (line 318) 4021* board config file: Config File Guidelines. 4022 (line 60) 4023* breakpoint: General Commands. (line 366) 4024* bscan_spi: Flash Commands. (line 329) 4025* CFI: Flash Commands. (line 294) 4026* command line options: Running. (line 6) 4027* commands: General Commands. (line 6) 4028* Common Flash Interface: Flash Commands. (line 294) 4029* config command: Server Configuration. 4030 (line 13) 4031* config file, board: Config File Guidelines. 4032 (line 60) 4033* config file, interface: Debug Adapter Configuration. 4034 (line 6) 4035* config file, overview: OpenOCD Project Setup. 4036 (line 139) 4037* config file, target: Config File Guidelines. 4038 (line 290) 4039* config file, user: OpenOCD Project Setup. 4040 (line 139) 4041* configuration stage: Server Configuration. 4042 (line 13) 4043* Connecting to GDB: GDB and OpenOCD. (line 27) 4044* Core Specific Commands: Architecture and Core Commands. 4045 (line 6) 4046* Cortex-A: Architecture and Core Commands. 4047 (line 709) 4048* Cortex-M: Architecture and Core Commands. 4049 (line 837) 4050* Cortex-R: Architecture and Core Commands. 4051 (line 744) 4052* CPU type: CPU Configuration. (line 60) 4053* CTI: Architecture and Core Commands. 4054 (line 244) 4055* DAP declaration: TAP Declaration. (line 374) 4056* DCC: Architecture and Core Commands. 4057 (line 408) 4058* DCC <1>: Architecture and Core Commands. 4059 (line 1456) 4060* developers: Developers. (line 6) 4061* directory search: Running. (line 6) 4062* disassemble: Architecture and Core Commands. 4063 (line 301) 4064* disassemble <1>: Architecture and Core Commands. 4065 (line 909) 4066* dongles: Debug Adapter Hardware. 4067 (line 6) 4068* dotted name: TAP Declaration. (line 98) 4069* ETB: Architecture and Core Commands. 4070 (line 14) 4071* ETM: Architecture and Core Commands. 4072 (line 14) 4073* ETM <1>: Architecture and Core Commands. 4074 (line 754) 4075* event, reset-init: Config File Guidelines. 4076 (line 176) 4077* events: Reset Configuration. 4078 (line 226) 4079* events <1>: TAP Declaration. (line 217) 4080* events <2>: CPU Configuration. (line 416) 4081* faq: FAQ. (line 6) 4082* fespi: Flash Commands. (line 590) 4083* Firmware recovery: Utility Commands. (line 45) 4084* flash configuration: Flash Commands. (line 36) 4085* flash erasing: Flash Commands. (line 102) 4086* flash programming: Flash Commands. (line 102) 4087* flash protection: Flash Commands. (line 230) 4088* flash reading: Flash Commands. (line 102) 4089* flash writing: Flash Commands. (line 102) 4090* FPGA: PLD/FPGA Commands. (line 6) 4091* Freedom E SPI: Flash Commands. (line 590) 4092* FTDI: Debug Adapter Hardware. 4093 (line 6) 4094* GDB: Server Configuration. 4095 (line 142) 4096* GDB <1>: GDB and OpenOCD. (line 6) 4097* GDB configuration: Server Configuration. 4098 (line 142) 4099* GDB server: Server Configuration. 4100 (line 91) 4101* GDB target: CPU Configuration. (line 6) 4102* Generic JTAG2SPI driver: Flash Commands. (line 329) 4103* halt: General Commands. (line 97) 4104* hwthread: GDB and OpenOCD. (line 285) 4105* image dumping: General Commands. (line 312) 4106* image loading: General Commands. (line 312) 4107* initialization: Server Configuration. 4108 (line 6) 4109* init_board procedure: Config File Guidelines. 4110 (line 241) 4111* init_targets procedure: Config File Guidelines. 4112 (line 514) 4113* init_target_events procedure: Config File Guidelines. 4114 (line 559) 4115* interface config file: Debug Adapter Configuration. 4116 (line 6) 4117* ITM: Architecture and Core Commands. 4118 (line 754) 4119* Jim-Tcl: About Jim-Tcl. (line 6) 4120* jrc: TAP Declaration. (line 255) 4121* JTAG: About. (line 15) 4122* JTAG <1>: Debug Adapter Configuration. 4123 (line 894) 4124* JTAG autoprobe: TAP Declaration. (line 318) 4125* JTAG Commands: JTAG Commands. (line 6) 4126* JTAG Route Controller: TAP Declaration. (line 255) 4127* jtagspi: Flash Commands. (line 329) 4128* kinetis: Flash Commands. (line 998) 4129* kinetis_ke: Flash Commands. (line 1085) 4130* libdcc: Architecture and Core Commands. 4131 (line 1456) 4132* Linux-ARM DCC support: Architecture and Core Commands. 4133 (line 1456) 4134* logfile: Running. (line 6) 4135* lpcspifi: Flash Commands. (line 399) 4136* memory access: General Commands. (line 274) 4137* message level: General Commands. (line 67) 4138* NAND: Flash Commands. (line 2031) 4139* NAND configuration: Flash Commands. (line 2086) 4140* NAND erasing: Flash Commands. (line 2166) 4141* NAND other commands: Flash Commands. (line 2257) 4142* NAND programming: Flash Commands. (line 2166) 4143* NAND programming <1>: Flash Commands. (line 2179) 4144* NAND programming <2>: Flash Commands. (line 2232) 4145* NAND reading: Flash Commands. (line 2133) 4146* NAND verification: Flash Commands. (line 2232) 4147* NAND writing: Flash Commands. (line 2179) 4148* NXP SPI Flash Interface: Flash Commands. (line 399) 4149* object command: CPU Configuration. (line 299) 4150* OctoSPI: Flash Commands. (line 436) 4151* PLD: PLD/FPGA Commands. (line 6) 4152* port: Server Configuration. 4153 (line 81) 4154* printer port: Debug Adapter Hardware. 4155 (line 6) 4156* profiling: General Commands. (line 471) 4157* Programming using GDB: GDB and OpenOCD. (line 127) 4158* QuadSPI: Flash Commands. (line 436) 4159* RAM testing: Utility Commands. (line 9) 4160* reset: General Commands. (line 97) 4161* Reset Configuration: Reset Configuration. 4162 (line 6) 4163* reset-init handler: Config File Guidelines. 4164 (line 176) 4165* RPC: Tcl Scripting API. (line 96) 4166* RPC Notifications: Tcl Scripting API. (line 114) 4167* RPC trace output: Tcl Scripting API. (line 131) 4168* RTCK: Debug Adapter Hardware. 4169 (line 6) 4170* RTCK <1>: Debug Adapter Configuration. 4171 (line 1007) 4172* RTCK <2>: FAQ. (line 6) 4173* RTOS: GDB and OpenOCD. (line 285) 4174* RTOS Support: GDB and OpenOCD. (line 211) 4175* scan chain: TAP Declaration. (line 28) 4176* security: Server Configuration. 4177 (line 81) 4178* Serial Peripheral Interface: Debug Adapter Configuration. 4179 (line 931) 4180* Serial Vector Format: Boundary Scan Commands. 4181 (line 13) 4182* Serial Wire Debug: Debug Adapter Configuration. 4183 (line 909) 4184* server: Server Configuration. 4185 (line 81) 4186* Single Wire Interface Module: Debug Adapter Configuration. 4187 (line 938) 4188* SMI: Flash Commands. (line 416) 4189* SMP: Config File Guidelines. 4190 (line 417) 4191* SMP <1>: GDB and OpenOCD. (line 285) 4192* SPI: Debug Adapter Configuration. 4193 (line 931) 4194* SPI <1>: Flash Commands. (line 329) 4195* SPIFI: Flash Commands. (line 399) 4196* STMicroelectronics QuadSPI/OctoSPI Interface: Flash Commands. 4197 (line 436) 4198* STMicroelectronics Serial Memory Interface: Flash Commands. 4199 (line 416) 4200* stmqspi: Flash Commands. (line 436) 4201* stmsmi: Flash Commands. (line 416) 4202* str9xpec: Flash Commands. (line 1896) 4203* SVF: Boundary Scan Commands. 4204 (line 13) 4205* SWD: Debug Adapter Configuration. 4206 (line 909) 4207* SWIM: Debug Adapter Configuration. 4208 (line 938) 4209* swm050: Flash Commands. (line 1974) 4210* SWO: Architecture and Core Commands. 4211 (line 754) 4212* SWV: Architecture and Core Commands. 4213 (line 754) 4214* TAP: About. (line 15) 4215* TAP configuration: TAP Declaration. (line 6) 4216* TAP declaration: TAP Declaration. (line 6) 4217* TAP events: TAP Declaration. (line 217) 4218* TAP naming convention: TAP Declaration. (line 121) 4219* TAP state names: JTAG Commands. (line 125) 4220* target config file: Config File Guidelines. 4221 (line 290) 4222* target events: CPU Configuration. (line 416) 4223* target initialization: General Commands. (line 97) 4224* target type: CPU Configuration. (line 60) 4225* target, current: CPU Configuration. (line 18) 4226* target, list: CPU Configuration. (line 18) 4227* tcl: About Jim-Tcl. (line 6) 4228* Tcl: Tcl Crash Course. (line 6) 4229* Tcl Scripting API: Tcl Scripting API. (line 6) 4230* Tcl scripts: Tcl Scripting API. (line 5) 4231* TCP port: Server Configuration. 4232 (line 81) 4233* TPIU: Architecture and Core Commands. 4234 (line 754) 4235* tracing: Architecture and Core Commands. 4236 (line 14) 4237* tracing <1>: Architecture and Core Commands. 4238 (line 754) 4239* tracing <2>: Architecture and Core Commands. 4240 (line 1456) 4241* translation: Config File Guidelines. 4242 (line 604) 4243* Transport: Debug Adapter Configuration. 4244 (line 868) 4245* USB Adapter: Debug Adapter Hardware. 4246 (line 6) 4247* user config file: OpenOCD Project Setup. 4248 (line 139) 4249* Using GDB as a non-intrusive memory inspector: GDB and OpenOCD. 4250 (line 167) 4251* Utility Commands: Utility Commands. (line 5) 4252* variable names: Config File Guidelines. 4253 (line 144) 4254* vector_catch: OpenOCD Project Setup. 4255 (line 213) 4256* vector_catch <1>: Architecture and Core Commands. 4257 (line 451) 4258* vector_catch <2>: Architecture and Core Commands. 4259 (line 641) 4260* vector_catch <3>: Architecture and Core Commands. 4261 (line 694) 4262* vector_catch <4>: Architecture and Core Commands. 4263 (line 862) 4264* vector_table: Architecture and Core Commands. 4265 (line 656) 4266* watchpoint: General Commands. (line 366) 4267* wiggler: Debug Adapter Hardware. 4268 (line 6) 4269* xcf: Flash Commands. (line 363) 4270* Xilinx Platform flash driver: Flash Commands. (line 363) 4271* Xilinx Serial Vector Format: Boundary Scan Commands. 4272 (line 39) 4273* XScale: Architecture and Core Commands. 4274 (line 529) 4275* XSVF: Boundary Scan Commands. 4276 (line 39) 4277* zy1000: Debug Adapter Hardware. 4278 (line 6) 4279 4280 4281File: openocd.info, Node: Command and Driver Index, Prev: OpenOCD Concept Index, Up: Top 4282 4283Command and Driver Index 4284************************ 4285 4286[index] 4287* Menu: 4288 4289* $cti_name ack: Architecture and Core Commands. 4290 (line 272) 4291* $cti_name channel: Architecture and Core Commands. 4292 (line 275) 4293* $cti_name dump: Architecture and Core Commands. 4294 (line 262) 4295* $cti_name enable: Architecture and Core Commands. 4296 (line 259) 4297* $cti_name read: Architecture and Core Commands. 4298 (line 268) 4299* $cti_name testmode: Architecture and Core Commands. 4300 (line 279) 4301* $cti_name write: Architecture and Core Commands. 4302 (line 265) 4303* $dap_name apcsw: TAP Declaration. (line 450) 4304* $dap_name apid: TAP Declaration. (line 417) 4305* $dap_name apreg: TAP Declaration. (line 421) 4306* $dap_name apsel: TAP Declaration. (line 426) 4307* $dap_name baseaddr: TAP Declaration. (line 441) 4308* $dap_name dpreg: TAP Declaration. (line 429) 4309* $dap_name info: TAP Declaration. (line 413) 4310* $dap_name memaccess: TAP Declaration. (line 445) 4311* $dap_name ti_be_32_quirks: TAP Declaration. (line 485) 4312* $target_name arp_examine: CPU Configuration. (line 324) 4313* $target_name arp_halt: CPU Configuration. (line 325) 4314* $target_name arp_poll: CPU Configuration. (line 326) 4315* $target_name arp_reset: CPU Configuration. (line 327) 4316* $target_name arp_waitstate: CPU Configuration. (line 328) 4317* $target_name array2mem: CPU Configuration. (line 333) 4318* $target_name catch_exc: Architecture and Core Commands. 4319 (line 925) 4320* $target_name cget: CPU Configuration. (line 351) 4321* $target_name configure: CPU Configuration. (line 213) 4322* $target_name curstate: CPU Configuration. (line 374) 4323* $target_name eventlist: CPU Configuration. (line 379) 4324* $target_name invoke-event: CPU Configuration. (line 383) 4325* $target_name mdb: CPU Configuration. (line 391) 4326* $target_name mdd: CPU Configuration. (line 388) 4327* $target_name mdh: CPU Configuration. (line 390) 4328* $target_name mdw: CPU Configuration. (line 389) 4329* $target_name mem2array: CPU Configuration. (line 334) 4330* $target_name mwb: CPU Configuration. (line 404) 4331* $target_name mwd: CPU Configuration. (line 401) 4332* $target_name mwh: CPU Configuration. (line 403) 4333* $target_name mww: CPU Configuration. (line 402) 4334* aarch64 cache_info: Architecture and Core Commands. 4335 (line 896) 4336* aarch64 dbginit: Architecture and Core Commands. 4337 (line 899) 4338* aarch64 disassemble: Architecture and Core Commands. 4339 (line 908) 4340* aarch64 maskisr: Architecture and Core Commands. 4341 (line 921) 4342* aarch64 smp: Architecture and Core Commands. 4343 (line 912) 4344* adapter: Debug Adapter Configuration. 4345 (line 990) 4346* adapter <1>: Reset Configuration. 4347 (line 121) 4348* adapter <2>: Reset Configuration. 4349 (line 126) 4350* adapter assert: General Commands. (line 202) 4351* adapter deassert: General Commands. (line 203) 4352* adapter driver: Debug Adapter Configuration. 4353 (line 43) 4354* adapter list: Debug Adapter Configuration. 4355 (line 46) 4356* adapter name: Debug Adapter Configuration. 4357 (line 55) 4358* adapter transports: Debug Adapter Configuration. 4359 (line 49) 4360* adapter usb location: Debug Adapter Configuration. 4361 (line 58) 4362* addreg: Architecture and Core Commands. 4363 (line 1169) 4364* add_script_search_dir: General Commands. (line 85) 4365* aduc702x: Flash Commands. (line 598) 4366* ambiqmicro: Flash Commands. (line 607) 4367* ambiqmicro mass_erase: Flash Commands. (line 635) 4368* ambiqmicro page_erase: Flash Commands. (line 637) 4369* ambiqmicro program_otp: Flash Commands. (line 639) 4370* amt_jtagaccel: Debug Adapter Configuration. 4371 (line 75) 4372* append_file: General Commands. (line 235) 4373* arc add-reg: Architecture and Core Commands. 4374 (line 1347) 4375* arc add-reg-type-flags: Architecture and Core Commands. 4376 (line 1401) 4377* arc add-reg-type-struct: Architecture and Core Commands. 4378 (line 1406) 4379* arc get-reg-field: Architecture and Core Commands. 4380 (line 1412) 4381* arc jtag get-aux-reg: Architecture and Core Commands. 4382 (line 1434) 4383* arc jtag get-core-reg: Architecture and Core Commands. 4384 (line 1440) 4385* arc jtag set-aux-reg: Architecture and Core Commands. 4386 (line 1424) 4387* arc jtag set-core-reg: Architecture and Core Commands. 4388 (line 1430) 4389* arc set-reg-exists: Architecture and Core Commands. 4390 (line 1417) 4391* arm core_state: Architecture and Core Commands. 4392 (line 294) 4393* arm disassemble: Architecture and Core Commands. 4394 (line 300) 4395* arm mcr: Architecture and Core Commands. 4396 (line 314) 4397* arm mrc: Architecture and Core Commands. 4398 (line 320) 4399* arm reg: Architecture and Core Commands. 4400 (line 326) 4401* arm semihosting: Architecture and Core Commands. 4402 (line 330) 4403* arm semihosting_cmdline: Architecture and Core Commands. 4404 (line 341) 4405* arm semihosting_fileio: Architecture and Core Commands. 4406 (line 352) 4407* arm semihosting_resexit: Architecture and Core Commands. 4408 (line 361) 4409* arm-jtag-ew: Debug Adapter Configuration. 4410 (line 88) 4411* arm11 memwrite burst: Architecture and Core Commands. 4412 (line 672) 4413* arm11 memwrite error_fatal: Architecture and Core Commands. 4414 (line 682) 4415* arm11 step_irq_enable: Architecture and Core Commands. 4416 (line 688) 4417* arm11 vcr: Architecture and Core Commands. 4418 (line 693) 4419* arm720t cp15: Architecture and Core Commands. 4420 (line 435) 4421* arm7_9 dbgrq: Architecture and Core Commands. 4422 (line 397) 4423* arm7_9 dcc_downloads: Architecture and Core Commands. 4424 (line 407) 4425* arm7_9 fast_memory_access: Architecture and Core Commands. 4426 (line 418) 4427* arm9 vector_catch: Architecture and Core Commands. 4428 (line 450) 4429* arm920t cache_info: Architecture and Core Commands. 4430 (line 471) 4431* arm920t cp15: Architecture and Core Commands. 4432 (line 476) 4433* arm920t cp15i: Architecture and Core Commands. 4434 (line 482) 4435* arm920t read_cache: Architecture and Core Commands. 4436 (line 492) 4437* arm920t read_mmu: Architecture and Core Commands. 4438 (line 495) 4439* arm926ejs cache_info: Architecture and Core Commands. 4440 (line 509) 4441* arm966e cp15: Architecture and Core Commands. 4442 (line 519) 4443* armjtagew_info: Debug Adapter Configuration. 4444 (line 92) 4445* at91rm9200: Debug Adapter Configuration. 4446 (line 95) 4447* at91sam3: Flash Commands. (line 723) 4448* at91sam3 gpnvm: Flash Commands. (line 755) 4449* at91sam3 gpnvm clear: Flash Commands. (line 756) 4450* at91sam3 gpnvm set: Flash Commands. (line 757) 4451* at91sam3 gpnvm show: Flash Commands. (line 758) 4452* at91sam3 info: Flash Commands. (line 764) 4453* at91sam3 slowclk: Flash Commands. (line 774) 4454* at91sam4: Flash Commands. (line 778) 4455* at91sam4l: Flash Commands. (line 783) 4456* at91sam4l smap_reset_deassert: Flash Commands. (line 789) 4457* at91sam7: Flash Commands. (line 852) 4458* at91sam7 gpnvm: Flash Commands. (line 885) 4459* at91sam9: Flash Commands. (line 2298) 4460* at91sam9 ale: Flash Commands. (line 2312) 4461* at91sam9 ce: Flash Commands. (line 2323) 4462* at91sam9 cle: Flash Commands. (line 2309) 4463* at91sam9 rdy_busy: Flash Commands. (line 2318) 4464* at91samd: Flash Commands. (line 645) 4465* at91samd bootloader: Flash Commands. (line 686) 4466* at91samd chip-erase: Flash Commands. (line 656) 4467* at91samd dsu_reset_deassert: Flash Commands. (line 698) 4468* at91samd eeprom: Flash Commands. (line 672) 4469* at91samd nvmuserrow: Flash Commands. (line 703) 4470* at91samd set-security: Flash Commands. (line 661) 4471* ath79: Flash Commands. (line 556) 4472* atsame5: Flash Commands. (line 794) 4473* atsame5 bootloader: Flash Commands. (line 805) 4474* atsame5 chip-erase: Flash Commands. (line 817) 4475* atsame5 dsu_reset_deassert: Flash Commands. (line 822) 4476* atsame5 userpage: Flash Commands. (line 827) 4477* atsamv: Flash Commands. (line 847) 4478* avr: Flash Commands. (line 893) 4479* bcm2835gpio: Debug Adapter Configuration. 4480 (line 799) 4481* bindto: General Commands. (line 88) 4482* bluenrg-x: Flash Commands. (line 897) 4483* bp: General Commands. (line 370) 4484* cache_config l2x: Architecture and Core Commands. 4485 (line 731) 4486* cat: General Commands. (line 240) 4487* cc26xx: Flash Commands. (line 915) 4488* cc3220sf: Flash Commands. (line 925) 4489* cfi: Flash Commands. (line 293) 4490* cmsis-dap: Debug Adapter Configuration. 4491 (line 99) 4492* cmsis-dap info: Debug Adapter Configuration. 4493 (line 129) 4494* cmsis_dap_backend: Debug Adapter Configuration. 4495 (line 114) 4496* cmsis_dap_serial: Debug Adapter Configuration. 4497 (line 110) 4498* cmsis_dap_usb interface: Debug Adapter Configuration. 4499 (line 123) 4500* cmsis_dap_vid_pid: Debug Adapter Configuration. 4501 (line 103) 4502* cortex_a cache_info: Architecture and Core Commands. 4503 (line 709) 4504* cortex_a dacrfixup [on|off]: Architecture and Core Commands. 4505 (line 712) 4506* cortex_a dbginit: Architecture and Core Commands. 4507 (line 718) 4508* cortex_a maskisr: Architecture and Core Commands. 4509 (line 728) 4510* cortex_a mmu dump: Architecture and Core Commands. 4511 (line 734) 4512* cortex_a smp: Architecture and Core Commands. 4513 (line 722) 4514* cortex_a smp_gdb: Architecture and Core Commands. 4515 (line 725) 4516* cortex_m maskisr: Architecture and Core Commands. 4517 (line 837) 4518* cortex_m reset_config: Architecture and Core Commands. 4519 (line 877) 4520* cortex_m vector_catch: Architecture and Core Commands. 4521 (line 861) 4522* cortex_r dbginit: Architecture and Core Commands. 4523 (line 744) 4524* cortex_r maskisr: Architecture and Core Commands. 4525 (line 748) 4526* cp: General Commands. (line 243) 4527* cti create: Architecture and Core Commands. 4528 (line 251) 4529* cti names: Architecture and Core Commands. 4530 (line 283) 4531* dap create: TAP Declaration. (line 382) 4532* dap info: TAP Declaration. (line 402) 4533* dap init: TAP Declaration. (line 406) 4534* dap names: TAP Declaration. (line 398) 4535* davinci: Flash Commands. (line 2329) 4536* debug_level: General Commands. (line 66) 4537* drscan: JTAG Commands. (line 42) 4538* dummy: Debug Adapter Configuration. 4539 (line 133) 4540* dummy <1>: Architecture and Core Commands. 4541 (line 190) 4542* dump_image: General Commands. (line 312) 4543* du_select: Architecture and Core Commands. 4544 (line 1156) 4545* echo: General Commands. (line 76) 4546* efm32: Flash Commands. (line 937) 4547* ep93xx: Debug Adapter Configuration. 4548 (line 136) 4549* esirisc: Flash Commands. (line 953) 4550* esirisc cache_arch: Architecture and Core Commands. 4551 (line 944) 4552* esirisc flash mass_erase: Flash Commands. (line 964) 4553* esirisc flash ref_erase: Flash Commands. (line 968) 4554* esirisc flush_caches: Architecture and Core Commands. 4555 (line 958) 4556* esirisc hwdc: Architecture and Core Commands. 4557 (line 949) 4558* esirisc trace analyze: Architecture and Core Commands. 4559 (line 1086) 4560* esirisc trace buffer: Architecture and Core Commands. 4561 (line 988) 4562* esirisc trace dump: Architecture and Core Commands. 4563 (line 1092) 4564* esirisc trace fifo: Architecture and Core Commands. 4565 (line 993) 4566* esirisc trace flow_control: Architecture and Core Commands. 4567 (line 996) 4568* esirisc trace format: Architecture and Core Commands. 4569 (line 1000) 4570* esirisc trace info: Architecture and Core Commands. 4571 (line 1074) 4572* esirisc trace init: Architecture and Core Commands. 4573 (line 1069) 4574* esirisc trace start: Architecture and Core Commands. 4575 (line 1080) 4576* esirisc trace status: Architecture and Core Commands. 4577 (line 1077) 4578* esirisc trace stop: Architecture and Core Commands. 4579 (line 1083) 4580* esirisc trace trigger delay: Architecture and Core Commands. 4581 (line 1056) 4582* esirisc trace trigger start: Architecture and Core Commands. 4583 (line 1013) 4584* esirisc trace trigger stop: Architecture and Core Commands. 4585 (line 1036) 4586* etb: Architecture and Core Commands. 4587 (line 198) 4588* etb config: Architecture and Core Commands. 4589 (line 201) 4590* etb trigger_percent: Architecture and Core Commands. 4591 (line 204) 4592* etm analyze: Architecture and Core Commands. 4593 (line 166) 4594* etm config: Architecture and Core Commands. 4595 (line 63) 4596* etm dump: Architecture and Core Commands. 4597 (line 170) 4598* etm image: Architecture and Core Commands. 4599 (line 173) 4600* etm info: Architecture and Core Commands. 4601 (line 89) 4602* etm load: Architecture and Core Commands. 4603 (line 176) 4604* etm start: Architecture and Core Commands. 4605 (line 179) 4606* etm status: Architecture and Core Commands. 4607 (line 95) 4608* etm stop: Architecture and Core Commands. 4609 (line 182) 4610* etm tracemode: Architecture and Core Commands. 4611 (line 100) 4612* etm trigger_debug: Architecture and Core Commands. 4613 (line 119) 4614* etm_dummy config: Architecture and Core Commands. 4615 (line 195) 4616* exit: General Commands. (line 30) 4617* fast_load: General Commands. (line 316) 4618* fast_load_image: General Commands. (line 320) 4619* fespi: Flash Commands. (line 589) 4620* flash bank: Flash Commands. (line 36) 4621* flash banks: Flash Commands. (line 67) 4622* flash erase_address: Flash Commands. (line 135) 4623* flash erase_check: Flash Commands. (line 230) 4624* flash erase_sector: Flash Commands. (line 129) 4625* flash fillb: Flash Commands. (line 149) 4626* flash filld: Flash Commands. (line 146) 4627* flash fillh: Flash Commands. (line 148) 4628* flash fillw: Flash Commands. (line 147) 4629* flash info: Flash Commands. (line 234) 4630* flash list: Flash Commands. (line 72) 4631* flash mdb: Flash Commands. (line 162) 4632* flash mdh: Flash Commands. (line 161) 4633* flash mdw: Flash Commands. (line 160) 4634* flash padded_value: Flash Commands. (line 252) 4635* flash probe: Flash Commands. (line 77) 4636* flash protect: Flash Commands. (line 242) 4637* flash read_bank: Flash Commands. (line 176) 4638* flash verify_bank: Flash Commands. (line 183) 4639* flash verify_image: Flash Commands. (line 217) 4640* flash write_bank: Flash Commands. (line 170) 4641* flash write_image: Flash Commands. (line 189) 4642* flush_count: JTAG Commands. (line 70) 4643* fm3: Flash Commands. (line 972) 4644* fm4: Flash Commands. (line 981) 4645* ft232r: Debug Adapter Configuration. 4646 (line 290) 4647* ft232r_jtag_nums: Debug Adapter Configuration. 4648 (line 336) 4649* ft232r_restore_serial: Debug Adapter Configuration. 4650 (line 364) 4651* ft232r_serial_desc: Debug Adapter Configuration. 4652 (line 330) 4653* ft232r_srst_num: Debug Adapter Configuration. 4654 (line 360) 4655* ft232r_tck_num: Debug Adapter Configuration. 4656 (line 340) 4657* ft232r_tdi_num: Debug Adapter Configuration. 4658 (line 348) 4659* ft232r_tdo_num: Debug Adapter Configuration. 4660 (line 352) 4661* ft232r_tms_num: Debug Adapter Configuration. 4662 (line 344) 4663* ft232r_trst_num: Debug Adapter Configuration. 4664 (line 356) 4665* ft232r_vid_pid: Debug Adapter Configuration. 4666 (line 326) 4667* ftdi: Debug Adapter Configuration. 4668 (line 140) 4669* ftdi_channel: Debug Adapter Configuration. 4670 (line 214) 4671* ftdi_device_desc: Debug Adapter Configuration. 4672 (line 187) 4673* ftdi_get_signal: Debug Adapter Configuration. 4674 (line 271) 4675* ftdi_layout_init: Debug Adapter Configuration. 4676 (line 219) 4677* ftdi_layout_signal: Debug Adapter Configuration. 4678 (line 229) 4679* ftdi_location: Debug Adapter Configuration. 4680 (line 200) 4681* ftdi_serial: Debug Adapter Configuration. 4682 (line 192) 4683* ftdi_set_signal: Debug Adapter Configuration. 4684 (line 265) 4685* ftdi_tdo_sample_edge: Debug Adapter Configuration. 4686 (line 274) 4687* ftdi_vid_pid: Debug Adapter Configuration. 4688 (line 182) 4689* gdb_breakpoint_override: Server Configuration. 4690 (line 147) 4691* gdb_flash_program: Server Configuration. 4692 (line 154) 4693* gdb_memory_map: Server Configuration. 4694 (line 158) 4695* gdb_port: Server Configuration. 4696 (line 90) 4697* gdb_report_data_abort: Server Configuration. 4698 (line 166) 4699* gdb_report_register_access_error: Server Configuration. 4700 (line 171) 4701* gdb_save_tdesc: Server Configuration. 4702 (line 182) 4703* gdb_target_description: Server Configuration. 4704 (line 177) 4705* gw16012: Debug Adapter Configuration. 4706 (line 444) 4707* halt: General Commands. (line 137) 4708* help: General Commands. (line 33) 4709* hla: Debug Adapter Configuration. 4710 (line 694) 4711* hla_command: Debug Adapter Configuration. 4712 (line 718) 4713* hla_device_desc: Debug Adapter Configuration. 4714 (line 706) 4715* hla_layout: Debug Adapter Configuration. 4716 (line 712) 4717* hla_serial: Debug Adapter Configuration. 4718 (line 709) 4719* hla_vid_pid: Debug Adapter Configuration. 4720 (line 715) 4721* imx_gpio: Debug Adapter Configuration. 4722 (line 813) 4723* init: Server Configuration. 4724 (line 47) 4725* init_reset: Reset Configuration. 4726 (line 258) 4727* ip: General Commands. (line 246) 4728* irscan: JTAG Commands. (line 81) 4729* itm port: Architecture and Core Commands. 4730 (line 827) 4731* itm ports: Architecture and Core Commands. 4732 (line 831) 4733* jlink: Debug Adapter Configuration. 4734 (line 454) 4735* jlink config: Debug Adapter Configuration. 4736 (line 479) 4737* jlink config ip: Debug Adapter Configuration. 4738 (line 487) 4739* jlink config mac: Debug Adapter Configuration. 4740 (line 484) 4741* jlink config reset: Debug Adapter Configuration. 4742 (line 495) 4743* jlink config targetpower: Debug Adapter Configuration. 4744 (line 481) 4745* jlink config usb: Debug Adapter Configuration. 4746 (line 491) 4747* jlink config write: Debug Adapter Configuration. 4748 (line 497) 4749* jlink emucom read <channel> <length>: Debug Adapter Configuration. 4750 (line 507) 4751* jlink emucom write <channel> <data>: Debug Adapter Configuration. 4752 (line 500) 4753* jlink freemem: Debug Adapter Configuration. 4754 (line 474) 4755* jlink hwstatus: Debug Adapter Configuration. 4756 (line 471) 4757* jlink jtag: Debug Adapter Configuration. 4758 (line 476) 4759* jlink serial: Debug Adapter Configuration. 4760 (line 523) 4761* jlink usb: Debug Adapter Configuration. 4762 (line 515) 4763* jtag arp_init: Reset Configuration. 4764 (line 276) 4765* jtag arp_init-reset: Reset Configuration. 4766 (line 286) 4767* jtag cget: TAP Declaration. (line 200) 4768* jtag cget <1>: TAP Declaration. (line 203) 4769* jtag configure: TAP Declaration. (line 204) 4770* jtag names: TAP Declaration. (line 81) 4771* jtag newtap: TAP Declaration. (line 113) 4772* jtag tapdisable: TAP Declaration. (line 298) 4773* jtag tapenable: TAP Declaration. (line 303) 4774* jtag tapisenabled: TAP Declaration. (line 308) 4775* jtagspi: Flash Commands. (line 328) 4776* jtag_dpi: Debug Adapter Configuration. 4777 (line 852) 4778* jtag_dpi_set_address: Debug Adapter Configuration. 4779 (line 861) 4780* jtag_dpi_set_port: Debug Adapter Configuration. 4781 (line 857) 4782* jtag_init: Server Configuration. 4783 (line 65) 4784* jtag_ntrst_assert_width: Reset Configuration. 4785 (line 133) 4786* jtag_ntrst_delay: Reset Configuration. 4787 (line 138) 4788* jtag_rclk: Debug Adapter Configuration. 4789 (line 1006) 4790* kinetis: Flash Commands. (line 997) 4791* kinetis create_banks: Flash Commands. (line 1012) 4792* kinetis disable_wdog: Flash Commands. (line 1080) 4793* kinetis fcf_source: Flash Commands. (line 1018) 4794* kinetis fopt: Flash Commands. (line 1030) 4795* kinetis mdm check_security: Flash Commands. (line 1034) 4796* kinetis mdm halt: Flash Commands. (line 1038) 4797* kinetis mdm mass_erase: Flash Commands. (line 1043) 4798* kinetis mdm reset: Flash Commands. (line 1075) 4799* kinetis nvm_partition: Flash Commands. (line 1050) 4800* kinetis_ke: Flash Commands. (line 1084) 4801* kinetis_ke disable_wdog: Flash Commands. (line 1103) 4802* kinetis_ke mdm check_security: Flash Commands. (line 1093) 4803* kinetis_ke mdm mass_erase: Flash Commands. (line 1097) 4804* kitprog: Debug Adapter Configuration. 4805 (line 530) 4806* kitprog acquire_psoc: Debug Adapter Configuration. 4807 (line 575) 4808* kitprog info: Debug Adapter Configuration. 4809 (line 582) 4810* kitprog_init_acquire_psoc: Debug Adapter Configuration. 4811 (line 566) 4812* kitprog_serial: Debug Adapter Configuration. 4813 (line 571) 4814* linuxgpiod: Debug Adapter Configuration. 4815 (line 821) 4816* load_image: General Commands. (line 331) 4817* log_output: General Commands. (line 81) 4818* lpc2000: Flash Commands. (line 1106) 4819* lpc2000 part_id: Flash Commands. (line 1147) 4820* lpc288x: Flash Commands. (line 1151) 4821* lpc2900: Flash Commands. (line 1159) 4822* lpc2900 password: Flash Commands. (line 1215) 4823* lpc2900 read_custom: Flash Commands. (line 1204) 4824* lpc2900 secure_jtag: Flash Commands. (line 1250) 4825* lpc2900 secure_sector: Flash Commands. (line 1236) 4826* lpc2900 signature: Flash Commands. (line 1195) 4827* lpc2900 write_custom: Flash Commands. (line 1225) 4828* lpc3180: Flash Commands. (line 2342) 4829* lpc3180 select: Flash Commands. (line 2345) 4830* lpcspifi: Flash Commands. (line 398) 4831* ls: General Commands. (line 249) 4832* mac: General Commands. (line 252) 4833* mdb: General Commands. (line 287) 4834* mdd: General Commands. (line 284) 4835* mdh: General Commands. (line 286) 4836* mdr: Flash Commands. (line 1257) 4837* mdw: General Commands. (line 285) 4838* meminfo: General Commands. (line 255) 4839* memTestAddressBus: Utility Commands. (line 29) 4840* memTestDataBus: Utility Commands. (line 25) 4841* memTestDevice: Utility Commands. (line 34) 4842* mrvlqspi: Flash Commands. (line 547) 4843* msp432: Flash Commands. (line 1278) 4844* msp432 bsl: Flash Commands. (line 1297) 4845* msp432 mass_erase: Flash Commands. (line 1288) 4846* mwb: General Commands. (line 300) 4847* mwd: General Commands. (line 297) 4848* mwh: General Commands. (line 299) 4849* mww: General Commands. (line 298) 4850* mx3: Flash Commands. (line 2355) 4851* mxc: Flash Commands. (line 2359) 4852* mxc biswap: Flash Commands. (line 2367) 4853* nand check_bad_blocks: Flash Commands. (line 2257) 4854* nand device: Flash Commands. (line 2089) 4855* nand dump: Flash Commands. (line 2132) 4856* nand erase: Flash Commands. (line 2165) 4857* nand info: Flash Commands. (line 2269) 4858* nand list: Flash Commands. (line 2112) 4859* nand probe: Flash Commands. (line 2122) 4860* nand raw_access: Flash Commands. (line 2274) 4861* nand verify: Flash Commands. (line 2231) 4862* nand write: Flash Commands. (line 2178) 4863* niietcm4: Flash Commands. (line 1309) 4864* niietcm4 bflash_info_remap: Flash Commands. (line 1349) 4865* niietcm4 driver_info: Flash Commands. (line 1362) 4866* niietcm4 extmem_cfg: Flash Commands. (line 1353) 4867* niietcm4 service_mode_erase: Flash Commands. (line 1358) 4868* niietcm4 uflash_erase: Flash Commands. (line 1336) 4869* niietcm4 uflash_full_erase: Flash Commands. (line 1333) 4870* niietcm4 uflash_protect: Flash Commands. (line 1344) 4871* niietcm4 uflash_protect_check: Flash Commands. (line 1341) 4872* niietcm4 uflash_read_byte: Flash Commands. (line 1326) 4873* niietcm4 uflash_write_byte: Flash Commands. (line 1329) 4874* nrf5: Flash Commands. (line 1365) 4875* nrf5 info: Flash Commands. (line 1381) 4876* nrf5 mass_erase: Flash Commands. (line 1375) 4877* ocl: Flash Commands. (line 1384) 4878* oocd_trace: Architecture and Core Commands. 4879 (line 222) 4880* oocd_trace config: Architecture and Core Commands. 4881 (line 231) 4882* oocd_trace resync: Architecture and Core Commands. 4883 (line 235) 4884* oocd_trace status: Architecture and Core Commands. 4885 (line 238) 4886* opendous: Debug Adapter Configuration. 4887 (line 742) 4888* openjtag: Debug Adapter Configuration. 4889 (line 834) 4890* openjtag_device_desc: Debug Adapter Configuration. 4891 (line 848) 4892* openjtag_variant: Debug Adapter Configuration. 4893 (line 838) 4894* orion: Flash Commands. (line 2371) 4895* parport: Debug Adapter Configuration. 4896 (line 586) 4897* parport_cable: Debug Adapter Configuration. 4898 (line 592) 4899* parport_port: Debug Adapter Configuration. 4900 (line 80) 4901* parport_port <1>: Debug Adapter Configuration. 4902 (line 448) 4903* parport_port <2>: Debug Adapter Configuration. 4904 (line 621) 4905* parport_toggling_time: Debug Adapter Configuration. 4906 (line 631) 4907* parport_write_on_exit: Debug Adapter Configuration. 4908 (line 665) 4909* pathmove: JTAG Commands. (line 98) 4910* peek: General Commands. (line 259) 4911* pic32mx: Flash Commands. (line 1395) 4912* pic32mx pgm_word: Flash Commands. (line 1403) 4913* pic32mx unlock: Flash Commands. (line 1406) 4914* pld device: PLD/FPGA Commands. (line 23) 4915* pld devices: PLD/FPGA Commands. (line 28) 4916* pld load: PLD/FPGA Commands. (line 31) 4917* poke: General Commands. (line 262) 4918* poll: Server Configuration. 4919 (line 222) 4920* power: Debug Adapter Configuration. 4921 (line 796) 4922* presto: Debug Adapter Configuration. 4923 (line 677) 4924* presto_serial: Debug Adapter Configuration. 4925 (line 679) 4926* profile: General Commands. (line 471) 4927* program: Flash Commands. (line 258) 4928* psoc4: Flash Commands. (line 1410) 4929* psoc4 flash_autoerase: Flash Commands. (line 1422) 4930* psoc4 mass_erase: Flash Commands. (line 1435) 4931* psoc5lp: Flash Commands. (line 1441) 4932* psoc5lp mass_erase: Flash Commands. (line 1460) 4933* psoc5lp_eeprom: Flash Commands. (line 1465) 4934* psoc5lp_nvl: Flash Commands. (line 1474) 4935* psoc6: Flash Commands. (line 1494) 4936* psoc6 mass_erase: Flash Commands. (line 1554) 4937* psoc6 reset_halt: Flash Commands. (line 1545) 4938* rbp: General Commands. (line 380) 4939* readgroup: Architecture and Core Commands. 4940 (line 1182) 4941* reg: General Commands. (line 103) 4942* remote_bitbang: Debug Adapter Configuration. 4943 (line 374) 4944* remote_bitbang_host: Debug Adapter Configuration. 4945 (line 386) 4946* remote_bitbang_port: Debug Adapter Configuration. 4947 (line 382) 4948* reset: General Commands. (line 176) 4949* reset halt: General Commands. (line 178) 4950* reset init: General Commands. (line 179) 4951* reset run: General Commands. (line 177) 4952* reset_config: Reset Configuration. 4953 (line 143) 4954* resume: General Commands. (line 167) 4955* riscv authdata_read: Architecture and Core Commands. 4956 (line 1305) 4957* riscv authdata_write: Architecture and Core Commands. 4958 (line 1308) 4959* riscv dmi_read: Architecture and Core Commands. 4960 (line 1317) 4961* riscv dmi_write: Architecture and Core Commands. 4962 (line 1320) 4963* riscv expose_csrs: Architecture and Core Commands. 4964 (line 1209) 4965* riscv expose_custom: Architecture and Core Commands. 4966 (line 1218) 4967* riscv resume_order: Architecture and Core Commands. 4968 (line 1254) 4969* riscv set_command_timeout_sec: Architecture and Core Commands. 4970 (line 1226) 4971* riscv set_ebreakm: Architecture and Core Commands. 4972 (line 1281) 4973* riscv set_ebreaks: Architecture and Core Commands. 4974 (line 1286) 4975* riscv set_ebreaku: Architecture and Core Commands. 4976 (line 1291) 4977* riscv set_enable_virt2phys: Architecture and Core Commands. 4978 (line 1249) 4979* riscv set_enable_virtual: Architecture and Core Commands. 4980 (line 1244) 4981* riscv set_ir: Architecture and Core Commands. 4982 (line 1266) 4983* riscv set_prefer_sba: Architecture and Core Commands. 4984 (line 1240) 4985* riscv set_reset_timeout_sec: Architecture and Core Commands. 4986 (line 1231) 4987* riscv set_scratch_ram: Architecture and Core Commands. 4988 (line 1235) 4989* riscv use_bscan_tunnel: Architecture and Core Commands. 4990 (line 1276) 4991* rlink: Debug Adapter Configuration. 4992 (line 682) 4993* rm: General Commands. (line 265) 4994* rtck: Debug Adapter Configuration. 4995 (line 84) 4996* rtt channellist: General Commands. (line 444) 4997* rtt channels: General Commands. (line 441) 4998* rtt polling_interval [interval]: General Commands. (line 436) 4999* rtt server start: General Commands. (line 448) 5000* rtt server stop: General Commands. (line 451) 5001* rtt setup: General Commands. (line 423) 5002* rtt start: General Commands. (line 429) 5003* rtt stop: General Commands. (line 433) 5004* runAllMemTests: Utility Commands. (line 39) 5005* runtest: JTAG Commands. (line 106) 5006* rwp: General Commands. (line 383) 5007* s3c2410: Flash Commands. (line 2379) 5008* s3c2412: Flash Commands. (line 2380) 5009* s3c2440: Flash Commands. (line 2381) 5010* s3c2443: Flash Commands. (line 2382) 5011* s3c6400: Flash Commands. (line 2383) 5012* scan_chain: TAP Declaration. (line 89) 5013* shutdown: General Commands. (line 49) 5014* sim3x: Flash Commands. (line 1559) 5015* sim3x lock: Flash Commands. (line 1575) 5016* sim3x mass_erase: Flash Commands. (line 1570) 5017* sleep: General Commands. (line 43) 5018* soft_reset_halt: General Commands. (line 194) 5019* st-link: Debug Adapter Configuration. 5020 (line 722) 5021* st-link serial: Debug Adapter Configuration. 5022 (line 736) 5023* st-link vid_pid: Debug Adapter Configuration. 5024 (line 739) 5025* stellaris: Flash Commands. (line 1578) 5026* stellaris recover: Flash Commands. (line 1586) 5027* step: General Commands. (line 172) 5028* stm32f1x: Flash Commands. (line 1599) 5029* stm32f1x lock: Flash Commands. (line 1620) 5030* stm32f1x mass_erase: Flash Commands. (line 1630) 5031* stm32f1x options_load: Flash Commands. (line 1647) 5032* stm32f1x options_read: Flash Commands. (line 1634) 5033* stm32f1x options_write: Flash Commands. (line 1639) 5034* stm32f1x unlock: Flash Commands. (line 1624) 5035* stm32f2x: Flash Commands. (line 1654) 5036* stm32f2x lock: Flash Commands. (line 1679) 5037* stm32f2x mass_erase: Flash Commands. (line 1687) 5038* stm32f2x optcr2_write: Flash Commands. (line 1705) 5039* stm32f2x options_read: Flash Commands. (line 1691) 5040* stm32f2x options_write: Flash Commands. (line 1696) 5041* stm32f2x otp: Flash Commands. (line 1667) 5042* stm32f2x unlock: Flash Commands. (line 1683) 5043* stm32h7x: Flash Commands. (line 1710) 5044* stm32h7x lock: Flash Commands. (line 1726) 5045* stm32h7x mass_erase: Flash Commands. (line 1734) 5046* stm32h7x option_read: Flash Commands. (line 1738) 5047* stm32h7x option_write: Flash Commands. (line 1753) 5048* stm32h7x unlock: Flash Commands. (line 1730) 5049* stm32l4x: Flash Commands. (line 1798) 5050* stm32l4x lock: Flash Commands. (line 1817) 5051* stm32l4x mass_erase: Flash Commands. (line 1825) 5052* stm32l4x option_load: Flash Commands. (line 1859) 5053* stm32l4x option_read: Flash Commands. (line 1829) 5054* stm32l4x option_write: Flash Commands. (line 1844) 5055* stm32l4x unlock: Flash Commands. (line 1821) 5056* stm32lx: Flash Commands. (line 1765) 5057* stm32lx lock: Flash Commands. (line 1784) 5058* stm32lx mass_erase: Flash Commands. (line 1792) 5059* stm32lx unlock: Flash Commands. (line 1788) 5060* stmqspi: Flash Commands. (line 435) 5061* stmqspi cmd: Flash Commands. (line 517) 5062* stmqspi mass_erase: Flash Commands. (line 496) 5063* stmqspi set: Flash Commands. (line 500) 5064* stmsmi: Flash Commands. (line 415) 5065* str7x: Flash Commands. (line 1864) 5066* str7x disable_jtag: Flash Commands. (line 1873) 5067* str9x: Flash Commands. (line 1877) 5068* str9x flash_config: Flash Commands. (line 1886) 5069* str9xpec: Flash Commands. (line 1895) 5070* str9xpec disable_turbo: Flash Commands. (line 1938) 5071* str9xpec enable_turbo: Flash Commands. (line 1941) 5072* str9xpec lock: Flash Commands. (line 1945) 5073* str9xpec options_cmap: Flash Commands. (line 1952) 5074* str9xpec options_lvdsel: Flash Commands. (line 1955) 5075* str9xpec options_lvdthd: Flash Commands. (line 1958) 5076* str9xpec options_lvdwarn: Flash Commands. (line 1961) 5077* str9xpec options_read: Flash Commands. (line 1964) 5078* str9xpec options_write: Flash Commands. (line 1967) 5079* str9xpec part_id: Flash Commands. (line 1949) 5080* str9xpec unlock: Flash Commands. (line 1970) 5081* svf: Boundary Scan Commands. 5082 (line 17) 5083* swd newdap: Debug Adapter Configuration. 5084 (line 921) 5085* swd wcr trn prescale: Debug Adapter Configuration. 5086 (line 924) 5087* swm050: Flash Commands. (line 1973) 5088* swm050 mass_erase: Flash Commands. (line 1981) 5089* sysfsgpio: Debug Adapter Configuration. 5090 (line 828) 5091* tap_select: Architecture and Core Commands. 5092 (line 1153) 5093* target create: CPU Configuration. (line 190) 5094* target current: CPU Configuration. (line 37) 5095* target names: CPU Configuration. (line 40) 5096* target types: CPU Configuration. (line 71) 5097* targets: CPU Configuration. (line 46) 5098* target_request debugmsgs: Architecture and Core Commands. 5099 (line 1495) 5100* tcl_notifications: Tcl Scripting API. (line 124) 5101* tcl_port: Server Configuration. 5102 (line 124) 5103* tcl_trace: Tcl Scripting API. (line 139) 5104* telnet_port: Server Configuration. 5105 (line 132) 5106* test_image: General Commands. (line 346) 5107* tms470: Flash Commands. (line 1984) 5108* tms470 flash_keyset: Flash Commands. (line 1991) 5109* tms470 osc_mhz: Flash Commands. (line 1995) 5110* tms470 plldis: Flash Commands. (line 1998) 5111* tpiu config: Architecture and Core Commands. 5112 (line 754) 5113* trace history: Architecture and Core Commands. 5114 (line 1505) 5115* trace point: Architecture and Core Commands. 5116 (line 1511) 5117* transport list: Debug Adapter Configuration. 5118 (line 871) 5119* transport select: Debug Adapter Configuration. 5120 (line 875) 5121* trunc: General Commands. (line 268) 5122* ulink: Debug Adapter Configuration. 5123 (line 745) 5124* usbprog: Debug Adapter Configuration. 5125 (line 685) 5126* usb_blaster: Debug Adapter Configuration. 5127 (line 405) 5128* usb_blaster_device_desc: Debug Adapter Configuration. 5129 (line 411) 5130* usb_blaster_firmware: Debug Adapter Configuration. 5131 (line 440) 5132* usb_blaster_lowlevel_driver: Debug Adapter Configuration. 5133 (line 435) 5134* usb_blaster_pin: Debug Adapter Configuration. 5135 (line 425) 5136* usb_blaster_vid_pid: Debug Adapter Configuration. 5137 (line 417) 5138* verify_image: General Commands. (line 352) 5139* verify_image_checksum: General Commands. (line 358) 5140* verify_ircapture: JTAG Commands. (line 111) 5141* verify_jtag: JTAG Commands. (line 117) 5142* version: General Commands. (line 477) 5143* virt2phys: General Commands. (line 480) 5144* virtex2: PLD/FPGA Commands. (line 42) 5145* virtex2 read_stat: PLD/FPGA Commands. (line 50) 5146* virtual: Flash Commands. (line 271) 5147* vsllink: Debug Adapter Configuration. 5148 (line 688) 5149* w600: Flash Commands. (line 2002) 5150* wait_halt: General Commands. (line 138) 5151* wp: General Commands. (line 386) 5152* x86_32 idb: Architecture and Core Commands. 5153 (line 1128) 5154* x86_32 idh: Architecture and Core Commands. 5155 (line 1124) 5156* x86_32 idw: Architecture and Core Commands. 5157 (line 1120) 5158* x86_32 iwb: Architecture and Core Commands. 5159 (line 1140) 5160* x86_32 iwh: Architecture and Core Commands. 5161 (line 1136) 5162* x86_32 iww: Architecture and Core Commands. 5163 (line 1132) 5164* xcf: Flash Commands. (line 362) 5165* xcf ccb: Flash Commands. (line 370) 5166* xcf configure: Flash Commands. (line 386) 5167* xds110: Debug Adapter Configuration. 5168 (line 748) 5169* xds110 info: Debug Adapter Configuration. 5170 (line 765) 5171* xds110 serial: Debug Adapter Configuration. 5172 (line 755) 5173* xds110 supply: Debug Adapter Configuration. 5174 (line 759) 5175* xlnx_pcie_xvc: Debug Adapter Configuration. 5176 (line 769) 5177* xlnx_pcie_xvc_config: Debug Adapter Configuration. 5178 (line 780) 5179* xmc1xxx: Flash Commands. (line 2009) 5180* xmc4xxx: Flash Commands. (line 2014) 5181* xmc4xxx flash_password: Flash Commands. (line 2021) 5182* xmc4xxx flash_unprotect: Flash Commands. (line 2025) 5183* xscale analyze_trace: Architecture and Core Commands. 5184 (line 601) 5185* xscale cache_clean_address: Architecture and Core Commands. 5186 (line 604) 5187* xscale cache_info: Architecture and Core Commands. 5188 (line 607) 5189* xscale cp15: Architecture and Core Commands. 5190 (line 610) 5191* xscale dcache: Architecture and Core Commands. 5192 (line 617) 5193* xscale debug_handler: Architecture and Core Commands. 5194 (line 614) 5195* xscale dump_trace: Architecture and Core Commands. 5196 (line 620) 5197* xscale icache: Architecture and Core Commands. 5198 (line 623) 5199* xscale mmu: Architecture and Core Commands. 5200 (line 626) 5201* xscale trace_buffer: Architecture and Core Commands. 5202 (line 629) 5203* xscale trace_image: Architecture and Core Commands. 5204 (line 634) 5205* xscale vector_catch: Architecture and Core Commands. 5206 (line 640) 5207* xscale vector_table: Architecture and Core Commands. 5208 (line 655) 5209* xsvf: Boundary Scan Commands. 5210 (line 46) 5211* ZY1000: Debug Adapter Configuration. 5212 (line 790) 5213 5214