Rav*_*avi 18 linux-device-driver linux-kernel
我开发了一个Linux设备驱动程序.截至目前,我正在Ubuntu 12.04上使用交叉编译器为arm编译它,然后在我的arm Linux映像中进行修改.但我想学习如何在Linux源代码中添加它,并通过配置arm Linux来添加/删除,以便我可以使用Linux源代码编译来编译它?
有任何想法吗?
Dee*_*ngh 41
要在arm架构中交叉编译自己的驱动程序,您必须遵循下面提到的一些步骤.
在驱动程序的驱动程序(在Linux源代码中)中创建类似my_drvr的目录,并将驱动程序(my_driver.c)文件放在此目录中.它看起来像
/linux_source_code/drivers/my_drvr/my_driver.c
在驱动程序目录中创建一个Makefile(使用vi任何编辑器)并在此put中obj-$(CONFIG_MY_DRIVER) += my_driver.o
并保存此文件.这将显示为/linux_source_code/drivers/my_drvr/Makefile
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.
保存此文件,这将显示为 /linux_source_code/drivers/my_drvr/Kconfig
同时添加Makefile和Kconfig在Linux源极驱动器的文件Makefile和Kconfig文件,该文件是在/linux_source_code/drivers/Makefile
与/linux_source_code/drivers/Kconfig
在Makefile中添加下一行
obj-y += my_drvr/
要么
obj-$(CONFIG_MY_DRIVER) += my_drvr/
在Kconfig文件中,在最后一行添加以下内容
source "drivers/my_drvr/Kconfig"
最后必须将Kconfig文件添加到体系结构特定的配置文件中,该文件将kernel_source/arch/arm/configs/--defconfig在最后添加到下面的行中
CONFIG_MY_DRIVER=y
注意: - 最后一步因您的体系结构而异,因此您需要注意.现在,您可以使用make命令编译驱动程序.(例如:sun7i_defconfig)
您需要在将放置设备驱动程序的内核源子目录的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中的配置选项,您可以选择将其编译到内核中或构建为模块或根本不编译.
在驱动程序所针对的子系统目录中查找示例.