i.MX6/i.MX7 EIM总线驱动-异步通信-DMA方式编码实现

本文详细介绍了如何在i.MX6/i.MX7平台上实现EIM总线的DMA异步通信驱动。首先,文章指出非DMA方式的局限性,然后重点讲解了中断和DMA传输的实现过程,包括设备树中添加中断信息、驱动中注册中断、使用tasklet处理数据接收,以及DMA的申请、配置和启动。最后,作者补充了关于DMA传输数据长度限制的注意事项,并提供了完整的驱动代码。
摘要由CSDN通过智能技术生成

关于i.MX6/i.MX7 EIM总线驱动,我们前面已经用了两个章节进行了介绍,第一节用来介绍时序(非常重要),第二节用来介绍通过非DMA的方式来进行DMA通信。

第二节,只是EIM总线通信的一个过渡章节,对于初学者或许有一点帮助,但是在实际的使用过程中,非DMA的方式基本都不会被应用到产品上,因为使用非DMA的方式,会导致CPU的占用率异常的高,同时在传输的稳定性上也不是很可靠。我们之前使用非DMA的方式进行传输,使用示波器去测试DMA总线上面的波形,发现波形的读写时钟波动很大。

那么,这一节,我们主要介绍一下EIM-DMA的传输方式。在熟悉了这一节后,EIM总线异步通信驱动基本就可以应用到产品上了。

先简单介绍一下我们和FPGA通信的业务,不同的产品,对应的业务逻辑可能不一样,具体的业务逻辑以实际产品为主,这里以我目前做过的一种来作为分析。

我们的产品使用EIM和FPGA通信,主要是通过EIM去获取FPGA采集到的数据,因此我们的FPGA板通过中断的方式来通知ARM板什么时候去读取数据。

简单点归纳:FPGA采集数据--->FPGA去触发ARM的外部中断--->ARM检测到中断后使用EIM去读取数据--->最后进行数据校验

简单的介绍了上面的通信流程,那么接下来就需要我们去实现ARM对应的驱动代码了。

驱动代码主要实现2

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey_llll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值