12 years agomg_drv_info_t -> struct mg_drv_info
Zachary T Welch [Fri, 13 Nov 2009 15:38:21 +0000 (07:38 -0800)]
mg_drv_info_t -> struct mg_drv_info

Remove misleading typedef and redundant suffix from struct mg_drv_info.

12 years agomflash_gpio_drv_t -> struct mflash_gpio_drv
Zachary T Welch [Fri, 13 Nov 2009 15:38:17 +0000 (07:38 -0800)]
mflash_gpio_drv_t -> struct mflash_gpio_drv

Remove misleading typedef and redundant suffix from struct mflash_gpio_drv.

12 years agomflash_gpio_num_t -> struct mflash_gpio_num
Zachary T Welch [Fri, 13 Nov 2009 15:38:14 +0000 (07:38 -0800)]
mflash_gpio_num_t -> struct mflash_gpio_num

Remove misleading typedef and redundant suffix from struct mflash_gpio_num.

12 years agolpc3180_nand_controller_t -> struct lpc3180_nand_controller
Zachary T Welch [Fri, 13 Nov 2009 15:38:11 +0000 (07:38 -0800)]
lpc3180_nand_controller_t -> struct lpc3180_nand_controller

Remove misleading typedef and redundant suffix from struct lpc3180_nand_controller.

12 years agolpc2900_flash_bank_t -> struct lpc2900_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:38:08 +0000 (07:38 -0800)]
lpc2900_flash_bank_t -> struct lpc2900_flash_bank

Remove misleading typedef and redundant suffix from struct lpc2900_flash_bank.

12 years agolpc288x_flash_bank_t -> struct lpc288x_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:38:05 +0000 (07:38 -0800)]
lpc288x_flash_bank_t -> struct lpc288x_flash_bank

Remove misleading typedef and redundant suffix from struct lpc288x_flash_bank.

12 years agolpc2000_flash_bank_t -> struct lpc2000_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:38:03 +0000 (07:38 -0800)]
lpc2000_flash_bank_t -> struct lpc2000_flash_bank

Remove misleading typedef and redundant suffix from struct lpc2000_flash_bank.

12 years agoflash_driver_t -> struct flash_driver
Zachary T Welch [Fri, 13 Nov 2009 15:38:01 +0000 (07:38 -0800)]
flash_driver_t -> struct flash_driver

Remove misleading typedef and redundant suffix from struct flash_driver.

12 years agoflash_sector_t -> struct flash_sector
Zachary T Welch [Fri, 13 Nov 2009 15:37:54 +0000 (07:37 -0800)]
flash_sector_t -> struct flash_sector

Remove misleading typedef and redundant suffix from struct flash_sector.

12 years agofaux_flash_bank_t -> struct faux_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:37:48 +0000 (07:37 -0800)]
faux_flash_bank_t -> struct faux_flash_bank

Remove misleading typedef and redundant suffix from struct faux_flash_bank.

12 years agoecosflash_flash_bank_t -> struct ecosflash_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:37:45 +0000 (07:37 -0800)]
ecosflash_flash_bank_t -> struct ecosflash_flash_bank

Remove misleading typedef and redundant suffix from struct ecosflash_flash_bank.

12 years agocfi_fixup_t -> struct cfi_fixup
Zachary T Welch [Fri, 13 Nov 2009 15:37:43 +0000 (07:37 -0800)]
cfi_fixup_t -> struct cfi_fixup

Remove misleading typedef and redundant suffix from struct cfi_fixup.

12 years agocfi_unlock_addresses_t -> struct cfi_unlock_addresses
Zachary T Welch [Fri, 13 Nov 2009 15:37:40 +0000 (07:37 -0800)]
cfi_unlock_addresses_t -> struct cfi_unlock_addresses

Remove misleading typedef and redundant suffix from struct cfi_unlock_addresses.

12 years agocfi_spansion_pri_ext_t -> struct cfi_spansion_pri_ext
Zachary T Welch [Fri, 13 Nov 2009 15:32:35 +0000 (07:32 -0800)]
cfi_spansion_pri_ext_t -> struct cfi_spansion_pri_ext

Remove misleading typedef and redundant suffix from struct cfi_spansion_pri_ext.

12 years agocfi_atmel_pri_ext_t -> struct cfi_atmel_pri_ext
Zachary T Welch [Fri, 13 Nov 2009 15:32:27 +0000 (07:32 -0800)]
cfi_atmel_pri_ext_t -> struct cfi_atmel_pri_ext

Remove misleading typedef and redundant suffix from struct cfi_atmel_pri_ext.

12 years agocfi_intel_pri_ext_t -> struct cfi_intel_pri_ext
Zachary T Welch [Fri, 13 Nov 2009 15:32:19 +0000 (07:32 -0800)]
cfi_intel_pri_ext_t -> struct cfi_intel_pri_ext

Remove misleading typedef and redundant suffix from struct cfi_intel_pri_ext.

12 years agocfi_flash_bank_t -> struct cfi_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:31:42 +0000 (07:31 -0800)]
cfi_flash_bank_t -> struct cfi_flash_bank

Remove misleading typedef and redundant suffix from struct cfi_flash_bank.

12 years agoavrf_flash_bank_t -> struct avrf_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:31:10 +0000 (07:31 -0800)]
avrf_flash_bank_t -> struct avrf_flash_bank

Remove misleading typedef and redundant suffix from struct avrf_flash_bank.

12 years agoavrf_type_t -> struct avrf_type
Zachary T Welch [Fri, 13 Nov 2009 15:30:58 +0000 (07:30 -0800)]
avrf_type_t -> struct avrf_type

Remove misleading typedef and redundant suffix from struct avrf_type.

12 years agoat91sam7_flash_bank_t -> struct at91sam7_flash_bank
Zachary T Welch [Fri, 13 Nov 2009 15:30:41 +0000 (07:30 -0800)]
at91sam7_flash_bank_t -> struct at91sam7_flash_bank

Remove misleading typedef and redundant suffix from struct at91sam7_flash_bank.

12 years agojtag_command_t -> struct jtag_command
Zachary T Welch [Fri, 13 Nov 2009 14:15:31 +0000 (06:15 -0800)]
jtag_command_t -> struct jtag_command

Remove useless typedef from struct jtag_command.

12 years agojtag_command_container_t -> union jtag_command_container
Zachary T Welch [Fri, 13 Nov 2009 14:03:59 +0000 (06:03 -0800)]
jtag_command_container_t -> union jtag_command_container

Remove misleading typedef from union jtag_container.

12 years agosleep_command_t -> struct sleep_command
Zachary T Welch [Fri, 13 Nov 2009 14:01:19 +0000 (06:01 -0800)]
sleep_command_t -> struct sleep_command

Remove misleading typedef from struct sleep_command.

12 years agoend_state_command_t -> struct end_state_command
Zachary T Welch [Fri, 13 Nov 2009 13:59:48 +0000 (05:59 -0800)]
end_state_command_t -> struct end_state_command

Remove misleading typedef from struct end_state_command.

12 years agoreset_command_t -> struct reset_command
Zachary T Welch [Fri, 13 Nov 2009 13:57:47 +0000 (05:57 -0800)]
reset_command_t -> struct reset_command

Remove misleading typedef from struct reset_command.

12 years agostableclocks_command_t -> struct stableclocks_command
Zachary T Welch [Fri, 13 Nov 2009 13:56:26 +0000 (05:56 -0800)]
stableclocks_command_t -> struct stableclocks_command

Remove misleading typedef from struct stableclocks_command.

12 years agoruntest_command_t -> struct runtest_command
Zachary T Welch [Fri, 13 Nov 2009 13:55:29 +0000 (05:55 -0800)]
runtest_command_t -> struct runtest_command

Remove misleading typedef from struct runtest_command.

12 years agopathmove_command_t -> struct pathmove_command
Zachary T Welch [Fri, 13 Nov 2009 13:54:16 +0000 (05:54 -0800)]
pathmove_command_t -> struct pathmove_command

Remove misleading typedef from struct pathmove_command.

12 years agostatemove_command_t -> struct statemove_command
Zachary T Welch [Fri, 13 Nov 2009 13:52:51 +0000 (05:52 -0800)]
statemove_command_t -> struct statemove_command

Remove misleading typedef from struct statemove_command.

12 years agocmd_queue_page_t -> struct cmd_queue_page
Zachary T Welch [Fri, 13 Nov 2009 13:51:03 +0000 (05:51 -0800)]
cmd_queue_page_t -> struct cmd_queue_page

Remove misleading typedef from struct cmd_queue_page.

12 years agoscan_command_t -> struct scan_command
Zachary T Welch [Fri, 13 Nov 2009 13:30:28 +0000 (05:30 -0800)]
scan_command_t -> struct scan_command

Remove misleading typedef on struct scan_command.

12 years agomore vsllink typedef cleanup
Zachary T Welch [Fri, 13 Nov 2009 13:26:43 +0000 (05:26 -0800)]
more vsllink typedef cleanup

Remove useless typedef for struct insert_insignification_operation.

12 years agovsllink_jtag_t -> struct vsllink
Zachary T Welch [Fri, 13 Nov 2009 13:24:56 +0000 (05:24 -0800)]
vsllink_jtag_t -> struct vsllink

Remove misleading typedef and redundant suffix.

12 years agopresto_t -> struct presto
Zachary T Welch [Fri, 13 Nov 2009 13:23:12 +0000 (05:23 -0800)]
presto_t -> struct presto

Remove useless typedef.

12 years agoft2232_device_t -> struct ft2232_device
Zachary T Welch [Fri, 13 Nov 2009 13:17:18 +0000 (05:17 -0800)]
ft2232_device_t -> struct ft2232_device

Remove misleading typedef from ft2232_device; it was barely used.

12 years agojlink_jtag_t -> struct jlink
Zachary T Welch [Fri, 13 Nov 2009 13:14:36 +0000 (05:14 -0800)]
jlink_jtag_t -> struct jlink

Remove misleading typedef and redundant suffix.

12 years agocable_t -> struct cable
Zachary T Welch [Fri, 13 Nov 2009 12:57:03 +0000 (04:57 -0800)]
cable_t -> struct cable

Remove useless typedef and redundant suffix from parport struct cable.

12 years agopending_scan_result_t -> struct pending_scan_result
Zachary T Welch [Fri, 13 Nov 2009 12:50:26 +0000 (04:50 -0800)]
pending_scan_result_t -> struct pending_scan_result

Remove misleading typedef from struct struct pending_scan_result.
Future patches need to remove these duplicated types and code.

12 years agoarmjtagew_jtag_t -> struct armjtagew
Zachary T Welch [Fri, 13 Nov 2009 12:33:32 +0000 (04:33 -0800)]
armjtagew_jtag_t -> struct armjtagew

Remove useless typedef and redundant suffix from struct armjtatew_jtag.

12 years agouse struct jtag_tap_event_action
Zachary T Welch [Fri, 13 Nov 2009 12:28:41 +0000 (04:28 -0800)]
use struct jtag_tap_event_action

Remove useless typedef and redundant suffix from jtag_tap_event_action.

12 years agojtag_event_callback_t -> struct jtag_event_callback
Zachary T Welch [Fri, 13 Nov 2009 12:23:43 +0000 (04:23 -0800)]
jtag_event_callback_t -> struct jtag_event_callback

Remove useless typedef and redundant suffix from jtag_event_callback.
Add documentation for the structure.

12 years agojtag_interface_t -> struct jtag_interface
Zachary T Welch [Fri, 13 Nov 2009 12:14:50 +0000 (04:14 -0800)]
jtag_interface_t -> struct jtag_interface

Remove useless typedef and redundant suffix from struct jtag_interface.

12 years agobitbang_interface_t -> struct bitbang_interface
Zachary T Welch [Fri, 13 Nov 2009 12:10:56 +0000 (04:10 -0800)]
bitbang_interface_t -> struct bitbang_interface

Removes another useless typedef and suffix.

12 years agobitq_interface_t -> struct biq_interface
Zachary T Welch [Fri, 13 Nov 2009 12:08:19 +0000 (04:08 -0800)]
bitq_interface_t -> struct biq_interface

Remove useless typedef and redundant suffix.

12 years agoencapsulate bitq_state structure
Zachary T Welch [Fri, 13 Nov 2009 12:00:59 +0000 (04:00 -0800)]
encapsulate bitq_state structure

Move the bitq_state structure from the header to source file, as it
is used internally.

Also removes its silly typedef.

12 years agoscan_field_t -> struct scan_field
Zachary T Welch [Fri, 13 Nov 2009 11:28:03 +0000 (03:28 -0800)]
scan_field_t -> struct scan_field

Remove useless structure typedef.

12 years agojtag_tap_t -> struct jtag_tap
Zachary T Welch [Fri, 13 Nov 2009 11:19:35 +0000 (03:19 -0800)]
jtag_tap_t -> struct jtag_tap

Search and destroy the jtag_tap_t typedef.  This also cleans up a
layering violation, removing the declaration from types.h.

12 years agofileio_t -> struct fileio
Zachary T Welch [Fri, 13 Nov 2009 11:08:29 +0000 (03:08 -0800)]
fileio_t -> struct fileio

Remove useless structure typedef.

12 years agolog_callback_t -> struct log_callback
Zachary T Welch [Fri, 13 Nov 2009 11:00:51 +0000 (03:00 -0800)]
log_callback_t -> struct log_callback

Removes useless and confusing typedef for log callback structure.
Types with _t should be suitable for passing by-value as arguments.

12 years agoremove accidental artifact
Zachary T Welch [Fri, 13 Nov 2009 19:52:53 +0000 (11:52 -0800)]
remove accidental artifact

Somehow I managed to slip a temporary build file into the tree.
Remove it and update the .gitignore file so it doesn't happen again.

12 years agoadd documention for writing built-in commands
Zachary T Welch [Wed, 11 Nov 2009 09:31:34 +0000 (01:31 -0800)]
add documention for writing built-in commands

This documentation update provides an introduction to the command
handling facilities provided by command.[ch].  A primer walks the user
through the elements of a pointedly pedantic module: src/hello.c.

A summary of the API is provided in the OpenOCD Architecture section.

12 years agoadd src/hello.c to augment new command tutorial
Zachary T Welch [Wed, 11 Nov 2009 09:20:49 +0000 (01:20 -0800)]
add src/hello.c to augment new command tutorial

The hello module provides the 'hello' command, printing a greetings
to the command console.  It can grow to serve as pedagogical example
of services that OpenOCD developers should use: a runnable style guide.

12 years agocommand_handler_t: make cmd an indirect parameter
Zachary T Welch [Wed, 11 Nov 2009 07:01:44 +0000 (23:01 -0800)]
command_handler_t: make cmd an indirect parameter

This patch removes 'cmd' from the list of direct parameters, moving
that pointer to args[-1] (by way of the new CMD_NAME macro).

12 years agocommand_handler_t: make args parameter const
Zachary T Welch [Tue, 10 Nov 2009 12:37:17 +0000 (04:37 -0800)]
command_handler_t: make args parameter const

This patch prevents command handlers from modifying the strings passed
in the 'args' array.

12 years agocommand_handler_t: make cmd parameter const
Zachary T Welch [Tue, 10 Nov 2009 08:10:25 +0000 (00:10 -0800)]
command_handler_t: make cmd parameter const

Prevents the command name from being modified in command handlers.
Again, this has cascading effects, but the patches are fairly minimal.

12 years agocommand_handler_t: make argc unsigned
Zachary T Welch [Tue, 10 Nov 2009 08:02:18 +0000 (00:02 -0800)]
command_handler_t: make argc unsigned

The number of command arguments will always be 0 or more, so use
the right type in handlers.  This has a cascading effect up through
the layers, but the new COMMAND_HANDLER macros prevented total chaos.

12 years agoadd CMD_NAME macro for command handlers
Zachary T Welch [Wed, 11 Nov 2009 06:29:36 +0000 (22:29 -0800)]
add CMD_NAME macro for command handlers

By introducing the CMD_NAME macro, this parameter may be integrated
as args[-1] in command.[ch], without touching any other call sites.

12 years agouse CALL_COMMAND_HANDLER instead of direct calls
Zachary T Welch [Wed, 11 Nov 2009 06:23:07 +0000 (22:23 -0800)]
use CALL_COMMAND_HANDLER instead of direct calls

By using CALL_COMMAND_HANDLER, parameters can be reordered, added, or
even removed in inherited signatures, without requiring revisiting
all of the various call sites.

12 years agoadd PLD_DEVICE_COMMAND_HANDLER macro
Zachary T Welch [Tue, 10 Nov 2009 09:21:29 +0000 (01:21 -0800)]

Update virtex module to use abstracted PLD command handling.

12 years agonand: add NAND_DEVICE_COMMAND_HANDLER macro
Zachary T Welch [Tue, 10 Nov 2009 08:53:40 +0000 (00:53 -0800)]

Abstracts the extended NAND command handling to allow the function
signature to be controlled by __COMMAND_HANDLER.

12 years agouse FLASH_BANK_COMMAND_HANDLER macro
Zachary T Welch [Tue, 10 Nov 2009 09:41:30 +0000 (01:41 -0800)]

Defines all flash_bank_command handlers using the new macro.

12 years agoadd FLASH_BANK_COMMAND_HANDLER macro
Zachary T Welch [Tue, 10 Nov 2009 09:39:30 +0000 (01:39 -0800)]

The FLASH_BANK_COMMAND_HANDLER provides an extended command handler
using the __COMMAND_HANDLER macro, whereby changing that macro is
sufficient to update flash handlers with the new signature.  It also
enforces uniform style and scope when implementing this handler.

12 years agos3c24xx: use COMMAND_HANDLER with command helper
Zachary T Welch [Tue, 10 Nov 2009 13:32:51 +0000 (05:32 -0800)]
s3c24xx: use COMMAND_HANDLER with command helper

Add S3C24XX_DEVICE_COMMAND macros to abstract common command handler

12 years agoarm_adi,armv7[am]: use COMMAND_HELPER for helpers
Zachary T Welch [Tue, 10 Nov 2009 13:32:04 +0000 (05:32 -0800)]
arm_adi,armv7[am]: use COMMAND_HELPER for helpers

Rewrites the dap_* command helpers to use the COMMAND_HELPER paradigm.
Uses CALL_COMMAND_HELPER to hide inherited calling conventions.

12 years agouse COMMAND_HELPER for command helper functions
Zachary T Welch [Tue, 10 Nov 2009 11:12:21 +0000 (03:12 -0800)]
use COMMAND_HELPER for command helper functions

Define the numerous helpers that inherit command handler parameters
using the COMMAND_HELPER macro.

12 years agouse COMMAND_HANDLER macro to define all commands
Zachary T Welch [Tue, 10 Nov 2009 07:56:52 +0000 (23:56 -0800)]
use COMMAND_HANDLER macro to define all commands

12 years agoadd command_handler_t type
Zachary T Welch [Wed, 11 Nov 2009 03:00:01 +0000 (19:00 -0800)]
add command_handler_t type

This patch adds new typedefs for command handler callback functions.
Users of this type signature were updated to use these new types.
It uses the new __COMMAND_HANDLER macro to prevent duplication.

12 years agoadd COMMAND_HANDLER and COMMAND_HELPER macros
Zachary T Welch [Wed, 11 Nov 2009 02:51:32 +0000 (18:51 -0800)]

The COMMAND_HANDLER and COMMAND_HELPER macros allow commands to be
defined in a manner that decouples them from the exact order and type of
their parameters.  Once converted, incremental changes to the command
handler type can be addressed in incremental patches that do not need to
touch the entire tree.

These macros' implementation, __COMMAND_HANDLER, is used to define the
new command_handler_t type, and additional patches will use it to derive
new macros to define extended command types (e.g. flash, nand, pld).
The CALL_COMMAND_HANDLER provides a means of calling helpers or nested
handlers from withing a command handler.

This patch uses C99 varadic macro expansion.  Please report compilers
that cannot handle this code.

12 years agoadd command_output_handler_t
Zachary T Welch [Wed, 11 Nov 2009 02:42:45 +0000 (18:42 -0800)]
add command_output_handler_t

Add a typedef for command output handler function type, simplifying
the appearance of functions that use it and eliminating duplicate code.

12 years agoCortex-A8: fix indent
David Brownell [Fri, 13 Nov 2009 16:45:20 +0000 (08:45 -0800)]
Cortex-A8: fix indent

The "remove (forward) declarations" patch goofed indentation on the
"cortexa8_target" struct; fix.

Signed-off-by: David Brownell <>
12 years agonand: rename device to nand
Zachary T Welch [Fri, 13 Nov 2009 05:19:41 +0000 (21:19 -0800)]
nand: rename device to nand

To be more informative (and consistent with flash and pld trees), change
'device' parameter name to 'nand' in NAND source files.  This change
eliminates confusing 'device->device->' instance from the code, and
it simplifies the forthcoming command handler patches.

12 years agoETM: start support for ETMv2+
David Brownell [Fri, 13 Nov 2009 04:24:41 +0000 (20:24 -0800)]
ETM: start support for ETMv2+

ARM11 and newer cores include updated ETM modules.  Recognize
their version codes and some key config differences.  Sanity
checked on an OMAP2, with an ETM11RV r0p1 (ETMv3.1).

This still handles only scan chain 6, with at most 128 registers.
Newer cores (mostly, Cortex) will need to use the DAP instead.

Note that the newer ETM modules don't quite fit the quirky config
model of the older ones ... having more port widths is easy, but
the modes aren't the same.  That still needs to change.

Fix a curious bug ... how did the register cache NOT get saved??

Signed-off-by: David Brownell <>
12 years agoWinXP-x64: find right D2XX libraries
Liam Redmond [Thu, 12 Nov 2009 20:50:41 +0000 (12:50 -0800)]
WinXP-x64: find right D2XX libraries

This trivial patch allows the config script to find the correct
FTDI2xx libraries under Windows XP x64 using msys.

Signed-off-by: David Brownell <>
12 years agoparport: add support for the jtag_khz command.
Jonas Horberg [Thu, 12 Nov 2009 20:39:37 +0000 (12:39 -0800)]
parport: add support for the jtag_khz command.

Add the khz and speed_div functions to the parport interface driver.
Add the parport_toggling_time function that tells the parport driver
how long (in nanoseconds) it takes for the hardware to toggle TCK.

[ tweak doc for clarity, mention
multimeter, and whitespace fixes]

Signed-off-by: David Brownell <>
12 years agoETM: remove old mid-level ETM handle
David Brownell [Thu, 12 Nov 2009 05:57:44 +0000 (21:57 -0800)]
ETM: remove old mid-level ETM handle

Now that nothing uses the old ETM handle any more, remove it.
Add minimal header tweaks, letting non-ARM7 and non-ARM9 cores
access ETM facilities.

Now ARM11 could support standard ETM (and ETB) access as soon as
it derives from "struct arm" ... its scanchain 6 is used access
the ETM, just like ARM7 and ARM9.

The Cortex parts (both M3 and A8) will need modified access methods
(via ETM init parameters), so they use the DAP.  Our first A8 target
(OMAP3) needs that for both ETM and ETB, but the M3 ETM isn't very
useful without SWO trace support (it's painfully stripped down), so
that support won't be worth adding for a while.

Signed-off-by: David Brownell <>
12 years agoETM: use new toplevel ETM handle
David Brownell [Thu, 12 Nov 2009 05:55:19 +0000 (21:55 -0800)]
ETM: use new toplevel ETM handle

Make ETM itself use the new toplevel ETM handle, instead
of the to-be-removed lower level one.  As of this patch,
nothing should be using the old ARM7/ARM9-specific handle.

Signed-off-by: David Brownell <>
12 years agoETM: update port drivers
David Brownell [Thu, 12 Nov 2009 05:52:02 +0000 (21:52 -0800)]
ETM: update port drivers

Make both useful ETM port drivers (etb, etm_dummy) use the new
toplevel ETM handle, instead of the to-be-removed lower level one.

Do the same for the "oocd-trace" prototype too; and fix its
error reporting paths:  return failure codes, don't exit(), etc

Signed-off-by: David Brownell <>
12 years agoETM: update arm[79]tdmi_examine()
David Brownell [Thu, 12 Nov 2009 05:50:10 +0000 (21:50 -0800)]
ETM: update arm[79]tdmi_examine()

Make ARM7 and ARM9 cores use the new toplevel ETM handle to
trigger ETM setup, not the to-be-removed lower level one.

Signed-off-by: David Brownell <>
12 years agoARM: start generalized base type
David Brownell [Thu, 12 Nov 2009 05:49:14 +0000 (21:49 -0800)]
ARM: start generalized base type

Rename "struct armv4_5_common_s" as "struct arm".  It needs
a bit more work to be properly generic, and to move out of
this header, but it's the best start we have on that today.

Add and initialize an optional ETM pointer, since that will
be the first thing that gets generalized.

The intent being:  all ARMs should eventually derive from
this "struct arm", so they can reuse the current ETM logic.
(And later, more.)  Currently the ARM cores that *don't* so
derive are only ARMv7-M (and thus Cortex-M3) and ARM11.

Signed-off-by: David Brownell <>
12 years agofix 'jtag interface' behavior
Zachary T Welch [Wed, 11 Nov 2009 07:10:26 +0000 (23:10 -0800)]
fix 'jtag interface' behavior

Without this patch, running "openocd -c 'jtag interface'" segfaults.
Now, it returns the string "undefined" when the interface is unset.

12 years agoimprove command registration
Zachary T Welch [Wed, 11 Nov 2009 18:20:55 +0000 (10:20 -0800)]
improve command registration

Eliminate duplicate code for linking commands into a list.

Adds a check to ensure the command does not already exist;
if it does, return that one instead of creating a duplicate.

12 years agoadd help regardless of callback
Zachary T Welch [Wed, 11 Nov 2009 17:40:28 +0000 (09:40 -0800)]
add help regardless of callback

Add help for commands regardless of whether a handler is involved.
With this, all sorts of new commands can be found in 'help' text.
Hopefully, all of them have been documented....

Sadly, the lsort function appears to handle nested lists poorly, such
that sub-commands do not group with their parents.

12 years agoeliminate duplicate helptext management
Zachary T Welch [Wed, 11 Nov 2009 16:20:09 +0000 (08:20 -0800)]
eliminate duplicate helptext management

Add helpers to manage adding entries to the helptext list.
Adds support for arbitrarily nested commands.

12 years agoadd command_name helper
Zachary T Welch [Wed, 11 Nov 2009 13:26:17 +0000 (05:26 -0800)]
add command_name helper

The command_name function returns a malloced string for a given
command and its parents.  This can be used to display a message
to the user, but it is used internally to handle registration
and syntax errors.  This helps permit arbitrary command nesting.

12 years agowrap help command
Zachary T Welch [Wed, 11 Nov 2009 15:19:13 +0000 (07:19 -0800)]
wrap help command

Use continuation characters to wrap the help command into 80 columns.

12 years agoremove obsolete doxygen comments
Zachary T Welch [Wed, 11 Nov 2009 11:19:29 +0000 (03:19 -0800)]
remove obsolete doxygen comments

Documenting command handler parameters is redundant and pointless.

12 years agoremove more useless declarations
Zachary T Welch [Tue, 10 Nov 2009 07:20:34 +0000 (23:20 -0800)]
remove more useless declarations

Removes forward declarations by moving command registration after
defintion of the command handlers.

12 years agocortex_a8: remove declarations, use static keyword
Zachary T Welch [Wed, 11 Nov 2009 02:26:13 +0000 (18:26 -0800)]
cortex_a8: remove declarations, use static keyword

12 years agoadd const keyword to some APIs
Zachary T Welch [Tue, 10 Nov 2009 12:27:15 +0000 (04:27 -0800)]
add const keyword to some APIs

Add 'const' keyword to 'char *' parameters to allow command handlers to
pass constant string arguments.  These changes allow the 'args' command
handler to be changed to 'const' in a subsequent patch.

12 years agochange argv to args in command handlers
Zachary T Welch [Tue, 10 Nov 2009 10:43:11 +0000 (02:43 -0800)]
change argv to args in command handlers

Subsequent patches expect all command handlers to use a uniform
parameter naming scheme.  In the entire tree, these two files used
standard 'argv' instead of our non-standard 'args'.  This patch opts
to reduces the noise required to unify the command handlers, using
dominant 'args' form.

A future patch may be used to convert us back to the standard argv, but
that requires coordination with all developers to minimize disruptions.

12 years agoscript_debug(): improve types
Zachary T Welch [Mon, 9 Nov 2009 14:07:21 +0000 (06:07 -0800)]
script_debug(): improve types

Use unsigned type for number of arguments.

12 years agocommand.c: make private routines static
Zachary T Welch [Mon, 9 Nov 2009 14:09:30 +0000 (06:09 -0800)]
command.c: make private routines static

This patch also improves the signature of run_command function.

12 years agolog: improve log_callback_fn signature
Zachary T Welch [Mon, 9 Nov 2009 14:12:02 +0000 (06:12 -0800)]
log: improve log_callback_fn signature

Use unsigned type for line number in log_callback_fn signature.

12 years agotime_support: improve use of types
Zachary T Welch [Mon, 9 Nov 2009 13:45:57 +0000 (05:45 -0800)]
time_support: improve use of types

Update timeval_add_time to use long int; implement timeval_add with it.
Update timeval_ms to check gettimeofday return value, return int64_t.

12 years agomakefiles: improve build order
Zachary T Welch [Tue, 10 Nov 2009 12:27:02 +0000 (04:27 -0800)]
makefiles: improve build order

Separates various groups of files to be built in logical succession.
In each layer, the core module (target.c, nand.c, etc.) is built _after_
their helper modules (e.g. image.c, nand_ecc.c) but _before_ any of
their drivers (e.g. arm966e.c, mx3_nand.c).

This allows problems introduced at the bottom of the stack to result
in build failures as soon as possible, as the helpers and core should
wrap portions of them.

12 years agoETM cleanup
David Brownell [Wed, 11 Nov 2009 12:42:50 +0000 (04:42 -0800)]
ETM cleanup

Various cleanups of ETM related code.

 - Saner error return paths
 - Simplify arm7_9 init ... no need for extra zeroing!
 - Shrink some lines
 - Tweak some diagnostics
 - Use shorter name for ETM struct type.
 - Don't exit()

and similar.  The diagnostics look forward to having
this ETM code work with more than just ARM7/ARM9.

Signed-off-by: David Brownell <>
12 years agofix bug in ARM720: bugfix
Zachary T Welch [Wed, 11 Nov 2009 05:02:30 +0000 (21:02 -0800)]
fix bug in ARM720: bugfix

12 years agoARM720: bugfix
David Brownell [Wed, 11 Nov 2009 03:06:10 +0000 (19:06 -0800)]
ARM720: bugfix

The "ARM720 uses the new inheritance/nesting scheme" patch
wrongly scrubbed a calloc() from arm720t_target_create().

Signed-off-by: David Brownell <>
12 years agotarget: MMU-aware init for memory read/write
David Brownell [Tue, 10 Nov 2009 19:58:31 +0000 (11:58 -0800)]
target: MMU-aware init for memory read/write

Start switching MMU handling over to a more sensible scheme.
Having an mmu() method enables MMU-aware behaviors.  Not having
one kicks in simpler ones, with no distinction between virtual
and physical addresses.

Currently only a handful of targets have methods to read/write
physical memory:  just arm720, arm920, and arm926.  They should
all initialize OK now, but the arm*20 parts don't do the "extra"
stuff arm926 does (which should arguably be target-generic).

Also simplify how target_init() loops over all targets by making
it be a normal "for" loop, instead of scattering its three parts
to the four winds.

Signed-off-by: David Brownell <>
12 years agotarget.cfg: (re)move some bogus reset_config lines
David Brownell [Tue, 10 Nov 2009 17:25:26 +0000 (09:25 -0800)]
target.cfg: (re)move some bogus reset_config lines

General rule, this is all board-specific and doesn't belong
in target config files.  Some of these were just cosmetic.

Signed-off-by: David Brownell <>

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 (RSA)