Linux驱动部分-(一)内核模块的编写

原创 2015年11月20日 15:59:07

Linux驱动部分-内核模块编写

模块需要生成节点并链入设备链表,必须包含模块初始化函数、模块销毁函数
用module_init用来声明初始化函数
用module_exit用来声明销毁函数
用MODULE_LICENSE声明模块许可信息,可识别许可有:
"GPL"(适用于GNU通用公共许可的任何版本)
"GPL  and additional rights"

eg:简单内核模块

1)编写内核模块
/*************************************************************/
//simple_demo.c
#include<linux/kernel.h>  //printk声明的头文件
#include<linux/init.h>    //module_init和module_exit声明的头文件
#include<linux/module.h>  //所有模块驱动程序必须包括头文件


static int simple_init(void) //模块初始化函数,模块加载时调用的函数
{
printk("--------hello world!\n");
return 0;
}
static void simple_exit(void) //模块销毁函数
{
printk("---------hello goodbye!\n");
}
module_init(simple_init); //module_init用来声明初始化函数
module_exit(simple_exit); //module_exit用来声明销毁函数


MODULE_LICENSE("GPL");
/*************************************************************/
2)编译内核模块
内核的编译必须依赖源码树,否则无法编译内核模块
编写Makefile文件
eg:Makefile编写
obj-m:=simple.o
simple-objs:=simple_demo.obj-m
KDIR:=/lib/modules/2.6.18-8.el5/build
PWD:=$(shell pwd)
default:
make -C $(KDIR)M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
运行:
make 
生成的模块为 hello.ko


/**注意**/
ps:文件名通常是大写M
$@ 目标文件
$< 第一个依赖文件
$^ 所有的依赖文件
3)驱动模块的加载与卸载
insmod simple.ko 加载模块
rmmod simple     卸载模块

cat /var/log/messages | grep'hello' 查看模块加载和卸载的情况











































版权声明:本文为博主原创文章,未经博主允许不得转载。

linux驱动学习(二)——内核模块

因为linux内核的整体结构非常庞大,包含的组件非常多,如何使用需要的组件呢?有一种方法是把所有的组件都编译进内核文件(zImage或bzImage),但是这样会产生两个问题:一是生成的内核文件过大;...

嵌入式Linux驱动及内核模块问题总结

1、驱动程序测试 在Kconfig文件中添加相应的config xxx编译选项,在Makefile中添加obj-$(CONFIG_xxx) += xx.o...

Linux驱动基础 内核模块

Linux设备驱动是以内核模块的形式出现,所以,学会编写Linux内核模块编程是学习Linux设备驱动的必要步骤 Linux内核模块的存在原因和作用 Linux内核的整体架构非常庞大,其包含的组件...

【Linux驱动】linux内核模块简介

一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程。主要从模块开发中的常用指令、内核模块程序的结构、模块使用计数以及模块的编译等角度对内核模块进行介绍。在Linux系...

linux驱动学习第三天(linux内核模块)

一、linux内核模块简介         静态编译,把所需要的功能都编译到linux内核,会导致生成的内核会很大,如果我们要在现有的内核中新增或删除功能,将不得不重新编译内核。         ...

linux内核模块和驱动程序的编写

  • 2009年12月03日 21:33
  • 42KB
  • 下载

如何编写一个简单的linux内核模块和设备驱动程序

Linux设备驱动Hello World程序介绍 如何编写一个简单的linux内核模块和设备驱动程序。我将学习到如何在内核模式下以三种不同的方式来打印hello world,这三种方...

Linux操作系统内核模块和驱动的编写过程

Linux操作系统内核模块和驱动的编写过程2008-12-2 13:40|查看数: 762 Linux内核是一个整体是结构,因此向内核添加任何东西,或者删除某些功能,都十分困难。为了解决这个问题引入了...
  • uunubt
  • uunubt
  • 2011年01月03日 22:01
  • 320

Linux内核模块的编写

  • 2010年12月05日 16:10
  • 99KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux驱动部分-(一)内核模块的编写
举报原因:
原因补充:

(最多只允许输入30个字)