The user's guide you are now reading may not be the latest one
available. A version for more recent code may be available.
-Its HTML form is published irregularly at:
+Its HTML form is published regularly at:
@uref{http://openocd.sourceforge.net/doc/html/index.html}
@uref{http://forum.sparkfun.com/viewforum.php?f=18}
+@section OpenOCD User's Mailing List
+
+The OpenOCD User Mailing List provides the primary means of
+communication between users:
+
+@uref{https://lists.sourceforge.net/mailman/listinfo/openocd-user}
+
+@section OpenOCD IRC
+
+Support can also be found on irc:
+@uref{irc://irc.freenode.net/openocd}
@node Developers
@chapter OpenOCD Developer Resources
@itemize @bullet
@item @b{usbjtag}
-@* Link @url{http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html}
+@* Link @url{http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html}
@item @b{jtagkey}
@* See: @url{http://www.amontec.com/jtagkey.shtml}
@item @b{jtagkey2}
Stellaris eval boards, they can be used to debug other target boards.
@item @b{olimex-jtag}
@* See: @url{http://www.olimex.com}
-@item @b{flyswatter}
+@item @b{Flyswatter/Flyswatter2}
@* See: @url{http://www.tincantools.com}
@item @b{turtelizer2}
@* See:
@item @b{stm32stick}
@* Link @url{http://www.hitex.com/stm32-stick}
@item @b{axm0432_jtag}
-@* Axiom AXM-0432 Link @url{http://www.axman.com}
+@* Axiom AXM-0432 Link @url{http://www.axman.com} - NOTE: This JTAG does not appear
+to be available anymore as of April 2012.
@item @b{cortino}
@* Link @url{http://www.hitex.com/index.php?id=cortino}
@item @b{dlp-usb1232h}
@itemize
@item @b{USB-JTAG} Kolja Waschk's USB Blaster-compatible adapter
-@* Link: @url{http://www.ixo.de/info/usb_jtag/}
+@* Link: @url{http://ixo-jtag.sourceforge.net/}
@item @b{Altera USB-Blaster}
@* Link: @url{http://www.altera.com/literature/ug/ug_usb_blstr.pdf}
@end itemize
@itemize @bullet
@item @b{Raisonance RLink}
-@* Link: @url{http://www.raisonance.com/products/RLink.php}
+@* Link: @url{http://www.mcu-raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html}
@item @b{STM32 Primer}
@* Link: @url{http://www.stm32circle.com/resources/stm32primer.php}
@item @b{STM32 Primer2}
@section USB ST-LINK based
ST Micro has an adapter called @b{ST-LINK}.
-They only works with ST Micro chips, notably STM32 and STM8.
+They only work with ST Micro chips, notably STM32 and STM8.
@itemize @bullet
@item @b{ST-LINK}
For info the original ST-LINK enumerates using the mass storage usb class, however
it's implementation is completely broken. The result is this causes issues under linux.
-The simplest solution is to get linux to ignore the ST-LINK using one of the following method's:
+The simplest solution is to get linux to ignore the ST-LINK using one of the following methods:
@itemize @bullet
@item modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
@item add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf
@section USB Other
@itemize @bullet
@item @b{USBprog}
-@* Link: @url{http://www.embedded-projects.net/usbprog} - which uses an Atmel MEGA32 and a UBN9604
+@* Link: @url{http://shop.embedded-projects.net/} - which uses an Atmel MEGA32 and a UBN9604
@item @b{USB - Presto}
@* Link: @url{http://tools.asix.net/prg_presto.htm}
@item @b{Versaloon-Link}
-@* Link: @url{http://www.simonqian.com/en/Versaloon}
+@* Link: @url{http://www.versaloon.com}
@item @b{ARM-JTAG-EW}
@* Link: @url{http://www.olimex.com/dev/arm-jtag-ew.html}
@item @b{Buspirate}
@* Link: @url{http://dangerousprototypes.com/bus-pirate-manual/}
+
+@item @b{opendous}
+@* Link: @url{http://code.google.com/p/opendous-jtag/}
+
+@item @b{estick}
+@* Link: @url{http://code.google.com/p/estick-jtag/}
+
+@item @b{Keil ULINK v1}
+@* Link: @url{http://www.keil.com/ulink1/}
@end itemize
@section IBM PC Parallel Printer Port Based
The two well known ``JTAG Parallel Ports'' cables are the Xilnx DLC5
-and the MacGraigor Wiggler. There are many clones and variations of
+and the Macraigor Wiggler. There are many clones and variations of
these on the market.
Note that parallel ports are becoming much less common, so if you
@* Link: @url{http://www.gateworks.com/products/avila_accessories/gw16042.php}
@item @b{Wiggler2}
-@*@uref{http://www.ccac.rwth-aachen.de/@/~michaels/@/index.php/hardware/@/armjtag,
-Improved parallel-port wiggler-style JTAG adapter}
+@* Link: @url{http://www.ccac.rwth-aachen.de/~michaels/index.php/hardware/armjtag}
@item @b{Wiggler_ntrst_inverted}
@* Yet another variation - See the source code, src/jtag/parport.c
@item @b{flashlink}
@* From ST Microsystems;
-@uref{http://www.st.com/stonline/@/products/literature/um/7889.pdf,
-FlashLINK JTAG programing cable for PSD and uPSD}
+@* Link: @url{http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/DM00039500.pdf}
@end itemize
Files that configure JTAG adapters go here.
@example
$ ls interface
-arm-jtag-ew.cfg hitex_str9-comstick.cfg oocdlink.cfg
-arm-usb-ocd.cfg icebear.cfg openocd-usb.cfg
-at91rm9200.cfg jlink.cfg parport.cfg
-axm0432.cfg jtagkey2.cfg parport_dlc5.cfg
-calao-usb-a9260-c01.cfg jtagkey.cfg rlink.cfg
-calao-usb-a9260-c02.cfg jtagkey-tiny.cfg sheevaplug.cfg
-calao-usb-a9260.cfg luminary.cfg signalyzer.cfg
-chameleon.cfg luminary-icdi.cfg stm32-stick.cfg
-cortino.cfg luminary-lm3s811.cfg turtelizer2.cfg
-dummy.cfg olimex-arm-usb-ocd.cfg usbprog.cfg
-flyswatter.cfg olimex-jtag-tiny.cfg vsllink.cfg
+altera-usb-blaster.cfg hilscher_nxhx50_etm.cfg openrd.cfg
+arm-jtag-ew.cfg hilscher_nxhx50_re.cfg osbdm.cfg
+arm-usb-ocd.cfg hitex_str9-comstick.cfg parport.cfg
+at91rm9200.cfg icebear.cfg parport_dlc5.cfg
+axm0432.cfg jlink.cfg redbee-econotag.cfg
+busblaster.cfg jtagkey2.cfg redbee-usb.cfg
+buspirate.cfg jtagkey2p.cfg rlink.cfg
+calao-usb-a9260-c01.cfg jtagkey.cfg sheevaplug.cfg
+calao-usb-a9260-c02.cfg jtagkey-tiny.cfg signalyzer.cfg
+calao-usb-a9260.cfg kt-link.cfg signalyzer-h2.cfg
+chameleon.cfg lisa-l.cfg signalyzer-h4.cfg
+cortino.cfg luminary.cfg signalyzer-lite.cfg
+digilent-hs1.cfg luminary-icdi.cfg stlink-v1.cfg
+dlp-usb1232h.cfg luminary-lm3s811.cfg stlink-v2.cfg
+dummy.cfg minimodule.cfg stm32-stick.cfg
+estick.cfg neodb.cfg turtelizer2.cfg
+flashlink.cfg ngxtech.cfg ulink.cfg
+flossjtag.cfg olimex-arm-usb-ocd.cfg usb-jtag.cfg
+flossjtag-noeeprom.cfg olimex-arm-usb-ocd-h.cfg usbprog.cfg
+flyswatter2.cfg olimex-arm-usb-tiny-h.cfg vpaclink.cfg
+flyswatter.cfg olimex-jtag-tiny.cfg vsllink.cfg
+hilscher_nxhx10_etm.cfg oocdlink.cfg xds100v2.cfg
+hilscher_nxhx500_etm.cfg opendous.cfg
+hilscher_nxhx500_re.cfg openocd-usb.cfg
$
@end example
@item @file{board} ...
a CPU and an FPGA.
@example
$ ls board
-arm_evaluator7t.cfg keil_mcb1700.cfg
-at91rm9200-dk.cfg keil_mcb2140.cfg
-at91sam9g20-ek.cfg linksys_nslu2.cfg
-atmel_at91sam7s-ek.cfg logicpd_imx27.cfg
-atmel_at91sam9260-ek.cfg mini2440.cfg
-atmel_sam3u_ek.cfg olimex_LPC2378STK.cfg
-crossbow_tech_imote2.cfg olimex_lpc_h2148.cfg
-csb337.cfg olimex_sam7_ex256.cfg
-csb732.cfg olimex_sam9_l9260.cfg
-digi_connectcore_wi-9c.cfg olimex_stm32_h103.cfg
-dm355evm.cfg omap2420_h4.cfg
-dm365evm.cfg osk5912.cfg
-dm6446evm.cfg pic-p32mx.cfg
-eir.cfg propox_mmnet1001.cfg
-ek-lm3s1968.cfg pxa255_sst.cfg
-ek-lm3s3748.cfg sheevaplug.cfg
-ek-lm3s811.cfg stm3210e_eval.cfg
-ek-lm3s9b9x.cfg stm32f10x_128k_eval.cfg
-hammer.cfg str910-eval.cfg
-hitex_lpc2929.cfg telo.cfg
-hitex_stm32-performancestick.cfg ti_beagleboard.cfg
-hitex_str9-comstick.cfg topas910.cfg
-iar_str912_sk.cfg topasa900.cfg
-imx27ads.cfg unknown_at91sam9260.cfg
-imx27lnst.cfg x300t.cfg
-imx31pdk.cfg zy1000.cfg
+actux3.cfg logicpd_imx27.cfg
+am3517evm.cfg lubbock.cfg
+arm_evaluator7t.cfg mcb1700.cfg
+at91cap7a-stk-sdram.cfg microchip_explorer16.cfg
+at91eb40a.cfg mini2440.cfg
+at91rm9200-dk.cfg mini6410.cfg
+at91rm9200-ek.cfg olimex_LPC2378STK.cfg
+at91sam9261-ek.cfg olimex_lpc_h2148.cfg
+at91sam9263-ek.cfg olimex_sam7_ex256.cfg
+at91sam9g20-ek.cfg olimex_sam9_l9260.cfg
+atmel_at91sam7s-ek.cfg olimex_stm32_h103.cfg
+atmel_at91sam9260-ek.cfg olimex_stm32_h107.cfg
+atmel_at91sam9rl-ek.cfg olimex_stm32_p107.cfg
+atmel_sam3n_ek.cfg omap2420_h4.cfg
+atmel_sam3s_ek.cfg open-bldc.cfg
+atmel_sam3u_ek.cfg openrd.cfg
+atmel_sam3x_ek.cfg osk5912.cfg
+atmel_sam4s_ek.cfg phytec_lpc3250.cfg
+balloon3-cpu.cfg pic-p32mx.cfg
+colibri.cfg propox_mmnet1001.cfg
+crossbow_tech_imote2.cfg pxa255_sst.cfg
+csb337.cfg redbee.cfg
+csb732.cfg rsc-w910.cfg
+da850evm.cfg sheevaplug.cfg
+digi_connectcore_wi-9c.cfg smdk6410.cfg
+diolan_lpc4350-db1.cfg spear300evb.cfg
+dm355evm.cfg spear300evb_mod.cfg
+dm365evm.cfg spear310evb20.cfg
+dm6446evm.cfg spear310evb20_mod.cfg
+efikamx.cfg spear320cpu.cfg
+eir.cfg spear320cpu_mod.cfg
+ek-lm3s1968.cfg steval_pcc010.cfg
+ek-lm3s3748.cfg stm320518_eval_stlink.cfg
+ek-lm3s6965.cfg stm32100b_eval.cfg
+ek-lm3s811.cfg stm3210b_eval.cfg
+ek-lm3s811-revb.cfg stm3210c_eval.cfg
+ek-lm3s9b9x.cfg stm3210e_eval.cfg
+ek-lm4f232.cfg stm3220g_eval.cfg
+embedded-artists_lpc2478-32.cfg stm3220g_eval_stlink.cfg
+ethernut3.cfg stm3241g_eval.cfg
+glyn_tonga2.cfg stm3241g_eval_stlink.cfg
+hammer.cfg stm32f0discovery.cfg
+hilscher_nxdb500sys.cfg stm32f4discovery.cfg
+hilscher_nxeb500hmi.cfg stm32ldiscovery.cfg
+hilscher_nxhx10.cfg stm32vldiscovery.cfg
+hilscher_nxhx500.cfg str910-eval.cfg
+hilscher_nxhx50.cfg telo.cfg
+hilscher_nxsb100.cfg ti_beagleboard.cfg
+hitex_lpc2929.cfg ti_beagleboard_xm.cfg
+hitex_stm32-performancestick.cfg ti_beaglebone.cfg
+hitex_str9-comstick.cfg ti_blaze.cfg
+iar_lpc1768.cfg ti_pandaboard.cfg
+iar_str912_sk.cfg ti_pandaboard_es.cfg
+icnova_imx53_sodimm.cfg topas910.cfg
+icnova_sam9g45_sodimm.cfg topasa900.cfg
+imx27ads.cfg twr-k60n512.cfg
+imx27lnst.cfg tx25_stk5.cfg
+imx28evk.cfg tx27_stk5.cfg
+imx31pdk.cfg unknown_at91sam9260.cfg
+imx35pdk.cfg uptech_2410.cfg
+imx53loco.cfg verdex.cfg
+keil_mcb1700.cfg voipac.cfg
+keil_mcb2140.cfg voltcraft_dso-3062c.cfg
+kwikstik.cfg x300t.cfg
+linksys_nslu2.cfg zy1000.cfg
+lisa-l.cfg
$
@end example
@item @file{target} ...
the target config file defines all of them.
@example
$ ls target
-aduc702x.cfg imx27.cfg pxa255.cfg
-ar71xx.cfg imx31.cfg pxa270.cfg
-at91eb40a.cfg imx35.cfg readme.txt
-at91r40008.cfg is5114.cfg sam7se512.cfg
-at91rm9200.cfg ixp42x.cfg sam7x256.cfg
-at91sam3u1c.cfg lm3s1968.cfg samsung_s3c2410.cfg
-at91sam3u1e.cfg lm3s3748.cfg samsung_s3c2440.cfg
-at91sam3u2c.cfg lm3s6965.cfg samsung_s3c2450.cfg
-at91sam3u2e.cfg lm3s811.cfg samsung_s3c4510.cfg
-at91sam3u4c.cfg lm3s9b9x.cfg samsung_s3c6410.cfg
-at91sam3u4e.cfg lpc1768.cfg sharp_lh79532.cfg
-at91sam3uXX.cfg lpc2103.cfg smdk6410.cfg
-at91sam7sx.cfg lpc2124.cfg smp8634.cfg
-at91sam9260.cfg lpc2129.cfg stm32f1x.cfg
-c100.cfg lpc2148.cfg str710.cfg
-c100config.tcl lpc2294.cfg str730.cfg
-c100helper.tcl lpc2378.cfg str750.cfg
-c100regs.tcl lpc2478.cfg str912.cfg
-cs351x.cfg lpc2900.cfg telo.cfg
-davinci.cfg mega128.cfg ti_dm355.cfg
-dragonite.cfg netx500.cfg ti_dm365.cfg
-epc9301.cfg omap2420.cfg ti_dm6446.cfg
-feroceon.cfg omap3530.cfg tmpa900.cfg
-icepick.cfg omap5912.cfg tmpa910.cfg
-imx21.cfg pic32mx.cfg xba_revA3.cfg
-$
+$duc702x.cfg ixp42x.cfg
+am335x.cfg k40.cfg
+amdm37x.cfg k60.cfg
+ar71xx.cfg lpc1768.cfg
+at32ap7000.cfg lpc2103.cfg
+at91r40008.cfg lpc2124.cfg
+at91rm9200.cfg lpc2129.cfg
+at91sam3ax_4x.cfg lpc2148.cfg
+at91sam3ax_8x.cfg lpc2294.cfg
+at91sam3ax_xx.cfg lpc2378.cfg
+at91sam3nXX.cfg lpc2460.cfg
+at91sam3sXX.cfg lpc2478.cfg
+at91sam3u1c.cfg lpc2900.cfg
+at91sam3u1e.cfg lpc2xxx.cfg
+at91sam3u2c.cfg lpc3131.cfg
+at91sam3u2e.cfg lpc3250.cfg
+at91sam3u4c.cfg lpc4350.cfg
+at91sam3u4e.cfg mc13224v.cfg
+at91sam3uxx.cfg nuc910.cfg
+at91sam3XXX.cfg omap2420.cfg
+at91sam4sXX.cfg omap3530.cfg
+at91sam4XXX.cfg omap4430.cfg
+at91sam7se512.cfg omap4460.cfg
+at91sam7sx.cfg omap5912.cfg
+at91sam7x256.cfg omapl138.cfg
+at91sam7x512.cfg pic32mx.cfg
+at91sam9260.cfg pxa255.cfg
+at91sam9260_ext_RAM_ext_flash.cfg pxa270.cfg
+at91sam9261.cfg pxa3xx.cfg
+at91sam9263.cfg readme.txt
+at91sam9.cfg samsung_s3c2410.cfg
+at91sam9g10.cfg samsung_s3c2440.cfg
+at91sam9g20.cfg samsung_s3c2450.cfg
+at91sam9g45.cfg samsung_s3c4510.cfg
+at91sam9rl.cfg samsung_s3c6410.cfg
+atmega128.cfg sharp_lh79532.cfg
+avr32.cfg smp8634.cfg
+c100.cfg spear3xx.cfg
+c100config.tcl stellaris.cfg
+c100helper.tcl stm32.cfg
+c100regs.tcl stm32f0x_stlink.cfg
+cs351x.cfg stm32f1x.cfg
+davinci.cfg stm32f1x_stlink.cfg
+dragonite.cfg stm32f2x.cfg
+dsp56321.cfg stm32f2x_stlink.cfg
+dsp568013.cfg stm32f2xxx.cfg
+dsp568037.cfg stm32f4x.cfg
+epc9301.cfg stm32f4x_stlink.cfg
+faux.cfg stm32l.cfg
+feroceon.cfg stm32lx_stlink.cfg
+fm3.cfg stm32_stlink.cfg
+hilscher_netx10.cfg stm32xl.cfg
+hilscher_netx500.cfg str710.cfg
+hilscher_netx50.cfg str730.cfg
+icepick.cfg str750.cfg
+imx21.cfg str912.cfg
+imx25.cfg swj-dp.tcl
+imx27.cfg test_reset_syntax_error.cfg
+imx28.cfg test_syntax_error.cfg
+imx31.cfg ti_dm355.cfg
+imx35.cfg ti_dm365.cfg
+imx51.cfg ti_dm6446.cfg
+imx53.cfg tmpa900.cfg
+imx.cfg tmpa910.cfg
+is5114.cfg u8500.cfg
@end example
@item @emph{more} ... browse for other library files which may be useful.
For example, there are various generic and CPU-specific utilities.
@end deffn
@deffn {Interface Driver} {jlink}
-Segger jlink USB adapter
-@c command: jlink caps
-@c dumps jlink capabilities
-@c command: jlink config
-@c access J-Link configurationif no argument this will dump the config
-@c command: jlink config kickstart [val]
-@c set Kickstart power on JTAG-pin 19.
-@c command: jlink config mac_address [ff:ff:ff:ff:ff:ff]
-@c set the MAC Address
-@c command: jlink config ip [A.B.C.D[/E] [F.G.H.I]]
-@c set the ip address of the J-Link Pro, "
-@c where A.B.C.D is the ip,
-@c E the bit of the subnet mask
-@c F.G.H.I the subnet mask
-@c command: jlink config reset
-@c reset the current config
-@c command: jlink config save
-@c save the current config
-@c command: jlink config usb_address [0x00 to 0x03 or 0xff]
-@c set the USB-Address,
-@c This will change the product id
-@c command: jlink info
-@c dumps status
-@c command: jlink hw_jtag (2|3)
-@c sets version 2 or 3
-@c command: jlink pid
-@c set the pid of the interface we want to use
+Segger J-Link family of USB adapters. It currently supports only the JTAG transport.
+
+@quotation Compatibility Note
+Segger released many firmware versions for the many harware versions they
+produced. OpenOCD was extensively tested and intended to run on all of them,
+but some combinations were reported as incompatible. As a general
+recommendation, it is advisable to use the latest firmware version
+available for each hardware version. However the current V8 is a moving
+target, and Segger firmware versions released after the OpenOCD was
+released may not be compatible. In such cases it is recommended to
+revert to the last known functional version. For 0.5.0, this is from
+"Feb 8 2012 14:30:39", packed with 4.42c. For 0.6.0, the last known
+version is from "May 3 2012 18:36:22", packed with 4.46f.
+@end quotation
+
+@deffn {Command} {jlink caps}
+Display the device firmware capabilities.
+@end deffn
+@deffn {Command} {jlink info}
+Display various device information, like hardware version, firmware version, current bus status.
+@end deffn
+@deffn {Command} {jlink hw_jtag} [@option{2}|@option{3}]
+Set the JTAG protocol version to be used. Without argument, show the actual JTAG protocol version.
+@end deffn
+@deffn {Command} {jlink config}
+Display the J-Link configuration.
+@end deffn
+@deffn {Command} {jlink config kickstart} [val]
+Set the Kickstart power on JTAG-pin 19. Without argument, show the Kickstart configuration.
+@end deffn
+@deffn {Command} {jlink config mac_address} [@option{ff:ff:ff:ff:ff:ff}]
+Set the MAC address of the J-Link Pro. Without argument, show the MAC address.
+@end deffn
+@deffn {Command} {jlink config ip} [@option{A.B.C.D}(@option{/E}|@option{F.G.H.I})]
+Set the IP configuration of the J-Link Pro, where A.B.C.D is the IP address,
+ E the bit of the subnet mask and
+ F.G.H.I the subnet mask. Without arguments, show the IP configuration.
+@end deffn
+@deffn {Command} {jlink config usb_address} [@option{0x00} to @option{0x03} or @option{0xff}]
+Set the USB address; this will also change the product id. Without argument, show the USB address.
+@end deffn
+@deffn {Command} {jlink config reset}
+Reset the current configuration.
+@end deffn
+@deffn {Command} {jlink config save}
+Save the current configuration to the internal persistent storage.
+@end deffn
+@deffn {Config} {jlink pid} val
+Set the USB PID of the interface. As a configuration command, it can be used only before 'init'.
+@end deffn
@end deffn
@deffn {Interface Driver} {parport}
@deffn {Interface Driver} {stlink}
ST Micro ST-LINK adapter.
+
+@deffn {Config Command} {stlink_device_desc} description
+Currently Not Supported.
+@end deffn
+
+@deffn {Config Command} {stlink_serial} serial
+Currently Not Supported.
+@end deffn
+
+@deffn {Config Command} {stlink_layout} (@option{sg}|@option{usb})
+Specifies the stlink layout to use.
+@end deffn
+
+@deffn {Config Command} {stlink_vid_pid} vid pid
+The vendor ID and product ID of the STLINK device.
+@end deffn
+
+@deffn {Config Command} {stlink_api} api_level
+Manually sets the stlink api used, valid options are 1 or 2.
+@end deffn
+@end deffn
+
+@deffn {Interface Driver} {opendous}
+opendous-jtag is a freely programmable USB adapter.
+@end deffn
+
+@deffn {Interface Driver} {ulink}
+This is the Keil ULINK v1 JTAG debugger.
@end deffn
@deffn {Interface Driver} {ZY1000}
The value should normally correspond to a static mapping for the
@code{-work-area-phys} address, set up by the current operating system.
+@item @code{-rtos} @var{rtos_type} -- enable rtos support for target,
+@var{rtos_type} can be one of @option{auto}|@option{eCos}|@option{ThreadX}|
+@option{FreeRTOS}|@option{linux}|@option{ChibiOS}.
+
@end itemize
@end deffn
@* The target has resumed (i.e.: gdb said run)
@item @b{early-halted}
@* Occurs early in the halt process
-@ignore
-@item @b{examine-end}
-@* Currently not used (goal: when JTAG examine completes)
@item @b{examine-start}
-@* Currently not used (goal: when JTAG examine starts)
-@end ignore
+@* Before target examine is called.
+@item @b{examine-end}
+@* After target examine is called with no errors.
@item @b{gdb-attach}
@* When GDB connects. This is before any communication with the target, so this
can be used to set up the target so it is possible to probe flash. Probing flash
@* Before the target steps, gdb is trying to start/resume the target
@item @b{halted}
@* The target has halted
-@ignore
-@item @b{old-gdb_program_config}
-@* DO NOT USE THIS: Used internally
-@item @b{old-pre_resume}
-@* DO NOT USE THIS: Used internally
-@end ignore
@item @b{reset-assert-pre}
@* Issued as part of @command{reset} processing
after @command{reset_init} was triggered
@* Before any target is resumed
@item @b{resume-end}
@* After all targets have resumed
-@item @b{resume-ok}
-@* Success
@item @b{resumed}
@* Target has resumed
@end itemize
-
@node Flash Commands
@chapter Flash Commands
@c "cfi part_id" disabled
@end deffn
+@deffn {Flash Driver} lpcspifi
+@cindex NXP SPI Flash Interface
+@cindex SPIFI
+@cindex lpcspifi
+NXP's LPC43xx and LPC18xx families include a proprietary SPI
+Flash Interface (SPIFI) peripheral that can drive and provide
+memory mapped access to external SPI flash devices.
+
+The lpcspifi driver initializes this interface and provides
+program and erase functionality for these serial flash devices.
+Use of this driver @b{requires} a working area of at least 1kB
+to be configured on the target device; more than this will
+significantly reduce flash programming times.
+
+The setup command only requires the @var{base} parameter. All
+other parameters are ignored, and the flash size and layout
+are configured by the driver.
+
+@example
+flash bank $_FLASHNAME lpcspifi 0x14000000 0 0 0 $_TARGETNAME
+@end example
+
+@end deffn
+
@deffn {Flash Driver} stmsmi
@cindex STMicroelectronics Serial Memory Interface
@cindex SMI
@end example
@end deffn
+@anchor{at91sam3}
@deffn {Flash Driver} at91sam3
@cindex at91sam3
All members of the AT91SAM3 microcontroller family from
@end deffn
@end deffn
+@deffn {Flash Driver} at91sam4
+@cindex at91sam4
+All members of the AT91SAM4 microcontroller family from
+Atmel include internal flash and use ARM's Cortex-M4 core.
+This driver uses the same cmd names/syntax as @xref{at91sam3}.
+@end deffn
+
@deffn {Flash Driver} at91sam7
All members of the AT91SAM7 microcontroller family from Atmel include
internal flash and use ARM7TDMI cores. The driver automatically
target remote localhost:3333
@end example
This would cause GDB to connect to the gdbserver on the local pc using port 3333.
+
+It is also possible to use the GDB extended remote protocol as follows:
+@example
+target extended-remote localhost:3333
+@end example
@item
A pipe connection is typically started as follows:
@example