DMA驱动开发(1,资料参考)
2011-08-18 21:00
316 查看
1、DMA驱动做成流驱动;
附:DMA的好处:
使用DMA的好处就是它不需要CPU的干预而直接服务外设,这样CPU就可以去处理别的事务,从而提高系统的效率,对于慢速设备,如UART,其作用只是降低CPU的使用率,但对于高速设备,如硬盘,它不只是降低CPU的使用率,而且能大大提高硬件设备的吞吐量。因为对于这种设备,CPU直接供应数据的速度太低。
因CPU只能一个总线周期最多存取一次总线,而且对于ARM,它不能把内存中A地址的值直接搬到B地址。它只能先把A地址的值搬到一个寄存器,然后再从这个寄存器搬到B地址。也就是说,对于ARM,要花费两个总线周期才能将A地址的值送到B地址。而DMA就不同了,一般系统中的DMA都有突发(Burst)传输的能力,在这种模式下,DMA能一次传输几个甚至几十个字节的数据,所以使用DMA能使设备的吞吐能力大为增强。
使用DMA时我们必须要注意如下事实:
DMA使用物理地址,程序是使用虚拟地址的,所以配置DMA时必须将虚拟地址转化成物理地址。
因为程序使用虚拟地址,而且一般使用CACHED地址,所以虚拟地址中的内容与其物理地址上的内容不一定一致辞,所以在启动DMA传输前一定要将该地址的CACHE刷新,即写入内存。
OS并不能保证每次分配到的内在空间在物理上是连续的。尤其是在系统使用过一段时间而又分配了一块比较大的内存时。
所以每次都需要判断地址是不是连续的,如果不连续就需要把这段内存分成几段让DMA完成传输
附:DMA的好处:
使用DMA的好处就是它不需要CPU的干预而直接服务外设,这样CPU就可以去处理别的事务,从而提高系统的效率,对于慢速设备,如UART,其作用只是降低CPU的使用率,但对于高速设备,如硬盘,它不只是降低CPU的使用率,而且能大大提高硬件设备的吞吐量。因为对于这种设备,CPU直接供应数据的速度太低。
因CPU只能一个总线周期最多存取一次总线,而且对于ARM,它不能把内存中A地址的值直接搬到B地址。它只能先把A地址的值搬到一个寄存器,然后再从这个寄存器搬到B地址。也就是说,对于ARM,要花费两个总线周期才能将A地址的值送到B地址。而DMA就不同了,一般系统中的DMA都有突发(Burst)传输的能力,在这种模式下,DMA能一次传输几个甚至几十个字节的数据,所以使用DMA能使设备的吞吐能力大为增强。
使用DMA时我们必须要注意如下事实:
DMA使用物理地址,程序是使用虚拟地址的,所以配置DMA时必须将虚拟地址转化成物理地址。
因为程序使用虚拟地址,而且一般使用CACHED地址,所以虚拟地址中的内容与其物理地址上的内容不一定一致辞,所以在启动DMA传输前一定要将该地址的CACHE刷新,即写入内存。
OS并不能保证每次分配到的内在空间在物理上是连续的。尤其是在系统使用过一段时间而又分配了一块比较大的内存时。
所以每次都需要判断地址是不是连续的,如果不连续就需要把这段内存分成几段让DMA完成传输
相关文章推荐
- DMA驱动开发(2,资料参考)
- DMA驱动开发(3,资料参考)
- DMA驱动开发(5,资料参考) ARM中断的较好解释
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)
- windows驱动开发参考资料地址
- 基于TI Davinci架构的多核/双核开发快速扫盲(以OMAP L138为例),dm8168多核开发参考以及达芬奇系列资料user guide整理
- open -iscsi 开发资料参考
- 【sdk驱动开发4】ps侧dma使用
- TDD(测试驱动开发)资料收集
- sharepoint Lync 2010开发环境建立和开发参考资料
- SQL Server Notification Service 开发参考资料 【转载】
- FPGA开发之SD驱动的资料汇总
- WINCE驱动开发之DMA的使用
- 电容屏驱动开发(一) 工作原理,资料收集(未完)
- 关于WDM驱动开发的不错资料(来自codeproject)
- Linux s3c2410 DMA驱动开发
- IOS 开发delegate和block的区别整理资料收集 (文章中内容有参考网络资料)
- Mobile web 开发参考资料
- Android 安卓开发参考书电子书 资料整理共享(点击书籍封面传送)