【问题标题】:kernel module insertion issue内核模块插入问题
【发布时间】:2017-10-14 07:23:55
【问题描述】:

我们在 raspberry pi 板上运行最新的 raspibian,并有一个用于 USB 外围设备的内核驱动程序,它在启动后通过使用 ssh 连接到硬件(它是一个无头系统)从外部添加(sudo insmod driverx.ko) )。

问题如下: 如果设备在上电时已经连接到系统,则运行 sudo insmod driverx.ko 会导致终端卡住(无响应,Ctrl+C 不起作用)。通过启动另一个 ssh 会话来运行 lsmod 表明该模块正在使用中,即使没有正在运行的代码会使用它。

如果我在系统启动后插入 USB 设备,那么 sudo insmod driverx.ko 工作正常,(终端仍然处于活动状态)。随后运行 lsmod 会显示该模块已加载但未被任何人使用。然后我可以运行我的用户代码,一切都很好。运行我的用户代码 lsmod 显示内核模块正在使用中,用户数为 1。

在我们的系统中,USB设备将始终插入。内核版本和驱动程序版本相同。
我可以填写更多详细信息,但不希望有偏见或使此查询不可读。 请告知可能是什么问题。

感谢您的时间和帮助。

【问题讨论】:

  • 启动时是否有任何 BIOS USB 引导?您需要将 USB 放在引导 bios 的底部列表中,如果 USB 是可引导的,这可能会导致糟糕的情况。不确定是否与您的问题有关。问候。
  • 感谢您的意见。我会检查,但根据“症状”,我认为这可能不是问题。
  • 是的,作为“症状”;),gl.
  • 跟进:刚检查,usb boot没有开启(在/boot/config.txt)
  • 您是否安装了先决条件作为 sudo apt-get xxx-firmware 或者您是否更新了您的发行版 sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-升级 ?它是什么?

标签: linux-device-driver insmod


【解决方案1】:

可能是,设备在启动过程中已经连接到其他驱动程序。如果是这种情况,则必须从启动驱动程序中删除特定设备的设备凭据。

在插入驱动程序之前检查 USB 设备列表。

【讨论】:

  • 我使用 lsusb 检查了 USB 设备列表,但没有看到任何具体内容。我尝试软重置 USB 设备,这有助于毫无问题地插入我的 driverx.ko。 (例如,SO 上另一个线程上的答案,$ sudo usb_modeswitch -v 0x7392 -p 0x7811 --reset-usb)。
  • 查看可能从端口消耗更多电流的设备的问题。换个pi的电源试试。
  • 或者使用外部集线器(自供电)并将您的设备连接到集线器上
猜你喜欢
  • 2013-10-15
  • 1970-01-01
  • 2011-11-13
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2012-05-19
相关资源
最近更新 更多