linux pcie内存映射,Linux下PCIe驱动以及DMA机制

本文详细介绍了Linux下PCIe驱动的工作原理,包括驱动程序的作用、设备的内存映射、DMA循环缓冲区的分配与实现,以及PCIe中断请求方式。重点讨论了DMA数据传输的优化,如中断处理程序的注册、数据读写和ioctl控制,阐述了DMA如何减少CPU资源消耗,提升数据传输效率。
摘要由CSDN通过智能技术生成

1.驱动程序做用:异步

·设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序能够像操做普通文件同样操做外部设备。Linux操做系统抽象了对硬件的处理,可使用和操做文件相同的,标准的系统调用接口来完成打开,关闭,读写喝I/O控制操做,而驱动程序主要任务也就是实现这些系统调用函数。函数

·每一个设备文件对应两个设备号,其中主设备号标识设备种类,也标识了设备所使用的驱动程序;次设备号标识使用同一设备驱动程序的不一样硬件设备。设备文件的主设备号必须与设备驱动程序在登录该设备时申请的主设备号一致,不然用户进程没法访问到设备驱动程序。spa

2.块设备与字符设备的区别:操作系统

·两者之间区别仅仅在于内核与驱动程序之间的软件接口上,块设备利用一块系统内存做为缓冲区,当用户进程对设备进行读写请求时,驱动程序先查看缓冲区的内容,若是能知足用户要求,则返回相应数据,不然调用相应请求函数进行实际I/O操做。接口

3. DMA循环缓冲区的分配与实现:队列

·对于高速数据信号的采集处理,须要在驱动程序的初始化模块(probe)中申请大量的DMA循环缓冲区,申请的大小直接关系着可否实时对高速数据处理的成败。直接内存访问(DMA)是一种硬件机制,容许外围设备和主内存直接直接传输I/O数据,避免了大量的计算开销。进程

4. Linux内核的内存分区段:内存

·三个区段,可用于DMA的内存,常规内存以及高端内存。ci

·一般的内存分配发生在常规内存区,可是经过设置内存标识也能够请求在其余区段中分配。可用于DMA的内存指存在于特别地址范围内的内存,外设能够利用这些内存执行DMA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值