在我自己的元层上加载我自己的设备驱动程序作为Yocto中的内置程序

在我自己的元层上加载我自己的设备驱动程序作为Yocto中的内置程序,c,linux,linux-device-driver,embedded-linux,yocto,C,Linux,Linux Device Driver,Embedded Linux,Yocto,我为硬件编写了自己的USB驱动程序,我想将此驱动程序添加为内置。我看过这篇文章,他们创建了一个配方,设置为模块而不是内置的 你们能帮我创建一个将模块设置为内置模块的配方吗 谢谢您的时间。您不能在Linux内核中内置外部模块。因此,您需要将驱动程序放入Linux内核树的drivers/usb/(根据硬件类型,如果它是主机控制器驱动程序或drivers/usb/dwc*或drivers/usb/gadget/udc如果它是gadget驱动程序,则需要将其放入drivers/usb/gadget/u

我为硬件编写了自己的USB驱动程序,我想将此驱动程序添加为内置。我看过这篇文章,他们创建了一个配方,设置为模块而不是内置的

你们能帮我创建一个将模块设置为内置模块的配方吗


谢谢您的时间。

您不能在Linux内核中内置外部模块。因此,您需要将驱动程序放入Linux内核树的
drivers/usb/
(根据硬件类型,如果它是主机控制器驱动程序或
drivers/usb/dwc*
drivers/usb/gadget/udc
如果它是gadget驱动程序,则需要将其放入
drivers/usb/gadget/udc/

然后您需要在
Kconfig
drivers/usb
中添加相应的配置。最后,您需要在defconfig/.config中为building启用这个内置驱动程序

总之,

  • 将驱动程序放入
    驱动程序/usb
  • 添加
    Kconfig
    Makefile
    。例如,
    CONFIG\u USB\u HW\u HCD
  • 添加到defconfig作为配置USB硬件HCD=y。在Yocto中,您可以将defconfig文件指定为
    file://defconfig
    在您的
    SRC\u URI
  • 编辑: 当您直接使用meta intel时,您可以创建补丁并附加到它。要做到这一点

  • git克隆“英特尔内核repo”
  • 如上所述添加驱动程序。复制到
    drivers/usb
    ,添加
    Kconfig,Makefile
    条目
  • 使用
    git Add
    +
    git commit
  • 使用git格式的补丁创建补丁
  • 创建
    .bbappend
    文件并添加此修补程序。您可以将此
    .bbappend
    文件放置在任何自定义层或meta intel本身中
  • 将defconfig片段也添加到Linux内核的
    .bbappend
    文件中

  • 这样,您就不需要对同一个Linux内核进行单独的repo。

    您不能在Linux内核中内置外部模块。因此,您需要将驱动程序放入Linux内核树的
    drivers/usb/
    (根据硬件类型,如果它是主机控制器驱动程序或
    drivers/usb/dwc*
    drivers/usb/gadget/udc
    如果它是gadget驱动程序,则需要将其放入
    drivers/usb/gadget/udc/

    然后您需要在
    Kconfig
    drivers/usb
    中添加相应的配置。最后,您需要在defconfig/.config中为building启用这个内置驱动程序

    总之,

  • 将驱动程序放入
    驱动程序/usb
  • 添加
    Kconfig
    Makefile
    。例如,
    CONFIG\u USB\u HW\u HCD
  • 添加到defconfig作为配置USB硬件HCD=y。在Yocto中,您可以将defconfig文件指定为
    file://defconfig
    在您的
    SRC\u URI
  • 编辑: 当您直接使用meta intel时,您可以创建补丁并附加到它。要做到这一点

  • git克隆“英特尔内核repo”
  • 如上所述添加驱动程序。复制到
    drivers/usb
    ,添加
    Kconfig,Makefile
    条目
  • 使用
    git Add
    +
    git commit
  • 使用git格式的补丁创建补丁
  • 创建
    .bbappend
    文件并添加此修补程序。您可以将此
    .bbappend
    文件放置在任何自定义层或meta intel本身中
  • 将defconfig片段也添加到Linux内核的
    .bbappend
    文件中

  • 这样,您就不需要对同一个Linux内核进行单独的repo。

    我希望您的初始模块将具有module_init()和module_exit调用

    要使这个usb模块成为内置内核的一部分,首先要修改您的源代码,删除module_init或module_exit调用add platform calls probe、init等/

    将源文件复制到适当的源目录,如“driver/usb/*”

    在KCONFIG文件中添加一个条目,其中包含该驱动程序的一些描述,并为其依赖项添加规则

    在Makefile中添加用于条件编译的条目


    使用make menuconfig配置内核以启用配置标记并构建内核

    我希望初始模块将有module_init()和module_exit调用

    要使这个usb模块成为内置内核的一部分,首先要修改您的源代码,删除module_init或module_exit调用add platform calls probe、init等/

    将源文件复制到适当的源目录,如“driver/usb/*”

    在KCONFIG文件中添加一个条目,其中包含该驱动程序的一些描述,并为其依赖项添加规则

    在Makefile中添加用于条件编译的条目


    使用make menuconfig配置内核以启用配置标记并构建内核

    这是一个手动过程。手动运行cp命令。。我们需要为它编写任何配方吗?你不需要创建新的配方。您必须具有来自元bsp层的内核编译配方。例如,beaglebone black的meta bbb使用来自的defconfig。我的meta层中有此驱动程序源代码,我希望将其复制到linux intel源代码中…是的,您需要将驱动程序单独复制到linux内核源代码树的drivers/usb中。然后添加Kconfig和Makefile条目。然后将此条目添加到您的defconfig/。config@md.jamal:我不知道你所说的手动复制是什么意思。您需要内核的驱动程序部分,所以将其放在内核树中。这是唯一的选择。如果您希望驱动程序作为模块,您可以将其作为外部构建模块或从内核源代码构建。这是一个手动过程。手动运行cp命令。。我们需要为它编写任何配方吗?你不需要创建新的配方。您必须具有来自元bsp层的内核编译配方。例如,小猎犬的元bbb