硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2133|回复: 3
收起左侧

[Linux] 请教:Linux下的spidev可以用非阻塞方式发送吗

[复制链接]

7

主题

24

回帖

50

积分

初级会员

积分
50
发表于 2023-12-15 16:57:42 | 显示全部楼层 |阅读模式
现在一个imx6ull的产品,有3路spi读写,每次发送数据160K
发送程序片段:

int fd[3]; // 3个spi口的句柄

struct spi_ioc_transfer tr[3];

tr[0].tx_buf = (unsigned long)tx;
tr[0].rx_buf = (unsigned long)rx;
tr[0].bits_per_word = 16;
tr[0].len = len;
。。。。。。
for(int i=0;i<3;i++)
{
    ret = ioctl(fd[i], SPI_IOC_MESSAGE(1), &tr[i]);
}

这里ioctl虽然底层也是用DMA发送的,但是ioctl确是阻塞方式,只能等一路发完才能下一路

请教有没有非阻塞的方式,启动3个spi的发送,然后查询标志或者用回调函数来结束


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2023-12-16 08:35:11 | 显示全部楼层
AI回复

12.png
回复

使用道具 举报

7

主题

24

回帖

50

积分

初级会员

积分
50
 楼主| 发表于 2025-1-13 14:05:31 | 显示全部楼层
老帖子更新一下:因为是Linux新手,不会搞驱动。所以在应用层,搞了3个线程,每个线程管一个SPI,主线程准备数据,并发消息给3个线程启动发送,主线程等3个线程结束。
回复

使用道具 举报

2

主题

24

回帖

30

积分

新手上路

积分
30
发表于 2025-5-14 15:50:04 | 显示全部楼层
regsofweb 发表于 2025-1-13 14:05
老帖子更新一下:因为是Linux新手,不会搞驱动。所以在应用层,搞了3个线程,每个线程管一个SPI,主线程准 ...

这不就是正解吗?做好线程间同步就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 21:12 , Processed in 0.245286 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表