驱动编译配置

当我们写好驱动模块的代码后下一步就是编译,如果我们想让他和内核的其他驱动一样自动化编译完成,我们只需要实现自己的Makefile

可以写成如下:

obj-m:test.o

#obj-y:test.o

#obj-n:test.o

其中后面的

-m:表示编译成可装载模块,需要自己Insmod rmmod,比较灵活,适合调试或者升级替换,免除刷机。

-y:表示跟内核笔译在一起,成为不可拆分的一部分,不需要自己去insmod ,同时意味着更新这个驱动整个内核都需要更新,板子需要重新刷机,不便于调试。

-n:表示不编译该模块。

编译成模块后模块的名称是test.ko 编译只依赖test.c一个c文件如果有多个文件依赖,或者想自己定一个模块名称也可改成如下:

obj-m:=MODULE_NAME.o
MODULE_NAME-objs:=file1.o file2.o\
file3.o

  

当然以上是山寨做法,标准的做法应该是实现Kconfig文件及Makefile,并且使用

make manuconfig

调出图形界面来配置。

 

 

Kconfig

#
# IIC  device configuration
#

menuconfig CHAR_I2C
        tristate "L io device support."
         default y
        ---help---
          This is i2c char devices group.

if CHAR_I2C
config CHAR_I2C_TW8836
        tristate "TW8836 MCU I2C DEVICE"
        depends on I2C
        ---help---
        TW8836 Char device driver
        If you have a mcu chip  working with
        an I2C bus say Yes and it will be accessible from within Linux.
        To compile this driver as a module, choose M here; the module will be
        called char_i2c_tw8836.

endif #CHAR_I2C

  

Makefile

#
# Makefile for the iic tw8836  device drivers.
#
obj-$(CONFIG_CHAR_I2C_TW8836) += tw8836.o

  Kconfig中的内容就是提供给make manuconfig显示界面用的,其中CONFIG_CHAR_I2C_TW8836宏来控制这个模块的编译,这个模块又依赖IIC 

make manuconfig配置保存后,会把内核配置文件更新成

.config

文件保存在内核编译目录下,内核编译的时候就会去找这个配置文件,将相应的配置结果更新的各个Makefile里面,此时CONFIG_CHAR_I2C_TW8836变成y /m/n

 

转载于:https://www.cnblogs.com/tid-think/p/10613008.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值