ADI Engineering Coyote
----------------------


1. Compiler Tool Chain

   Before you can compile the Linux kernel, libraries and applications to
   generate a Coyote image you must install an appropriate compiler tool
   chain. I suggest you use the arm-linux tool chain that accompanies this
   source distribution (the arm-linux-tools-XXXXXXXX.tar.gz package). To
   install this toolchain do:

   1. login as root
   2. cd /
   3. tar xvzf arm-linux-tools-XXXXXXXX.tar.gz

   This package contains binaries of the following tools:

        binutils-2.14
        gcc-3.3.2
        glibc-2.2.5


2. Intel Access Library Integration

   uClinux-dist does not contain the Intel Access Library or Drivers patch.
   So by default you cannot use the ethernet nets. To build with the Intel
   Access Library, to get the ethernet support, you need to obtain the Intel
   Access Library and the uClinux IXP400 Driver Support patch.  The Intel
   Access Library can be obtained from:

       http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm

   This link contains the necessary information for obtaining the Intel
   Access Library (the ixp400AccessLibrary-XXX.zip package).

   The uClinux IXP400 Driver Support patch is available from Rob Ranslam's
   SourceForge project site:

       http://ixp4xx-osdg.sourceforge.net

   Once on this site, follow the 'uClinux-ixp400-support' link and download
   the appropriate patch (either the snapgear-XXX-ixp400-XXXX-support.tar.gz
   or the uClinux-ixp400-XXXX-support.tar.gz package).

   There is also general information on using the IXDP425 and uClinux. This 
   information generally applies to the Coyote.

   
3. Building the Source

   Follow these simple steps to compile binary images ready to run on the
   Coyote board:

   1.  tar xvzf uClinux-dist-XXXXXXXX.tar.gz
   2.  cd uClinux-dist

       . Skip to step 6 if not integrating the Intel Access Library

   3.  tar xvzf snapgear-XXX-ixp400-XXXX-support.tar.gz

       . The uClinux IXP400 Driver Support patch will extract to
         vendors/Intel/IXDP425/ixp400-XXX-uclinux.  This is because the
	 patch was created for the IXDP425 and not the Coyote.  This
	 peculiarity is not of concern as the Intel Access Library will
	 properly compile for the Coyote from this location.  Additionally,
	 the IXDP425 specific patches are probably not desirable for the
	 Coyote.

   4.  cp ixp400AccessLibrary-XXX.zip vendors/Intel/IXDP425/ixp400-XXX-uclinux/.
   5.  vendors/Intel/IXDP425/ixp400-XXX-uclinux/install
   6.  make xconfig

       . Choose the "Target Platform Selection" menu item
       . Select the "Vendor/Product" tab and choose "ADI/Coyote"
       . Select the "Libc version" tab and choose "Glibc"
       . "Save and Exit" this configuration

   7.  make dep
   8.  make

   That is it!  The final make step will run through and compile the Linux
   kernel, glibc library and a sample application set. It will also package
   the result into two files ready to load onto the Coyote board, zImage
   and ramdisk.gz.

   Only the linux-2.4.x kernel and glibc libraries can currently be used
   on the Coyote board. There is no linux-2.0.x kernel support, uC-libc or
   uClibc support for this board.


4. Loading and Running -- from serial port

   You will need an Intel Coyote board fitted with the RedBoot loader in
   flash. You need to load the files, images/zImage and images/ramdisk.gz,
   generated by the uClinux-dist build into RAM on the Coyote board.

   I have successfully used an XMODEM download over the serial port.
   To do that do from redboot do:

       load -r -b 0x01600000 -m xmodem

   Then do an XMODEM send over the serial port (this is pretty easy if
   using something like minicom under Linux).

   Then load the ramdisk image:

       load -r -b 0x00800000 -m xmodem

   Then do an XMODEM send of the ramdisk.gz file.

   Now you are ready to start Linux:

       go -n 0x01600000

   You should see the Linux boot banner, and then be presented with a
   bash shell prompt. A reasonable utility set is in place, mostly using
   the busybox tool set. By default the rc script will run a dhcp client,
   and so with a local dhcp server in place Linux will acquire an IP
   address.


5. Loading and Running -- from ethernet

   You will need an Intel Coyote board fitted with the RedBoot loader in
   flash. You need to load the files, images/zImage and images/ramdisk.gz,
   generated by the uClinux-dist build into RAM on the Coyote board. You
   should firstly setup RedBoot configuration with a client and server IP
   address.

    Copy the binary files from uClinux-dist, images/zImage and
    images/ramdisk.gz to the TFTP area of the download server.
                                                                                
    To load and run Linux issue the following RedBoot v1.92 commands:
                                                                                
        load -r -v -b 0x01600000 zImage
        load -r -v -b 0x00800000 ramdisk.gz
        go -n 0x01600000

   You should see the Linux boot banner, and then be presented with a
   bash shell prompt. A reasonable utility set is in place, mostly using
   the busybox tool set. By default the rc script will run a dhcp client,
   and so with a local dhcp server in place Linux will acquire an IP
   address.


6. Testing the Intel Access Library

   If the Intel Acees Library was correctly installed and built you
   should be able to load and use the internal Ethernet ports.

   To load the Intel Access Library modules issue the following Linux
   commands:

   	insmod ixp400
	insmod ixp425_eth

   If the above commands were successful, you should be able to
   "ifconfig ixp0" and "ifconfig ixp1" and use the internal Ethernet
   ports.  For example:

   	ifconfig ixp0 192.168.1.1
	ifconfig ixp1 192.168.2.1
	ifconfig eth0 192.168.0.1

   Note: "ifconfig eth0 ..." will configure the external PCI Ethernet
   adapter (if present).


7. Saving to Flash with RedBoot

   You can setup the flash memory from within RedBoot to directly load
   and run linux.

   The following procedure describes howto setup and load Linux into
   the flash:

     fis init
     load -r -v -b 0x01600000 zImage
     fis create -b 0x01600000 -l 0x100000 -e 0x01600000 -f 0x50040000 zImage
     load -r -v -b 0x00800000 ramdisk.gz
     fis create -b 0x00800000 -l 0x660000 -e 0x00800000 -f 0x50140000 ramdisk
     fis create -b 0x00800000 -l 0x20000 -f 0x507a0000 config

   Then create a boot script to automatically load and run:

     fconfig

        >> fis load -b 0x00800000 ramdisk
        >> fis load -b 0x01600000 zImage
        >> go -n 0x01600000

   Note: the go "-n" argument is used to halt the NPE's BEFORE control is
         passed to kernel loaded as the NPE's can be in use by RedBoot.
 

8. Customizing the Build

   Using "make xconfig" in uClinux-dist you can customize the kernel and
   application configurations. There is a large selection of packages in
   the application configuration.

   Consult the README file at the top level of uClinux-dist for some more
   information about configuration and building.

