安卓驱动编译简单介绍
来源:互联网 发布:苹果7下载软件 编辑:程序博客网 时间:2024/05/17 02:23
介绍一下编译makefile和config的知识。
Kconfig
当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig
Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config
Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”
Kconfig文件的基本要素:
1.config条目(entry)
config SENSORS_DEBUG
tristate"Generic sensors debug config" if EXPERT
default n
help
Say Y here if you want to debug the sensors
Say N here if you do not want to debug thesensors
If unsure, say Y.
解释:
1:config 是关键字,表示一个配置选项的开始。SENSORS_DEBUG是配置选项的名称,在一个项目中一般都有专门的config配置文件,用来打开或关闭该config,以此来控制要不要编译该文件进内核。config文件路径:kernel/arch/arm64/mach/...../xx_config
2:tristate 表示变量类型,就是SENSORS_DEBUG的类型,总共有5种类型:bool、tristate、string、hex和int,其中tristate和string是基本的类型。
bool变量的值: y和n
tristate变量的值:y、n和m
string变量的值: 字符串
字符串“Genericsensors debug config”是提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置
3:default n 表变量的默认值的n 即SENSORS_DEBUG变量的类型是tristate,默认值是n 即默认SENSORS_DEBUG=n
4: depends on TMPFS
dependson:表示依赖于XXX,“depends on TMPFS”表示只有当TMPFS配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项
source条目
source条目用于读取另一个Kconfig文件,如:
source"net/Kconifg"
makefile:
obj-$(CONFIG_SENSORS_PARAMS) += sensparams/
解释:如果CONFIG_SENSORS_PARAMS=y,sensparams则编译并链接进内核
如果CONFIG_SENSORS_PARAMS=n,sensparams则忽略,不编译
如果CONFIG_SENSORS_PARAMS=m,sensparams则作为模块编译
ifeq ($(TARGET_SENSORS_NOCOMPASS), true)
include $(call all-named-subdir-makefiles, libsensors2)
解释:$ 表引入,如果TARGET_SENSORS_NOCOMPASS为true,则includelibsensor2所有子目录下的makefiles
// ccflags-y += -I$ ----引入该路径下的头文件
ccflags-y += -I$(srctree)/drivers/misc/mediatek/accelerometer/inc
ccflags-y +=-I$(srctree)/drivers/misc/mediatek/hwmon/include
obj-y := xxxx.o
srctree:kbuild所在路径:/kernel-3.18
那么在xxxx.c中就可以直接包含上面路径inc 和include文件中的投文件
如
#include <cust_acc.h>
#include <hwmsensor.h>
#include <hwmsen_dev.h>
#include <sensors_io.h>
- 安卓驱动编译简单介绍
- 安卓 objectAnimator简单介绍
- 安卓适配器的简单介绍
- 安卓ViewAnimation的简单介绍
- 安卓编译与开发、Linux内核及驱动
- 编译原理简单介绍
- 编译原理简单介绍
- 简单介绍安卓的五大布局
- 安卓开发RelativeLayout属性的简单介绍
- 安卓触摸事件处理机制的简单介绍
- 安卓——简单介绍及显示helloWorld
- 转载编译简单驱动,备忘
- LDD chapter2:编译简单驱动
- linux usb 驱动简单介绍
- 安卓源码编译
- 安卓编译错误
- 安卓编译工具
- 安卓源码编译
- 基于tcp/ip协议,使用socket进行简单的多用户聊天室
- Java大牛养成记(9)----搭建java项目开发环境
- Log4NET
- 1014. 福尔摩斯的约会 (20)
- ZZULIOJ 1427: 数字转换
- 安卓驱动编译简单介绍
- 【webrtc】音频采集-链接错误总结
- Spring Aop 中的JDK动态代理的实现
- web.xml <web-app>中xmlns="http://java.sun.com/xml/ns/j2ee"这一句是什么意思??
- IOS开发:按钮控件
- 面向对象
- 上拉加载,下拉刷新
- 《剑指offer》面试题3 二维数组中的查找(杨氏矩阵)
- 【Qt开发】窗口切换