Bestcomm fec initialization, Mpc5200 register support – Motorola MPC5200 User Manual

Page 14

Advertising
background image

8

KADAK

KwikNet MPC5200 FEC Device Driver

BestComm FEC Initialization

The

KwikNet

MPC5200 FEC device driver must initialize the BestComm FEC receive and

transmit tasks to match the driver's configured requirements. Unfortunately, the
BestComm FEC initialization must only be performed once. However, the MPC5200
FEC driver can be opened and closed many times as

KwikNet

operates. Each time the

driver is opened, it must initialize the FEC hardware but it must only initialize the
BestComm FEC subsystem once.

To meet this requirement, an FEC initialization procedure

kn_BestCommFEC()

is

provided in source file

KN5200BC.C

. The

d

evice driver calls this procedure to prepare the

BestComm FEC subsystem for subsequent use by the driver. The procedure is called
every time that the Ethernet network interface is opened for use.

The function receives a pointer to an initialization structure

knx_bcfecsetup

defined in

header file

KN5200BC.H

. This structure serves two purposes. On input, it presents the

configuration information needed to initialize the BestComm FEC subsystem. On output,
it contains the task identifiers for the BestComm FEC RX and TX tasks.

Procedure

kn_BestCommFEC()

maintains a copy of structure

knx_bcfecsetup

as

received the first time that the function is called. The BestComm FEC subsystem is
initialized and the results are saved in static variable

kn_bcdata

. On subsequent calls to

kn_BestCommFEC()

, the input parameters are compared to the saved values. If the new

parameters do not match the original values, the call is rejected with an error status
because the BestComm FEC subsystem cannot be reconfigured to meet the revised
configuration requested.

A custom timing service is implemented in source file

KN5200BC.C

for the benefit of the

MPC5200 FEC device driver. Precise timing is derived from the internal MPC5200
Time Base Register. Procedure

kn_tbdelay()

can be used to instrument a compute

bound delay with microsecond precision. This procedure supercedes the crude delay
function offered by

KwikNet

procedure

kn_brddelay()

. Note that proper operation of

procedure

kn_tbdelay()

depends upon the time base clock frequency as defined by

symbol

TBR_FREQ

in header file

KN5200BC.H

.

You are free to edit source file

KN5200BC.C

to adapt the BestComm FEC initialization

sequence to your particular needs. Alternatively, you can merge the code from module

KN5200BC.C

into your own BestComm task initialization module, being sure to retain

FEC setup procedure

kn_BestCommFEC()

and its functional integrity.

MPC5200 Register Support

Two low level MPC5200 register access functions are provided in source file

KN5200BC.C

. Function

kn_get_mbar()

reads the Memory Base Address Register (

MBAR

)

and returns its value to the caller. Function

kn_get_tbr()

reads the low order 32 bits of

the 64-bit Time Base Register (TB) and returns its value to the caller.

These functions are implemented using the assembly language features offered by each of
the C compilers tested by KADAK. The functions are implemented in a compiler
specific manner in header file

KN5200BC.H

. Instances of the functions are included near

the end of source file

KN5200BC.C

by defining symbol

KN_CCNEED_MPC5200SPR

and

including header file

KN5200BC.H

for a second time.

Advertising