向内核添加新驱动

背景

 向内核添加定制功能时,我们需要修改KconfigMakefile。现在最新方式是bazel,语法有点像json,看起来更方便。
Kconfig :添加 新驱动 内核配置菜单。这样就有途径选择我们的驱动。
Makefile:编译 新驱动。此Makefile位置是 驱动所在目录。
 总体描述:在内核配置make menuconfig时,从Kconfig中读取配置菜单,用户配置完成后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。

步骤

  1. Kconfig文件,添加配置菜单
  2. Makefile文件,编译 新驱动代码
  3. 通过make menuconfig或直接修改.config文件来使能这个配置项

步骤详解

 1. Kconfig文件,添加配置菜单

   格式
   config symbol
   options
   解释
   symbol就是新的菜单项,options是这个新菜单项下的属性和选项。每个config菜单项都要有类型定义。bool:布尔类型,tristate三态:内建、模块、移除,string:字符串,hex:十六进制,integer:整型
   bool:可取y、n  tristate:可取y、n、m

   举例
   config HELLO_MODULE
   tristate “hello test module”
   depends on ARCH_PXA
   help
    this is help description

   tristate类型的菜单,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置
   hello test module运行make menuconfig时,会出现hello test module选项。假如选择了此选项,该选项就会保存在.config文档中。当编译内核时,就会读取.config文档,当发现hello test module选项为y或者m时,系统在调用Makefile时,会将Makefile描述的驱动编到内核或者编成ko文件。
   depends on表明,HELLO_MODULE这个菜单项,只对XScale处理器有效,即只有选择了ARCH_PXA后,该菜单才能可见(可配置)
   help一些帮助性描述

 2. Makefile文件,编译新驱动

   格式
   obj-$(CONFIG_symbol) += xxxxmodule/

   解释
   这里的symbol就是Kconfig的配置中,config关键字后面的symbol。比如上面的例子symbol是HELLO_MODULE。就会在.config中生成的变量,CONFIG_HELLO_MODULE=m

   举例
    obj-$(CONFIG_HELLO_MODULE) += hellomodule/
   CONFIG_HELLO_MODULE变量的值,就是.config中生成的。hellomodule目录就是驱动源码目录,源码位置和此Makefile同一层

 3. 通过make menuconfig或直接修改.config文件来使能这个配置项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值