summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* refactor command mode detectionZachary T Welch2009-11-281-2/+7
| | | | | | | | | | | Splits the check for a command's ability to run into a helper. This also fixes a bug whereby commands that specified COMMAND_EXEC were allowed to run during the configuration stage. This allowed problematic commands to be called before 'init', defeating the intention of specifying that command mode. With this change, the run_command() helper denies access to handlers that should run only after 'init' during the configuration stage.
* add command private data setter/accessorZachary T Welch2009-11-282-0/+31
| | | | | | | | | | Presently, commands registration taks a static handler data pointer. This patch adds support for commands that require a dynamic pointer, such as those registered in a dynamic context (e.g. subcommands for a user-created 'foo.cpu' command). The command_set_handler_data will update a command (group) to use a new context pointer, while the CMD_DATA macro allows command handlers to access the value. Jim handlers should find this value in interp->cmdPrivData.
* add 'command mode' introspective handlerZachary T Welch2009-11-281-0/+39
| | | | | Allows scripts to behave different depending on the current mode. Also allows introspection of the mode required for commands.
* remove unknown handlerZachary T Welch2009-11-282-36/+38
| | | | | | | | | | | | | | Updates command registration to provide top-level handlers for all commands, rather than falling back onto the 'unknown' command. Instead, that same handler is registered for placeholders, providing the same functionality under the root verb command name instead. This permits users to implement their own 'unknown' function, and it resolves some mind-bending breakage related to function object lookup while recursing. Changes 'ocd_bounce' to call 'ocd_command' and 'ocd_help' from the wrapper directly, rather than bouncing through their wrappers. This prevents endless recursion caused by the above changes, whereby the 'command' wrapper's type check would blow the stack to hell and gone.
* improve command handler wrapper scriptZachary T Welch2009-11-282-3/+26
| | | | | | | | | | Adds 'ocd_bouncer' in startup.tcl that is called as a helper for all command handlers, shrinking the embedded C wrapper to a mere stub. Jim handlers are called directly, simple handlers get called with the wrapper to capture and discard their output on error, and placeholders call help directly (though the unknown handler still does this too). It attempts to improve the quality of the error messages as well.
* add 'command type' introspective handlerZachary T Welch2009-11-281-0/+43
| | | | | | | | Adds the 'command' group handler, with the 'type' command producing a string that tells whether the given command is 'native' (for Jim-based command handlers), 'simple' (for simple built-in commands), 'group' for command group placeholders, and 'unknown' if not found in the command registration tables (e.g. core built-ins functions).
* ARM11: fix warning on amd64David Brownell2009-11-281-1/+4
| | | | | | Previous version of JTAG_DEBUG() macro hid this bug. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM11: fix dbgtap JTAG_DEBUGDavid Brownell2009-11-281-2/+2
| | | | | | | There is no DEBUG() macro; don't call one! Always at least *parse* debug code, to help prevent such errors. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* target: uplevel add_{break,watch}point() error checksDavid Brownell2009-11-286-38/+23
| | | | | | | | | | | | | | | | | | | | | | | | In target_type.h it's documented that the target must be halted for add_breakpoint() ... and with slight ambiguity, also for its add_watchpoint() sibling. So rather than verifying that constraint in the CPU drivers, do it in the target_add_{break,watch}point() routines. Add minor paranoia on the remove_*point() paths too: save the return value, and print it out in in the LOG_DEBUG message in case it's nonzero. Note that with some current cores, like all ARMv7 ones I've looked at, there's no technical issue preventing watchpoint or breakpoint add/remove operations on active cores. This model seems deeply wired into OpenOCD though. ALSO: the ARM targets were fairly "good" about enforcing that constraint themselves. The MIPS ones were relied on other code to catch such stuff, but it's not clear such code existed ... keep an eye out for new issues on MIPS. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* target: remove unused TARGET_EVENT_OLD_* symbolsDavid Brownell2009-11-281-2/+0
| | | | | | Just two *_OLD_* symbols left... Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* Cortex-A8: support "reset-assert" eventDavid Brownell2009-11-271-5/+28
| | | | | | | | | | | | | | Use the new "reset-assert" event; else SRST; else fail. Tested on an OMAP3, using the event. NOTE: still doesn't handle "reset halt". For some reason neither VCR nor PRCR seemed effective; they held the value that was written, but VCR didn't trigger debug entry when the reset vector fired (maybe the vector needs configuring?) and PRCR refused to hold the chip in reset until deassert() could force the core into debug state. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* target: groundwork for "reset-assert" eventDavid Brownell2009-11-272-3/+21
| | | | | | | | | This defines a "reset-assert" event and a supporting utility routine, and documents both how targets should implement it and how config scripts should use it. Core-specific updates are needed to make this work. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM11: write_memory() avoids increment checkDavid Brownell2009-11-271-9/+19
| | | | | | | | | | | | When writing to a chip's "reset yourself" register, the ARM11 code was reporting a spurious failure. Just don't bother checking for correctly incremented pointers given single-unit writes ... it's a bit faster that way too. (Reads should likely do the same thing. For that matter, such checks are usually just a waste...) Shrink an overlong parameter name, and associated lines'o'code. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* fix regression causing duplicated outputZachary T Welch2009-11-271-13/+28
| | | | | | | | | | | | | | | | | | | | | | | | The command refactoring caused subcommand handlers to produce duplicate output when run. The problem was introduced by failing to ensure all such invocations went through a top-level "catcher" script, prefixing the command name with the 'ocd_' prefix and consuming its results. The fix is to ensure such a top-level "catcher" script gets created for each top-level command, regardless of whether it has a handler. Indeed, this patch removes all command registrations for sub-commands, which would not have worked in the new registration scheme anyway. For now, dispatch of subcommands continues to be handled by the new 'unknown' command handler, which gets fixed here to strip the 'ocd_' prefix if searching for the top-level command name fails initially. Some Jim commands may be registered with this prefix, and that situation seems to require the current fallback approach. Otherwise, that prefix could be stripped unconditionally and the logic made a little simpler. The same problem must be handled by the 'help' command handler too, so its lookup process works as intended. Overall, the command dispatching remains more complicated than desired, but this patch fixes the immediate regressions.
* zy1000: keep up with new command registration stuffØyvind Harboe2009-11-271-42/+46
| | | | | | jim and classic style commands are both supported. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* update minidummy interface driver command handlingZachary T Welch2009-11-271-1/+1
| | | | | Changes the interface definition field reference from register_commands to commands, which allows the module to compile.
* fix 'nand info' commandZachary T Welch2009-11-271-5/+5
| | | | | | Move device argument parsing after check for number of arguments; otherwise, calling this command without any arguments would access argv[0] before checking whether it even existed.
* zy1000: keep up with changes to log_init()Øyvind Harboe2009-11-271-7/+1
| | | | | | fn's and return value for log_init() changed to void. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* minidummy: fix compilation errorØyvind Harboe2009-11-271-2/+2
| | | | | | during refactoring a search and replace error crept in Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* ARM NAND I/O header documentation update.Dean Glazeski2009-11-261-6/+10
| | | | | | | Fixed the header file to properly specify the doxygen documentation for the items defined in it. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM NAND I/O documentation update.Dean Glazeski2009-11-261-1/+7
| | | | | | | This updates the functions in the file to all have doxygen comments describing what they do. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM NAND I/O refactor code copying.Dean Glazeski2009-11-261-40/+47
| | | | | | | | Created a function for copying code to the working area on a target. The NAND write and read functions are updated to include use of this function. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM NAND I/O read function.Dean Glazeski2009-11-262-1/+91
| | | | | | | | Implementation of the NAND read function for ARM NAND I/O that includes running a local algorithm on a device to increase the performance of block reads. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* NAND Flash documentation update.Dean Glazeski2009-11-261-1/+47
| | | | | | | Updated doxygen comments for different interface structures for the NAND interface. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* XScale: add stub {read,write}_phys routinesDavid Brownell2009-11-261-0/+20
| | | | | | | | | Just make these fail, instead of letting them write over potentially random memory. Users should be able to work around the lack of real implementations by disbling the MMU by hand ... until someone provides a Real Fix. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* fix typos in source filesUwe Hermann2009-11-263-8/+8
| | | | | | Correct some spelling errors in source comments and printed output. Signed-off-by: Zachary T Welch <zw@superlucidity.net>
* fix 'flash protect' and 'flash erase_sector'Eric Wetzel2009-11-261-3/+3
| | | | | | | | Command upgrading introduced two off-by-one bugs in the flash commands. This patch fixes the 'flash {protect,erase_sector}' commands to check that they have been passed the correct number of arguments. Ammended during commit to fix help text for 'erase_address' too.
* target: create and use target_name()David Brownell2009-11-255-24/+34
| | | | | | | | | | | | | Several of the sites now using target_type_name() really ought to be using an instance-specific name. Create a function called target_name(), accessing the instance's own (command) name. Use it in several places that really should be displaying instance-specific names. Also in several places which were already doing so, but which had no wrapper to call. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* target: target_get_name() --> target_type_name()David Brownell2009-11-257-17/+26
| | | | | | | | | | | | | There are two names that may matter on a per-target basis. One is a per-instance name (for example, "at91sam7s.cpu"). The other is the name of its type (for example, "arm7tdmi"), which is shared among multiple targets. Currently target_get_name() returns the type name, which is misleading and is rarely appropriate for target diagnostics. Rename that as target_type_name(). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM: minor armv4/armv5 cleanupDavid Brownell2009-11-251-1/+12
| | | | | | Lines of 300+ characters are still bad; debug tweaks. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM: comment tweaks in ADIv5David Brownell2009-11-251-2/+5
| | | | | | "OptimoDE DESS" is ARM's semicustom DSPish stuff. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* ARM7/9: shrink run_algorithm_inner() linesDavid Brownell2009-11-251-2/+10
| | | | | | 300+ characters is unreasonable. So is half that. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* use ARRAY_SIZE macroZachary T Welch2009-11-2510-36/+36
| | | | | Search and destroy lingering cases where the ARRAY_SIZE macro should be used to convey more intrinsic meaning in the OpenOCD code.
* support OPENOCD_DEBUG_LEVEL environment settingZachary T Welch2009-11-251-0/+13
| | | | | Detect the OPENOCD_DEBUG_LEVEL setting in log_init(), allowing the very early startup phases to be debugged.
* log: improve initializationZachary T Welch2009-11-253-14/+11
| | | | | | Removes redundant assignment of start_ms from log_register_commands(). Eliminates command_context parameter and return value. Adds Doxygen comment block for this API call.
* add 'testee' target typeZachary T Welch2009-11-253-1/+52
| | | | | | | Alliteration aside, this should provide the final piece of the puzzle for developers that want to get started writing a new target type. In this way, it also seeks to complement the 'dummy' interface driver and 'faux' NOR flash driver.
* improve command handling examplesZachary T Welch2009-11-255-5/+62
| | | | | | Removes hello and foo commands from top-level registration. Instead, the dummy interface driver and faux flash driver have been augmented to register these commands as sub-commands.
* add script_command_run helperZachary T Welch2009-11-251-26/+19
| | | | | Eliminates duplicated code in script_command and handle_unknown_command. Fixes bug with duplicated help output generated by placeholder commands.
* encapsulate and re-use log capture, retval setupZachary T Welch2009-11-251-49/+43
| | | | | | | | | Factors log capture while running script commands, eliminating duplicated code between script_command and jim_capture. Factors setting a command's Jim "retval" into a new helper as well. Using these new helpers in the new unknown command handler's fixes possible regressions caused by these bits being missing.
* combine help and usage command handlersZachary T Welch2009-11-251-20/+8
| | | | Remove duplicated handler code by checking the running command name.
* improve usage and help command outputZachary T Welch2009-11-242-44/+38
| | | | | Rewrite formatting code in C, removing last remenants of TCL help code. Sinificantly improves the readability by using smarter indent and wrap.
* allow scripts to update usage informationZachary T Welch2009-11-242-7/+36
| | | | | | The add_usage_text command uses the same C handler, which was updated to support its new polymorphic role. This patch updates the two script commands that needed this support: 'find' and 'script'.
* httpd: use register_commands()Zachary T Welch2009-11-244-20/+51
| | | | | | | Updates httpd_start() to use register_commands() for 'readform' and 'writeform' commands. Adds server/httpd.h to export the new signatures for this function (and httpd_stop), which allows removing the obsoleted declarations inside openocd.c.
* add jim_handler to command_registrationZachary T Welch2009-11-246-83/+146
| | | | | | Adding jim_handler field to command_registration allows removing the register_jim helper. All command registrations now go through the register_command{,s}() functions.
* refactor command_new to use command_registrationZachary T Welch2009-11-241-12/+10
| | | | Save stack space: use a struct. Makes it easier to add new parameters.
* remove register_commands from etm_capture_driverZachary T Welch2009-11-245-31/+17
| | | | | | Converts callback to an array of command_registration records. Moves oocd_trace driver definition to end of file to eliminate useless forward declaration.
* remove target_type register_command callbackZachary T Welch2009-11-2431-149/+89
| | | | | | Uses chaining of command_registration structures to eliminate all target_type register_callback routines. Exports the command_handler registration arrays for those target types that are used by others.
* xscale: use register_commands()Zachary T Welch2009-11-241-23/+107
|
* trace: use register_commands()Zachary T Welch2009-11-241-10/+29
|
* target_request: use register_commands()Zachary T Welch2009-11-241-8/+21
|