The point of Enumerating the PCI
The point of Enumerating the PCI
Many webpages talk about enumerating the PCI bus, scanning through all devices on each bus, etc. But what is the main point of Enumerating the PCI? What is my operating system supposed to accomplish by enumerating the PCI? Am I supposed to store huge array in memory with each bit or every few bits representing a slot in the PCI and record each slot's status (i.e. whether there is a device there or not)? Is the point the enable bit (the enable bit in the address I write to 0xCF8)? Or is it something else?
Re: The point of Enumerating the PCI
Well, it's quite nice to know what hardware you are trying to support, isn't it?
Re: The point of Enumerating the PCI
I asked what's the point in enumerating the PCI (i.e. what is my OS supposed to get out of it). What's it got to do with supporting hardware?
Re: The point of Enumerating the PCI
Knowing what drivers to load would probably be good, no?
Re: The point of Enumerating the PCI
When I send an address to 0xCF8, the 31st bit is the enable bit. What does it do?
Re: The point of Enumerating the PCI
It makes it "work".
I imagine the devices connected to the PCI bus only respond if this bit is set, and their PCI slot is selected by bits 2-18.
"Enumerating" the PCI bus, in this context, means checking each PCI slot to see what device, if any, is connected to it. Since PCI device memory and I/O addresses can be changed at run time, you have to use the PCI bus to find the "current" memory address or I/O address that you need to use to communicate directly with the device. It will also tell you what type of device it is, and who manufactured it.
There are many devices, like USB controllers that can only be found by enumerating the PCI bus, so if you want to support USB devices, you are going to have to enumerate the PCI bus.
I imagine the devices connected to the PCI bus only respond if this bit is set, and their PCI slot is selected by bits 2-18.
"Enumerating" the PCI bus, in this context, means checking each PCI slot to see what device, if any, is connected to it. Since PCI device memory and I/O addresses can be changed at run time, you have to use the PCI bus to find the "current" memory address or I/O address that you need to use to communicate directly with the device. It will also tell you what type of device it is, and who manufactured it.
There are many devices, like USB controllers that can only be found by enumerating the PCI bus, so if you want to support USB devices, you are going to have to enumerate the PCI bus.
Project: OZone
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott
Re: The point of Enumerating the PCI
What is IDSEL? How do I access it? How is it used? What does it do? Please explain.
- thepowersgang
- Member
- Posts: 734
- Joined: Tue Dec 25, 2007 6:03 am
- Libera.chat IRC: thePowersGang
- Location: Perth, Western Australia
- Contact:
Re: The point of Enumerating the PCI
It appears that you haven't met the required knowledge for doing OSDev (namely the ability to read documentation and post useful questions), and that last post can be very easily taken as being rude (... humorously, it reminded me of a confused Dalek).
In answer to your question (which was solved by a quick google), IDSEL is the name of a signal on the PCI bus (possibly its own pin?), you shouldn't need to know of it as a developer (it's more of a hardware designer's concern)
In answer to your question (which was solved by a quick google), IDSEL is the name of a signal on the PCI bus (possibly its own pin?), you shouldn't need to know of it as a developer (it's more of a hardware designer's concern)
Kernel Development, It's the brain surgery of programming.
Acess2 OS (c) | Tifflin OS (rust) | mrustc - Rust compiler
Currently Working on: mrustc
Acess2 OS (c) | Tifflin OS (rust) | mrustc - Rust compiler
Currently Working on: mrustc
Re: The point of Enumerating the PCI
It sounded rude to you? Well, that's not what I meant when I wrote the post. To me it's pretty obvious that you totally misunderstood my post. I was asking what exactly IDSEL does, how it's used and how to access it.
Re: The point of Enumerating the PCI
To me it's pretty obvious that you don't understand what he meant by 'rude'. Were you planning on paying anyone for the PCI tutorial you clearly so desperately need? If not, you may want to go learn about it yourself, then come back when you have specific questions. Nobody here wants to spend six hours writing up everything they know about PCI for you on the basis of a one-line 'What is X? What is Y? Why Z? Please explain.'Isaac wrote:It sounded rude to you? Well, that's not what I meant when I wrote the post. To me it's pretty obvious that you totally misunderstood my post. I was asking what exactly IDSEL does, how it's used and how to access it.
e: http://www.ics.uci.edu/~harris/ics216/pci/PCI_22.pdf contains many answers for you. If you have a question you can't solve by looking through there for a few hours then this might be a good place to ask THAT.