在make munuconfig 配置选项主目录/子目录下怎样添加模块选项

来源:互联网 发布:少林禅武医网络班 编辑:程序博客网 时间:2024/05/17 03:24

1.在mod-subdirs 中加入模块文件夹名
2.按照如下模式添加子目录配置项
subdir-$(CONFIG_MMC)  += mmc
注:CONFIG_MMC在Config.in文件中被定义,且当你配置内核时会给其赋值。

3.模块文夹中的Config.in文件简单范例
#
# MMC subsystem configuration
#
mainmenu_option next_comment
comment 'MMC/SD Card support'

tristate 'MMC support' CONFIG_MMC
if [ "$CONFIG_MMC" = "y" -o "$CONFIG_MMC" = "m" ]; then
  bool '  MMC debugging' CONFIG_MMC_DEBUG
  if [ "$CONFIG_MMC_DEBUG" = "y" ]; then
    int '  MMC debugging verbosity (0=quiet, 3=noisy)' CONFIG_MMC_DEBUG_VERBOSE 0
  fi
  if [ "$CONFIG_MMC_S3C2410" = "y" -o "$CONFIG_ARCH_H5400" = "y" -o "$CONFIG_ARCH_H2200" = "y" ] ; then
    tristate '  Samsung MMC ASIC Support' CONFIG_MMC_SAMSUNG_ASIC
    dep_tristate '    S3C2410 SD/MMC Support' CONFIG_MMC_S3C2410 $CONFIG_MMC_SAMSUNG_ASIC $CONFIG_ARCH_S3C2410
    dep_tristate '    H5400 SD/MMC Support' CONFIG_MMC_H5400 $CONFIG_MMC_SAMSUNG_ASIC $CONFIG_ARCH_H5400
    dep_tristate '  ASIC3 SD/MMC support' CONFIG_MMC_ASIC3 $CONFIG_IPAQ_HAS_ASIC3
  fi
fi

endmenu

4.模块文件中Makefile简单范例
#
# Makefile for the kernel mmc device drivers.
#

O_TARGET := mmc.o

export-objs := mmc_core.o mmc_samsung.o

obj-$(CONFIG_MMC) += mmc_base.o
obj-$(CONFIG_MMC_SAMSUNG_ASIC) += mmc_samsung.o
obj-$(CONFIG_MMC_S3C2410) += mmc_s3c2410.o
obj-$(CONFIG_MMC_H5400) += mmc_h5400.o
obj-$(CONFIG_MMC_ASIC3) += mmc_asic3.o

# Declare multi-part drivers.
list-multi := mmc_base.o
mmc_base-objs := mmc_protocol.o mmc_core.o mmc_media.o

include $(TOPDIR)/Rules.make

# Link rules for multi-part drivers.

mmc_base.o: $(mmc_base-objs)
 $(LD) -r -o $@ $(mmc_base-objs)

5.当我们把上面的都添加了以后,运行make munuconfig命令的时候在主目录下我们依然看不到mmc的选项。原因是没有把Config.in文件导入现在的系统配置中。不同的cpu结构有

不同的系统导入点。这个导入点在arch目录的CPU结构体目录下,例如选择ARM结构,那么需要在arch/arm/config.in 中指定mmc这个Config.in :source drivers/mmc/Config.in

==========================================================================
上面我们是在主目录下添加模块,下面介绍在子目录下添加小模块的方法:
举例:
我们要在char目录下添加led模块。需要修改的文件只有两个:drivers/char/Config.in和drivers/char/Makefile
1.在drivers/char/Config.in文件中添加:
dep_tristate 'S3C2410 LED support' CONFIG_S3C2410_GPIO_LED
$CONFIG_ARCH_S3C2410
含义:CONFIG_ARCH_S3C2410只要被定义为Y或M,在字符设备分类下就会出现S3C2410 LED support选项,它对应了CONFIG_S3C2410_GPIO_LED的定义。定义为模块时

CONFIG_S3C2410_GPIO_LED为M,定义为连接到内核中CONFIG_S3C2410_GPIO_LED为y。
2.在drivers/char/Makefile文件中添加:
obj-$(CONFIG_S3C2410_GPIO_LED) += s3c2410_led.o
含义:Makefile会根据obj-m和obj-y编译并连接对应的源码。
3.make modules SUBDIRS=drivers/char
只编译drivers/char目录下的模块。

原创粉丝点击