嵌入式linux内核模块的配置与编译

嵌入式linux内核模块的配置与编译

ID:8821937

大小:33.27 KB

页数:12页

时间:2018-04-08

嵌入式linux内核模块的配置与编译_第1页
嵌入式linux内核模块的配置与编译_第2页
嵌入式linux内核模块的配置与编译_第3页
嵌入式linux内核模块的配置与编译_第4页
嵌入式linux内核模块的配置与编译_第5页
资源描述:

《嵌入式linux内核模块的配置与编译》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、嵌入式Linux内核模块的配置与编译一、简介   随着Linux操作系统在嵌入式领域的快速发展,越来越多的人开始投身到这方面的开发中来。但是,面对庞大的Linux内核源代码,开发者如何开始自己的开发工作,在完成自己的代码后,该如何编译测试,以及如何将自己的代码编译进内核中,所有的这些问题都直接和Linux的驱动的编译以及Linux的内核配置系统相关。   内核模块是一些在操作系统内核需要时载入和执行的代码,它们扩展了操作系统内核的功能却不需要重新启动系统,在不需要时可以被操作系统卸载,又节约了系统的资源占用。设备驱动程序模块就是一种内核模块,它们可以用来让操作系统正确识别和使用使用安装

2、在系统上的硬件设备。   Linux内核是由分布在全球的Linux爱好者共同开发的,为了方便开发者修改内核,Linux的内核采用了模块化的内核配置系统,从而保证内核扩展的简单与方便。   本文通过一个简单的示例,首先介绍了如何在Linux下编译出一个内核模块,然后介绍了Linux内核中的配置系统,讲述了如何将一个自定义的模块作为系统源码的一部分编译出新的操作系统,注意,在这里我们介绍的内容均在内核2.6.13.2(也是笔者的开发平台的版本)上编译运行通过,在2.6.*的版本上基本上是可以通用的。   二、单独编译内核模块   首先,我们先来写一个最简单的内核模块:   #include

3、   #include   #include    #defineDRIVER_VERSION"v1.0"   #defineDRIVER_AUTHOR"RF"   #defineDRIVER_DESC"justfortest"   MODULE_AUTHOR(DRIVER_AUTHOR);   MODULE_DESCRIPTION(DRIVER_DESC);   MODULE_LICENSE("GPL");    staticintrfmodule_init(void)   {     pr

4、intk("hello,world:modele_init");     return0;   }    staticvoidrfmodule_exit(void)   {     printk("hello,world:modele_exit");   }    module_init(rfmodule_init);   module_exit(rfmodule_exit);   这个内核模块除了在载入和卸载的时候打印2条信息之外,没有任何其他功能,不过,对于我们这个编译的例子来讲,已经足够了。   将上述源代码保存到一个test.c文件中,然后开始我们的内核模块的编译工作。   内

5、核模块的编译与普通应用程序的编译一样,也使用的GCC,但是内核模块在用GCC编译的时候时需要使用特定的参数并定义一些宏。这是因为在编译普通应用程序的可执行文件和内核模块时,内核头文件起的作用是不同的。在以往的内核版本需要我们去在Makefile中手动设置这些设定,虽然这些Makefile都是按目录分层次存放的,但使用维护起来还是比较伏在。幸运的是,一种称为kbuild的新方法被引入,现在外部的可加载内核模块的编译的方法已经同内核编译统一起来,编译新的内核模块或者将自己的内核模块集成到内核源码中都已经变得非常简单了。   现在让我们看一下如何编译一个名字叫做test.c的模块。   首先

6、,我们需要写一个简单的Makefile文件:   obj-m+=test.o   将test.c和Makefile文件放在同一个目录下,然后就可以开始编译了,使用编译命令:   make-C/usr/src/linux-2.6.13.2/SUBDIRS=$PWDmodules   回车后,也许你会发现有一堆的报错,请检查如下配置是否正确:   1、在/usr/src/下有无放置你需要使用的内核源码树?如果没有,请上网down一个你需要的内核源码版本,解压后放在这里。   2、如果你已经将内核源码解压在/usr/src/下了,那么请先使用在内核源码的主目录下,在笔者的系统中就是/usr/

7、src/linux-2.6.13.2/,使用:   makeconfig或者makemenuconfig或者makegconfig等命令来配置内核,然后使用makeall将整个内核完整编译一次。   3、上述命令中的linux-2.6.13.2是笔者使用的内核源码的目录名,你需要将它改成你自己使用对应版本的的内核源码的目录名。   经过上述三步,一般来将,该内核模块都可以编译通过了,生成的test.ko就是我们需要的内核模块的最终版本,你可以使

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。