http://www.mjmwired.net/kernel/Documentation/IO-mapping.txt爲什麼我們只能直接訪問PCI物理地址中的640k-1MB區域?
153 - remapping and writing:
154 /*
155 * remap framebuffer PCI memory area at 0xFC000000,
156 * size 1MB, so that we can access it: We can directly
157 * access only the 640k-1MB area, so anything else
158 * has to be remapped.
159 */
160 void __iomem *baseptr = ioremap(0xFC000000, 1024*1024);
161
162 /* write a 'A' to the offset 10 of the area */
163 writeb('A',baseptr+10);
164
165 /* unmap when we unload the driver */
166 iounmap(baseptr);
167
人能解釋爲什麼這個擁有We can directly access only the 640k-1MB area
?
不僅遺留下來,而且還有不同的體系結構(並非所有的世界都是帶有PCI總線的x86)。請參閱linus對需要的三種地址類型的明確解釋,以及它如何應用於Alpha(愚蠢的Jensen)和PPC。順便說一句,x86在平坦地址模式下啓動,這意味着具有類似DMA的內存訪問的設備在初始化之前應該表現自己。重複他們的地址窗口似乎是一種理智的方式。 – wildplasser