手把手教你写Kconfig---基于tiny4412开发板
转自:http://blog.csdn.net/morixinguan/article/details/54744237
今天,我就来教大家写写最简单的Kconfig,什么是Kconfig?
我们配置过的信息最终会在这以下的两个文件中找到。
这个文件会被.c包含
include/generated/autoconf.h
这个autoconf.h中对应的就是一些宏,打开看看就明白了
这个文件根据.config生成,而.config是根据make menuconfig来进行生成,内核中的makefile包含了这个文件
inlcude/config/auto.conf
简单的说吧,它是一个Linux驱动的配置文件,配置什么东西呢?在linux设备驱动中,我们写的驱动程序最终会加入到内核的Makefile中进行编译,那么具体要编译成什么呢?要编译成.o文件还是.ko文件,还是不编译?
由那个命令来进行配置呢?
那就是make menuconfig
在这个menuconfig中,有很多菜单,其实,那些就是通过Kconfig一个一个加进去的。
如图所示:
那么如何来写这样的一个配置选项呢?
我还是以上一节手把手教大家学第一个例程,在其中添加一个Kconfig来进行说明。
在linux内核源代码drivers目录下创建一个4412_driver的目录:
然后进到这个目录下,创建hello_kernel.c , Makefile , Kconfig 这三个文件。
hello_kernel.c代码如下:
- #include <linux/kernel.h>
- #include <linux/module.h>
- static int __init hello_init(void)
- {
- printk("Hello, kenerl installed !\n");
- return 0;
- }
- static void __exit hello_cleanup(void)
- {
- printk("Good-bye, removed!\n");
- }
- module_init(hello_init);
- module_exit(hello_cleanup);
- MODULE_LICENSE("GPL");
Makefile如下:
obj-$(CONFIG_HELLO_KERNEL) += hello_kernel.o
Kconfig如下:
- menu "4412_driver"
- config HELLO_KERNEL
- bool "hello_kernel"
- default n
- help
- if you select , you can use it
- endmenu
这里要说说参数,menu是什么?menu就是只这个配置选项中的菜单:
config表示要配置的参数
bool表示提示配置这个选项
default表示默认配置,有y,n,后面还会有模块
help表示帮助,help下面的字符串表示提示的信息,可以自由添加
配置最终结果如图所示:
我们回车进去,看到:
这时候我们按下空格键就打上*会对这个我们刚刚写的驱动进行配置,配置完毕,我们就可以开始编译linux内核了;
编译中,我们看到内核已经将我们的选项进行了配置:
编译完成,将在arch/arm/boot/zImage这个内核镜像下载入开发板:
然后启动开发板,就可以在串口中看到打印信息了:
我们在这里看到,3.670133秒的时候,打印了Hello,kernel installed ! 也就是.c文件里的字符串。
关于Kconfig配置还有很多,说到底也不用去记,因为内核中有很多个Kconfig,我们可以打开看看去多尝试尝试,然后make menuconfig去看看效果,根据需求去配置就可以了。
手把手教你写Kconfig---基于tiny4412开发板的更多相关文章
- 基于uFUN开发板的心率计(三)Qt上位机的实现
前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- Android开发之手把手教你写ButterKnife框架(三)
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52672188 本文出自:[余志强的博客] 一.概述 上一篇博客讲了, ...
- Android开发之手把手教你写ButterKnife框架(二)
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开 ...
- 手把手教你写基于C++ Winsock的图片下载的网络爬虫
手把手教你写基于C++ Winsock的图片下载的网络爬虫 先来说一下主要的技术点: 1. 输入起始网址,使用ssacnf函数解析出主机号和路径(仅处理http协议网址) 2. 使用socket套接字 ...
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- [原创]手把手教你写网络爬虫(4):Scrapy入门
手把手教你写网络爬虫(4) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 上期我们理性的分析了为什么要学习Scrapy,理由只有一个,那就是免费,一分钱都不用花! 咦?怎么有人扔西红柿 ...
- 编译 Linux 3.5 内核烧写 Android 4.2.2 到 Tiny4412 开发板
. . . . . 昨天已经编译了 Android 4.2.2 的源码,详见<Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412>一文. 今天我们继续剩下 ...
- 手把手教你写Kafka Streams程序
本文从以下四个方面手把手教你写Kafka Streams程序: 一. 设置Maven项目 二. 编写第一个Streams应用程序:Pipe 三. 编写第二个Streams应用程序:Line Split ...
随机推荐
- 【学员管理系统】0x04 数据库连接优化
[学员管理系统]0x04 pymysql数据库连接优化 写在前面 项目详细需求参见:Django项目之[学员管理系统] 优化实现 把操作封装成函数 我们之前使用pymysql操作数据库的操作都是写死 ...
- Android系统移植与调试之------->安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法
在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]. xu@xu-PC:~$ ...
- VLFeat图像库在VS2012下的配置
近期做课题所需,開始使用VLFeat图像库. 库下载链接: http://download.csdn.net/detail/sunboyiris/7500097 ...
- SAP HR 复制PA30的人员
[转自http://www.512test.com/home/space.php?uid=19&do=blog&id=2381] 很多顾问测试HR的程序时都为录入人员头痛,下面的程序提 ...
- BAPI_SALESORDER_CREATEFROMDAT2 创建退货SO
BAPI_SALESORDER_CREATEFROMDAT2创建退货订单时,会出现以下错误:不允许业务对象 BUS2032 和销售凭证类别 H 的组合. 解决办法: 采用/原BAPI的内嵌BAPI: ...
- myBatis中使用Map进行遍历
myBatis中使用Map获取key, value的方式 第一次的配置 <trim prefix=" tags =case" suffix="end"&g ...
- linux里的drwxr-xr-x代表的意思
权限的计算是除去第一位字母开始,权限都是三个符号为一组合,其中-表示没有这个权限 d:第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 rwx:第2-4位表示这个文件的属主拥有的 ...
- Zookeeper启动Permission denied
Zookeeper 查询状态,出现如下问题: JMX enabled by default Using config: /usr/zookeeper/zookeeper-/bin/../conf/zo ...
- Flask框架的学习与实战(二):实战小项目
昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然而麻雀虽小五脏俱全.这里目的不是为了做项目而做项目,这篇文章本意是通过这次练习传达 ...
- 第二章 python中重要的数据结构(下)
二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. #创建元组 >>> 1,2,3 (1, ...
