IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design

3.Run the IXP1200 Developer’s Workbench debug library, and connects it to a remote system host via the PCI Ethernet NIC to download and debug IXP1240 microcode.

Then, atm_init() is invoked to initialize data structures in memory:

Buffer Descriptor Free-list.

CRC-32 Lookup Table.

IP Lookup Table.

VC Lookup Table and hash miss free-list.

IP directed broadcast address hash table.

Ethernet receive port MAC address hash table.

On hardware, atm_init() resides in the atm_utils.o VxWorks-loadable module running on the StrongARM core. In the simulation environment, atm_init() resides in the atm_util.dll foreign model and is invoked from the Transactor startup script atm_ether_init.ind.

2.6Microengine Initialization

One microengine includes system_init.uc and invokes system_init() at its beginning. system_init() is the central microcode initialization macro. It handles initialization not handled by the StrongARM core, and then sends a signal to thread0 of every microengine, including itself. (system_init() can be invoked from any microengine. ether_tx_threads.uc is used simply because of available microstore space.)

Reset causes every microengine to execute thread0 first, so every microengine begins with thread0 waiting for the inter-thread signal from system_init(). Upon receipt, thread0 is responsible for starting up the microengine in an orderly fashion, e.g. initializing absolute registers and signaling the other threads to start.

3.0Microengine Functional Blocks

3.1ATM Receive Microengine

The ATM Receive microengine is a single microengine dedicated to receive cells from the ATM ports, check CRC-32 while re-assembling them into PDUs, and then forward them to the IP Router microengine. (In the software CRC configuration, an additional microengine is used to handle CRC checking.)

3.1.1Structure

The following identifies the ATM Receive microengine structure for OC-12 and OC-3 ports:

OC-12 Port

OC-3 Ports

 

 

Four threads working in parallel on one port.

One thread/port.

 

 

20

Application Note

Modified on: 3/20/02,

Page 20
Image 20
Intel IXP1200 manual Microengine Functional Blocks, Microengine Initialization, ATM Receive Microengine, Structure