【发布时间】:2017-11-12 14:35:48
【问题描述】:
我尝试实例化一个 uio (driver/uio/uio_pdrv_genirq.c) char 设备 捕获用户空间中的一些 gpio 中断。
一切似乎都是 设置正确,出现 /sys/class/uio/uio0/ 并且 /proc/interrupts 显示我的中断已注册。
但是我想念的是 /dev/uio0 条目。
我通过 driver/uio/uio.c:__uio_register_device() 和 device_create() 确实成功了,所以我想知道为什么 /dev/uio0 没有 出现。我不能使用 mknod 因为主号码是动态的 由 driver/uio/uio.c 分配。
我需要启用一些额外的内核配置,以便 /dev/uio0 自动出现还是我错过了什么?我没有启用CONFIG_DEVTEMPFS,是否需要这样才能自动出现/dev/uio0?
【问题讨论】:
-
您是否使用过 dts 覆盖来提升
/sys/class/uio/uio0?尝试在 RPI0 上使用uio_pdrv_genirq,但没有创建正确的 dts 覆盖文件... -
您需要启用驱动程序,但还要指定要使用的“兼容”标签。您可以通过 cmdline 选项执行此操作,例如: uio_pdrv_genirq.of_id=generic-uio 。然后你可以在dtb中添加“compatible = generic-uio”,驱动与设备匹配。
标签: linux linux-kernel linux-device-driver embedded-linux