Sat Aug 9 10:23:45 BST 2008

Interaction: single chip vs. distributed applications

I've been thinking about the interaction model for Staapl.  In order
to make things more manageble, I will introduce two different cost
models for interactive development.  The main distinction is about
single/multi core applications.


  Defined as an application where a single uC performs a well-defined
  task without much higlevel communication to other chips, and can be
  developed and tested in isolation.


  Defined as an application where a single uC is integrated in a
  communication network.  The communication between uCs is an
  essential part of the solution, and cannot be conveniently developed
  or tested in isolation.

These two applications deserve a different solution pattern.  For
single chip applications, communication overhead necessary for
debugging should be minimized, while in distributed systems,
communication is essential to the operation and can be used to support

To simplify matters, the rest of the exposition is specific to the
Microchip PIC line, but should be easily generalizable to other
manufacturer's chip lines.

For single chip applications, the aim should be at making the hardware
interface necessary for programming and debugging as simple as
possible since it is not part of the solution.  If interactive
debugging is required, use a communication protocol that minimizes
on-chip resource usage.  For PIC this means the use of the native
Microchip programming interface, and use the same pins for the
debugging protocol.  PicKit2 [1][2] could be of use here.

For distributed applications, Staapl will concentrate on PICs that are
self-programmable: the ones that have an internal charge pump to
generate the Flash programming voltage. (Anything > PIC18 and some of
the PIC16).  Each PIC should be equipped once with a (read-only)
monitor that understands the basic network protocol and can update
firmware.  The programming host <-> network interface can then be
implemented using the single chip approach which interfaces to a
network entry node.

Learning from past attempts at building an easy to interface platform,
the most important drawback has been the necessity for expensive
programming and interaction hardware.  I managed to bring it down to
20 Euro per person for the serial interface + chip with bootloader.
With the availability of the PicKit2 for 25 Euro it is probably not
possible to find a cheaper solution for bootstrapping blank chips.  It
looks like the protocol is open, so direct support in Staapl should be

[1] http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
[2] http://www.didel.com/