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平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...
随机推荐
- 移动端调试 — chrome模拟器基础调试
打开开发者工具,进入chrome调试状态,点击左上角的手机图标,进入手机模拟器调试状态. 模拟器支持操作: 切换设备类型,模拟网络环境,模拟bar,keyboard弹出状态,横屏状态,更改UserAg ...
- 【CDN+】 Spark入门---Handoop 中的MapReduce计算模型
前言 项目中运用了Spark进行Kafka集群下面的数据消费,本文作为一个Spark入门文章/笔记,介绍下Spark基本概念以及MapReduce模型 Spark的基本概念: 官网: http://s ...
- .NETFramework:System.Net.WebClient.cs
ylbtech-.NETFramework:System.Net.WebClient.cs 提供用于将数据发送到和接收来自通过 URI 确认的资源数据的常用方法 1.返回顶部 1. #region 程 ...
- input只输入数字和小数后两位
html:<input name="" type="tel" value="" placeholder="请输入金额&qu ...
- Installing Symfony project with PHP 7.3 version
参考地址:https://cmsdk.com/php/installing-symfony-project-with-php-7-3-version.html Tryng to install (an ...
- 网易新闻实战 --- flask,ORM, Ajax异步删除
项目概述: 包含功能: 前端-- 新闻首页 新闻分类页 新闻详情页 后端-- 后台新闻管理(列表,分页) 新增新闻 修改新闻 删除新闻(AJAX)
- python实现自动发送邮件
Python发送邮件成功的前提,应是先开启授权码.目前使用广泛的邮箱有:163邮箱.qq邮箱等. 163邮箱开启授权码的方法如下图: qq邮箱开启授权码的方法如下图: 接下来代码的实现: import ...
- pojPseudoprime numbers (快速幂)
Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...
- Card Collector AtCoder - 5168(二分图匹配的HALL定理)
题意: 给定一个H行W列的矩阵,在矩阵的格点上放带权值的卡片(一个点上能放多张). 现在从每行每列各拿走一张卡片(没有可以不拿),求可以拿到的最大权值. 卡片数N<=1e5,H,W<=1e ...
- Eclipse+Pydev环境下出现error “eclipse Non-UTF-8 code”
文件首行加上”#coding=utf-8” ,这一句话可控制代码中可输入中文字符