Linux驱动部分-(一)内核模块的编写
来源:互联网 发布:八皇后问题算法流程图 编辑:程序博客网 时间:2024/05/16 11:25
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' 查看模块加载和卸载的情况
0 0
- Linux驱动部分-(一)内核模块的编写
- Linux内核模块和驱动的编写
- Linux操作系统内核模块和驱动的编写过程
- Linux内核驱动模块编写(Hello,World)
- Linux内核驱动模块编写(Hello,World)
- linux内核驱动模块编写ioctl
- linux内核模块的编写
- 嵌入式Linux驱动开发(一)一个简单的Linux内核模块框架
- Linux设备驱动(一)---内核模块简介
- Linux 驱动开发之内核模块开发 (一)—— 内核模块机制基础
- linux 设备驱动开发学习笔记(一):最简单的内核模块
- 编写Linux内核模块
- linux内核模块编写
- 编写Linux内核模块
- linux 内核模块编写
- Linux内核驱动模块编写概览-ioctl,class_create,device_create
- Linux内核驱动模块编写概览-ioctl,class_create,device_create
- Linux内核驱动模块编写概览-ioctl,class_create,device_create
- 辛星浅析nodejs中的MySQL连接池
- .net上传大文件不成功
- 日期时间格式正则表达式
- 通过HBase Observer同步数据到ElasticSearch
- 简易图片查看器
- Linux驱动部分-(一)内核模块的编写
- getintrinsicwidth()/getIntrinsicHeight()大于或者小于图片实际像素大小
- NO.4简单分数类
- 如何增强自己的自信心?
- IOS学习——Navigation Controller
- 用webView加载的方式拨打电话
- 网络通信
- 往resin 服务器中发送post 报 POST requires content-length
- 哈夫曼树