我为硬件编写了自己的USB驱动程序,并且希望将此驱动程序添加为内置驱动程序。我看过这篇文章,他们在其中创建了一个设置为模块而非内置的配方。
http://wiki.kaeilos.com/index.php/Howto_build_a_kernel_module_out_of_the_kernel_tree
请大家帮我创建一个将模块设置为内置模块的秘诀。
感谢您的时间。
答案 0 :(得分:3)
您不能在Linux内核中内置外部模块。因此,您需要将驱动程序放入drivers/usb/
中(根据硬件类型,如果它是主机控制器驱动程序,则应将其放置在drivers/usb/host/
中;如果它是drivers/usb/dwc*
或drivers/usb/gadget/udc
是Linux内核树的小工具驱动程序。
然后,您需要在Kconfig
和Makefile
的{{1}}中添加相应的配置。最后,您需要在defconfig / .config中将其作为内置驱动程序启用以进行构建。
简而言之,
drivers/usb
drivers/usb
和Kconfig
。例如,Makefile
CONFIG_USB_HW_HCD
添加到defconfig。在Yocto中,您可以在CONFIG_USB_HW_HCD=y
中将defconfig文件指定为file://defconfig
。编辑: 当您直接使用meta-intel时,您可以创建补丁并对其进行bbappend。为此,
SRC_URI
,添加drivers/usb
条目。Kconfig, Makefile
+ git add
将该驱动程序添加到git repo中git commit
git format-patch
文件并添加此补丁。您可以将此.bbappend
文件放在您的任何自定义层中或meta-intel本身中。.bbappend
文件中。通过这种方式,您不需要具有相同Linux内核的单独存储库。
答案 1 :(得分:0)
我希望您的初始模块将具有module_init()和module_exit调用。
要使此usb模块成为内置内核的一部分,第一件事就是修改您的源代码以删除module_init或module_exit调用,再添加平台调用探针,init等。/
将您的源文件复制到适当的源目录,例如“ driver / usb / *”
在KCONFIG文件中添加具有该驱动程序描述的条目,并为其依赖关系添加规则
在Makefile中添加条目以进行条件编译。
使用make menuconfig配置内核以启用config标签并构建内核