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 操作系统)相关推荐

  1. 嵌入式linux下网卡设备驱动与网络协议栈的设计实现.pdf,嵌入式系统的通用网络驱动模型设计与实现.pdf...

    维普资讯 第3O卷第4期 长春理工大学学报 (自然科学版 ) VO1.3O N0.4 2007年 12月 JournalofChangchunUniversityofScienceandTechnol ...

  2. SylixOS操作系统自学经历(一)

    SylixOS操作系统自学经历(一) 我现在的工作岗位是嵌入式软件工程师,在学习过程中感谢王翾先生,陈洪邦先生,李孝成先生以及其他同事的大力帮助. 在系统学习SylixOS操作系统前我先看了<S ...

  3. 2021-08-16Zynq linux系统下的AXI DMA驱动与应用程序简单Demo实现

    在参考网友(天使之猜)的例程(https://blog.csdn.net/hello_jinjin/article/details/102058119)中遇到了一些问题,导致内核崩溃. 在英勇无比的网 ...

  4. 小熊派 FreeRTOS+SPI+DMA 驱动 TFT-LCD

    文章目录 小熊派 FreeRTOS+SPI+DMA 驱动 TFT-LCD 一.文章前言 二.SPI+DMA 配置 三.FreeRTOS 配置 四.代码编写 五.实验现象 小熊派 FreeRTOS+SP ...

  5. ZYNQ linux dma驱动及其单向读写

    一,DMA相关定义和注意事项 DMA是Direct Memory Access 的缩写,也就是内存到内存,不通过 CPU.DMA 的可以支持内存到外设.外设到内存.内存到内存的数据交互,必要时节省径多 ...

  6. 米尔科技ZYNQ -Linux下的DMA驱动

    一.目标 在米尔科技的z-turn板上实现linux下的DMA驱动,同时对DMA中断进行测试. 二.分析 ZYNQ的AXIDMA有Direct Register Mode和Scatter/Gather ...

  7. Linux DMA 驱动学习总结

    Linux DMA驱动构架分析 以linux2.6.32中的S3C2440驱动为例进行分析,DMA驱动所对应的源码为linux-2.6.32.2\arch \arm\mach-s3c2440\dma. ...

  8. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  9. linux 网络dma驱动,S3C2410的Linux下DMA驱动程序开发

    网上介绍Linux下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几:近期因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于 ...

  10. linux驱动编写(dma驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] linux下面的驱动虽然什么样的情形都有,但是dma驱动却并不少见.dma可以有很多的好处,其中 ...

最新文章

  1. 【数理知识】《随机过程》方兆本老师-第2章-Poisson 过程
  2. mysql 移植ucos_基于STM32F767的UCOSIII移植学习
  3. 【LeetCode笔记】25. K个一组翻转链表(Java、链表、递归)
  4. 杨辉三角python_Python面试150题汇总,都是常问的面试题!
  5. Day6-------BOM
  6. Linq to xml 示例分析
  7. JPA-save()方法会将字段更新为null的解决方法
  8. css3 之弹性布局
  9. 我是如何从蛋壳的虎口里维权的?
  10. (四)52周存钱挑战 1.0
  11. 【实战】下载歌曲只能开绿钻?NoNoNo, Python爬虫,无所不能。
  12. ES笔记_转自尚硅谷_其中有JAVA操作_ES
  13. 我的OpenBSD配置文件
  14. U盘空间明明够大,为什么却放不进去文件
  15. SQLServer数据库设置主键和主键自增
  16. 八、QOS队列调度与报文丢弃
  17. 如何实现通过回车键提交表单
  18. Oracle时间戳类型
  19. PLC实验:天塔之光控制
  20. 仪表放大器的PCB布局-运放

热门文章

  1. 那些花儿,从零构建Vue工程(webpack4 Eslint git hooks...)
  2. 理顺8个版本vue的区别
  3. mysql 在update中实现子查询的方式
  4. Android中的GraphicBuffer同步机制-Fence
  5. Linux 远程登录配置
  6. mui ajax请求 登录
  7. javascript创建面包屑路径
  8. Hyper-V应用指南之5-导出、导入虚拟机
  9. 字符HTML编码类(转)
  10. linux系统设置cpu孤立