Technical Insights

SOFTWARE CONSIDERATIONS AROUND RAPIDIO DESIGNS – PART ONE

By Jim Parisien, Fabric Embedded Tools (FET)

This part one of a two-part article provides an understanding of the basic information needed for successful board and system level bring up. Included is a discussion of the high availability features built in to RapidIO that aid in debugging both software and hardware in a RapidIO system.

Discovery in RapidIO is required to explore a network without knowing its configuration, and assign each “element” a unique device identifier or Device ID. RapidIO supports any system topology as well – Tree, Star, ring and full mesh. As such, the Discovery process involves identifying all of the Processing Elements (PEs) in a network, understanding the system topology, and enumerating each endpoint with a unique Destination ID. The Destination ID register is one of the fundamental maintenance registers within any endpoint, along with a number of others discussed below.

Is Discovery required for a RapidIO system? No. System Discovery is used only in systems where the configuration is unknown, such as a system where a user can put any set of RapidIO-based blades into a chassis. In a static system, however where PEs are always connected in the same manner through the same switches software can initialize switches and endpoints with a known configuration. Many PEs support power up configuration options where routing tables, Destination IDs, and other parameters are pre-set from non-volatile memory such as I2C EPROMs, eliminating the need for software.

System Discovery is the process of determining what types of PEs are in the system, how they are interconnected, and configuring them for operation. Let’s look at Discovery, Enumeration, and Initialization separately.

Discovery

In its simplest form Discovery is the process of interrogating each switch and endpoint in a system. From this, designers can determine the specific capabilities of each PE, how each is interconnected, and get an understanding of the network topology. If the first PE has another endpoint, then the Discovery process is completed. However if the first PE is a switch, more exploration is needed.

How do you interrogate the first PE in order to discover a RapidIO network from a processor somewhere within a network? This requires Maintenance Transactions and an understanding of how they are used.

RapidIO uses a Destination-based routing methodology. Therefore, virtually all packets contain a Destination ID in the header. For standard I/O transactions this represents the endpoint. For a Maintenance Transaction it represents a direction along the path to a specific endpoint. For Maintenance Transactions, a second parameter called a Hop Count is decremented by each switch along the way and used to specify the packet’s final destination. Routing tables in switches are simply a switch port number lookup table that uses Destination ID as an index.

Before Discovery, an unknown endpoint is an endpoint that is required to respond to any maintenance transaction using a Destination ID of Hex FF following power up. This is referred to as Promiscuous Mode. Small transport systems support 8-bit Destination IDs, while large transport systems support 16-bit Destination IDs. This article covers small transport systems; however, a large transport system is exactly the same, but uses Hex FFFF. With a four-port switch and four endpoints in a small transport system, for example, the first transaction could be a maintenance read using a Destination ID 0xFF and a hop count of 0 to the Processing Element Features Capability Register (CAR).

CAR helps identify the type of PE – processor, switch, memory or bridge. In this example, it is a switch. One requirement of a Discovery algorithm is knowing whether or not it is intended to operate within a multi-host environment. If so, designers must first determine if another host has already discovered the device. If so, it’s important to know if that host is a higher priority host, or if it has already enumerated the system.

The RapidIO specification facilitates this aspect of Discovery using a Host Based Device ID Lock register and the “Discovered” bit within the Port General Control and Status Registers (CSR). The Discovered bit is a simple status bit, that if set, will clearly indicate if another host has encountered this PE. The Host Base Device ID Lock register is a semaphore mechanism that allows a host to determine ownership of a PE or system.

Continued on Next Page