Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62131
  • 博文数量: 19
  • 博客积分: 195
  • 博客等级: 入伍新兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 23:19
文章分类
文章存档

2012年(19)

分类: 嵌入式

2012-09-16 20:07:04

内核模块:
1 内核模块是具有独立功能的程序,他可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行
2 模块编译和内核版本密切相连,模块编程也被称为内核编程
3 模块本身不被编译进内核映像,从而控制了内核的大小,模块一旦被加载,就和内核中其他的部分一样
程序结构

内核加载函数 module_init

内核卸载函数 module_exit
所需头文件
#include
#include
#include
模块编译
编写makefile


fineq($KERNELRELEASE),)
obj-m :=...
else
KDIR:=/lib/modules/2.6.29/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
注意:写命令时另起一行然后按Tab隔开后再写,否则make无法运行
kdir 指定的路径一定要与linux系统当前使用的内核源代码相对应,否则编译出来的模块无法插入,并提示“Invalid module format"所以在编写模块前查看当前linux内核的版本信息 uname 
写好后 输入make 生成的.ko就是编译得到的内核模块
安装内核模块 insmod ....ko
这时可以查看 已安装的内核模块 lsmod | grep ...
卸载内核模块 rmmod ...ko

阅读(949) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~