openwrt中添加自定义驱动模块

1:make menuconfig中的 kernel modules

openwrt中添加自定义驱动模块_第1张图片

其中的各个配置选项来自于下面目录中的.mk文件

[root@localhost /openwrt/openwrt/trunk/package/kernel/linux/modules]$ls
001-depends.mk  crypto.mk    hwmon.mk  leds.mk        netdevices.mk.bak  nls.mk     sound.mk  video.mk    wireless11221.mk
block.mk        firewire.mk  i2c.mk    lib.mk         netfilter.mk       other.mk   spi.mk    virtual.mk  wireless.mk
can.mk          fs.mk        input.mk  netdevices.mk  netsupport.mk      pcmcia.mk  usb.mk    w1.mk
[root@localhost /openwrt/openwrt/trunk/package/kernel/linux/modules]$

兄弟们可以打开就知道,

openwrt中添加自定义驱动模块_第2张图片

其中我们将自己将要添加的内核模块添加到Network Devices中。添加之后的效果为:

openwrt中添加自定义驱动模块_第3张图片

2:添加自己的模块到文件netdevices.mk

openwrt中添加自定义驱动模块_第4张图片

其中自己的模块代码在 FILES:=$(LINUX_DIR)/drivers/net/ethernet/ethernet中

内核控制选项为:CONFIG_AR9344_PHY8035 其中这个很重要需要在多个文件中进行定义AR9344_PHY8035。

在下面的目录中的Makefile添加obj-y += ethernet/

[root@localhost /openwrt/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/net/ethernet]$more Makefile
#
# Makefile for the Linux network Ethernet device drivers.
#
obj-y += ethernet/

同时还需要在Kconfig中添加source "drivers/net/ethernet/ethernet/Kconfig"

其中内容如下:

[root@localhost /openwrt/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/net/ethernet/ethernet]$cat Kconfig
config AR9344_PHY8035  //很重要的东西
        tristate "db12x borad for 9344chip"
        depends on PCI
        ---help---
          This driver supports for ar9035 phy id

其中看看自己模块中的makefile的内容如下:

openwrt中添加自定义驱动模块_第5张图片

主要上面makefile中的CONFIG_AR9344_PHY8035的变量,关于此值相关的配置值如下:

[root@localhost /openwrt/openwrt/trunk]$cat .config |grep 9344
CONFIG_PACKAGE_kmod-ar9344_ethernet=y


其中不管CONFIG_PACKAGE_kmod-ar9344_ethernet=y的 值是Y还是M,Linux内核目录中的CONFIG_AR9344_PHY8035的值都是M,古可以知道在根目录(/openwrt/openwrt/trunk)中的make menuconfig的时候是会与Linux内核中的config文件建立起联系的,之间是怎么的联系,现在还不是很清楚。

当在在总的menuconfig中选中自定义的模块之后,系统会自动将此模块加载到内核所在文件系统中

openwrt中添加自定义驱动模块_第6张图片

同事也会成ipk格式的文件。

Generating index for package ./kmod-ar9344_ethernet_3.10.36-1_ar71xx.ipk



你可能感兴趣的:(openwrt)