RK3288 平台(Android 5.1)+ PN548 调试流水账(二、Kconfig & Makefile 配置)

前言:前期编译完成之后,我们需要把驱动编译进内核中,就要修改 Kconfig 文件添加配置菜单,并修改 Makefile 文件把驱动程序添加到编译队列中。

一、添加配置菜单(Kconfig)

进入 kernel/drivers/ 目录下,输入 vim Kconfig,在末尾“endmenu”之前添加一行source "drivers/nfc/pn54x/Kconfig",这样在执行 make menuconfig 进行配置的时候会搜索包含在其中的 “drivers/nfc/pn54x/Kconfig”文件,当然光这样还不行,还需要在 drivers/nfc/pn54x/Kconfig 中根据 Kconfig 的语法添加如下内容:

  menu "Near Field Communication (NFC) devices"

       config NFC_NXP_PN54X
       tristate "NXP PN54X i2c driver"
       depends on I2C
       default n

   endmenu

这样在运行 make menuconfig 之后的配置菜单中就出现了手动添加的这一项:
RK3288 平台(Android 5.1)+ PN548 调试流水账(二、Kconfig & Makefile 配置)_第1张图片

RK3288 平台(Android 5.1)+ PN548 调试流水账(二、Kconfig & Makefile 配置)_第2张图片

RK3288 平台(Android 5.1)+ PN548 调试流水账(二、Kconfig & Makefile 配置)_第3张图片

至此,说明配置菜单已经添加成功。

这里需要关注一下 “NFC_NXP_PN54X” 这个关键字,这个关键字在之后的 Makefile 中的配置中将会用到,这里提一下,留个印象,之后会说明。

二、添加编译配置(Makefile)

依旧进入 kernel/drivers/ 目录下,输入 vim Makefile,查找 “nfc” 关键字,这里是大小写敏感的,也可以尝试搜索 “NFC” 关键字,我这里找到:

obj-$(CONFIG_NFC)     += nfc/

这里的 obj-$(CONFIG_NFC) 需要修改为上面提到过的“NFC_NXP_PN54X”,不然无法编译到 nfc/目录,修改完如下:

obj-$(CONFIG_NFC_NXP_PN54X)     += nfc/

继续进入 nfc/ 目录查看 Makefile 文件,可以看到其他的 nfc 设备的选项,如:

  obj-$(CONFIG_BCM2079X_NFC)  += bcm2079x-i2c.o
  obj-$(CONFIG_NFC_PN544)     += pn544/
  obj-$(CONFIG_NFC_MICROREAD) += microread/
  obj-$(CONFIG_NFC_PN533)     += pn533.o
  obj-$(CONFIG_NFC_WILINK)    += nfcwilink.o
  obj-$(CONFIG_NFC_MEI_PHY)   += mei_phy.o

由此可见我还需要添加 += pn54x/ ,把我的驱动的目录 pn54x 添加进去, 同时前面还需要添加编译选项 obj-$(CONFIG_NFC_NXP_PN54X),即:

obj-$(CONFIG_NFC_NXP_PN54X)    += pn54x/

继续进入 pn54x/ ,打开 Makefile 文件,由于是自己新建的目录,需要自己创建该文件,并在其中添加如下内容:

  # mkefile for nfc devices

  obj-$(CONFIG_NFC_NXP_PN54X) += pn54x.o
  ccflags-$(CONFIG_NFC_DEBUG) := -DDEBUG

到此 Makefile 文件修改完毕,这样便可以编译到 kernel/drivers/nfc/pn54x/ 中的驱动文件 pn54x.c 了。

从这个修改的过程中可以看到,Kconfig 文件和 Makefile 文件都是一层一层嵌套的,比较类似的其他驱动的写法,再参考一下网上关于的 Kconfig & Makefile 的语法,是很容易修改的。

你可能感兴趣的:(RK3288 平台(Android 5.1)+ PN548 调试流水账(二、Kconfig & Makefile 配置))