ChinaUnix.net
相关文章推荐:

dma linux

今天看了dma的知识,一直没搞明白,数据是怎么从内存传输到外设的,或者从外设传输到内存的。 dma控制器8237只设置了一个dma缓冲区的首地址与长度,然后就开启了dma。网上能查到的最多的一段代码就是: flags = claim_dma_lock(); disable_dma(chan); clear_dma_ff(chan); set_dma_mode(chan, dma_MODE_WRITE); set_dma_addr(chan, virt_to_bus(page)); set_dma_count(chan, 32); enable_dma(cha...

by 我的小伙伴 - 嵌入式开发 - 2013-07-21 21:41:53 阅读(1056) 回复(4)

相关讨论

今天看了dma的知识,一直没搞明白,数据是怎么从内存传输到外设的,或者从外设传输到内存的。 dma控制器8237只设置了一个dma缓冲区的首地址与长度,然后就开启了dma。网上能查到的最多的一段代码就是: flags = claim_dma_lock(); disable_dma(chan); clear_dma_ff(chan); set_dma_mode(chan, dma_MODE_WRITE); set_dma_addr(chan, virt_to_bus(page)); set_dma_count(chan, 32); enable_dma(cha...

by 我的小伙伴 - 驱动开发 - 2013-07-11 15:11:15 阅读(1453) 回复(1)

dma对于ISA设备,dma只能在16M以下内存中进行 #define __get_dma_pages(gfp_mask, order \ __get_free_pages((gfp_mask)|GFP_dma,(order)) static unsigned long dma_mem_alloc(int size) { int order = get_order(size); return __get_dma_pages(GFP_KERNEL,order); 基于dma的硬件使用总线地址而非物理地址(CPU角度看到的未经转换的地址) 虚拟地址/总线地址 unsigned long virt_bus(volatile void *address); void *bus_to_vir...

by tomoowang - Linux文档专区 - 2009-07-27 14:22:36 阅读(729) 回复(0)

dma 对于ISA设备,dma只能在16M以下内存中进行 #define __get_dma_pages(gfp_mask, order \ __get_free_pages((gfp_mask)|GFP_dma,(order)) static unsigned long dma_mem_alloc(int size) { int order = get_order(size); return __get_dma_pages(GFP_KERNEL,order); 基于dma的硬件使用总线地址而非物理地址(CPU角度看到的未经转换的地址) 虚拟地址/总线地址 unsigned long virt_bus(volatile void *address); void *bus_to_v...

by frensky2 - Linux文档专区 - 2008-06-30 17:03:35 阅读(1198) 回复(0)

现在很多网卡都是用dma传送数据。比如e100。 在i386架构下,pci_map_single只会返回buffer的物理地址。那么网卡又怎么知道往这个地址考数据呢? 驱动程序如何设置网卡的dma地址呢?

by xiegang112 - 内核源码 - 2007-06-13 13:59:47 阅读(4623) 回复(4)

linux下的32位I/O和dma默认是关闭的,可是现在电脑的硬盘不会那么落伍吧!linux好是好,但如果用的是16位I/O的话,电脑的性能就无法得到充分发挥,你心里一定会觉得很冤!没关系,跟我来吧。   要打开32位I/O和dma,需要以Root身份进行设置。为了降低因出错而重启系统对文件系统的损害,最好以单用户模式进行。可以先用下面的命令检查硬件驱动器的I/O情况。   #hdparm -t /dev/hda   屏幕显示如下:   /dev/hda:   ...

by msj0520 - Linux文档专区 - 2006-07-05 17:05:48 阅读(658) 回复(0)

最近看一段网络相关的商业代码发现。在用户空间封装一个数据包,并且也使用了dma描述表指向的该数据包,,后面在内核空间并没有看到使用copy_from_user这种函数把数据包,复制到内核空间,,而是看到只是调用dma相关描述地址发送。。。 这种情况是怎么回事啊?? 还有就是dma的内存可以在用户空间直接使用???但是在内核空间是明显使用了dma发送的数据 望有这方便的高手 分析哈撒 由于是商业代码 所以不能贴出来 真心烦啊、...

by tc1989tc - 嵌入式开发 - 2013-05-09 22:37:36 阅读(1203) 回复(2)

在做的设备上有个fifo,要往里面写数据 希望通过linux 通用的dma api 去实现数据的搬移 研究了很久现在只能把一片数据拷到另外一片 我想知道怎么设定目标地址固定,从而可以写数据到fifo里

by feyeye - 嵌入式开发 - 2011-06-08 13:27:17 阅读(3332) 回复(2)

linux Device Drivers, 2nd Edition By Alessandro Rubini & Jonathan Corbet 2nd Edition June 2001 0-59600-008-1, Order Number: 0081 586 pages, $39.95 Chapter 13 mmap and dma Contents: Memory Management in linux The mmap Device Operation The kiobuf Interface Direct Memory Access and Bus Mastering Backward Compatibility Quick Reference This chapter delves into the area of linux memory management, wi...

by pascal4123 - Linux文档专区 - 2006-09-20 14:52:48 阅读(930) 回复(0)

哪位大侠 有关于LPC3250 dma开发的例子 给学习一下 基于linux的 简单的也行 比如两块内存之间通过dma进行传输。谢谢 [email]helunc@126.com[/email]

by helun - 嵌入式开发 - 2014-04-09 16:29:08 阅读(716) 回复(0)

看到一本书上说, ARM在虚拟地址空间的[0xFFC00000, 0xFFE00000]这2MB的虚拟地址空间保留做unchahed的dma映射空间, 这个区间的映射都是将cache功能关闭的。 以此来保证dma操作时不会出现cache一致性问题。 问题是: 如果某个设备dma需要的空间大于2MB怎么办呢?

by wwxbei - 内核源码 - 2012-12-17 22:38:58 阅读(1675) 回复(1)