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. 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
   3.  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

   4.  make dep
   5.  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 IXDP425 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.


3. 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.


4. 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.


5. 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.
 

6. 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.

   Note also that 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 AccessLibrary to get the ethernet support goto Rob
   Ranslam's sourceforge project site:

       http://ixp4xx-osdg.sourceforge.net

   The "uClinux on the IXDP425 and IXP400 Access Library v1.2.2 Integration
   HOWTO" provides instructions and a script to integrate the Access Library
   with uClinux. This "HOWTO" does no directly address Coyote, but can be
   addapted with a simple script path change.

   There is also general information on using the IXDP425 and uClinux. This 
   information generally applies to other IXP4XX based boards - like Coyote.

