4412 make menuconfig和make
一、Menuconfig的操作
• Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉
• menuconfig是生成.config的一个工具
• 在Linux发展过程中,配置内核可以使用一下命令:
– #make config(基于文本的最为传统的配置界面,不推荐使用)
– #make menuconfig(基于文本菜单的配置界面)
– #make xconfig(要求QT被安装)
– #make gconfig(要求GTK+被安装)
• 在Linux源码目录下输入命令make Menuconfig,可以进入配置界面
– menuconfig实现的代码在源码“scripts”目录下(了解即可)
常用操作
– 上下选择→按键“上下方向键”
– 左右选择→按键“左右方向键”
– 进入下级界面→按键“回车”
– 返回上级界面→选择“Exit”+按键“回车”
– 帮助→选择“help”+按键“回车”
• 搜索
– 界面输入“/”,输入查找关键词,输入“回车”即可搜索
• 使用“空格”键选择具体驱动配置,有三种状态
– “M”编译成模块(需要在编译文件里面特殊定义,后面介绍)
– “空”不编译状态
– “*”编译进内核
• 退出
– 不保存退出
– 保存退出
• Kconfig也是通过脚本编写而成,所以学会“仿写”即可
• Kconfig文件在每一级目录下都有,源码下的如下图所示。
– mainmenu菜单可以看到平台“arm”和内核版本“3.0.15”
Kconfig文件——源码目录下的Kconfig
• Kconfig也是通过脚本编写而成,所以学会“仿写”即可
• Kconfig文件在每一级目录下都有,源码下的如下图所示。
– mainmenu菜单可以看到平台“arm”和内核版本“3.0.15”

driver目录下的Kconfig分析

• menu "Device Drivers"菜单类
– source “xxx”
• menu "Character devices"
– source "xxx"
• 最终选项
– Enable LEDS config
• 看到这么复杂的配置不要慌,记住以下点
– 拿到Linux源代码的时候,已经将基本的配置好了
– 常用的配置基本在drivers目录下
– 所有你想要的配置方式都带有例子
• 千万别花太多精力去学习脚本语法!
个人感觉,目录下有个Kconfig文件,driver目录下也有Kconig,char目录下也有Kconfig。这些config文件都是为Makfile准备的
.config文件
• 源码中带的config_for_xxx都是针对不同的操作系统或者功能裁减的.config文件

Linux内核配置裁减
• 在Kconfig中的添加HELLO,然后查看menuconfig
在driver/char目录下,修改Kconfig。在LEDS上插入Hello部分
config HELLO_CTL
tristate "Enable Hello config"
default m
help
Enable Hello config
#tristate是三态的,前面用tab
• 配置和裁减HELLO的驱动,查看.config文件的变化
• 将HELLO定义为“tristate”,可选为“M”状态
小结
• Menuconfig熟练使用即可,不用知道Linux怎么实现的
• Kconfig能够仿写即可
二、Make
编译器路径设置
• 拿到源码后一般需要设置一下编译器路径,在源码目录Makefile文件中可以设置编译路径“CROSS_COMPILE”
• 前面编译环境搭建的时候,解压arm-2009q3的目录和这里对应
vim Makfile

强制编译
– 源码开发者强制要求编译进内核的文件
• 打开drivers/Makefile文件
– 类似下面的写法,只要编译内核就必须编译这个文件
– obj-y += gpio/
配置编译
– 驱动开发人员可以通过配置选择编译
• 打开drivers/Makefile文件
– 强制编译char目录下的文件
– obj-y += char/
• 打开drivers/char/Makefile文件
– 如果定义了宏CONFIG_LEDS_CTL则将itop4412_leds.c文件编译进内核
– obj-$(CONFIG_LEDS_CTL) += itop4412_leds.o
依赖编译
– 一个驱动的编译需要另外驱动的支持
– 这一部分不需要另外写编译脚本,只需要在Kconfig中配置即可
• 例如显卡驱动VIDEO_JPEG_V2X中需要MEDIA_SUPPORT等驱动,那么编译显卡驱动的同时也需要将依赖的驱动选上

简单测试(实验)
• 将LEDS驱动编译进内核
– 测试
• 将LEDS驱动不编译进内核
– 测试
4412 make menuconfig和make的更多相关文章
- 基于讯为4412开发板的Android开发流程
讯为4412开发板 使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略 ...
- 迅为4412开发板Linux驱动教程之GPIO的初始化
视频下载地址:http://pan.baidu.com/s/1c06oiti GPIO的初始化 • 在内核源码目录下使用命令“ls drivers/gpio/*.o”,可以看到“gpio-exynos ...
- 4412 移植mpu9250尝试
4412的板子IO都是1.8v的.只有I2C6是用了电平转换到了3.3v.所以我准备使用I2C6来驱动mpu9250 一.首先去掉占用的模块 menuconfig中去掉触摸的驱动 Device Dri ...
- 4412 4路pwm输出
一.4412 xpwmTOUT1 这是4412的GPD0_1路,itop中被使用为LCD的背光电路的pwm功能.因此如果使用教程中的代码,同样操作GPD0_1是行不通的. 会出现错误,所以需要解除在内 ...
- 4412 GPIO初始化
一.GPIO的初始化 • 在内核源码目录下使用命令“ls drivers/gpio/*.o”,可以看到“gpioexynos4”被编译进了内核.通过搜索*.o文件,可以知道内核编译内哪些文件.针对的看 ...
- make menuconfig出错,需要安装libncurses5-dev找不到文件的终极解决办法(不必更换源,适用于ubuntu 32位平台)
make menuconfig 错误,显示有curse 字样的文件没有装.用apt-get install 找不到,网上其他的办法说是源的问题,所以又更新了一下源,但是还是不好用,网速慢,更新太慢. ...
- Linux kernel4.4.12 添加make menuconfig 可选项
Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...
- 【转帖】嵌入式4412开发板QT5.7编译安装到arm
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...
- 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com 迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...
随机推荐
- 132、TensorFlow加载模型
# The tf.train.Saver对象不仅保存变量到checkpoint文件 # 它也恢复变量,当你恢复变量的时候,你就不必须要提前初始化他们 # 列如如下的代码片段解释了如何去调用tf.tra ...
- Hadoop HDFS本地存储目录结构解析
转自:https://blog.csdn.net/superman_xxx/article/details/51689398 HDFS metadata以树状结构存储整个HDFS上的文件和目录,以及相 ...
- DJango安装-windows
1.进入虚拟环境后启动 activate 2.查看当前虚拟环境是否存在Django环境 pip list 3.不存在则 安装Django环境 pip install django 4.查看Django ...
- How to resolve error “Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7…” when building in Android Studio Ask Question
//implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation & ...
- 【Unity知识点】安卓游戏如何在切后台后继续运行
解决方法很简单,在android项目AndroidManifest.xml文件中的activity中添加如下内容: android:configChanges="fontScale|keyb ...
- 使用pycharm调试远程服务器上的程序
一.PyCharm实现远程调试代码 1. 和远程服务器建立连接,tools àDeploymentàConfiguration 2. 点击“+”号,按照远程服务器信息配置信息 点击“Advanced ...
- Spring框架中Spring配置文件中<context:annotation-config/>标签说明
<context:annotation-config/>此标签的重要作用就是: 省去系统繁琐的注解标签,加上一个此标签,就可以在此项目程序添加“注解”的功能,使系统识别相应的注解功能!! ...
- 凸包模板——Graham扫描法
凸包模板--Graham扫描法 First 标签: 数学方法--计算几何 题目:洛谷P2742[模板]二维凸包/[USACO5.1]圈奶牛Fencing the Cows yyb的讲解:https:/ ...
- JVM(10)之 年老代收集器
开发十年,就只剩下这套架构体系了! >>> 在上一篇博文我们介绍了JAVA新生代收集器,本篇博文我们要讲的就是关于老年代的一些收集器.老年代存活的一般是大对象以及生命很顽强的对象 ...
- c++求中位数
#include <iostream> #include <cassert> #include <stack> #include <math.h> us ...