看流星社区

 找回密码
 注册账号
查看: 1835|回复: 0

linux驱动模板

[复制链接]

该用户从未签到

发表于 2017-6-1 12:56:22 | 显示全部楼层 |阅读模式
同NT驱动
一个DriverEntry 一个DriverUnload
不过在linux中不需要指定函数名
在初始化接口函数中填上你的函数名即可

#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE ("GPL");//开源协议GPL 或者Dual BSD
MODULE_AUTHOR ("TOM");//作者
MODULE_DESCRIPTION ("MY_TEST");//描述此驱动
//EXPORT_NO_SYMBOLS;//不导出函数 可以不写
//EXPORT_SYMBOL(hello_data);//导出hello_data
int test_init(void)
{
    printk(KERN_INFO "hello world\n");
    return 0;
}
void test_exit(void)
{
   printk(KERN_INFO "goodbye world\n");
}
module_init(test_init); //注册DriverEntry         
module_exit(test_exit); //注册DriverUnload         [/code]

Makefile


//EXTRA_CFLAGS    := -g//一些编译选项 ;=的意思是在原来的数上加上其它编译选项
obj-m =hello.o
//#hello-objs := file1.o file2.o,如果有多个源文件,加上这么一行
KVERSION = $(shell uname -r)
all:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
[/code]
注意:
Makefile无后缀名,且M是大写
make –C之前是一个tab键而不是空格
如果只有一个C文件,那么hello.o要与hello.c同名
make不能使用sudo



使用KBUILD_EXTRA_SYMBOLS主要使用于下面这样的场合: 有两个我们自己的模块,其中Module B使用了Module A中export的函数,因此在Module B的Makefile中必须加上这样的选项 KBUILD_EXTRA_SYMBOLS += /path/to/Module A/Module.symvers(后面是绝对路径)这样在编译Module B时,才不会出现Warning,提示说func1这个符号找不到,而编译得到的ko加载时也会出错。
如果不使用 KBUILD_EXTRA_SYMBOLS,则需要将A模块编译之后的 Module.symvers文件拷贝到B模块下。
比如:
KBUILD_EXTRA_SYMBOLS = /mnt/hgfs/Linux/hellokernel/demo/hello-2/Module.symvers

obj-m =hello.o
KVERSION = $(shell uname -r)
KBUILD_EXTRA_SYMBOLS = /mnt/hgfs/MallocFreeIBM/Linux/10ten-hellokernel/demo/hello-2/Module.symvers
all:
        make -C /lib/modules/$(KVERSION)/build  M=$(PWD)  modules
clean:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
[/code]
安装运行

sudo insmod hello.ko //加载hello.ko
sudo rmmod hello.ko //卸载hello.ko
sudo lsmod //显示ALL驱动
sudo modinfo hello //查看驱动信息
dmesg | tail //查看最近linux打印信息
sudo cat /proc/kmsg //同上





Ubuntu模块自启动:
将驱动拷到/lib/modules/2.6.32.65/kernel/lib/
/lib/modules/2.6.32.65/kernel/lib/hello.ko
编辑modules
/etc/modules

增加驱动名,不需要加ko
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 10:12

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表