The ISE board has a socket for a single flash memory. The specified part is a 512KByte FLASH, which should be large enough to hold the bootstrap loader and the application code, although the loader supports downloading from the PCI bus.
Initially, the bootstrap loader program is written on to the flash memory (link with the bootstrap.ld model) and placed in the socket. Use a PROM programmer to write the bootstrapper image onto the flash memory. (Or use a PROM supplied by Picture Elements.) The BOOTPROM image source is in $UCR/source/util/ise/bootprom and the makefile builds an S-Record image that most prom programmers understand.
Next, you will need a linux device driver to communicate with the BOOTPROM program. The program uses the uCR packet protocol, and uCR includes a linux driver that supports the protocol on the ISE board. The driver and directions for installing it are in $UCR/source/util/linux. In particular, the ise.o module must be compiled and installed for downloads to work.
You will also need the pciconf package, available from Picture Elements at
ftp://ftp.picturel.com/pub/source/pciconf-1.x.tar.gz.Get the latest version stored at the FTP site. Some tcl scripts included with the bootprom code use tclpci to perform some of the following.
When the board is reset, the bootstrap program starts up and is ready for a download. The application code is written down to the board as a stripped COFF file (.scof) which the prom interprets and scatters into memory. The prom gets the IBR out of the ibr section of the downloaded coff file, and interprets the words to find the start address and PRCB pointer.
The program reset_ise.tcl performs the feat of resetting the ISE board. Be careful that no process has the board open, or the reset will confuse the device driver. Once the BOOTPROM is running, the file can be loaded with ``dd'' or ``cat''into the device.
% cat file.scof > /dev/ise0
Once a valid COFF file is loaded, the prom enables the BIST PCI feature of the ATU device. This is a signal to the host that the application is ready to be executed. The host starts the application by setting the BIST Start bit. The prom then uses the calculated PRCB pointer and START address to do a soft reset, into the application code. The bootstrap prom thus completely relinquishes the hardware to the application.
The program start_ise.tcl wiggles the necessary bits to get the program running. It checks that the BIST Capable bit is set, and sets the BIST Start bit to get the program executed. Again, be careful that there are no processes with the ISE board open as the effective reset caused by starting the program will confuse the device driver.
The reset_ise.tcl and start_ise.tcl are also included in a single wish script called <tt/ise_board.tcl/ that creates a small GUI for controlling the board. Use wishpci (also part of pciconf-1.x) to execute the script and a controll panel with two buttons is displayed. The ``Reset to Bootprom'' button resets the board, and the ``Start Application'' button causes a loaded program to start.
The bootprom code lives in $UCR/source/util/ise/bootprom. There are also the tcl scripts there that control the bootprom. The uCR device driver is in $UCR/source/util/linux.