allwinner h3 通用DMA 驱动(SylixOS 操作系统)
SylixOS 集成了DMA框架,在使用DMA时需要针对硬件封装对应的函数。
1.注册DMA驱动
全志 h3 共有12个通用驱动,注册12个DMA控制器驱动。 dmaGetFuncs函数实现对传输,状态监测,复位函数的封装。
首先配置时钟,根据手册中的DMA时钟写入对应的值,实现 Reset,Trans,Status三个函数
2.功能函数实现
由全志h3 数据手册可以看出存在DMA的使能,状态和暂停寄存器,所以复位和状态功能只需要写入和读取相应寄存器的值就可以,比较简单。系统在调用一个通道时首先会对通道进行复位,复位函数中使能DMA中断,根据data手册中的DMA中断寄存器进行配置。重点在trans 传输函数。首先查看h3 DMA 描述符的定义:
查看手册中 第190页 DMA描述符 和DMA处理过程如上图,首先定义DMA描述符
DMA必须使用物理地址,所以使用系统函数API_VmmDmaAllocAlign 分配物理地址。分配完成物理地址后对描述符中的项填充相应的数据
填充完成后使能发送,发送完成后删除申请的DMA区域。
3.DMA测试
申请两个物理地址,将地址传入给DMA,在_dmaTestDone 函数是DMA传输完成后的回调函数:
使用信号量保证在一次传输完成后才结束此次过程。
allwinner h3 通用DMA 驱动(SylixOS 操作系统)相关推荐
- 嵌入式linux下网卡设备驱动与网络协议栈的设计实现.pdf,嵌入式系统的通用网络驱动模型设计与实现.pdf...
维普资讯 第3O卷第4期 长春理工大学学报 (自然科学版 ) VO1.3O N0.4 2007年 12月 JournalofChangchunUniversityofScienceandTechnol ...
- SylixOS操作系统自学经历(一)
SylixOS操作系统自学经历(一) 我现在的工作岗位是嵌入式软件工程师,在学习过程中感谢王翾先生,陈洪邦先生,李孝成先生以及其他同事的大力帮助. 在系统学习SylixOS操作系统前我先看了<S ...
- 2021-08-16Zynq linux系统下的AXI DMA驱动与应用程序简单Demo实现
在参考网友(天使之猜)的例程(https://blog.csdn.net/hello_jinjin/article/details/102058119)中遇到了一些问题,导致内核崩溃. 在英勇无比的网 ...
- 小熊派 FreeRTOS+SPI+DMA 驱动 TFT-LCD
文章目录 小熊派 FreeRTOS+SPI+DMA 驱动 TFT-LCD 一.文章前言 二.SPI+DMA 配置 三.FreeRTOS 配置 四.代码编写 五.实验现象 小熊派 FreeRTOS+SP ...
- ZYNQ linux dma驱动及其单向读写
一,DMA相关定义和注意事项 DMA是Direct Memory Access 的缩写,也就是内存到内存,不通过 CPU.DMA 的可以支持内存到外设.外设到内存.内存到内存的数据交互,必要时节省径多 ...
- 米尔科技ZYNQ -Linux下的DMA驱动
一.目标 在米尔科技的z-turn板上实现linux下的DMA驱动,同时对DMA中断进行测试. 二.分析 ZYNQ的AXIDMA有Direct Register Mode和Scatter/Gather ...
- Linux DMA 驱动学习总结
Linux DMA驱动构架分析 以linux2.6.32中的S3C2440驱动为例进行分析,DMA驱动所对应的源码为linux-2.6.32.2\arch \arm\mach-s3c2440\dma. ...
- gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...
- linux 网络dma驱动,S3C2410的Linux下DMA驱动程序开发
网上介绍Linux下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几:近期因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于 ...
- linux驱动编写(dma驱动)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] linux下面的驱动虽然什么样的情形都有,但是dma驱动却并不少见.dma可以有很多的好处,其中 ...
最新文章
- 【数理知识】《随机过程》方兆本老师-第2章-Poisson 过程
- mysql 移植ucos_基于STM32F767的UCOSIII移植学习
- 【LeetCode笔记】25. K个一组翻转链表(Java、链表、递归)
- 杨辉三角python_Python面试150题汇总,都是常问的面试题!
- Day6-------BOM
- Linq to xml 示例分析
- JPA-save()方法会将字段更新为null的解决方法
- css3 之弹性布局
- 我是如何从蛋壳的虎口里维权的?
- (四)52周存钱挑战 1.0
- 【实战】下载歌曲只能开绿钻?NoNoNo, Python爬虫,无所不能。
- ES笔记_转自尚硅谷_其中有JAVA操作_ES
- 我的OpenBSD配置文件
- U盘空间明明够大,为什么却放不进去文件
- SQLServer数据库设置主键和主键自增
- 八、QOS队列调度与报文丢弃
- 如何实现通过回车键提交表单
- Oracle时间戳类型
- PLC实验:天塔之光控制
- 仪表放大器的PCB布局-运放