内核模块的开发

来源:互联网 发布:移动网络电视首页 编辑:程序博客网 时间:2024/05/18 03:42

1.内核模块的三大要素

1.1头文件 <linux/init.h>和<linux/module.h>(和模块相关的)

1.2加载模块函数module_init():在insmod模块是会调用这个函数

ps它的返回值为0,如果返回非零值,就会认为出错

1.3卸载模块函数module_exit();同上


2.代码的编写

2.1申明 

MODULE_LICENSE("遵守的协议")一般是GPL

MODULE_AUTHOR("作者")

MODULE_DESCRIPTIOM("模块功能描述")

MODULE_VERSION("v1.0")

2.2模块传递参数

module_param(name,type(字符串型用charp),perm)

2.3输出

而在模块程序编写中不使用printf而使用printk。例printk(KERN_WARNING”Hello World\n”)


2.4内核中导出使用的宏

EXPORT_SYMBOL()

EXPORT_SYMBOL_GPL()只能用于含有GPL许可证的

在其他程序调用extern


3.Makefile的编写

一般分为四部分

obj-m :=name1.o name2.o

name1-obj :=file1.c file2.c...(name1模块石由多个c文件组成)


KDIR  :=/内核代码路径


all:

make -C $(KDIR)  M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm

进入KDIR中执行编译PWD中的模块命令

clean:

rm -f 


4.第一次在板子卸载模块时提示没有目录

需要在lib/modules中有内核版本的目录

使用 mkdir -p /lib/modules/$(uname -r)




0 0
原创粉丝点击