PCIe 设备端驱动详解(dma buffer映射)

前言:学习了PCIe设备端驱动之后并做了一个项目之后,有了很多疑惑。疑惑主要来自于,由于没有深入学习PCIe体系结构,所以总线从上电开始做的一系列工作对于我来说都是黑盒。设备端只是用几个简单的API就搞定,所以稍微复杂一点的映射关系就看不懂。所以学习了下PCIe体系结构,解答了以下几个疑惑。

问题1:为什么需要dma buffer地址映射。AMTU寄存器的作用。

问题2:可不可以用bar空间实现dma buffer

回答问题1先要搞明白“域”的概念,在PCIe通信链路上,其实存在着:存储器域、pcie总线域

        PCIe HOST主桥是一个很特别的桥片,其主要功能是隔离存储器系统的存储器域和处理器系统的PCI总线域,管理PCI总线域,并完成处理器与PCI设备间的数据交换。

        那么有人就要问了,这跟为什么需要dma buffer地址映射有什么关系。其实这个dma地址映射就是存储器域到pcie总线域的映射的一种表现形式呀,下面我们来聊一聊。

        dma buffer是在哪里开辟的?

        答:一般是pcie驱动里开辟的,使用dma_alloc_coherent,返回虚拟地址。需要注意的是,这段地址在内存里属于CPU能直接访问到的存储器域,下面处理器需要将存储器域中的dma buffer 地址空间映射到pci总线的地址空间也就是pcie总线域

        有必要做这一步吗?

&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值