[技术问答] nuc980使用linux-4.4内核下,串口接收使用DMA方式会丢数据?

[复制链接]
3056|13
 楼主| flycamelaaa 发表于 2024-6-4 15:39 | 显示全部楼层 |阅读模式
nuc980使用linux-4.4内核下,串口接收使用DMA方式会丢数据,感觉串口DMA接收的驱动有问题。
奔跑的牛 发表于 2024-6-7 17:35 | 显示全部楼层
请升级内核到5.10
夜阑风雨 发表于 2024-6-20 14:45 | 显示全部楼层
NUC980是新唐科技(Nuvoton)推出的一款基于ARM926EJ-S内核的微处理器,它支持多种外设,包括串口(UART)。在使用Linux-4.4内核的NUC980上,如果通过DMA(直接内存存取)方式进行串口数据接收,理论上应该能够提高数据传输效率,减少CPU的负担。
长风万里 发表于 2024-6-20 16:25 | 显示全部楼层
串口接收使用DMA,是会有问题
光辉梦境 发表于 2024-6-20 18:00 | 显示全部楼层
如果在实际应用中遇到数据丢失的问题,可能是DMA缓冲区大小不足造成的
淡漠安然 发表于 2024-6-20 20:00 | 显示全部楼层
如果DMA缓冲区设置得不够大,可能无法容纳所有接收到的数据,导致数据溢出和丢失。
lidi911 发表于 2024-6-20 20:09 来自手机 | 显示全部楼层
NUC980还是ARM9内核的吧
江河千里 发表于 2024-6-21 02:00 | 显示全部楼层
DMA传输完成后会产生中断,如果中断处理程序没有及时处理或者处理不当,可能会导致后续数据覆盖未处理的数据。
冰春彩落下 发表于 2024-6-21 04:00 | 显示全部楼层
串口的波特率、数据位、停止位、校验位等配置必须与发送端匹配,否则可能会导致数据解析错误或丢失。
一秒落纱 发表于 2024-6-21 06:00 | 显示全部楼层
Linux-4.4内核的驱动可能存在bug,特别是在DMA相关的代码中。如果驱动没有正确处理DMA传输,可能会导致数据丢失。
远山寻你 发表于 2024-6-21 08:00 | 显示全部楼层
DMA传输的时序要求非常严格,如果系统负载较高或者存在其他干扰,可能会影响DMA传输的稳定性。
三生万物 发表于 2024-6-21 10:00 | 显示全部楼层
如果系统内存碎片化严重,可能会导致无法分配连续的DMA缓冲区,从而影响DMA传输。
暖了夏天蓝了海 发表于 2024-6-21 12:00 | 显示全部楼层
串口或DMA控制器可能存在硬件故障,导致数据传输不稳定。
别乱了阵脚 发表于 2024-6-21 14:00 | 显示全部楼层
在调试过程中,可以使用调试工具和日志记录来帮助诊断问题。例如,可以启用内核日志记录,监控DMA和中断的状态,以及检查串口数据接收的完整性。通过逐步排查,通常可以找到导致数据丢失的具体原因,并采取相应的解决措施。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

837

主题

4445

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部