Archive for August, 2006

Greetings from endianness hell

Thursday, August 31st, 2006

Revision 90 just got committed to the SVN.

I’ve spent the last two weeks cleaning up the handling of different target/host endianness. So far, all the generic code should be endianness safe, but the flash writing code is definitely not. Please report back if the OpenOCD still doesn’t work on your big-endian target and/or host. I only have little endian targets and hosts to test with. If your target is big-endian, make sure you’ve configured the OpenOCD accordingly (target line in the .cfg file).

For those of you running OpenOCD on little-endian boxes with little-endian targets, the endianness fixes offer noticeable improvements to the memory reading code. The “arm7_9 fast_writes [enable|disable]” command was renamed to “arm7_9 fast_memory_access [enable|disable]” to reflect the changed behaviour, but the old name is still available (but deprecated, so change your init files).

While working with a EP9301 based board, I stumbled accross a problem on ARM920T targets with the data cache enabled. The current workaround for this problem is to keep linefills to the cache enabled, to ensure correct operation. If you happen to know more about this problem (see Google Groups for a longer explanation).

See the changelog for other fixes and enhancements.

SVN is at revision 83, and Michael Fischer’s YAGARTO page

Friday, August 11th, 2006

Michael Fischer, who’s supporting OpenOCD with his Windows installer packages and how-to articles (among other things), has put a new site online for his “Yet Another Gnu ARm TOolchain (YAGARTO)”. It provides windows installer packages for OpenOCD, the GNU ARM toolchain and an integrated development environment using Eclipse and the Zylin CDT plugin. What makes YAGARTO special is that it runs completely native on Windows, i.e. it’s fully based on MinGW and doesn’t require Cygwin.

Among other things, the current code available from SVN (revision 83) unifies the ‘ftd2xx’ (with FTDI’s FTD2XX library) and ‘ftdi2232′ (with the open-source libftdi) interfaces. The new interface is called ‘ft2232′, and the library used to access the hardware is selected with the ./configure options –enable-ft2232_ftd2xx and –enable-ft2232_libftdi.

The configuration options are the same as the former ftd2xx options:
ft2232_device_desc “USB dev description”
ft2232_layout “layout name”
ft2232_vid_pid

The ft2232_device_desc is only honored if the FTD2XX library is being used. The ft2232_vid_pid setting is used with both libraries, but only on Linux.

Revision 81 fixed several minor problems, and added support for ARM966E based devices like the new STR9 series from ST Microelectronics. This code was contributed by Spencer Oliver, thanks a lot.

Revision 79/80 added two new commands, jtag_ntrst_delay and jtag_nsrst_delay , to accommodate for situations where external or internal reset circuitry might keep a reset signal asserted for some time after the reset signal from the JTAG interface was deasserted. Revision 82 fixed a bug that required the arguments to these commands to be in microseconds, while they were intended to be miliseconds.