我有一个 sd 卡,它连接在基于 im6qp 处理器的板上的微芯片 usb224x 控制器上。
SD 信号将转换为 USB dp 和 dm 信号。现在有两个用例,
用例1:上电前已插入SD卡,
sd 0:0:0:0: [sda] 249737216 512-byte logical blocks: (128 GB/119 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] No Caching mode page found
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Attached SCSI removable disk
现在,如果我移除 SD 卡,我不会得到任何内核打印表明该卡已被移除。
usecase2:在运行内核时插入 SD 卡。没有打印表明 SD 卡被检测为 sda。
在案例 1 中,我可以安装此 SD 卡并访问其内容。在案例 2 中,我不能。
我有这个问题/困惑
- udev 等用户空间是否负责判断设备是否存在?我尝试将打印件放入许多 USB 核心文件中,但没有打印任何内容。但是,与此同时,我可以在使用相同 USB 总线但使用另一个通道的触摸设备上获得中断。
我尝试在驱动程序/usb、存储和 scsi 子系统中的 USB 函数中获取打印,但没有出现可观察到的打印。
我尝试启用 debugfs 打印,但即使那时我也没有收到任何日志,这是另一个我无法解决的问题。
主要问题是我不知道如何以及谁启动了这种删除和插入的更改,它是寻找中断并启动整个事情的低级内核驱动程序还是/sbin/hotplug之类的udev?
我的内核版本是 4.9,我正在为普通用例使用构建根,以及具有相同内核的 android O。我得到同样的观察。