我有一个通过 USB 连接的 Arduino Uno,使用cdc_acm
驱动程序。可在/dev/ttyACM0
.
Arduino 串行接口的约定是DTR
用于复位信号的信号——当使用集成串行到 USB 适配器时,DTR/RTS/DSR/CTS 信号;或者,当使用 RS-232 电缆时,引脚 4 或 5(可能还有 6 或 8)连接到RESET
引脚。
这种重置途径具有重要的优势,即使不是真正的带外,至少非常接近故障安全(由于通过始终带外串行控制器与非正常用户一起实现- 可控看门狗电路),虽然它可以被物理禁用(通过将电容器或电阻器(取决于型号)连接到RESET
引脚),这样做完全破坏了这个重要的终止开关和所有相关的实用程序。
不幸的是,目前看来,当任何程序出于任何原因连接到 ACM 设备时,Linux 绝对总是发送此信号,并且(与 Windows 不同,)没有提供甚至模糊已知的可靠方法来防止这种情况发生。
(目前-hupcl
,“在最后一个进程关闭 tty 时发送挂断信号”和-clocal
“禁用调制解调器控制信号”都不会阻止每次打开设备时发送此信号。)