ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

奇怪的(py)串行linux损坏

2019-11-12 02:51:33  阅读:248  来源: 互联网

标签:pyserial serial-port linux python


我有一个基于Atmel SAMA5D36的Linux SBC.我有另一个设备通过TTL线(115200 8N1)通过/ dev / ttyS2连接到它.使用pyserial,我与该设备进行了相当高的带宽查询/响应对话.

定期(至少每分钟一次),我发现另一台设备返回的日期非常可重复.如果是用诸如

"123456" (ascii character values)

它将删除一个字符,并在以下字符后添加字符-0:

"13\x00456"

希望这很清楚.它将删除2,下一个字符如预期,跟随一个字符0,然后恢复正常.

我正在使用内核4.1.10.通过一些调试语句,我非常确定这不会在我的python循环中发生,因为0出现在read()缓冲区的随机位置.我还在输入线路上连接了一个示波器,并验证了该线路没有发生这种损坏.

我正在寻找一个答案,可以使我朝正确的方向弄清楚为什么会这样. CPU负载似乎确实增加了频率(例如,当我为连接的BLE适配器进行大量DBUS通信时).

解决方法:

这可能是溢出错误的结果.如果查看atmel_serial,则可以查看是否有任何错误.

cat /proc/tty/driver/atmel_serial

例如,在ttyS2上,您可能会看到以下信息(oe:显示溢出错误):

2: uart:ATMEL_SERIAL mmio:0xF0020000 irq:31 tx:266758 rx:361385 oe:51 RTS|DTR|DSR|CD|RI

由于您是高速率串行设备,因此您可以尝试在USART线路上实现DMA.通过在usart设置中添加以下内容,在内核中调整适当的dts文件:

atmel,use-dma-rx;
atmel,use-dma-tx;

对于我的内核,我必须禁用SPI和I2C,以便为USART提供足够的DMA通道.

标签:pyserial,serial-port,linux,python
来源: https://codeday.me/bug/20191112/2023860.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有