打印
[技术问答]

nuc980使用linux-4.4内核下,串口接收使用DMA方式会丢数据?

[复制链接]
2319|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,是会有问题

使用特权

评论回复
5
光辉梦境| | 2024-6-20 18:00 | 只看该作者
如果在实际应用中遇到数据丢失的问题,可能是DMA缓冲区大小不足造成的

使用特权

评论回复
6
淡漠安然| | 2024-6-20 20:00 | 只看该作者
如果DMA缓冲区设置得不够大,可能无法容纳所有接收到的数据,导致数据溢出和丢失。

使用特权

评论回复
7
lidi911| | 2024-6-20 20:09 | 只看该作者
NUC980还是ARM9内核的吧

使用特权

评论回复
8
江河千里| | 2024-6-21 02:00 | 只看该作者
DMA传输完成后会产生中断,如果中断处理程序没有及时处理或者处理不当,可能会导致后续数据覆盖未处理的数据。

使用特权

评论回复
9
冰春彩落下| | 2024-6-21 04:00 | 只看该作者
串口的波特率、数据位、停止位、校验位等配置必须与发送端匹配,否则可能会导致数据解析错误或丢失。

使用特权

评论回复
10
一秒落纱| | 2024-6-21 06:00 | 只看该作者
Linux-4.4内核的驱动可能存在bug,特别是在DMA相关的代码中。如果驱动没有正确处理DMA传输,可能会导致数据丢失。

使用特权

评论回复
11
远山寻你| | 2024-6-21 08:00 | 只看该作者
DMA传输的时序要求非常严格,如果系统负载较高或者存在其他干扰,可能会影响DMA传输的稳定性。

使用特权

评论回复
12
三生万物| | 2024-6-21 10:00 | 只看该作者
如果系统内存碎片化严重,可能会导致无法分配连续的DMA缓冲区,从而影响DMA传输。

使用特权

评论回复
13
暖了夏天蓝了海| | 2024-6-21 12:00 | 只看该作者
串口或DMA控制器可能存在硬件故障,导致数据传输不稳定。

使用特权

评论回复
14
别乱了阵脚| | 2024-6-21 14:00 | 只看该作者
在调试过程中,可以使用调试工具和日志记录来帮助诊断问题。例如,可以启用内核日志记录,监控DMA和中断的状态,以及检查串口数据接收的完整性。通过逐步排查,通常可以找到导致数据丢失的具体原因,并采取相应的解决措施。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

655

主题

2736

帖子

0

粉丝