Software There are several free software packages available to use with the RA7SJ boards. The manufacturer recommends using the GNU/Eclipse environment, and then downloading programs to the board using the Atmel utility, SAM-BA. We have chosen to use these software packages in our textbook \"Programming and Interfacing the ARM 7.\" Download CodeSourcery's GNU toolchain for the ARM. Install the toolchain, locate and read the HTML help files. Links to the GNU documentation: GNU Make. GCC (GNU C Compiler). LD (GNU linker).
All files mentioned in this section are available for download (see below). A simple example-application is also included in the file archive. Target-controller is a NXP LPC2138 on a Keil LPC2130-board. But the basic method can be used for all LPC2000 controllers after minimal changes.
The files and setup needed to write the internal flash-memory of an AT91SAM7 controller are basicly the same as described in the previous section. The file-archive includes all needed files together with some example code (download link below). According to a message in the OpenOCD-forum the procedure can also be used to program AT91SAM7X256/AT91SAM7XC256.
The files openocd_at91sam7s_flash_ftdi.cfg and openocd_at91sam7s_flash_wigger.cfg are basicly the same and just differ in the interface-defintion-section. Here just the configuration for FTDI FT2232-based hardware. The configuration-file for Wiggler-type hardware can be found in the file archive.
The file openocd_at91sam7s_flash.script includes the commands which are called on reset (since reset_and_init is given as parameter for target). The register-writes to init \"ecr\" have been found in the openocd-package. I have just adapted them to the default frequency used on most boards for USB-compatiblity when using the AT91SAM7S-series. If you use another target and it does not work for you just remove the lines starting with mww.
For those who use an AT91SAM7X controller: I have got an e-mail from David Jander: [...]The AT91SAM7X introduced bootloader selection via NVM-bits in flash. An empty part (or one that has been erased using the ERASE pin), will programm fine with OpenOCD using your instructions (adjusting the obvious bits for SAM7X), but the application will never run! That is because NVM-bit2 (boot selection) has to be set. AFAIK this can only be done using SAM-BA (the proprietary ATMEL tool) right now, since OpenOCD doesn't support NVM bits yet (please correct me if I'm wrong... I whish I was).[...]. David has not been wrong when he wrote his e-mail. But the situation has changed in the meantime. Later versions of OpenOCD offer a command to set/clear NVM-bits. This has been confirmed by Uwe Bonnes for the SVN-Version 90/31.8.2006. The command is at91sam7 gpnvm where is the flash-bank number as given in the config-file, and is obvious. Example: at91sam7 gpnvm 0 2 set. Verify the state of the gpnvm-bits after a manual flash erase.Writing ST STR71x internal flash-memory
Currently I just provide a small example-package with demonstrates how the internal flash of a STR710 can be programmed using OpenOCD. You can download the demo-package including the OpenOCD configuration, programming-script and a small example-application here. The method has been tested with the ST STR710 evaluation-board.Programming external CFI flash-memories 076b4e4f54