在我自己的元层上加载我自己的设备驱动程序作为 Yocto 中的内置
Loading my own device driver as builtin in Yocto on my own meta layer
我为硬件编写了自己的 USB 驱动程序,我想将此驱动程序添加为内置驱动程序。我已经看到这个 post 他们创建了一个配方来设置为模块而不是内置。
http://wiki.kaeilos.com/index.php/Howto_build_a_kernel_module_out_of_the_kernel_tree
你们能帮我创建一个将模块设置为内置模块的方法吗?
感谢您的宝贵时间。
您不能将外部模块内置到 Linux 内核中。因此,您需要将驱动程序放入 drivers/usb/
(根据硬件类型,如果它是主机控制器驱动程序,则需要将其放置在 drivers/usb/host/
中,如果它是 drivers/usb/dwc*
或 drivers/usb/gadget/udc
是您的 Linux 内核树的小工具驱动程序。
然后需要在Kconfig
和drivers/usb
中添加相应的配置。最后,您需要在 defconfig/.config 中将其作为内置驱动程序启用以进行构建。
简而言之,
- 将您的驱动程序放在
drivers/usb
- 添加
Kconfig
和 Makefile
。例如,CONFIG_USB_HW_HCD
- 添加到 defconfig 为
CONFIG_USB_HW_HCD=y
。在 Yocto 中,您可以在 SRC_URI
. 中将 defconfig 文件指定为 file://defconfig
编辑:
当您直接使用 meta-intel 时,您可以为其创建补丁和 bbappend。为此,
- git 克隆 "intel kernel repo"
- 如上所述添加驱动程序。复制到
drivers/usb
,添加 Kconfig, Makefile
条目。
- 使用
git add
+ git commit
将此驱动程序添加到 git 存储库
- 使用
git format-patch
创建补丁
- 创建一个
.bbappend
文件并添加此补丁。您可以将此 .bbappend
文件放在您的任何自定义层或 meta-intel 本身中。
- 将 defconfig 片段也添加到 Linux 内核的
.bbappend
文件中。
这样您就不需要拥有相同 Linux 内核的单独存储库。
我希望您的初始模块有 module_init() 和 module_exit 调用。
要使这个 usb 模块成为内置内核的一部分,首先要做的是修改您的源代码以删除 module_init 或 module_exit 调用 添加平台调用 probe、init 等/
将您的源文件复制到适当的源目录,如 "driver/usb/*"
在 KCONFIG 文件中添加一个条目,其中包含对该驱动程序的一些描述,并为其依赖项添加规则
在 Makefile 中添加用于条件编译的条目。
使用 make menuconfig 配置您的内核以启用您的配置标签并构建您的内核
我为硬件编写了自己的 USB 驱动程序,我想将此驱动程序添加为内置驱动程序。我已经看到这个 post 他们创建了一个配方来设置为模块而不是内置。
http://wiki.kaeilos.com/index.php/Howto_build_a_kernel_module_out_of_the_kernel_tree
你们能帮我创建一个将模块设置为内置模块的方法吗?
感谢您的宝贵时间。
您不能将外部模块内置到 Linux 内核中。因此,您需要将驱动程序放入 drivers/usb/
(根据硬件类型,如果它是主机控制器驱动程序,则需要将其放置在 drivers/usb/host/
中,如果它是 drivers/usb/dwc*
或 drivers/usb/gadget/udc
是您的 Linux 内核树的小工具驱动程序。
然后需要在Kconfig
和drivers/usb
中添加相应的配置。最后,您需要在 defconfig/.config 中将其作为内置驱动程序启用以进行构建。
简而言之,
- 将您的驱动程序放在
drivers/usb
- 添加
Kconfig
和Makefile
。例如,CONFIG_USB_HW_HCD
- 添加到 defconfig 为
CONFIG_USB_HW_HCD=y
。在 Yocto 中,您可以在SRC_URI
. 中将 defconfig 文件指定为
file://defconfig
编辑: 当您直接使用 meta-intel 时,您可以为其创建补丁和 bbappend。为此,
- git 克隆 "intel kernel repo"
- 如上所述添加驱动程序。复制到
drivers/usb
,添加Kconfig, Makefile
条目。 - 使用
git add
+git commit
将此驱动程序添加到 git 存储库
- 使用
git format-patch
创建补丁
- 创建一个
.bbappend
文件并添加此补丁。您可以将此.bbappend
文件放在您的任何自定义层或 meta-intel 本身中。 - 将 defconfig 片段也添加到 Linux 内核的
.bbappend
文件中。
这样您就不需要拥有相同 Linux 内核的单独存储库。
我希望您的初始模块有 module_init() 和 module_exit 调用。
要使这个 usb 模块成为内置内核的一部分,首先要做的是修改您的源代码以删除 module_init 或 module_exit 调用 添加平台调用 probe、init 等/
将您的源文件复制到适当的源目录,如 "driver/usb/*"
在 KCONFIG 文件中添加一个条目,其中包含对该驱动程序的一些描述,并为其依赖项添加规则
在 Makefile 中添加用于条件编译的条目。
使用 make menuconfig 配置您的内核以启用您的配置标签并构建您的内核