标签: hotplugging

如何进行TRUE重新扫描PCIe总线

在我的Linux内核进行初始PCIe总线扫描和枚举之后,我有一个FPGA(就像大多数人问这个问题一样).您可以猜到,FPGA实现了PCIe端点.

我想让PCIe核心重新枚举整个PCIe总线,这样我的FPGA就会出现,我可以加载我的驱动模块.我还希望能够为不同的配置交换FPGA负载.我的意思是,我希望能够:

  1. 启动Linux
  2. 配置FPGA
  3. 枚举PCIe端点和加载模块
  4. 删除PCIe端点
  5. 重新配置FPGA
  6. 重新枚举PCIe端点

所有这些都没有重启Linux

以下是其他地方提出的解决方案,但没有解决问题.

echo 1 > /sys/bus/pci/rescan 这似乎有效(仅在某些情况下),如果我想在首次枚举后热插拔FPGA负载,它就无法工作.

这是一个相当侵入性的方法(我没有测试过),也有人在其他地方提出过.https://community.freescale.com/thread/305355

可以使用PCIe的Hotplug /电源管理设施来完成这项工作吗?如果是这样,有什么好的资源可以用于如何使用PCIe的Hotplug系统?(LDD并没有完全覆盖它)

linux-device-driver linux-kernel hotplugging pci-e

17
推荐指数
2
解决办法
5万
查看次数

在Linux中进行热插拔时检测设备是否存在

我在熊猫板上运行SPI 代码,我想知道代码中的哪个函数负责在热插拔时检测设备.

有嵌入式系统,Linux设备驱动程序和/或spi背景的人可以回答我的问题吗?

linux linux-device-driver linux-kernel hotplugging

11
推荐指数
1
解决办法
4441
查看次数

Linux内核配置设备的顺序是什么?

正如我在阅读Linux设备驱动程序第3版中与Linux设备模型相关的章节后所理解的,当配置新设备时,内核(2.6)或多或少遵循以下顺序:

  1. 设备已在驱动程序核心中注册(device_register()包括设备初始化)
  2. kobject已在设备模型中注册
  3. 它在sysfs中创建一个条目并引发一个hotplug事件
  4. 检查总线和驱动程序以查看哪个与设备匹配
  5. 探测
  6. 设备绑定到驱动程序

我的主要疑问是,在第1步中,何时device_register()调用以及应该在device结构中设置哪些字段?

它是由设备连接的总线调用的吗?代码中的任何例子?

我误解了什么吗?:)

linux kernel linux-device-driver linux-kernel hotplugging

8
推荐指数
1
解决办法
1819
查看次数

检测在Windows 7下连接或删除的外部显示器

每次插入外接LCD显示器或从运行Windows 7的笔记本电脑上拔下插头时,是否可以接收或挂接某些事件或通知?

笔记本电脑检测到这一点并将我的显示切换到外部屏幕并返回某些类型的调整大小或重新定位,但这是否由操作系统公开,以便应用程序可以提供处理程序,附加脚本等?

如果没有,是否有我可以不时轮询的注册表设置或API?

(我更喜欢编程C + Win32 API)

UPDATE

迈克在下面的回答WM_DEVICECHANGE引导我RegisterDeviceNotification(),但到目前为止,我正在努力实施它......

更新2

这个问题已被问过几次不同的措辞,但在我看来还没有完全回答:

events winapi notifications external-display hotplugging

8
推荐指数
2
解决办法
9647
查看次数

C++检测USB串行设备插入/拔出

我需要检测何时在我的嵌入式系统上插入或拔出 USB 串行设备,并知道tty与之关联的内容。

我的系统在 2.6 Linux 内核上运行。

由于我没有对udev规则的写访问权限,现在我试图从文件系统中获取这些信息,寻找/sys/bus/usb/devices目录中的修改。但是,我在使用这种方法时遇到了一些问题。

我知道Id BUS连接的 USB 端口是什么(例如 1-1.3)。所以,我搜索相关的tty(寻找一个目录/sys/bus/usb/devices/<Id BUS>:1.0/tty/- 例如/sys/bus/usb/devices/1-1.3:1.0/tty/ttyACM0)。通过这种方式,我知道我应该使用/dev/ttyACM0它与我的设备进行通信。但是,有时,此设备 ( /dev/ttyACM0) 不存在。

有没有更好的方法来获取这些信息?

我什至想尝试从系统日志中获取这些信息,但我不知道这是否是一个很好的主意。

编辑:

只是为了澄清,我的系统需要能够检测 USB 总线中的状态变化,即检测何时插入新设备(并将tty名称链接到它)或现有设备被拔出。

系统监控最多N使用 USB HUB 插入的 USB/串行设备。在其正常执行期间,可以插入新设备,可以删除现有设备(或通过远程命令重新启动 - 超出此范围)。当一个设备重新启动时,它可能会收到一个tty与之前使用的不同的(例如ttyACM0-> ttyACM3),因为内核指定给它一个tty目前是免费的,这对我来说是一个大问题。

linux embedded usb hotplugging

6
推荐指数
1
解决办法
3449
查看次数

插入 USB HID 设备时防止 usbhid 自动加载

我正在尝试(可逆地)在 Raspbian Jessie 安装内核版本 4.4.16-v7+ 上禁用 USB HID 支持。我们需要将 Raspberry Pi 放在半公共空间并在电视上显示内容,我们希望至少让它有点难以弄乱它。

到目前为止,我已经设法通过 rmmod 使 usbhid 模块从内核中移除。在对模块进行 rmmod'ing 之后,似乎每次我插入 USB 键盘或鼠标时,设备驱动程序都会重新加载到内核中。

有什么办法可以防止吗?

linux kernel hid hotplugging raspbian

5
推荐指数
1
解决办法
4530
查看次数

硬件复位后的stm32 USB-CDC

我已经使用 USB-CDC 协议对我的 stm32f103 blue-pill 板进行了编程

我可以在这个端口上读写

但是执行硬件重置后,COM 端口不可用,我必须拔下 USB 连接并重新插入,然后 COM 端口才会出现。

有可能避免这种情况吗?

-谢谢

usb stm32 hotplugging

4
推荐指数
1
解决办法
4584
查看次数

virsh命令有问题

我一直在尝试使用virsh attah-disk附加qcow2文件作为附加存储源.我正在使用的语法是(来自互联网):

virsh attach-disk --driver file vm2 disk2.qcow2 hdc
Run Code Online (Sandbox Code Playgroud)

如果vm正在运行或暂停,则显示:

error: this function is not supported by the hypervisor: disk bus 'ide' cannot be hotplugged.
Run Code Online (Sandbox Code Playgroud)

如果vm关闭,则显示:

error: Requested operation is not valid: cannot attach device on inactive domain
Run Code Online (Sandbox Code Playgroud)

我不确定hdc参数.我已尝试将attach-device功能与xml文件一起使用:

<disk type="file" device="disk">
    <driver name="file"/>
    <source file="/gfs1/disk2.qcow2"/>
    <target dev="hdc"/>
</disk>
Run Code Online (Sandbox Code Playgroud)

但这也表明:

error: Failed to attach device from /gfs1/disk2tovm2.xml
error: this function is not supported by the hypervisor: disk bus 'ide' cannot be hotplugged.
Run Code Online (Sandbox Code Playgroud)

我查看了许多示例,但它们都没有工作,并且语法几乎相同.如果有人可以帮我弄清楚错误.

VM的完整配置文件

root@blade1:/vms# virsh dumpxml vm2
<domain type='kvm' …
Run Code Online (Sandbox Code Playgroud)

ide kvm disk hotplugging

1
推荐指数
1
解决办法
8180
查看次数