在linux源代码中添加新的驱动程序代码

Rav*_*avi 18 linux-device-driver linux-kernel

我开发了一个Linux设备驱动程序.截至目前,我正在Ubuntu 12.04上使用交叉编译器为arm编译它,然后在我的arm Linux映像中进行修改.但我想学习如何在Linux源代码中添加它,并通过配置arm Linux来添加/删除,以便我可以使用Linux源代码编译来编译它?

有任何想法吗?

Dee*_*ngh 41

要在arm架构中交叉编译自己的驱动程序,您必须遵循下面提到的一些步骤.

  1. 在驱动程序的驱动程序(在Linux源代码中)中创建类似my_drvr的目录,并将驱动程序(my_driver.c)文件放在此目录中.它看起来像 /linux_source_code/drivers/my_drvr/my_driver.c

  2. 在驱动程序目录中创建一个Makefile(使用vi任何编辑器)并在此put中obj-$(CONFIG_MY_DRIVER) += my_driver.o 并保存此文件.这将显示为/linux_source_code/drivers/my_drvr/Makefile

  3. Kconfig在驱动程序目录中创建一个文件(使用vi任何编辑器)并在此put中

    config MY_DRIVER
    tristate "my driver" //gives your driver description like vendor name etc.
    depends on ARM
    default y if ARM
    help
      my driver module.
  4. 保存此文件,这将显示为 /linux_source_code/drivers/my_drvr/Kconfig

  5. 同时添加MakefileKconfig在Linux源极驱动器的文件MakefileKconfig文件,该文件是在/linux_source_code/drivers/Makefile/linux_source_code/drivers/Kconfig

  6. 在Makefile中添加下一行

     obj-y    += my_drvr/ 

    要么

     obj-$(CONFIG_MY_DRIVER)   += my_drvr/
  7. 在Kconfig文件中,在最后一行添加以下内容

    source "drivers/my_drvr/Kconfig"
  8. 最后必须将Kconfig文件添加到体系结构特定的配置文件中,该文件将kernel_source/arch/arm/configs/--defconfig在最后添加到下面的行中

    CONFIG_MY_DRIVER=y

注意: - 最后一步因您的体系结构而异,因此您需要注意.现在,您可以使用make命令编译驱动程序.(例如:sun7i_defconfig)

  • 优秀.准确而简洁.谢谢. (2认同)

Oma*_*air 6

您需要在将放置设备驱动程序的内核源子目录的Kconfig文件中添加配置选项.您还需要在该目录的Makefile中添加行.显然,您还需要将源文件复制到该目录.

由于您的驱动程序依赖于ARM体系结构,因此在Kconfig中,您需要选择"依赖于",例如:

config SND_ARMAACI
tristate "ARM PrimeCell PL041 AC Link support"
depends on ARM_AMBA
Run Code Online (Sandbox Code Playgroud)

你的Makefile看起来像

obj-$(CONFIG_SND_ARMAACI)   += snd-aaci.o
snd-aaci-objs       := aaci.o
Run Code Online (Sandbox Code Playgroud)

所以现在当您在内核源代码树中执行make menuconfig时,您将找到放在Kconfig中的配置选项,您可以选择将其编译到内核中或构建为模块或根本不编译.

在驱动程序所针对的子系统目录中查找示例.


Ren*_*řík 3

创建补丁并添加应用此补丁作为解压内核 tarball 之后和配置/编译之前的步骤。