首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

linux内核驱动编译机制的有关问题

2013-08-14 
linux内核驱动编译机制的问题我的理解是,拿spi的驱动来说,首先是第一步:drive/spi下面的kconfig文件与编译

linux内核驱动编译机制的问题
我的理解是,拿spi的驱动来说,
首先是第一步:drive/spi下面的kconfig文件与编译内核时的配置菜单相关联,在菜单中选中spi,这样此kconfig文件中相应的标志被设置,然后makefile根据此标志决定是否编译成相应的库文件,到这个地方我的理解对吧?

然后drive下面的kconfig和makefile呢,kconfig文件中都是source "drivers/spi/Kconfig"  的形式,它是在什么时候起作用的?是在我说的第一步之前么?是不是只是告诉编译器沿着这里面所说的路径去照相应的子目录下面的kconfig?我的理解应该是这样吧

再然后,drive下面的makefile,它里面的形式是obj-$(CONFIG_SPI) += spi/  是不是就根据相应的标志位去把相应的库文件添加到内核里面?


我根据这样的理解,自己写了两个驱动,都添加在spi目录下面,然后在spi下的kconfig中添加了两项:
config AT91SAM9X_WATCHDOG
tristate "AT91SAM9X_WATCHDOG support"
config DRIVER_TDDRV
tristate "tddrv support"

spi下面的makefile也相应的添加:
obj-$(CONFIG_AT91SAM9X_WATCHDOG) += at91sam9_wdt.o  
obj-$(CONFIG_DRIVER_TDDRV) += tddrv.o  
#
这两个驱动的文件都放在spi目录下,其实这两个驱动我是一个一个添加的,添加第一个的时候正常,添加的和原有的都能工作,但是我添加第二个的时候,我添加的两个都在,但是原有的spi驱动不见了,/dev下面没有spi设备,我重新检查了一下没有动过spi相关的驱动源文件,于是我把spi的编译成模块,开机后手动加载,但是提示说spi已经注册了,而/dev下又没有设备存在,这是怎么回事啊
求指导

[解决办法]

引用:
Quote: 引用:

是不是你的驱动代码有问题啊。
现在已经解决问题了,不过我还是对具体的过程不太了解

首先是第一步:drive/spi下面的kconfig文件与编译内核时的配置菜单相关联,在菜单中选中spi,这样此kconfig文件中相应的标志被设置,然后makefile根据此标志决定是否编译成相应的库文件,到这个地方我的理解对吧?

kconfig文件中没有标志,会在代码跟目录的.config文件里面标志。

然后drive下面的kconfig和makefile呢,kconfig文件中都是source "drivers/spi/Kconfig"  的形式,它是在什么时候起作用的?是在我说的第一步之前么?是不是只是告诉编译器沿着这里面所说的路径去照相应的子目录下面的kconfig?我的理解应该是这样吧

你的理解是对的,配置的时候会根据这个目录导入配置信息

再然后,drive下面的makefile,它里面的形式是obj-$(CONFIG_SPI) += spi/  是不是就根据相应的标志位去把相应的库文件添加到内核里面?

是的,根据make menuconfig生成的.config信息,如果配置了就编译进来

热点排行