什么是UART 8250端口结构的mapbase和membase成员?

时间:2016-07-27 00:50:26

标签: linux-kernel linux-device-driver

我试图通过查看驱动程序代码来了解我们主板的pci Express总线上的8250串口,我很难理解下面两个struct uart_8250_port成员

struct uart_8250_port x;
memset(&x, 0, sizeof(x));
....
....
x.port.regshift = 0;
x.port.iotype = UPIO_MEM;
x.port.flags = UPF_SHARE_IRQ | UPF_LOW_LATENCY;
x.port.membase = raw_address;
x.port.mapbase = ioremap(raw_address);

成员membasemapbase是什么?另外,为什么membase采用物理pci条形地址,而mapbase采用ioremap返回的地址?

1 个答案:

答案 0 :(得分:1)

mapbase基本上是问题中端口寄存器空间的总线地址。 membase与CPU虚拟地址空间中的内存映射IO(MMIO)相同,iobase与IO类似。

是的,您可能已经注意到,在您的示例中,您有一个错误,即应该交换membasemapbase

需要

mapbase地址,例如,在UART硬件之上进行DMA操作,因为DMA使用总线地址进行操作。