Thanks or your answers,
The Host/PCI chipset is the system master which knows if it has to
perform any tasks (IO transactions) after filtering the address. I
presume that the H/PCI chipset must know the address range to support.
I have the PCI System Architecture book from Mindshare and not a lot of
explanation about Host/PCI chipset. I think that it will be better for
me to learn more about this chipset. Maybe it has some books or
reference available.
Regards
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Roddy, Mark
Sent: Wednesday, October 15, 2003 1:47 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: IO vs memory mapping
That’s a lot of questions! I’ve added some comments in line below.
=====================
Mark Roddy
-----Original Message-----
From: Christian Grenier [mailto:xxxxx@mcdi.com]
Sent: Wednesday, October 15, 2003 12:56 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: IO vs memory mapping
I just want some explanation between I/O address and
I/O-memory mapping. I’m so confused about that.
If the I/O registers are mapped in the main memory, the
driver must access to this memory address to read or write to
these registers? So, does the peripheral will know about
this change?
Just to be clearer, as the term “I/O registers” is confused with “I/O
address space”, mapping “device registers” into system memory space
allows
programs to modify the contents of those registers by simply modifying
memory addresses in system memory space. It is the processor host<->pci
chipset that performs the required PCI transaction when it observers a
write
to one of these memory mapped system addresses.
I think that I understand about I/O address space. Someone
correct me if I’m not right, the architecture (i.e.
processor) can support I/O and memory space, and also the
system can be mapped only in the memory space. It depends
which architecture we are using. The processor sends the
address to the address line, some control signals are used to
select between I/O, memory (M/IO, Rd, Wr).
But, if the processor supports only memory space, I presume
that there is no M/IO signal. In addition, the peripherals
have I/O decoders and memory decoders. I don’t understand
how access to I/O registers if the processor supports only
the memory space.
If the processor does not support memory space, then on NT it must be
the
case that the host<->pci chipset understands how to convert from a
system
memory address to a PCI IO bus transaction, for ranges of system memory
addresses that are allocated specially for IO transactions. The device
IO
registers are basically mapped into system memory, just as if they were
Memory registers, using these special memory addresses, and the platform
chipset takes care of ‘doing the right thing’.
I wrote an article (http://www.wd-3.com/archive/PioAccess.htm) for
Windows
Driver Developer’s Digest (http://www.wd-3.com/) that covers some of the
details of device register access in NT. Perhaps you should read it.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@mcdi.com
To unsubscribe send a blank email to xxxxx@lists.osr.com