⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 VxWorks系统CS网卡END驱动(源码)
💻 TXT
📖 第 1 页 / 共 2 页
字号:
			   LOAD_STRING is:

               "0xIOAddr:IntLevel:0xMemAddr:MediaType:0xConfigFlags"


  IOAddr     IO Base Address
             This value is the base address of the CS8900 in IO space.
             Defined in hexadecimal.


  IntLevel   CS8900 Interrupt Request Channel
             Define as CS8900_INT_LVL.  Valid values for CS8900_INT_LVL are:
             5, 0xa (10), 0xb (11), or 0xc (12). 


  MemAddr    Base address of CS8900 in Memory space.
             Defined in hexadecimal.
			 If it is set to zero, then the CS8900 chip operates in the mode
			 specified by the EEPROM or the configFlags parameter.


  MediaType  Media type used by CS8900
             Defined as:
	         1   for AUI connector
	         2   for 10Base-2 (BNC)
	         3   for 10Base-T (RJ45)

 configFlags Configuration Flags
             If any configuration flags are to be defined here, define as a
	         minimum the CFGFLG_NOT_EEPROM flag.  Set multiple configuration
	         flags by ORing (adding) them inside of parenthesis. Example:
	       
	         (CFCFLG_NOT_EEPROM + CFGFLG_MEM_MODE)

	         This example specifies operation in memory mode and to ignore 
	         configuration data in EEPROM.

	         Valid configuration flag values:
	       
	         CFGFLG_NOT_EEPROM    
	         Override configuration flags in EEPROM (if present)
	       
	         CFGFLG_MEM_MODE      
	         Use memory mode to access the chip

	         CFGFLG_USE_SA        
	         Use System Address lines to qualify MEMCS16 signal (ISA only)

	         CFGFLG_IOCHRDY       
	         Extend time for IO access to CS8900 (ISA only) 

	         CFGFLG_DCDC_POL      
	         Specifies the signal level of the DC/DC converter's enable pin
	         is active high (DC/DC converter used by 10Base-2 transceiver)
	       
	         CFGFLG_FDX           
	         Configures the CS8900 to use full duplex for the 10Base-T 
	         transmission mode.

             CFGFLG_PROMISC_MODE 
             Configures the CS8900 to the Promiscuous Mode.  The CS8900 will
			 accepts all good network frames in the mode.


Parameters in "csEnd.c"
------------------------

ALIGMENT_32BIT

This definition needs to be defined for the processors that perform 32-bit
read/write, such as ARM, Strong ARM, SH3, SH4, and MIPS.

If the data buffer for transmission starts on an odd address boundary, copy it
to a temporary buffer that starts on an even address boundary, and write the
temporary buffer to the CS8900 Chip. 



Parameters in "csSysEnd.c"
------------------------

CS_MAX_NUM_UNITS  

This definition represents the number of CS8900s in the same system supported
by this driver.  This value is always one (i.e. the current driver supports
only one CS8900).



CS_NUM_RX_BUFFERS       

This value specifies the number of 1500-byte receive buffers allocated by the 
driver for local storage of received frames.  Receive frames are copied 
from the chip into these local receive buffers at the ISR level and passed to
the protocol stack for processing at the task level.  Also, these receive buffers
can be loaned to the protocol stack during processing, thus preventing an extra
copy of the receive data (from the local receive buffer into a protocol mbuf 
chain).  For best Ethernet throughput, set this value to largest number feasible
based on your system's memory constraints.



CS_MAX_QUEUE   

This value is the maximum number of elements in the local TX and RX queue.
The RX queue holds pointers to local RX buffers to be passed to the protocol
stack for processing at task level.  The TX queue holds pointers to mbuf
chains to be freed at the task level (frames that have been transmitted).



CS_INITIAL_START_CMD	

The CS8900 is capable of starting the TX operation before the full frame is
copied to the on-chip TX buffer.  However, this operation mode creates the
possibility of a "TX underrun", i.e. the transmitter may run out of data
before the full frame is buffered if the TX frame copy to chip is delayed or
slower than one byte per 0.8ms (wire data rate).  

Part of the TX command to the CS8900 specifies the number of bytes to be 
buffered before the transmission on the wire begins.  If excessive TX 
underruns occur, the driver automatically adjusts the TX command to start 
the next TX after additional bytes are buffered.  The possible values for 
the number of bytes buffered before the TX starts are: 5, 381, 1021, or a
full frame.

CS_INIITIAL_START_CMD specifies which TX start command to use initially before
the driver makes any required automatic adjustments.  Valid definitions for 
CS_INITIAL_START_CMD are:

   TX_CMD_START_5    (start after 5 bytes buffered) 
   TX_CMD_START_381  (start after 381 bytes buffered)
   TX_CMD_START_1021 (start after 1021 bytes buffered)
   TX_CMD_START_ALL  (start after the full frame is buffered)

Refer to the CS8900 Datasheet for more information on transmit operation.



#define CS_TX_UNDRUN_TRHSHOLD   3 

This value specifies the number of TX underruns allowed while using the 
current TX start command before the driver automatically adjusts the command 
to start the next transmission after additional bytes are buffered.




4.0 DISPLAYING DRIVER STATISTICS AND CONFIGURATION
==================================================

The network interface driver includes a display routine, called csShow(), which
displays driver configuration and statistics information.  To invoke the
display routine, at the shell prompt, type:

-> csShow

Another routine that you may find useful is:

-> ifshow "cs0"


Message Logging
---------------

If the network interface debug flag is set, then the network interface driver
logs significant events and error messages to the logging task.  The default
behavior of the logging task is to display logging messages on the console.
To set the debug flag, issue the following command at the shell prompt:

        -> ifflagchange "cs0", 4, 1

To clear the debug flag, issue the following command at the shell prompt:

        -> ifflagchange "cs0", 4, 0

You can use the csShow() routine to view the current state of the debug flag.


If you don't need the debug message any more, remove the debug message logging
by  undefining CS_DEBUG_ENABLE in the csEnd.c file.

/*********************** debug macro *******************************/

/* this flag is used to turn DEBUG on or off */
/*#define CS_DEBUG_ENABLE*/



5.0 PORTING TO A NEW BSP
========================

Starting with the version 2.01 driver, the driver has been divided into two
modules: a BSP-independent module "csEnd.c" and a BSP-specific module
"csSysEnd.c".  In order to port the driver to a new BSP, only the "csSysEnd.c"
file should need to be modified.  You should not modify the "csEnd.c" file.
This will ensure your port is compatible with any future releases of the driver
from Cirrus Logic.

A "csSysEnd.c" module written for a 386 BSP is provided with this driver as an
example.


Big Endian and Little Endian Architectures
------------------------------------------

A macro for byte-swapping is defined based on the _byte_order definition in the
VxWorks header file "arch.h".  For "big endian" CPUs, the macro is defined to
swap the order of bytes for access to CS8900 registers.  For "little endian"
CPUs, the macro does nothing.

Note: The use of this macro assumes that the hardware data lines to the CS8900
have been "byte swapped" in big endian systems.  That is, CPU D0 connected to
CS8900 D8, CPU D1 connected to CS8900 D9, etc.  Using this technique, only
counter-register values must be byte swapped in real time.  All other values
are byte swapped at compile time using definitions in the header file.  Network
data is never byte swapped in software.  This is handled by the CS8900 hardware.


Macros
------

Three macros are used to communicate with the CS8900 in IO mode.  For the
pc386/pc486 BSPs, they call system routines provided by VxWorks/PCX86 for
IO space access.  For non x86-based BSPs, they need to be redefined as
appropriate for your BSP's architecture (e.g. a memory dereference if IO
space is not supported).

/* X86 BSP macro definitions used to provide IO mode accesses */
#define SYS_ENET_OUT_WORD(port, value)	      sysOutWord((port), (value))
#define SYS_ENET_IN_WORD(port)			sysInWord(port)
#define SYS_ENET_IN_BYTE(port)			sysInByte(port)

/* Example macros used to "emulate" io space access for non-Intel CPUs */
#define SYS_ENET_OUT_WORD(port, value)    (*(volatile USHORT*)(port)) = (value)
#define SYS_ENET_IN_WORD(port)            (*(volatile USHORT*)(port))
#define SYS_ENET_IN_BYTE(port)            (*(volatile UCHAR*)(port))



BSP-specific Routines
---------------------

The following five BSP-specific routines are called from the main driver
module "csEnd.c" and must be replaced with routines appropriate for your
hardware configuration.

* sysEnetGetConfig( )
This routine takes configuration parameters not specified to csEndLoad() through the InitString from non-volatile storage (e.g. an attached EEPROM)
and puts them in the CS_END_DEVICE structure. 

* sysEnetAddrGet( )
This routine obtains the Ethernet MAC address from non-volatile storage or from 
the "csEnetAddr" array defined in sysEnet.c and saves it in the interface's 
MIB2 structure.

* sysEnetHWInit( )
This routine uses global variables in the CS_END_DEVICE structure to configure the adapter for the board-specific IO circuitry and supported media types.

* sysEnetIntEnable( )
This routine enables the interrupt used by the CS8900 at the system level.  It 
may not be required by your BSP.  If not, implement as a stub (empty routine).
 
* sysEnetIntDisable( )
This routine disables the interrupt used by the CS8900 at the system level.  It 
may not be required by your BSP.  If not, implement as a stub (empty routine).


You may add any support routines to be called by the above required routines
as you wish.



6.0 CONTACTING CIRRUS' TECHNICAL SUPPORT
==========================================

Cirrus' CS8900 Technical Support can be reached at:

Telephone  :(800) 888-5016 (from inside U.S. and Canada)
           :(512) 442-7555 (from outside the U.S. and Canada)
Fax	       :(512) 912-3871
Email	   :ethernet@crystal.cirrus.com
Web        :www.crystal.com

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -