embedded-linux – 嵌入式Linux设备在启动时阻塞RS485总线

embedded-linux – 嵌入式Linux设备在启动时阻塞RS485总线,第1张

概述我正在使用工业 Linux计算机时遇到麻烦,我正在通过RS485总线与多个连接设备进行通信.我遇到的是RS485 USART驱动程序使用的IO引脚在启动时设置为不同的电平,而不是进入RS485空闲/三态.结果,当设备启动时,总​​线上的其他设备被阻塞超过30秒,从而触发各种外部问题.可以在附图中查看事件过程,我在启动过程中使用示波器测量输出电压. 我猜测实际的驱动器直到电压电平达到三态电平才开始( 我正在使用工业 Linux计算机时遇到麻烦,我正在通过RS485总线与多个连接设备进行通信.我遇到的是RS485 USART驱动程序使用的IO引脚在启动时设置为不同的电平,而不是进入RS485空闲/三态.结果,当设备启动时,总​​线上的其他设备被阻塞超过30秒,从而触发各种外部问题.可以在附图中查看事件过程,我在启动过程中使用示波器测量输出电压.

我猜测实际的驱动器直到电压电平达到三态电平才开始(例如,该器件为~2.2V).之后,一切都按预期工作.

我试图找到任何配置文件来设置引导时引脚的默认IO级别(认为这可能由引导加载程序设置)无济于事.

此外,我已经尝试应用启动脚本“足够早”运行以设置DATA-高,但据我所知,有问题的设备没有提供任何接口来控制这些引脚作为常规GPIO.

任何帮助,提示或见解将不胜感激!

编辑:我不是一个经验丰富的linux开发人员,所以请突出显示我是否遗漏了任何重要细节.

一些规格:

> ARM920T rev 0(v41)cpu
> linux 2.6的专有发行版
>使用BusyBox
> Atmel USART驱动程序

从启动日志中提取:

linux版本2.6.28.10(root @)(gcc版本4.1.2)#94 PREEMPT Tue Oct 29 10:22:19 CET 2013
cpu:ARM920T [41129200]版本0(ARMv4T),cr = c0003177
/ …
… /
启用端口/ dev / ttyS3的RS485模式
/ …
……(我猜这里经过了大约30秒)
… /
atmel_usart.3:MMIO上的ttyS3 0xfffcc000(ir​​q = 9)是一个ATMEL_SERIAL
atmel_serial.3:将RS485 RTS引脚放下
/ …

… /

完整启动日志:https://drive.google.com/file/d/0B2XYl1mNCa8jNUZ5V0Nic1hkU0U/view

类似的问题:

这里可能讨论类似的问题:UART initialisation: Prevent UART to pull RTS high
但我不确定如何继续提出建议的解决方案.

解决方法@H_404_54@ 这只不过是疯狂的推测,但是可能值得添加一个启动脚本,在启动期间尽早向设备回应一个NulL字符(例如/ dev / ttyS1或其他).这可能足以让驱动程序初始化硬件.

您还可以尝试在linux源代码中找到驱动程序,以查看它是如何启动的.

总结

以上是内存溢出为你收集整理的embedded-linux – 嵌入式Linux设备在启动时阻塞RS485总线全部内容,希望文章能够帮你解决embedded-linux – 嵌入式Linux设备在启动时阻塞RS485总线所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存