fec.xif
==========

The MiNT-Net xif driver for Firebee onboard ethernet interface,
based on Freescale DMA API.


Installation and usage
======================

Install MiNT-Net and copy the fecdma.xif into your mint folder.
Then configure the eth0 interface as usual.

Bring up the network interface and assign an specific IP to it:
ifconfig eth0 addr 192.168.220.101

To add an route to an specific host within you network:
route add 192.168.220.99 eth0

You can influence driver mode by renaming the .xif file.
recognized filenames:

"FEC.XIF" 		=> Auto-Negotiate, no promiscuous mode
"FECP.XIF" 		=> Auto-Negotiate, promiscuous mode
"FECP10.XIF" 	=> 10Mbit half duplex, promiscuous mode
"FEC10.XIF" 	=> 10Mbit half duplex, no promiscuous mode



How it works
============

The core of this driver is the so called DMA cookie.
This cookie provides us with pointers to the so called Multichannel
DMA API. That API is provided by Freescale and built into FireTOS.
Most FEC drivers (and also many others) are built on top of the
MCDMA API. For more info read the "Multichannel DMA API User's Guide"
and MCF5475 Reference Manual provided by Freescale.

Currently nearly the same Network Buffer Scheme as FireTOS uses,
is used for packet buffering. It makes use of the
dma_malloc / dma_free functions provided with FireTOS DMA cookie.
These functions work on memory areas which aren't affected
by CPU cache. We could also use cache-visible memory,
but then we would have to flush the cache (regions) before
we send / receive data. Another Option is to use a static RAM
area, but there isn't much space, which forces to use less
buffer descriptors ( around 3 for rx, 3 for tx ) and that slows
down transfer speeds alot. So the usage of SRAM is a bit
problematic. (Altough SRAM access time is faster.)

The DMA Cookie also provides us with the Freescale Multichannel
DMA API + dma utility functions. With these functions we can
start an so called "DMA task". There are specific DMA
tasks for Receiving / Transmitting FEC data. It's built within the
DMA API. So everything we have to do: start the dma task, and
most of the work is done. The FEC is controlled by the DMA Task,
and the driver just needs to handle incoming packets and submit
outgoing packets to the task.

While writing this, there is no official release of FireTOS which
contains the DMA Cookie. So you either have to look for an
non-official version, or wait until Didier Mequignon releases the
next FireTOS version.

Enjoy!

m0n0

7. Nov. 2011
