【问题标题】:Linux dynamic kernel loading with overloading device tree带有重载设备树的 Linux 动态内核加载
【发布时间】:2021-03-23 17:51:45
【问题描述】:

我想为我的定制 spi 板制作自己的协议驱动程序。我要安装它的平台是带有 arm32 的树莓派 Pi4。我想用覆盖设备树动态加载它。 我可以构建驱动程序文件,但以下内容不清楚:

  1. 驱动程序应该准确放置在哪里?我试过 /lib/modules/5.4.79-v7, /lib/modules/5.4.79-v7/build
  2. 我在 config.txt 中创建了一个条目 dtoverlays= driver.ko 并将 dtbo 放在 /boot/overlays 下。这是正确的吗?
  3. 在我将覆盖文件放在正确的文件夹中后,是否可以在运行时加载驱动程序而无需再次重新启动。
  4. 如果调用了函数“spi_new_device”,是先加载驱动还是可以这样完成?

如果我调用 sudo insmod .ko 驱动程序加载:

rpi4: loading out-of-tree module taints kernel.

尚未调用探测函数。

【问题讨论】:

  • make modules_install INSTALL_MOD_PATH=... 会将其放置在正确的位置。 模块初始化设备探测是两个独立的独立操作(当然后一个不能在没有初始化驱动的情况下执行)。
  • 你知道在哪里吗?未设置 INSTALL_MOD_PATH 变量。

标签: linux-kernel raspberry-pi4


【解决方案1】:
  1. 驱动程序应该准确放置在哪里?我试过 /lib/modules/5.4.79-v7, /lib/modules/5.4.79-v7/build

回答:如果是额外的模块,驱动放在 /lib/modules/5.4.79-v7/extra 下并用。

make -C /lib/modules/`uname -r`/build M=$PWD modules_install
  1. 我在 config.txt 中创建了一个条目 dtoverlays= driver.ko 并将 dtbo 放在 /boot/overlays 下。这是正确的吗?

回答:用rpi可以这样实现。

  1. 在我将覆盖文件放在正确的文件夹中后,是否可以在运行时加载驱动程序而无需再次重新启动。

Answer:如果驱动安装在extra下,则不会加载。重启后也不会加载。驱动程序必须加载“modprobe”但没有扩展名“.ko”。 modprobe在lib/modules下搜索驱动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2016-10-12
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多