我有 Linux 机器(基于 ARM,使用 Yocto 构建,内核 4.10),并使用 USB 接口连接调制解调器。调制解调器可以使用 GPIO 线加电或断电。
调制解调器通电后,将显示 CDC 设备文件。我可以毫无问题地与调制解调器通信。
有时我必须重置调制解调器,因此我关闭与设备文件的所有通信,使用 GPIO 断电,并在几秒钟后重新打开电源。
问题是,设备文件已创建,但文件名是新的。相反,假设 /dev/ttyACM5,我得到了 /dev/ttyACM6。
虽然我可以从系统获取新的文件名,但我担心资源泄漏。
首先我怀疑我的程序有错误,但经过几个小时的测试后我非常有信心我的程序没有问题。
以下是一些可能有帮助的事实:
当与 CDC 设备通信的程序运行时,文件名被锁定。程序退出后 - 设备文件名被释放。
当我的程序打开但不与 CDC 设备通信时 - 文件名未锁定。 (调制解调器断电后,/dev/ttyACM5 设备文件显示出来)
当我的程序打开并与 CDC 设备通信时 - 断电后 dmesg 显示消息“cdc_acm 1-3:1.10:无法设置 dtr/rts”并且文件名被锁定,直到我的程序退出。
有什么建议么?