博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢学Linux驱动开发,第十二章,加入内核
阅读量:6450 次
发布时间:2019-06-23

本文共 1276 字,大约阅读时间需要 4 分钟。

// 在Linux内核中增加程序需要完成以下3项工作

1.源代码复制到Linux相应目录下
2.在目录的Kconfig文件中增加新源代码对应项目的编译选项
3.在目录的Makefile文件中增加对新源代码的编译条目

以下以LED驱动为例说明:

1.将led.c源代码复制到内核\drivers\char目录

2.在目录的Kconfig文件中添加LED的编译配置选项

config LED bool "LED driver"     depends on ARCH_S3C6410     help        LED driver for the samsung s3c6410

上述Kconfig文件意味着只有在ARCH_S3C6410项目被配置的情况下,才会出现LED配置项目,这个项目为布尔型(要么编译入内核,要么不编译,选项为Y或N)菜单上显示的字符串为“LED driver”,help后面的内容为帮助信息。

 

对内核进行配置是为了得到内核配置文件.config。通过对内核进行配置,可以使未来编译成功的内核增加或减少对一些内核特性的支持。对内核进行配置有多种方法,有基于文本的配置方式也有基于图形的用户界面。下面采用使用比较广泛的make menuconfig方式:

sudo apt-get install libncurses5-dev

sudo make menuconfig

除了布尔型的配置项目外,还存在三态型(tristate)配置选项,它意味着要么编译入内核,要么编译为内核模块,要么不编译,选项为Y、M或N。

在目录的Makefile中关于LED的编译脚本为:

 

obj-$(CONFIG_LED) += led.o

上述脚本意味着如果LED配置选项被选择为Y或N,即obj-$(CONFIG_LED)等同于obj-y或obj-n。

此时确保内核目录已经make zImage过了,一次即可,在make modules,即可编译模块代码。

 

编译内核包含两部分的工作,其一是编译内核,即编译配置选项中标记为Y的那部分,这部分内核最终形成bzIamge镜像文件;其二是编译内核模块,即编译配置选项中标记为M的那部分内核,这部分形成以.ko结尾的内核模块目标文件。

 

上述两部分编译工作可以依次通过make bzImage和make modules完成,也可以通过一条make命令直接完成。编译内核的整个过程比较漫长,因此可以对make加-j参数来提高编译的效率。在make时使用该选项会为编译过程分配n个并发任务,这样可以缩短编译时间。n的取值为cpu个数的二倍。

sudo make -j4

------------------------------------------------------------------------------------------------------------------

作者:庞辉

出处:

本文基于许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名(包含链接).

你可能感兴趣的文章
reids 安装记录
查看>>
获取androdmanifest里面的meta-data
查看>>
Centos 6.3编译安装nagios
查看>>
如何实现7*24小时灵活发布?阿里技术团队这么做
查看>>
iSCSI
查看>>
java1234_Activiti_第6讲_一般程序员使用的函数
查看>>
mysql拷贝表的几种方式
查看>>
NetApp FAS2240-4存储删除文件数据恢复
查看>>
Qt设置美观按钮
查看>>
技术人在学习爱的路上
查看>>
openvswitch安装(centos6.5)
查看>>
Windows 7 使用超级管理员
查看>>
LVS -NAT模式配置实例
查看>>
北航 2012 秋季 现代软件工程 团队项目要求
查看>>
获取通讯组属性Get-DistributionGroup
查看>>
"知识管理夏季论坛",免费,欢迎你来!
查看>>
常用DOS命令
查看>>
能上QQ上不了网的解决办法
查看>>
flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台
查看>>
【翻译】将Ext JS Grid转换为Excel表格
查看>>