My questions concern the Olimex ARM-USB-OCD and programming an Olimex ADuC development board (i.e. ADuC-P7026).
What is involved in downloading to the integrated flash of the ADuC? Will additional cables or software tools be needed? Can the static ram be loaded as well? Is debugging affected by where the code is loaded?
Also, to what extent will the development software support external memory (flash, SRAM, etc)?
Currently, the ARM-USB-OCD is supported only by the OpenOCD (afaik), and the OpenOCD doesn’t support writing the internal flash of ADuCs. Rowley’s CrossWroks is going to support the ARM-USB-OCD in the future, but there’s no firm data yet (afaik), but I guess Rowley supports the ADuC’s internal flash. Besides JTAG, the ADuC also support programming via the serial port using the built-in bootloader. The Olimex board has a FT232 USB->Serial converter for that purpose.
Loading the static RAM and debugging is possible with the OpenOCD, no matter if the code resides in RAM or in Flash. The OpenOCD also supports external flashes if they’re CFI compatible and using the Intel commandset. There are patches floating around that add support for Atmel/AMD/Spansion flashes, but nothing cleaned up and polished yet.
Debugging code in RAM is generally more convenient, as you can have as many breakpoints as you want. When your code is in flash, you’re limited to the two hardware breakpoints provided by the ARM core. This isn’t a problem, but you need to be aware of it.
The OpenOCD + ARM-USB-OCD should work with an ADuC, but you wont be able to write the ADuC’s internal flash using the OpenOCD. You can only write to RAM using the OpenOCD (and halt, resume, step, set breakpoints etc.).
To write the internal flash, use the internal bootloader of your device.