Table of Contents
PCI System Design SeriesWorkshop
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 developmentis 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?
|