PCI System Design Series Workshop

99/08/04


Click here to start


Table of Contents

PCI System Design Series Workshop

Who am I?

Agenda

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Get a legitimate Vendor ID. Assign a unique Device ID.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Assign valid class/subclass codes.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Never put a command or status register in Configuration Space.

Never put a command or status register in Configuration Space.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Spend your money on fast bus-master scatter-gather DMA.

Spend your money on fast bus-master scatter-gather DMA.

Spend your money on fast bus-master scatter-gather DMA.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Don’t share resources across independent functions.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

No more port-mapped addresses.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Design your FIFO’s wisely.

Design your FIFO’s wisely.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Do interrupt when its necessary - Don’t interrupt when its not.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Don’t cram all the bits into a single register.

Don’t cram all the bits into a single register.

Don’t cram all the bits into a single register.

The “Top 10” Things Every PCI Hardware Designer Should Know About Drivers

Driver design starts when hardware design starts. Hardware development is done when driver development is done.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

To initialize the board, write a 1 to offset 0x26, wait until offset 0x28 reads a 4….

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

All 8-bit registers must be accessed with 8-bit instructions….

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

The LSB is at offset 0x04, bits 8-10 are at offset 0x06.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

The 32-bit Phase Offset register holds a 16-bit signed value between -1000 and 1000.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

The driver can work-around that bug.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

Reading the Interrupt Status Register clears the pending interrupt flags.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

Just allocate 12MB of contiguous physical memory in the first 16MB of address space.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

Why decode more than 10 address lines?

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

BAR2 always decodes 256 MB no matter how much memory is installed on the board.

The “Top 10” Things Hardware Designers Do That Annoy Driver Developers

All command registers are write-only.

Summary

Summary2

Where to get more information

Questions?

Author: Chuck Berg

Email: cberg@SoftwareStudio.SG818.com

Home Page: http://www.TheSoftwareStudio.com