嵌入式爱好者

查看: 3831|回复: 5

[Linux] imx6板子串口读写问题

[复制链接]

8

主题

28

帖子

67

积分

i.MX8MM通行证i.MX6Q通行证

扫一扫,手机访问本帖
发表于 2022-5-9 15:50:07 | 显示全部楼层 |阅读模式
目前开发的时候,遇到大量数据读写时,在接受下位机数据的时候,会丢失一段数据。

而且概率很高,排查了上下位机的发送和接受逻辑,甚至更换了几个 Qt的读取数据的库,但问题依然存在。


想问下,这块,在linux底层,串口通讯的ttymxc3这个口,在系统里边是否有什么特殊的限制吗?

我们是并行传输,读与写并行,多串口并行,同时用的还有ttymxc2。

请问开发板这块如何取排查底层串口读写这块的问题?
回复

使用道具 举报

0

主题

49

帖子

137

积分

LS1012A通行证LS1043A\46A通行证A40i/T3/T507/T527通行证i.MX8MM通行证RK3399通行证LS1028A通行证i.MX8MP通行证AM5718通行证Hi3519A通信证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FDU产品通行证FCU1401通行证FCU1301通行证FCU11xx通行证FCU1201通行证FCU2201通行证FCU2301/FCU2302通行证FCU2401通行证5G转接卡通行证

发表于 2022-5-10 10:22:49 | 显示全部楼层
您如果是并行传输的话,可能读写同时进行,导致数据错误或者丢失,可以在程序中加入互斥操作如果操作时间较短的话可以使用自旋锁
点评回复 支持 反对

使用道具 举报

0

主题

2

帖子

9

积分

i.MX6Q通行证i.MX6UL通行证

发表于 2022-5-29 11:19:10 | 显示全部楼层
我说一下。如果波特率>38400,且每次收的数据>64byte,那么接收必然出现你说的情况。
1. 因为串口是中断接收,需要cpu处理,cpu很忙,它不仅要处理串口的事情,七大姑八大姨的事情,它同样要处理。这些小姑和大姨的事情,有时会让cpu关闭总中断。
2. 我记得imx串口的硬件fifo是64byte,所以只要接收的数据>64,或者cpu关了总中断,就会导致接收丢包。
我在此大声疾呼,我们大家付费,请飞凌的大神,做两个事情。
A. 在2022年的内核5.17更新中,串口的驱动性能,有提高,能否合并进来
B. 能否把串口的接收,搞成DMA接收。虽然多个人用DMA,也会造成丢包,但是概率会减小到忽略不计(这个更靠谱)。
希望神能听到凡人的呼唤:)
点评回复 支持 反对

使用道具 举报

0

主题

49

帖子

137

积分

LS1012A通行证LS1043A\46A通行证A40i/T3/T507/T527通行证i.MX8MM通行证RK3399通行证LS1028A通行证i.MX8MP通行证AM5718通行证Hi3519A通信证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FDU产品通行证FCU1401通行证FCU1301通行证FCU11xx通行证FCU1201通行证FCU2201通行证FCU2301/FCU2302通行证FCU2401通行证5G转接卡通行证

发表于 2022-5-30 12:29:07 | 显示全部楼层
原生串口默认设置的DMA模式,如下图,不知道你那边是不是使用usb扩展,导致数据传输有问题,还是usb扩展不支持dma

Image_20220530122819.png
点评回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-4-25 09:05

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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