A: 内存的虚拟起始地址,在内核要用此地址来操作所分配的内存
B: struct device指针,可以平台初始化里指定,主要是dma_mask之类,可参考framebuffer
C: 实际分配大小,传入dma_map_size即可
D: 返回的内存物理地址,dma就可以用。
所以,A和D是一一对应的,只不过,A是虚拟地址,而D是物理地址。对
任意一个操作都将改变缓冲区内容。当然要注意操作环境。...
分类:
其他好文 时间:
2015-07-25 19:57:50
阅读次数:
724
用户态的malloc是申请堆空间的用户态函数。可网上不少人以为malloc在内核态的调用函数是kmalloc或vmalloc,这是不对的 kmalloc是基于slab的,它在通用缓存区申请分配,通用缓存区一共26块缓存块,使用DMA和常规分...
分类:
其他好文 时间:
2015-07-24 21:04:33
阅读次数:
136
【摘要】Linux中的内核空间到用户空间的地址映射让用户层应用可以直接访问内核地址,这就是mmap方法。应用程序通过内存映射可以直接访问设备的I/O存储区或DMA缓冲。内存映射使用户空间的一段地址关联到设备内存上,程序在映射的地址范围内进行读取或者写入,实际上就是对设备的访问。...
分类:
其他好文 时间:
2015-07-24 00:02:44
阅读次数:
403
linux支持非一致内存访问,就是将整个内存看做一个节点。在此节点中划分三个管理区。关于这三个管理区我就不再详细说明,其中: ZONE_DMA <16M??ISA DMA?使用这块内存。 ZONE_NORMAL 16~896M?被直接映射在内核...
分类:
系统相关 时间:
2015-07-23 20:05:29
阅读次数:
199
1.驱动概述和开发环境搭建
1.1驱动设备的作用
对设备驱动最通俗的解释就是“驱动硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮训、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。...
分类:
系统相关 时间:
2015-07-21 20:41:36
阅读次数:
747
对DMA内存的使用有3种方式:1,一致DMA映射通过dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag)来直接得到一块用于dma的内存,同时得到这一段内存的虚拟地址和总线地址,分别用于CPU和device的访问。
通过这种方式得到的dma内存,开发者不用担心cache的问题,但...
分类:
数据库 时间:
2015-07-19 10:25:13
阅读次数:
183
STM32W108无线射频模块AD转换器应用实例
STM32W108 AD转换器是一个一阶∑-△转换器,具有以下特性:
l 分辨率可达12位
l 采样最小时间5.33us(188KHz)
l 6个外部和4个内部输入源,可进行差分和单端转换
l 两个电压转换范围(差分):-VREF~+VREF,-VDD_PADS~+VDD_PADS
l 可选择内部和外部参考标准VREF:内部的VREF可用于输出
l 数字偏移和增益校准
l 专用DMA通道,通道支持一次和连续的操作模式...
分类:
其他好文 时间:
2015-07-17 21:03:14
阅读次数:
245
一、为什么引入缓存技术
为了解决cpu速度和外部设备速度不匹配的问题。
减少了io对cpu的中断的次数。每进行一次IO设备的时间都很长,所以把数据先放入缓冲区,再进行IO操作。
二、缓冲技术的实现
缓冲区的分类:
(1)在设备中设置缓冲区
(2)在内存中设置缓冲区
假如读取数据,先将磁盘的数据通过DMA的形式读入操作系统内核的内存缓冲区,然后应用进程再进行读操作。
...
分类:
其他好文 时间:
2015-07-12 15:44:46
阅读次数:
167
因为做一个电机控制项目,其中需要用到用PWM触发ADC,读取ADC的转换值。这里有两个关键问题:第一,如何使PWM触发ADC转换?第二,如何在ADC多通道扫描模式下,读取各个channel的adc转换值?第三,如何使用DMA读取多通道ADC转换值?第一个问题,首先需要将ADC设置成外部触发转换,第二...
分类:
其他好文 时间:
2015-07-11 18:01:21
阅读次数:
640
原创:转发需要有引用,谢谢。
根据ST公司提供的相关信息,DMA是STM32中一个独立与Cortex-M4核的模块;主要功能是通信“桥梁”的作用,可以将所有外设寄存器和内存空间“连接”起来,这样就可以高速问各寄存器,其传输不受CPU的支配,其间的通讯不占CPU资源,访问速度高,传输还是双向的(双AHB主总线结构);它可以将外设寄存器中的数据与储存器中变量建立绑定,还可以将一外设的寄存器或缓冲...
分类:
其他好文 时间:
2015-06-30 10:52:30
阅读次数:
165