embedded-linux – 嵌入式Linux设备在启动时阻塞RS485总线
我正在使用工业
Linux计算机时遇到麻烦,我正在通过RS485总线与多个连接设备进行通信.我遇到的是RS485 USART驱动程序使用的IO引脚在启动时设置为不同的电平,而不是进入RS485空闲/三态.结果,当设备启动时,总??线上的其他设备被阻塞超过30秒,从而触发各种外部问题.可以在附图中查看事件过程,我在启动过程中使用示波器测量输出电压.
我猜测实际的驱动器直到电压电平达到三态电平才开始(例如,该器件为~2.2V).之后,一切都按预期工作. 我试图找到任何配置文件来设置引导时引脚的默认IO级别(认为这可能由引导加载程序设置)无济于事. 此外,我已经尝试应用启动脚本“足够早”运行以设置DATA-高,但据我所知,有问题的设备没有提供任何接口来控制这些引脚作为常规GPIO. 任何帮助,提示或见解将不胜感激! 编辑:我不是一个经验丰富的Linux开发人员,所以请突出显示我是否遗漏了任何重要细节. 一些规格: > ARM920T rev 0(v41)CPU 从启动日志中提取: Linux版本2.6.28.10(root @)(gcc版本4.1.2)#94 PREEMPT Tue Oct 29 10:22:19 CET 2013 完整启动日志:https://drive.google.com/file/d/0B2XYl1mNCa8jNUZ5V0Nic1hkU0U/view 类似的问题: 这里可能讨论类似的问题:UART initialisation: Prevent UART to pull RTS high 解决方法
这只不过是疯狂的推测,但是可能值得添加一个启动脚本,在启动期间尽早向设备回应一个NULL字符(例如/ dev / ttyS1或其他).这可能足以让驱动程序初始化硬件.
您还可以尝试在Linux源代码中找到驱动程序,以查看它是如何启动的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |