linux的spidev驱动添加dma功能

Leo_Walker 2017-05-24 04:25:21
用的飞思卡尔的imx6芯片,spi直接用的linux自带的spidev驱动,驱动一款加密芯片,功能已经实现,但是性能不够远远不够,想添加dma功能,有做过的麻烦指点一下。
...全文
2071 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leo_Walker 2017-05-25
  • 打赏
  • 举报
回复
spi驱动用的是linux自带的spidev,要实现的功能描述如下: 1.主机发送 包头+明文 到从机。 2.从机(加密芯片mcu)在轮询读数据,直到接收到包头,将包头后面的有效数据处理 3.从机发送 包头+已处理数据 给主机,目前主机的处理也是在发送完数据后就轮询读返回的包头,截取包头后面的有效数据。 现在功能已经实现了,但是速度比预期低了非常多(与RTOS做的相比)。可能的原因我分析如下: 1.因为协议的处理是在应用层处理的,在没有接收到完整的包头的情况下都是一个字节读的,导致每次都要进行一次应用态到内核态的切换(时间消耗) 2.linux内核的spi子系统的机制导致速度与真实时操作系统相比有差距。
Leo_Walker 2017-05-25
  • 打赏
  • 举报
回复
目前的时钟频率给到了20M,原先用rtos做的spi驱动同样的一款加密芯片,16字节的包做个对称算法速度大概是在1.6Mbps,现在通过linux做只有0.12Mbps,差的有点多,除了开启DMA还有什么比较好的方式提高SPI的性能
of123 2017-05-25
  • 打赏
  • 举报
回复
如果是“远远不够”的话,加 DMA 也无济于事。因为,在片内移动数据的速度,要比 SPI 传输快几个数量级。大头在 SPI 传输上。
fly 100% 2017-05-25
  • 打赏
  • 举报
回复
开启系统的dma ,在menuconfig 中看spi是否有dma的选项出来,如果没有就要自己写、
jklinux 2017-05-24
  • 打赏
  • 举报
回复
spi设备的工作时钟频率多高? spi设备传输数据耗时久的话,加dma应也没效果的

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧