Intel® IXP400 Software

Endianness in Intel® IXP400 Software

When adding support for Little-Endian, there were two factors taken into account in deciding where to use Address Coherency and Data Coherency Little-Endian modes.

1.The initial IXP400 software releases and Board Support Packages were all Big-Endian.

2.IXP400 software support for Little-Endian was required to operate on all the supported Little- Endian operating systems.

The implications of this can be seen in two key Little-Endian implementation decisions.

1.The Little-Endian VxWorks Board Support Package uses Address Coherency. One of the properties of Address Coherency is that 32-bit accesses do not need to be swapped. Most of the processor register accesses in the BSP are 32-bit accesses, so it made sense to port the existing Big-Endian BSP to Address Coherant Little-Endian.

2.The IXP400 software Little-Endian implementation uses Data Coherency and all memory is mapped as Data Coherent. We did not want to have different Little-Endian implementations of the IXP400 software for the different operating systems supported, and therefore chose Data Coherency as the common implementation for all currently supported operating systems.

It should be noted that the IXP400 software Little-Endian implementation is designed in such a way that the coherency mode for any Access-Layer component can be changed if desired. The same is true for the memory map. There is no restriction placed on mapping memory as either Address or Data Coherent once that model is facilitated by the chosen operating-system MMU requirements. The choice of coherency mode is principally determined by the way the Operating System uses the memory management unit.

The files to consult within the IXP400 software are: \ixp_osal\include\modules\ioMem\IxOsalIoMem.h \ixp_osal\include\modules\ioMem\IxOsalMemAccess.h \ixp_osal\include\modules\ioMem\IxOsalEndianess.h \ixp_osal\os\vxworks\include\platforms\ixp400\IxOsalOsIxp400CustomizedMapping.h \ixp_osal\os\linux\include\platforms\ixp400\IxOsalOsIxp400CustomizedMapping.h

The remainder of this chapter details the processor Little-Endian implementation . It identifies the appropriate coherency mode per hardware component and explains the implications of each selection. It also contains a detailed look at the implications of the various endianness modes and how they relate to TCP/IP stack expectations.

Details on every component are not included, but an overview of certain components is included to provide insight on which coherency modes are used. Further details on the currently supported modes of each component are available in the code comments included in the IXP400 software.

Note: Linux Little-Endian support utilizes the existing IXP400 software components, principally using the same VxWorks modifications as documented in following sections. Other changes are contained within the Linux board support package.

27.5.1APB Peripherals

The Advanced Peripheral Bus (APB) provides access to the following peripherals:

Blocks specific to BSP

UARTs

April 2005

IXP400 Software Version 2.0

Programmer’s Guide

354

Document Number: 252539, Revision: 007

 

Page 354
Image 354
Intel IXP400 manual APB Peripherals