Embedded PCI and Linux

How can you get the cost advantages of PCI and the ruggedness of an industrial platform in one form factor? Use inexpensive DIMM connectors and everyone's favorite OS.

System Architecture

The netdimm CPU architecture consists of a microprocessor,
memory, network interface, PCI interface and serial communication
ports. The backplane architecture consists of three dimmPCI slots,
one desktop PCI slot and associated I/O connectors. Figures 2 and 3
show the key components for the netdimm and passive backplane,
respectively.

Figure 2. Block Diagram of CPU Module

Figure 3. Block Diagram of Application Development Backplane

Microprocessor

The first-generation product is a complete single-board
computer based on a Motorola Dragonball VZ microcontroller. The
MC68VZ328 is based on a 68K core and runs at higher speeds and
lower power than previous components. The VZ328 is used in many of
the most popular PDAs on the market today and has many features
integrated into the device including:

FLX68000 CPU

chip-select logic and 8-16-bit bus interface

clock generation module (CGM) and power
control

interrupt controller

76 GPIO lines grouped into ten ports

two pulse-width modulators (PWM 1 and PWM 2)

two general-purpose timers

two serial peripheral interfaces (SPI 1 and SPI
2)

two UARTs (UART 1 and UART 2) and infrared
communication support

LCD controller

real-time clock

DRAM controller that supports EDO RAM, Fast Page
Mode and SDRAM

in-circuit emulation module

bootstrap mode

Memory

The total memory capacity of the netdimm product is 40MB.
This is composed of two parts: volatile and nonvolatile. The
volatile memory capacity of the netdimm is 32MB Synchronous Dynamic
RAM (SDRAM). When Linux was considered in the design process, one
of the requirements that contributed to an early design iteration
was the memory footprint. This requirement influenced the
microprocessor selection because of the need for an integrated
SDRAM controller.

The nonvolatile memory storage is limited to 8MB and is made
up using Flash-based memory. Total kernel requirements are 450KB,
and our root filesystem requirement is 150-400KB, depending on
which standard Linux components are required for the application.
This leaves approximately 7MB of RAM free for user application and
data.

Our kernel is stored using the ROM filesystem and is set to
execute in place. Nonvolatile memory requirements can be reduced in
part by using CRAMFS. CRAMFS is a special type of filesystem that
uses compression to store information. The executables are
decompressed to RAM for execution.

Networking

A 10Mbps 10Base-T network interface has been incorporated
into the first-generation netdimm product. In addition to Ethernet,
one serial RS-232 port and one serial RS-485 port have been
included.

A system management bus of sorts has been incorporated using
the industry-standard, serial peripheral interface (SPI) physical
layer. This bus can be used for communicating with low-bandwidth
peripherals.

PCI Architecture

The PCI architecture used on our first-generation module is
dictated principally by the Motorola Dragonball's (VZ328) inability
to support multiple masters on the address and control buses. One
could insert buffers to isolate the VZ328 address and control
signals. Such an implementation would suffer however, because
another external device that gains control of the bus would not
have access to the peripherals internal to the VZ328. These include
functions such as chip-select logic and, most importantly, the
SDRAM memory interface. Therefore, little is to be gained by adding
the external buffer logic.

A solution exists where a dual-ported memory is used to
interface the PCI bus with the Dragonball microprocessor (Figure
4). Cypress Semiconductor offers a component with a dual-ported
memory and PCI Master/Target interface combined into one integrated
circuit. The Cypress Cy7C09449 acts as a bridge in this
implementation. This results in two distinct address spaces: one
for the VZ328 and one for the PCI.

Figure 4. Block Diagram of PCI Architecture

An interesting observation at this point is that deviations
from industry-standard architectures, including the implementation
disclosed herein, would be a monumental undertaking were it not for
the fact that source code is available for Linux.