三、linux内核驱动裁剪
总结:
- 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内核驱动裁剪相关推荐
- linux内核的裁剪和移植实验,实验5 linux内核的裁剪移植.doc
实验5 linux内核的裁剪移植 一.实验目的: 学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上. 二.实验内容 一.开发环境 宿主机:ubuntu10.04 开发板:ti ...
- 基于ARM的嵌入式linux 内核的裁剪与移植
0 引言 微处理器的产生为价格低廉.结构小巧的CPU和外设的连 接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面.尽管从八十年代末开始,已经陆续出现了一些嵌入式 ...
- linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx
Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...
- 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 ...
- Linux内核驱动 --ioctl函数解析
1.前言 当我们在讨论linux内核驱动开发时,就不得不提到ioctl这个及其重要的函数.它是字符类设备驱动程序中实现对设备控制的接口之一. ioctl是设备驱动程序中对设备的I/O通道进行管理的函数 ...
- 从入门到精通ARM(4412)-Linux内核驱动编程【下】-李志勇-专题视频课程
从入门到精通ARM(4412)-Linux内核驱动编程[下]-247人已学习 课程介绍 嵌入式绝对是当前IT领域最炙手可热的话题了.其主要应用领域涵盖与人类相关的各行各业: * 消费电 ...
- 嵌入式 Linux 内核驱动开发【The first day: 36093万字】
嵌入式 Linux 内核驱动开发[1] 嵌入式 Linux 内核驱动开发前言 第1章 Linux 内核裁剪和定制 [1]Linux 内核开发简介 [2] Linux 源码阅读工具 [1.2.1]Sou ...
- 树莓派Linux内核编译、文件系统、Linux内核驱动基础框架、驱动测试步骤、总线地址
树莓派高阶开发课程 1. ubuntu18.04版本安装 让程序猿搭建环境太搞笑了,轻松easy! ========================================= ...
- vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式
通常认为,产生异常的地址是lr寄存器的值,从上面的异常信息可以看到[lr]的值是c01a4e30. 接下来,我们可以通过内核镜像文件反汇编来找到这个地址.内核编译完成后,会在内核代码根目录下生成vml ...
最新文章
- c++ 读文件 文件指针 继续读_FatFs文件系统使用笔记
- 【驱动笔记9】初探IRP
- Mysql 练习 总结
- boost::dag_shortest_paths用法的测试程序
- 夜深人静,想规划一下短期
- 当代大学查寝奇葩操作大赏 | 今日最佳
- java 日期 年数_关于java:为什么不赞成使用“新日期(整数年,整数月,整数日)”?...
- 第二次项目冲刺(Beta阶段)--第五天
- JAVA-map转换json异常
- 2022年烷基化工艺找解析及烷基化工艺考试总结
- 【scipy】scipy.linalg.slove 求解线性方程组 python
- phpcms 设置page页码 首页、末页、总数据
- PyInstaller 打包单文件 exe 注意事项
- 一闪一闪亮晶晶,满屏都是小星星
- 买保险优先重疾还是医疗,傻傻分不清,程序员更要进来看看
- matlab 与VS混合编程的几个问题
- Linux重要命令-sar
- noip模拟 2018 10 17
- 【LeetCode】935. Knight Dialer 解题报告(Python)
- 论王者荣耀英雄花木兰
热门文章
- 多线程——NSThread、GCD、NSOperation
- UA MATH567 高维统计I 概率不等式12 McDiarmid不等式
- 在持续交付阶段中的测试覆盖率(译)
- 在cmd中使用python使用pip报错invalid syntax
- 2019年5月21号总结
- 批量修改历史commit的用户名user.name邮箱user.email
- [.NET开发] C#编程调用Cards.dll实现图形化发牌功能示例
- 【FI 收付款条件】Payment Terms 收付款条件
- Regular in UltraEdit
- shiro权限管理_重量级课程发布~企业权限管理平台(SpringBoot2.0+Shiro+Vue)