PCI Configuration Registers

Comments and questions related to the "Down to the TLP" pages

PCI Configuration Registers

Postby Isaac » Mon Dec 01, 2014 9:40 pm

Here is a quote from http://wiki.osdev.org/PCI:

The PCI specification provides for totally software driven initialization and configuration of each device (or target) on the PCI Bus via a separate Configuration Address Space. All PCI devices, except host bus bridges, are required to provide 256 bytes of configuration registers for this purpose.

Does this mean in a USB flash drive for example, besides for the flash memory there are configuration registers?

If so, how are they divided? Are there 256 registers all 1 byte in size? Or maybe 128 registers all 2 bytes in size?
Isaac
 
Posts: 7
Joined: Mon Dec 01, 2014 9:20 pm

Re: PCI Configuration Registers

Postby support » Mon Dec 01, 2014 10:11 pm

Hello,

The USB device's registers (if any) are unrelated to the PCI bus' configuration registers. The term "host bus bridges" refers to a PCI element, not USB.

A USB hub can communicate with the host using a PCI/PCIe bus, but there's a complete distinction between the registers used to configure the USB hub as a PCI device and those possibly used to configure an endpoint on the USB bus.

To get an idea of the PCI registers, take a look on this:

http://en.wikipedia.org/wiki/PCI_configuration_space

Hope this clarified this issue.

Eli
support
 
Posts: 760
Joined: Tue Apr 24, 2012 3:46 pm

Re: PCI Configuration Registers

Postby Guest » Wed Dec 17, 2014 9:20 pm

Hi,

Thank you for replying. Can you please explain what PCI device functions are?
Guest
 

Re: PCI Configuration Registers

Postby support » Wed Dec 17, 2014 9:51 pm

Hello,

I believe I answered that in a previous post:

viewtopic.php?f=2&t=134

Regards,
Eli
support
 
Posts: 760
Joined: Tue Apr 24, 2012 3:46 pm

Re: PCI Configuration Registers

Postby Guest » Sun Dec 21, 2014 6:06 pm

Is there a tutorial that explains the PCI bus from the ground up?
Guest
 

Re: PCI Configuration Registers

Postby support » Sun Dec 21, 2014 7:37 pm

Well, I suppose you've already seen the "Down to the TLP" tutorial, so unfortunately I can't point at anything similar that I'm aware of.
support
 
Posts: 760
Joined: Tue Apr 24, 2012 3:46 pm

Re: PCI Configuration Registers

Postby Guest » Sun Dec 21, 2014 7:47 pm

What I need is something that will help me get the general picture. I have lot's of questions like:

When I write to programmed I/O what happens?

When I write to 0xCFC what happens?
Guest
 

Re: PCI Configuration Registers

Postby Guest » Sun Dec 21, 2014 8:01 pm

By "what happens" I mean internally. When I write a value to a port does where is it stored? In the device which that port is mapped to? Does it travel through the PCI?
Guest
 

Re: PCI Configuration Registers

Postby Guest » Mon Dec 22, 2014 3:58 am

I understand now. All data written to addresses in the programmed I/O space is transferred through the PCI bus to the proper devices. This is also known as PCI I/O space.

All PCI devices except bridges have 256 bytes of configuration space. To read from this address space one can write the address he wants to read from to 0xCF8 and the data can be read from 0xCFC. To write to this address space one can write the address he wants to write to to 0xCF8 and the data to 0xCFC.
Guest
 

Re: PCI Configuration Registers

Postby Guest » Mon Dec 22, 2014 8:45 pm

There's something I still don't understand. What is PCI memory used for? Please give an example.
Guest
 


Return to General PCIe

cron