硬件:beaglebone black板
软件:3.8.13内核
使用的是gpmc的dma传输:
从edma_start()调用之前开始测量,通过内核函数读取当前时间值T1;到传输中断函数执行完毕后,通过内核函数读取当前时间值T2
发现两者平均差值在35us左右。
这个时间能够通过什么方式缩短呢?
感谢!
Jian Zhou:
可以尝试下优化edma的传输方式
lei jiang:
回复 Jian Zhou:
能具体谈下么?是指link、chain这些方式么?
我的理解是,这些只能改善在dma启动后,数据连续传输的速率。现在是需要随机启动dma,但是dma之间的传输间隔能尽可能的小。我现在都到30多us了
lei jiang:
回复 lei jiang:
大家有遇到类似问题么?
Steven Liu1:
回复 lei jiang:
DMA的配置是比较灵活的,触发的方式也比较多样,改变这类的配置确实是可以提高数据连续传输的效率.但是根据你的描述,你说的到DMA之间的传输间隔能尽可能小,这个触发间隔应该是由你的设置决定的,个人见解,能优化这种触发模式才是关键.配置方面的调整,软件配置的话可能就是优先级方面能作些调整,其他的做不了太多了.
lei jiang:
回复 Steven Liu1:
感谢您的回复。
目前关键问题是,从dma开始传输到dma传输完成中断,这之间的时间到了40-50us。不知道这个时间是内核上下文本身切换需要的时间,还是其他因素导致这个时间有这么长?