[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Address Map question
Perhaps someone out there can clear up some confusion on this end
concerning Configuration. As i understand it, the following steps are
followed to configure a PCI Target:
1) The Host reads BAR0 (actually, all of them, but for this example
i'll limit it to BAR0),
2) the Host writes all $Fs to BAR0,
3) the Host reads BAR0 to determine the size of BAR0, and
4) the Host assigns the address offset to BAR0 & writes it.
5) the Host moves on....
Now, when i read the box at the top of page 204 in the PCI spec v2.2, it
talks about "Sizing a 32 bit Base Address Register Example." In the first
paragraph in that box, it describes Steps 1-3 as i described above, but for
my Step 4, it says "The original value in the Base Address register is
restored before re-enabling decode in the command register of the device."
The part i fail to understand is restoring an old value into the BAR. I
always thought the Host assigned the PCI memory map, but the text in this
box seems to say the the Targets assign their own spaces in the memory map,
since the values in the BARs are restored and not assigned from the Host.
Can anybody shed some light on this for me, please?
mike nemeth
Rockwell Collins, Inc.
fmnemeth@collins.rockwell.com