总结:

  • Menuconfig是编辑内核的工具。
  • Kconfig定义Menuconfig菜单选项。
  • .config是最后Menuconfig配置完生成的文件。
  • Makefile根据.config宏定义判断是否编译驱动。

一、Menuconfig的操作

1、Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉,menuconfig是生成.config的一个工具。

在Linux发展过程中,配置内核可以使用一下命令:
        – #make config(基于文本的最为传统的配置界面,不推荐使用)
        – #make menuconfig(基于文本菜单的配置界面)
        – #make xconfig(要求QT被安装)
        – #make gconfig(要求GTK+被安装)

2、在Linux源码目录下输入命令make Menuconfig,可以进入配置界面
– menuconfig实现的代码在源码“scripts”目录下(了解即可)

3、搜索
        – 界面输入“/”,输入查找关键词,输入“回车”即可搜索

4、使用 “ 空格 ”键 选择具体驱动配置,有 三种状态
        – “M”编译成模块(需要在编译文件里面特殊定义,后面介绍)
        – “空”不编译状态
        – “*”编译进内核

二、Kconfig文件

1、Kconfig简介

当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig

Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config

linux源码目录下的Kconfig也是通过脚本编写而成,所以学会“仿写”即可。Kconfig文件在每一级目录下都有,源码下的如下图所示。

2、Linux内核配置裁减

打开:drivers/char/Kconfig,在LEDS_CTL上面仿写一个HELLO_CTL。

然后查看menuconfig配置和裁减HELLO的驱动,查看.config文件的变化,将HELLO定义为“tristate”,可选为“M”状态。

三、.config

menuconfig配置完后,会生成.config,在linux内核源码根目录。打开如下:

里面实际上就是很多根据刚刚配置生成的宏定义开关。用于开关驱动。这些宏定义开关在对应的驱动目录下的Makefile文件中,起到了开关作用。如下面LED驱动的Makefile,就是根据这个.config里面的宏定义,来判断是否将itop4412_leds编译进内核里。

三、linux内核驱动裁剪相关推荐

  1. linux内核的裁剪和移植实验,实验5 linux内核的裁剪移植.doc

    实验5 linux内核的裁剪移植 一.实验目的: 学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上. 二.实验内容 一.开发环境 宿主机:ubuntu10.04 开发板:ti ...

  2. 基于ARM的嵌入式linux 内核的裁剪与移植

    0 引言     微处理器的产生为价格低廉.结构小巧的CPU和外设的连 接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面.尽管从八十年代末开始,已经陆续出现了一些嵌入式 ...

  3. linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx

    Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...

  4. Linux内核驱动之efi-rtc

    Linux内核驱动之efi-rtc 1. UEFI与BIOS概述 1.1. BIOS 概述 1.1.1. BIOS缺点: 1.1.2. BIOS的启动流程 1.2 UEFI 概述 1.2.1 Boot ...

  5. Linux内核驱动 --ioctl函数解析

    1.前言 当我们在讨论linux内核驱动开发时,就不得不提到ioctl这个及其重要的函数.它是字符类设备驱动程序中实现对设备控制的接口之一. ioctl是设备驱动程序中对设备的I/O通道进行管理的函数 ...

  6. 从入门到精通ARM(4412)-Linux内核驱动编程【下】-李志勇-专题视频课程

    从入门到精通ARM(4412)-Linux内核驱动编程[下]-247人已学习 课程介绍         嵌入式绝对是当前IT领域最炙手可热的话题了.其主要应用领域涵盖与人类相关的各行各业: * 消费电 ...

  7. 嵌入式 Linux 内核驱动开发【The first day: 36093万字】

    嵌入式 Linux 内核驱动开发[1] 嵌入式 Linux 内核驱动开发前言 第1章 Linux 内核裁剪和定制 [1]Linux 内核开发简介 [2] Linux 源码阅读工具 [1.2.1]Sou ...

  8. 树莓派Linux内核编译、文件系统、Linux内核驱动基础框架、驱动测试步骤、总线地址

    树莓派高阶开发课程 1. ubuntu18.04版本安装          让程序猿搭建环境太搞笑了,轻松easy! ========================================= ...

  9. vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式

    通常认为,产生异常的地址是lr寄存器的值,从上面的异常信息可以看到[lr]的值是c01a4e30. 接下来,我们可以通过内核镜像文件反汇编来找到这个地址.内核编译完成后,会在内核代码根目录下生成vml ...

最新文章

  1. c++ 读文件 文件指针 继续读_FatFs文件系统使用笔记
  2. 【驱动笔记9】初探IRP
  3. Mysql 练习 总结
  4. boost::dag_shortest_paths用法的测试程序
  5. 夜深人静,想规划一下短期
  6. 当代大学查寝奇葩操作大赏 | 今日最佳
  7. java 日期 年数_关于java:为什么不赞成使用“新日期(整数年,整数月,整数日)”?...
  8. 第二次项目冲刺(Beta阶段)--第五天
  9. JAVA-map转换json异常
  10. 2022年烷基化工艺找解析及烷基化工艺考试总结
  11. 【scipy】scipy.linalg.slove 求解线性方程组 python
  12. phpcms 设置page页码 首页、末页、总数据
  13. PyInstaller 打包单文件 exe 注意事项
  14. 一闪一闪亮晶晶,满屏都是小星星
  15. 买保险优先重疾还是医疗,傻傻分不清,程序员更要进来看看
  16. matlab 与VS混合编程的几个问题
  17. Linux重要命令-sar
  18. noip模拟 2018 10 17
  19. 【LeetCode】935. Knight Dialer 解题报告(Python)
  20. 论王者荣耀英雄花木兰

热门文章

  1. 多线程——NSThread、GCD、NSOperation
  2. UA MATH567 高维统计I 概率不等式12 McDiarmid不等式
  3. 在持续交付阶段中的测试覆盖率(译)
  4. 在cmd中使用python使用pip报错invalid syntax
  5. 2019年5月21号总结
  6. 批量修改历史commit的用户名user.name邮箱user.email
  7. [.NET开发] C#编程调用Cards.dll实现图形化发牌功能示例
  8. 【FI 收付款条件】Payment Terms 收付款条件
  9. Regular in UltraEdit
  10. shiro权限管理_重量级课程发布~企业权限管理平台(SpringBoot2.0+Shiro+Vue)