IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design
20 Application Note
Modified on: 3/20/02,
3. Run the IXP1200 Developers 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.6 Microengine 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.0 Microengine Functional Blocks

3.1 ATM 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.1 Structure

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.