Daniel Bäder [Thu, 25 Mar 2010 10:24:42 +0000 (11:24 +0100)]
change %x and %d to PRIx32 and PRId32 where needed for cygwin
Øyvind Harboe [Thu, 4 Mar 2010 18:03:26 +0000 (19:03 +0100)]
zy1000: allow it to build on linux host for testing purposes
For testing and checking the build this can be useful,
it doesn't have any practical application outside development.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Antonio Borneo [Wed, 24 Mar 2010 05:45:29 +0000 (13:45 +0800)]
telnet_server: review unused symbols
Remove unused function
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Antonio Borneo [Wed, 24 Mar 2010 05:44:40 +0000 (13:44 +0800)]
telnet_server: review scope of functions
Add "static" qualifier to private functions.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
David Brownell [Wed, 24 Mar 2010 23:04:26 +0000 (16:04 -0700)]
FT2232 Messaaging fix
The init cleanup patch overlooked a message which was
wrongly specific to the "usbjtag" layout. Fix.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Antonio Borneo [Wed, 24 Mar 2010 04:08:45 +0000 (12:08 +0800)]
server: review unused symbols
Remove unused function
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Antonio Borneo [Wed, 24 Mar 2010 04:06:45 +0000 (12:06 +0800)]
server: review scope of functions and data
Add "static" qualifier to private functions and data.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Øyvind Harboe [Mon, 22 Mar 2010 07:27:03 +0000 (08:27 +0100)]
zy1000: fix optimisaion bug in dcc writes
Introduced & corrected since 0.4.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Mike Dunn [Sat, 20 Mar 2010 14:53:47 +0000 (10:53 -0400)]
fix software breakpoints on xscale
This patch fixes xscale software breakpoints by cleaning the dcache and
invalidating the icache after the bkpt instruction is inserted or removed. The
icache operation is necessary in order to flush the fetch buffers, even if the
icache is disabled (see section 4.2.7 of the xscale core developer's manual).
The dcache is presumed to be enabled; no harm done if not. The dcache is also
invalidated after cleaning in order to safeguard against a future load of
invalid data, in the event that cache_clean_address points to memory that is
valid and in use.
Also corrected a confusing typo I noticed in a comment.
TODO (or not TODO...?): the xscale's 2K "mini dcache" is not cleaned. This
cache is not used unless the 'X' bit in the page table entry is set. This is a
proprietary xscale extension to the ARM architecture. If a target's OS or
executive makes use of this for memory regions holding code, the breakpoint
problem will persist. Flushing the mini dcache requires that 2K of valid
cacheable memory (mapped with 'X' bit set) be designated by the user for this
purpose. The debug handler that gets downloaded to the target will also need to
be extended.
Øyvind Harboe [Mon, 22 Mar 2010 06:21:09 +0000 (07:21 +0100)]
bitq: fix warning now that out_value is const
This was an easy one. Just add the missing "const" to a
local variable definition.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Mon, 22 Mar 2010 05:49:23 +0000 (22:49 -0700)]
ft2232 init mess cleanup
In the ft2232 driver, initialization for many layouts punts to a routine
called usbjtag_init(), instead of a routine specific to each layout.
That routine is a mess built around a "what type layout am I" core.
That's a bad design ... in this case, especially so, since it bypasses
the layout-specific dispatch which was just done, and obfuscates the
initialization which is at least somewhat generic, instead of being
specific to the "usbjtag" layout.
Split and document out the generic parts of usbjtag_init(), and make
the rest of those layouts have layout-specific init methods. Also,
rename usbjtag_reset() ... that also was not specific to the "usbjtag"
layout, and thus contributed to the previous code structure confusion.
(Eventually, all layout-specific code (and method tables) should probably
live in files specific to each layout. These changes will facilitate
those and other cleanups to this driver.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Sun, 21 Mar 2010 18:20:26 +0000 (19:20 +0100)]
arm breakpoints: amended fix comment
the handling of caches, should be moved into the breakpoint
specific callbacks rather than being plonked into generic
memory write fn's.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Fri, 19 Mar 2010 21:06:01 +0000 (22:06 +0100)]
jtag: make out_value const
Tightens up the jtag_add_xxx_scan() API
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Fri, 19 Mar 2010 21:04:45 +0000 (22:04 +0100)]
jtag: move towards making out_value const
These were relatively straightforward fixes which are
backwards compatible.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Fri, 19 Mar 2010 17:31:44 +0000 (10:31 -0700)]
FT2232 comment tweaks
Note that the FT4232 chips have four channels not two, and
Elaborate on uses of the additional channels.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Fri, 19 Mar 2010 13:47:01 +0000 (14:47 +0100)]
zy1000: clean up jtag_add_xx_scan fn's
The implementation is now more straightforward as the
scan_fields have been greatly simplified over time.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Fri, 19 Mar 2010 13:27:19 +0000 (14:27 +0100)]
zy1000: fix bug in end state of DCC writes
Introduced in latest commits, found by code inspection &
GCC warning.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 17:53:39 +0000 (18:53 +0100)]
jtag: retire jtag_get/set_end_state()
Voila! This get rids of mysteries about what what
state the TAP is in.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 17:41:43 +0000 (18:41 +0100)]
jtag: remove jtag_get_end_state() usage
Code inspection indicated what constant end states to
use.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 17:37:23 +0000 (18:37 +0100)]
jtag: get rid of unecessary jtag_get_end_state()
By code inspection.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 17:34:34 +0000 (18:34 +0100)]
jtag: remove unecessary usage of jtag_get_end_state().
By code inspection.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 17:31:58 +0000 (18:31 +0100)]
jtag: remove jtag_get_end_state()'s that should be unecessary
By a bit of code inspection it seems like all of these
instances of jtag_get_end_state() can be unambigously
replaced by constants.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Mike Dunn [Fri, 19 Mar 2010 04:34:13 +0000 (21:34 -0700)]
Fix underlying problem with xscale icache and dcache commands
Fix problem with the xscale icache and dcache commands. Both commands were
enabling or disabling the mmu, not the caches
I didn't look any further after my earlier patch fixed the trivial problem
with command argument parsing. Turns out the underlying code was broken.
The resolution is straightforward when you look at the arguments to
xscale_enable_mmu_caches() and xscale_disable_mmu_caches(). I finally
took a deeper look after dumping the cp15 control register (XSCALE_CTRL)
and seeing that the cache bits weren't changing, but the mmu bit was
(which caused all manner of grief, as you can imagine). This has been
tested and works OK now.
src/target/xscale.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 18 Mar 2010 19:32:35 +0000 (12:32 -0700)]
ADI_v5 - it's not always an "SWJ-DP"
So don't use the name "swjdp" for all DAPs; rename to
plain old "dap", which *is* always correct.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 18 Mar 2010 19:11:58 +0000 (12:11 -0700)]
Merge branch 'master' of ssh://dbrownell@openocd.git.sourceforge.net/gitroot/openocd/openocd
David Brownell [Thu, 18 Mar 2010 18:56:17 +0000 (11:56 -0700)]
remove more duplication
Not sure how the original "move code to adi_v5_swd.c" patch left
some code in the "arm_adi_v5.c" file, but a recent patch was only
a partial fix -- it didn't remove all the duplication.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Thu, 18 Mar 2010 11:07:41 +0000 (12:07 +0100)]
jtag: retire one instance of jtag_get_end_state() usage
Less global variables....
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 18 Mar 2010 11:06:07 +0000 (12:06 +0100)]
oops: committed and pushed two temp files....
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Spencer Oliver [Thu, 18 Mar 2010 09:18:53 +0000 (09:18 +0000)]
DOCS: update flash bank examples
- include the $_FLASHNAME in all flash bank examples.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Thu, 18 Mar 2010 09:35:45 +0000 (09:35 +0000)]
PIC32MX: add unlock cmd
'unlock' performs a full unlock/erase of the device, removing any
code protection.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Wed, 17 Mar 2010 17:24:22 +0000 (17:24 +0000)]
MIPS: remove unused arg from mips_ejtag_set_instr
This arg was never used and was just taken from the arm jtag code.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Øyvind Harboe [Tue, 16 Mar 2010 13:13:03 +0000 (14:13 +0100)]
jtag: cut down on usage of unintended modification of global end state
jtag_get/set_end_state() is now deprecated.
There were lots of places in the code where the end state was
unintentionally modified.
The big Q is whether there were any places where the intention
was to modify the end state. 0.5 is a long way off, so we'll
get a fair amount of testing.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Wed, 17 Mar 2010 20:50:23 +0000 (21:50 +0100)]
linker error: fix problem with duplicate fn
A fn was copied instead of moved to a new file. The linker
can discard exact copies of fn's without warning.
This is a C++'ism.
However on my Ubuntu 9.10 machine, it fails.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Wed, 17 Mar 2010 20:34:43 +0000 (21:34 +0100)]
mips: fix warning
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Wed, 17 Mar 2010 11:59:33 +0000 (12:59 +0100)]
gdb: long running "monitor mww" now works w/gdb
invoke keep_alive() to make sure that the default 2000ms
timeout does not trigger.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Tue, 16 Mar 2010 17:02:58 +0000 (18:02 +0100)]
target: faster mww operations
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Wed, 17 Mar 2010 11:43:47 +0000 (12:43 +0100)]
target: mdX/mwX on target were badly broken
- incorrect parsing of arguments
- mdX didn't display arguments correctly
I don't think anyone ever used that code path :-)
Did you know that "target mdw" and mdw are very different?
for {set i 0} {$i < 256} {set i [expr $i+1]} {mwb [expr 0x2000000+$i] $i}
mdw 0x2000000 0x10
0x02000000:
03020100 07060504 0b0a0908 0f0e0d0c 13121110 17161514 1b1a1918 1f1e1d1c
0x02000020:
23222120 27262524 2b2a2928 2f2e2d2c 33323130 37363534 3b3a3938 3f3e3d3c
> zy1000.cpu mdb 0x2000000 0x20
0x02000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................
0x02000010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................
> zy1000.cpu mdh 0x2000000 0x20
0x02000000 0100 0302 0504 0706 0908 0b0a 0d0c 0f0e ................
0x02000010 1110 1312 1514 1716 1918 1b1a 1d1c 1f1e ................
0x02000020 2120 2322 2524 2726 2928 2b2a 2d2c 2f2e !"#$%&'()*+,-./
0x02000030 3130 3332 3534 3736 3938 3b3a 3d3c 3f3e
0123456789:;<=>?
> zy1000.cpu mdw 0x2000000 0x20
0x02000000
03020100 07060504 0b0a0908 0f0e0d0c ................
0x02000010
13121110 17161514 1b1a1918 1f1e1d1c ................
0x02000020
23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./
0x02000030
33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>?
0x02000040
43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO
0x02000050
53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_
0x02000060
63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno
0x02000070
73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Spencer Oliver [Wed, 17 Mar 2010 09:57:44 +0000 (09:57 +0000)]
SCRIPT: add add_script_search_dir cmd
Add a add_script_search_dir cmd so that adding search
dir's can be added to cfg scripts.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Tue, 16 Mar 2010 12:54:08 +0000 (12:54 +0000)]
PIC32: add software reset support
The PIC32MX does not support the ejtag software reset - it is
optional in the ejtag spec.
We perform the equivalent using the microchip specific MTAP cmd's.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Tue, 16 Mar 2010 12:48:53 +0000 (12:48 +0000)]
MIPS: remove ejtag_srst variant
The mips_m4k_assert_reset has now been restructured
so the variant ejtag_srst is not required anymore.
The ejtag software reset will be used if the target does not
have srst connected.
Remove ejtag_srst from docs.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Øyvind Harboe [Tue, 16 Mar 2010 13:45:07 +0000 (14:45 +0100)]
gdb_server: improved gdb load performance
by ack'ing memory writes immediately and reporting either
at next memory write or stepi/continue time. GDB will then
send off a new packet that is ready by the time the previous
packet has been written to target memory.
On faster adapters this can be as much as 10% improvement.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Tue, 16 Mar 2010 10:40:52 +0000 (11:40 +0100)]
zy1000: tweak the DCC inner loop a tiny bit
Uses FIFO a bit more efficiently now.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Tue, 16 Mar 2010 09:58:21 +0000 (10:58 +0100)]
arm7/9: remove unused post_restore_context
Unused. If something should happen after context restore, then the
calling code can just do it afterwards.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Tue, 16 Mar 2010 21:12:00 +0000 (14:12 -0700)]
ADIv5 transport support moves to separate files
Unclutter arm_adi_v5.c by moving most transport-specific code
to a transport-specific files adi_v5_{jtag,swd}.c ... it's not
a full cleanup, because of some issues which need to be addressed
as part of SWD support (along with implementing the DAP operations
on top of SWD transport):
- The mess where mem_ap_read_buf_u32() is currently coded to
know about JTAG scan chains, and thus needs rewriting before
it will work with SWD;
- Initialization is still JTAG-specific
Also move JTAG_{DP,ACK}_* constants from adi_v5.h to the JTAG
file; no other code should care about those values.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Mon, 1 Mar 2010 07:25:18 +0000 (08:25 +0100)]
bitbang: add jtag_add_tms_seq support
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Spencer Oliver [Tue, 16 Mar 2010 09:59:05 +0000 (09:59 +0000)]
PARPORT: add PARPORTADDR tcl variable
Add PARPORTADDR tcl variable making it easier to
change parallel port address in scripts.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Tue, 16 Mar 2010 09:55:20 +0000 (09:55 +0000)]
PIC32: add Microchip Explorer16 cfg
- add Microchip Explorer16 cfg using PIC32MX360F512L PIM.
- remove reset config from PIC32 target cfg.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
richard vegh [Tue, 16 Mar 2010 09:46:41 +0000 (10:46 +0100)]
lpc3180: LPC3180(LPC3250) SLC driver implemented
Until this time only basic SLC functionality exists when you want to use SLC to access external nand flash.
Basic functionality can be selected with command:
lpc3180 select 0 slc
It is anyway very slow to write/read to/from nand flash.
With the new command, SLC speed improved about 20 times, and hardware ECC info also read/written from/to nand flash OOB area:
lpc3180 select 0 slc bulk
Speed improvement achieved by using working are in SRAM of the LPC3250 chip and controlling DMA controller to interact between SRAM and SLC peripheral.
Here are the patches, and if they are ok than take them.
Tested with hitex LPC3250 usb stick.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Bradey Honsinger [Mon, 15 Mar 2010 07:43:41 +0000 (08:43 +0100)]
image loading: fix problem with offsets > 0x80000000
Fixes bug that prevented users from specifying a base address of
0x80000000 or higher in image commands (flash write_image, etm image,
xscale trace_image).
image.base_address is an offset from the start address contained in
the image file (if there is one), or from 0 (for binary files). As a
signed 32-bit int, it couldn't be greater than 0x7fffffff, which is a
problem when trying to write a binary file to flash above that
address. Changing it to a 64-bit long long keeps it as a signed
offset, but allows it to cover the entire 32-bit address space.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Mon, 15 Mar 2010 15:43:16 +0000 (08:43 -0700)]
move "reset_config" out of JTAG command group
The SRST configuration options are not specific to JTAG, so this
command may be needed with non-JTAG debug sessions. Just move
the command to a different group.
(The TRST options are, however, clearly JTAG-specific, but for
compatibility, they're now left alone. The flags they control
could later be disabled in non-JTAG sessions.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Mon, 15 Mar 2010 15:42:26 +0000 (08:42 -0700)]
rename jtag_nsrst_assert_width as adapter_nsrst_assert_width
Globally rename "jtag_nsrst_assert_width" as "adapter_nsrst_assert_width",
and move it out of the "jtag" command group ... it needs to be used with
non-JTAG transports
Includes a migration aid (in jtag/startup.tcl) so that old user scripts
won't break. That aid should Sunset in about a year.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Mon, 15 Mar 2010 15:41:30 +0000 (08:41 -0700)]
rename jtag_nsrst_delay as adapter_nsrst_delay
Globally rename "jtag_nsrst_delay" as "adapter_nsrst_delay", and move it
out of the "jtag" command group ... it needs to be used with non-JTAG
transports
Includes a migration aid (in jtag/startup.tcl) so that old user scripts
won't break. That aid should Sunset in about a year.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Mon, 15 Mar 2010 15:37:43 +0000 (08:37 -0700)]
rename jtag_khz as adapter_khz
Globally rename "jtag_khz" as "adapter_khz", and move it out of the "jtag"
command group ... it needs to be used with non-JTAG transports
Includes a migration aid (in jtag/startup.tcl) so that old user scripts
won't break. That aid should Sunset in about a year. (We may want to
update it to include a nag message too.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Spencer Oliver [Mon, 15 Mar 2010 10:06:47 +0000 (10:06 +0000)]
FT2232: bulidfix
Fix build issue with commit
c23d4596d2239bdbba080499de837f53e0c89e59
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 15 Mar 2010 09:36:46 +0000 (09:36 +0000)]
PIC32MX: update cfg script
The default config script will now dynamically setup the BMX registers
in the reset init script.
This will also work if the user overrides the default working area.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
David Brownell [Sun, 14 Mar 2010 20:13:39 +0000 (13:13 -0700)]
rename jtag_interface_{init,quit}()
These routines apply to non-JTAG debug adapters too. To
reduce confusion, give them better (non-misleading) names.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Sun, 14 Mar 2010 20:10:26 +0000 (13:10 -0700)]
FT2232: lookup and save layout just once
Streamline use of the layout: have the "ft2232_layout" command
look it up and save the result, instead of having a few different
chunks of code looking it up later, and saving just its name (which
is already part of the layout). This
- is cleaner
- reports errors sooner
- facilitates earlier adapter-specific setup
- removes unused "default to "usbjtag" logic
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Mike Dunn [Fri, 12 Mar 2010 00:53:05 +0000 (16:53 -0800)]
fix xscale icache and dcache commands
Simple patch that fixes the broken xscale icache and dcache commands.
This broke when the helper functions and macros were changed.
[ dbrownell@users.sourceforge.net: don't use strcasecmp ]
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 11 Mar 2010 22:21:36 +0000 (14:21 -0800)]
versaloon cleanup patch
Remove undesirable
- backslashes at end-of-line;
- initializations of BSS data to zero/NULL;
- overlong lines (80+ characters)
- whitespace issues
- brackets around single-line statements
And other minor issues reported by the Linux "checkpatch" utility
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
simon qian [Thu, 11 Mar 2010 22:11:30 +0000 (14:11 -0800)]
New JTAG driver for Versaloon
This patch greatly simplifies the Versaloon driver:
- reducing the code size from more than 50K to less than 28K
- adding support for IR/DR scan with unlimited size
- using tap_get_tms_path and tap_get_tms_path_len.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Michal Demin [Mon, 8 Mar 2010 12:45:14 +0000 (13:45 +0100)]
Add support for Bus Pirate as a JTAG adapter.
This includes a driver and matching config file. This support needs to be
enabled through the initial "configure" (use "--enable-buspirate").
Signed-off-by: Michal Demin <michaldemin@gmail.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 11 Mar 2010 17:47:47 +0000 (09:47 -0800)]
split "interface" commands from "jtag" ones
We'll need to be able to work with debug adapter interfaces (drivers)
even when they're not used for JTAG ... for example, while there are
multi-transport drivers which support JTAG *and* several other
transports (or just one more, like SWD) there are also adapters
with more limited goals (and no JTAG support at all).
Start decoupling the two concepts ("debug adapter driver", "jtag")
by having two command groups, which initialize separately.
This will help us support OpenOCD sessions using only non-JTAG
transports, in which JTAG commands should not be registered.
Update docs to mention that the JTAG, SVF, and XSVF commands
won't work without a JTAG transport.
Note that at least commands working with SRST are still inappropriately
coupled to JTAG ... inappropriate because (a) SRST is not part of the
JTAG standard, for all that many platforms (like ARM) expect it; and also
(b) because they're used with non-JTAG debug and programming interfaces,
too. They should perhaps become generic "interface" operations at some
point. (Similarly with the clock rate to be used by a given adapter.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Spencer Oliver [Wed, 10 Mar 2010 22:23:01 +0000 (22:23 +0000)]
MIPS: make fixed code arrays static const
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Wed, 10 Mar 2010 21:54:21 +0000 (21:54 +0000)]
JLINK: user info message cleanup
- remove trailing LF's from user info messages.
- split long lines.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 8 Mar 2010 22:54:18 +0000 (22:54 +0000)]
PIC32: add flash algorithm support
Add flash algorithm support for the PIC32MX.
Still a few things todo but this dramatically decreases
the programing time, eg. approx programming for 2.5k test file.
- without fastload: 60secs
- with fastload: 45secs
- with fastload and algorithm: 2secs.
Add new devices to supported list.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 8 Mar 2010 20:32:11 +0000 (20:32 +0000)]
STM32: flash loader cleanup
- make algorithm array static const.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 8 Mar 2010 20:31:50 +0000 (20:31 +0000)]
STR7: flash loader cleanup
- make algorithm array static const.
- increase algorithm buffer size to 32k.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 8 Mar 2010 20:31:25 +0000 (20:31 +0000)]
STR9: flash loader cleanup
- make algorithm array static const.
- increase algorithm buffer size to 32k.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Mon, 8 Mar 2010 20:30:53 +0000 (20:30 +0000)]
ADUC702x: flash loader cleanup
- make algorithm array static const.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Antonio Borneo [Mon, 8 Mar 2010 16:43:59 +0000 (00:43 +0800)]
CFI CORE: bug-fix protect single sector
Cannot protect or unprotect single sector in cfi flash.
When first==last the procedure fails.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Tue, 9 Mar 2010 03:10:05 +0000 (19:10 -0800)]
move a constant table to .rodata section
The table of command registration functions shouldn't be
in writable memory, where stray pointers can clobber it.
Also, it shouldn't be initialized at runtime; that just
consumes needless code space.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Antonio Borneo [Mon, 8 Mar 2010 17:31:27 +0000 (18:31 +0100)]
cfi: simplify and clearify code
At the end I have added comments /* FIXME: to be removed */
There are 3 lines in which my simplification is not complete due to
data dependency with LOG_DEBUG() messages visible in the patch.
Such log_debug has been introduced on Jan 22, 2007 with commit
4fc97d3f2726efa147cfdb0c456eace51550e1e3 during development activity
in this file/procedure.
From my point of view, these logs can be removed, since not part of a
consistent flow of information.
Alternatively, could be borrowed in the new cfi_send_command(), but
this will increase verbosity.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Mon, 8 Mar 2010 07:32:45 +0000 (08:32 +0100)]
zy1000: embedded ice dcc tweak
How many bits to shift out before/after enabled tap not
in bypass is calculated outside the loop. This is more of
a demonstration of principle and to clarify code than
a performance optimisation as such. Follows up a bit
on the simplification work in jtag interface.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Sat, 6 Mar 2010 10:29:59 +0000 (11:29 +0100)]
jtag: simplify jtag_add_plain_ir/dr_scan
These fn's now clearly just clock out/in bits. No mystical
fields are involved.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Thu, 4 Mar 2010 13:38:19 +0000 (14:38 +0100)]
jtag: jtag_add_ir_scan() now takes a single field
In the code a single field was all that was ever used. Makes
jtag_add_ir_scan() simpler and leaves more complicated stuff
to jtag_add_plain_ir_scan().
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Mon, 1 Mar 2010 19:00:59 +0000 (20:00 +0100)]
jtag: retire tap field
jtag_add_dr/ir_scan() now takes the tap as the first
argument, rather than for each of the fields passed
in.
The code never exercised the path where there was
more than one tap being scanned, who knows if it even
worked.
This simplifies the implementation and reduces clutter
in the calling code.
use jtag_add_ir/dr_plain_scan() for more fancy situations.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Antonio Borneo [Fri, 5 Mar 2010 16:56:36 +0000 (00:56 +0800)]
CFI: review print of Voltage values
JEDEC standard reports Vpp integer part encoded as 4 bit HEX value.
To print it using decimal digits, %u is required.
Other voltage values are coded as BCD, so %x is appropriate.
Code already prints one nibble at a time, so no need for field width
and precision in format string.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Sat, 6 Mar 2010 05:09:03 +0000 (21:09 -0800)]
doc: not all debug adapters are "dongles"
Talk more about "debug adapters" instead of only "dongles". Not all
adapters are discrete widgets; some are integrated onto boards. If
we only talk about "dongles" we rule out many valid setups, and help
confuse some users (who may be using Dongle-free environments).
Also start bringing out the point that JTAG isn't the only transport
protocol, even though OpenOCD historically presumes "all is JTAG".
(Not all debug adapters are JTAG adapters, or JTAG-only adapters.)
Plus a few minor fixes (spelling etc) in the vicinity of those changes,
and updates about FT2232H clocking issues (they can go faster than the
older chips, and can support adaptive clocking).
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Fri, 5 Mar 2010 21:08:11 +0000 (13:08 -0800)]
README: update libftdi version
The FT2232H really wants libftdi 0.17 or newer; some notable
bugs got fixed in that version.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Fri, 5 Mar 2010 18:39:25 +0000 (10:39 -0800)]
ADIv5 share DAP command support
Get rid of needless and undesirable code duplication for
all the DAP commands (resolving a FIXME) ... there's no
need for coreas to have private copies of that stuff.
Stick a pointer to the DAP in "struct arm", letting common
code get to it.
Also rename the "swjdp_info" symbol; just call it "dap".
This is an overall code shrink.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Thu, 4 Mar 2010 17:30:03 +0000 (18:30 +0100)]
minidriver: fix arm11 compilation problem
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
David Brownell [Fri, 5 Mar 2010 05:51:58 +0000 (21:51 -0800)]
rename "swjdp_common" as "adiv5_dap"
This partially corrects an inappropriate name choice (and its
associated FIXME).
There are still too many variables named "swjdp", bug little
current code actually relies on them referencing an SWJ-DP instead
of some other flavor of DAP. Only the two new dap_to{swd,jtag}()
calls could behave differently on an SWJ-DP instead of a SW-DP or
a JTAG-DP.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 4 Mar 2010 05:01:16 +0000 (21:01 -0800)]
NOR: trim range in flash_driver_protect()
When the beginning or end of the specified range of sectors
already has the requested protection status, don't ask the
flash driver to change those sectors.
This will among other things turn command sequences like
this into the NOPs one would expect:
flash protect_check 0
flash info 0
... reports everything as unprotected ...
flash protect 0 0 1 off
That speeds things up (by whatever work was just avoided).
Also, with Stellaris (which can't unprotect flash at page level)
this can eliminate some undesirable/false error reports. (And
finishes fixing a bug currently listed in our bug database...)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Thu, 4 Mar 2010 04:57:49 +0000 (20:57 -0800)]
NOR: invalidate cached state on target resume
The NOR infrastructure caches some per-sector state, but
it's not used much ... because the cache is not trustworthy.
This patch addresses one part of that problem, by ensuring
that state cached by NOR drivers gets invalidated once we
resume the target -- since targets may then modify sectors.
Now if we see sector protection or erase status marked as
anything other than "unknown", we should be able to rely
on that as being accurate. (That is ... if we assume the
drivers initialize and update this state correctly.)
Another part of that problem is that the cached state isn't
much used (being unreliable, it would have been unsafe).
Those issues can be addressed in later patches.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Wed, 3 Mar 2010 20:59:53 +0000 (12:59 -0800)]
NOR: stellaris message tweaks
Give a more accurate failure message when trying to unprotect; don't
complain about pages being write protected, just say that unprotect is
not supported by the hardware ... referencing the new "recover" command,
which is the way to achieve that.
Likewise, when trying to protect, talk about "pages" (matching hardware
doc) not "sectors" (an concept that's alien to these chips).
Also make the helptext for the "recover" command mention that it
also erases the device.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Spencer Oliver [Wed, 3 Mar 2010 10:20:37 +0000 (10:20 +0000)]
STM32: Add Value Line Flash Programming Support
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
David Brownell [Wed, 3 Mar 2010 06:49:36 +0000 (22:49 -0800)]
ADIv5: use new DAP ops for AP read/write
Make ADIv5 internals use the two new transport-neutral calls for reading
and writing DP registers; and do the same for external callers. Also,
bugfix some of their call sites to handle the fault returns, instead of
ignoring them.
Remove most of the JTAG-specific calls, using their code as the bodies
of the JTAG-specific implementation for the new methods.
NOTE that there's a remaining issue: mem_ap_read_buf_u32() makes calls
which are JTAG-specific. A later patch will need to remove those, so
JTAG-specific operations can be removed from this file, and so that SWD
support will be able to properly drop in as just a transport layer to the
ADIv5 infrastructure. (The way read results are posted may need some more
attention in the transport-neutrality interface.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Wed, 3 Mar 2010 06:46:38 +0000 (22:46 -0800)]
ADIv5: use new DAP ops for DP read/write
Make ADIv5 internals use the two new transport-neutral calls for reading
and writing DP registers. Also, bugfix some of their call sites to
handle the fault returns, instead of ignoring them.
Remove the old JTAG-specific calls, using their code as the bodies
of the JTAG-specific implementation for the new methods.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Wed, 3 Mar 2010 06:42:45 +0000 (22:42 -0800)]
ADIv5: use new dap_run() operation
Make ADIv5 use one of the new transport-neutral interfaces: call
dap_run(), not jtagdp_transaction_endcheck().
Also, make that old interface private; and bugfix some of its call
sites to handle the fault returns, instead of ignoring them.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Wed, 3 Mar 2010 06:41:59 +0000 (22:41 -0800)]
ARM: start abstracting ADIv5 transports (JTAG/SWD)
To support both JTAG and SWD, ADIv5 needs DAP operations which are
transport-neutral, instead being of JTAG-specific. This patch:
- Defines such a transport-neutral interface, abstracting access
to DP and AP registers through a conceptual queue of operations.
- Builds the first implementation of such a transport with the existing
JTAG-specific code.
In contrast to the current JTAG-only interface, the interface adds
support for two previously-missing (and unused) DAP operations:
- aborting the current AP transaction (untested);
- reading the IDCODE register (tested) ... required for SWD init.
The choice of transports may be fixed at the chip, board, or JTAG/SWD
adapter level. Or if all the relevant hardware supports both transport
options, the choice may be made at runtime, This patch provides basic
infrastructure to support whichever choice is made.
The current "JTAG-only" transport choice policy will necessarily continue
for now, until SWD support becomes available in OpenOCD. Later patches
start phasing out JTAG-specific calls in favor of transport-neutral calls.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Tue, 2 Mar 2010 23:45:12 +0000 (15:45 -0800)]
target_resume() doxygen
Add doxygen for target_resume() ... referencing the still-unresolved
confusion about what the "debug_execution" parameter means (not all
CPU support code acts the same).
The 'handle_breakpoints" param seems to have resolved the main issue
with its semantics, but it wasn't part of the function spec before.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Tue, 2 Mar 2010 23:00:14 +0000 (15:00 -0800)]
LPC1768 updates, IAR board support
Fix some issues with the generic LPC1768 config file:
- Handle the post-reset clock config: 4 MHz internal RC, no PLL.
This affects flash and JTAG clocking.
- Remove JTAG adapter config; they don't all support trst_and_srst
- Remove the rest of the bogus "reset-init" event handler.
- Allow explicit CCLK configuration, instead of assuming 12 MHz;
some boards will use 100 Mhz (or the post-reset 4 MHz).
- Simplify: rely on defaults for endianness and IR-Capture value
- Update some comments too
Build on those fixes to make a trivial config for the IAR LPC1768
kickstart board (by Olimex) start working.
Also, add doxygen to the lpc2000 flash driver, primarily to note a
configuration problem with driver: it wrongly assumes the core clock
rate never changes. Configs that are safe for updating flash after
"reset halt" will thus often be unsafe later ... e.g. for LPC1768,
after switching to use PLL0 at 100 MHz.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Tue, 2 Mar 2010 17:39:36 +0000 (09:39 -0800)]
ADIv5: use right ID for Cortex-M3 ETM
Correct a mistake made copying the ID of the Cortex-M3 ETM module
from the TRM, so that "dap info" on a CM3 with an ETM will now
correctly describe ROM table entries for such modules. (They are
included on LPC17xx and some other cores.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
David Brownell [Mon, 1 Mar 2010 18:39:57 +0000 (10:39 -0800)]
arm_semihosting buildfix
The recent "add armv7m semihosting support" patch introduced two
build errors:
arm_semihosting.c: In function ‘do_semihosting’:
arm_semihosting.c:71: error: ‘spsr’ may be used uninitialized in this function
arm_semihosting.c:71: error: ‘lr’ may be used uninitialized in this function
This fixes those build errors. The behavior is, however, untested.
(Also, note the two new REVISIT comments.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Øyvind Harboe [Mon, 1 Mar 2010 14:39:41 +0000 (15:39 +0100)]
zy1000: faster jtag_add_ir_scan()
Faster and simpler.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Mon, 1 Mar 2010 14:22:10 +0000 (15:22 +0100)]
zy1000: arm11 load is now faster
290kBytes/s @ 8MHz, no need to inline jtag_tap_next_enabled().
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Mon, 1 Mar 2010 07:25:57 +0000 (08:25 +0100)]
zy1000: add jtag_add_tms_seq support
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Øyvind Harboe [Mon, 1 Mar 2010 07:22:12 +0000 (08:22 +0100)]
jtag: the post TAP state is now passed to the drivers
after clocking out a tms sequence, then the TAP will be
in some state. This state is now handed to the drivers.
TAP_INVALID is a possible state after a TMS sequence if
switching to SWD.
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Spencer Oliver [Sun, 28 Feb 2010 23:06:49 +0000 (23:06 +0000)]
armv4_5: remove core_type check in mcr/mrc cmd
core_type check is not required as the core function will be
null for cores that do not support the mcr/mrc functions.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Spencer Oliver [Sun, 28 Feb 2010 22:52:06 +0000 (22:52 +0000)]
cm3-ftest: change to use arm disassemble
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>