swddude
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A SWD programmer for ARM Cortex microcontrollers.
swddude
=======

*`swddude` is very young pre-alpha software.  Caveat downloader.*

`swddude` is a collection of simple tools for programming and using ARM Cortex
microcontrollers, such as the Cortex-M0 and M3, using the SWD protocol.


Why?
----

Larger ARM microcontrollers have JTAG interfaces.  OpenOCD and friends already
do a great job flashing these micros.  But for smaller parts, such as the
LPC11xx/LPC13xx series, ARM has defined a new low-pin-count debug interface
called SWD.  OpenOCD doesn't yet support SWD.  In fact, when we started writing
`swddude`, no software on Mac or Linux could do what we wanted!

It's a shame not to be able to use these powerful little microcontrollers, so we
wrote `swddude` to scratch this itch.


What Can It Do?
---------------

Currently:

 * `swddude` itself can flash code onto the NXP LPC11xx (Cortex-M0 based) and
   LPC13xx (Cortex-M3 based).
 * `swdprobe` can interrogate a SWD-compatible chip and dump information about
   what it finds.  This is useful when adding support for new chips to
   `swddude`.
 * `swdhost` provides semihosting I/O for an attached microcontroller.  With
   semihosting, embedded software can send `printf`-style messages to a host
   computer through the debug connection -- no UART required.
 * `swddump` extracts the contents of Flash from a supported microcontroller.

We're working to extend the tools to support more microcontroller varieties.
Specifically, we're focusing on microcontrollers without JTAG ports -- devices
that can't be easily added to OpenOCD (yet).


How Do I Use It?
----------------

You'll need a supported programmer and, of course, a supported microcontroller
with a SWD interface.  Currently `swddude` supports using the Bus Blaster (v2.5
programmed with the KT-link compatible CPLD configuration) or any FTDI
development board with an FT232H or FT2232H chip that has been wired to the SWD
lines of your microcontroller.

Wire up your micro using the configuration described in `swd_mpsse.h`.

Install `libusb` 1.0 and the `libusb-compat` package.  The version supplied by
your package manager (apt, Homebrew, etc.) should be fine.

Build a recent version of `libftdi`.  As of this writing, you must build
`libftdi` from HEAD -- the released version (0.20) still uses the legacy
`libusb` 0.1 APIs and is incompatible with `swddude`.

After checking out `swddude`, build it like so:

    $ cd swddude/source
    $ make swddude release

This will deposit a `swddude` binary in `swddude/source/release`.

To program your microcontroller, you'll need to have your desired firmware in
binary format -- not ELF, and not Intel hex.  Assuming it's in a file called
`firmware.bin`, you run:

    $ swddude -flash firmware.bin -fix_lpc_checksum

This will default to the um232h programmer (FTDI's FT232H development board)
configuration.  If you are using a Bus Blaster, you should add
`-programmer bus_blaster` to the command line above.

That last option, `-fix_lpc_checksum`, adds the vector table checksum expected
by the NXP LPC series.  Without it, your firmware won't run!  If some other tool
has already written the correct checksum into your firmware, you can omit that
option.


Status and Known Issues
-----------------------

These boards are known to work:

 * LPCxpresso LPC1114.
 * LPCxpresso LPC11C24.
 * LPCxpresso LPC1343.

Note that the LPCxpresso boards will only work if you disable the proprietary
LPC-Link programming device on the board.  On newer boards, you can do this by
clearing solder jumpers between the two sections of the board; older boards make
you physically cut traces in the same position.

Known issues:

 * Error reporting is not great.  Most failures just print a stack trace, which
   isn't helpful if you're not familiar with the source code.  In general, it's
   worth retrying at least once -- sometimes the SWD communications just need to
   be reset.
 * `swddude` makes no attempt at identifying the chip it's programming.  If you
   try programming an unsupported chip, it may do very bad things -- there is no
   safety net.
 * On the LPC1343 specifically, the SWD interfaces sometimes gets "stuck" and
   requires a power-cycle.  This will show up as failures very early during
   communication (often referencing the IDCODE register).


Brief Tour of the Source
------------------------

The source code contains the following top-level directories:

 * `build`: Anton Staaf's build system.
 * `libs`: Anton Staaf's support libraries, several of which we use.  (We
   currently include more than we strictly need here.)
 * `source`: `swddude` and friends.

The source tree uses git's submodule feature aggressively.  If you check out
`swddude` using a simple `git clone`, you'll be left with empty directories that
won't build.  You can fix this by running

    git submodule update --recursive

Alternatively, you can make this happen automatically when you clone, like so:

    git clone --recursive ${git_url}

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。