1. 03 Mar, 2010 6 commits
    • David Brownell's avatar
      NOR: stellaris message tweaks · 99939c3c
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • Spencer Oliver's avatar
    • David Brownell's avatar
      ADIv5: use new DAP ops for AP read/write · 381ce430
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ADIv5: use new DAP ops for DP read/write · 61ee632d
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ADIv5: use new dap_run() operation · 24b1426a
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ARM: start abstracting ADIv5 transports (JTAG/SWD) · db6c9946
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
  2. 02 Mar, 2010 3 commits
    • David Brownell's avatar
      target_resume() doxygen · d72e90ae
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      LPC1768 updates, IAR board support · 53b3d4dd
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ADIv5: use right ID for Cortex-M3 ETM · 5b311865
      David Brownell authored
      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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
  3. 01 Mar, 2010 5 commits
  4. 28 Feb, 2010 13 commits
  5. 27 Feb, 2010 4 commits
    • David Brownell's avatar
      new "stellaris recover" command · e70d42a7
      David Brownell authored
      Stellaris chips have a procedure for restoring the chip to
      what's effectively the "as-manufactured" state, with all the
      non-volatile memory erased.  That includes all flash memory,
      plus things like the flash protection bits and various control
      words which can for example disable debugger access.  clearly,
      this can be useful during development.
      Luminary/TI provides an MS-Windows utility to perform this
      procedure along with its Stellaris developer kits.  Now OpenOCD
      users will no longer need to use that MS-Windows utility.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ADIv5 DAP ops switching to JTAG or SWD modes · 3ef9beb5
      David Brownell authored
      Define two new DAP operations which use the new jtag_add_tms_seq()
      calls to put the DAP's transport into either SWD or JTAG mode, when
      the hardware allows.
      Tested with the Stellaris 'Recovering a "Locked" Device' procedure,
      which loops five times over both of these.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ft2232: implement TMS sequence command · 8c9b52e8
      David Brownell authored
      Implement the new TMS_SEQ command on FT2232 hardware.
      Also, swap a bogus exit() call with a clean failure return.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      interface: define TMS sequence command · a3245bd7
      David Brownell authored
      For support of SWD we need to be able to clock out special bit
      sequences over TMS or SWDIO.  Create this as a generic operation,
      not yet called by anything, which is split as usual into:
       - upper level abstraction ... here, jtag_add_tms_seq();
       - midlayer implementation logic hooking that to the lowlevel code;
       - lowlevel minidriver operation ... here, interface_add_tms_seq();
       - message type for request queue, here JTAG_TMS.
      This is done slightly differently than other operations: there's a flag
      saying whether the interface driver supports this request.  (In fact a
      flag *word* so upper layers can learn about other capabilities too ...
      for example, supporting SWD operations.)
      That approach (flag) lets this method *eventually* be used to eliminate
      pathmove() and statemove() support from most adapter drivers, by moving
      all that logic into the mid-layer and increasing uniformity between the
      various drivers.  (Which will in turn reduce subtle bugginess.)
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
  6. 25 Feb, 2010 3 commits
    • Mariano Alvira's avatar
      ft2232: add a mechanism to specify channel in layout structs · 4a64820f
      Mariano Alvira authored
      FT2232-family chips have two or more MPSSE modules.   FTDI documentation
      calls these channels.  JTAG adapter drivers thus need to be able to choose
      which channel to use.  (For example, one channel may connect to a board's
      microcontroller, while another connects to a CPLD.)
      Since each channel has its own USB interface, libftdi (somewhat confusingly)
      identifies channels using INTERFACE_* symbols.  Most boards use INTERFACE_A
      for JTAG, which is the default in OpenOCD.  But some wire up a different one.
      Note that there are two facets of what makes a wiring "layout":
       - The mapping between debug signals map and channel signals ... embedded
         in C functions.
       - Label used in Tcl configuration scripts ... part of the "layout" structure.
      By letting the channel be part of the layout struct, we permit sharing the C
      functions between Tcl-visible layouts, when those signal mappings are reused.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • David Brownell's avatar
      ARM ADIv5 doxygen and cleanup · 79010bf3
      David Brownell authored
      Add doxygen for mem_ap_read_buf_u{8,16,32}() calls,
      and shrink a few overlong lines.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    • Hans Peter Mortensn's avatar
      AVR flash: handle AT90CAN128 chips · 7abe9f38
      Hans Peter Mortensn authored
      I have successfully programmed the AT90CAN128, based on the mega128  
      with some small modifications.
      [ dbrownell@users.sourceforge.net: patch cleanup ]
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
  7. 24 Feb, 2010 1 commit
  8. 22 Feb, 2010 5 commits