2016-07-27 13 views
0

私はドライバーコードを経て、当社のボードのPCI Expressのバス上の8250シリアルポートを理解しようとしていると私は苦労メンバーmembaseとは何struct uart_8250_portUART 8250ポート構造のmapbaseおよびmembaseメンバーは何ですか?

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); 

の下の2人のメンバーの理解を持っていますmapbase?また、membaseは物理的なpciバーアドレスを取るのに対し、mapbaseioremapから返されたアドレスを取るのはなぜですか?

答えて

1

mapbaseは、基本的にはバスの質問にあるポートレジスタスペースのアドレスです。 membaseは、メモリマップIO(MMIO)のCPU仮想アドレス空間内の同じアドレスであり、iobaseはIOと似ています。

はい、あなたの例では、間違いがあります。つまり、membasemapbaseを交換する必要があります。

mapbaseアドレスを行うために必要とされているUARTのハードウェアの上に、例えば、DMA動作DMAはバスアドレスで動作するため。

関連する問題