c++ - 如何检测 USB 驱动程序启用/禁用

标签 c++ c linux usb

我们在 FPGA 上有 USB 设备,我们可以通过设置位来启用和禁用它。一旦我们启用设备,将需要一些时间(不到 1 秒)来检测 USB 是否启用。因此,在启用该位并检查 /dev/ 路径后,我无法立即找到我的设备。当 USB 驱动程序成功加载并且 USB 准备好提供服务时,有什么方法可以获取事件吗?

下面是启用端口时得到的控制台输出。

[  101.285945] usb 1-1.1: new high-speed USB device number 5 using ci_hdrc
[  101.386462] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[  101.395559] scsi host0: usb-storage 1-1.1:1.0
[  102.470375] scsi 0:0:0:0: Direct-Access SanDisk Cruzer Blade 8.02 PQ: 0 ANSI: 0 CCS
[  102.502029] sd 0:0:0:0: [sda] 7856127 512-byte logical blocks: (4.02 GB/3.75 GiB)
[  102.503125] sd 0:0:0:0: [sda] Write Protect is off
[  102.504547] sd 0:0:0:0: [sda] No Caching mode page found
[  102.504555] sd 0:0:0:0: [sda] Assuming drive cache: write through

我想监控上述事件,有什么方法可以监控USB驱动状态吗?

最佳答案

您可以使用 udevdm 实用程序来监视事件,如下所示

udevadm monitor --subsystem-match=usb

关于c++ - 如何检测 USB 驱动程序启用/禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716520/

相关文章:

C++ (Qt),使用内存缓冲区而不是重定向的系统命令

c++ - CMake:当我尝试添加源目录本身或其子目录之一时,target_include_directories() 会打印错误

linux - tar 两个同名目录到一个归档目录

c - 谁能帮我一个C语言的键列表?

linux - Oprofile - 使用 operf 在 opreport 中显示 INST_RETIRED 和 l1d_replacement 事件

linux - 为什么 fork() 不立即给出正确的 pid?

c++ - 析构函数上的 =delete 如何防止堆栈分配?

c++ - fstream文件读取失败

c++ - FFTW:IFFT后信号由噪声组成

c - 如何初始化静态 C 数组?