平台:ubuntu 15.04 32bit
最近再使劲学习嵌入式Linux,记录一些信息,供后来者参考。
内核模块基本构成图:
下面是基本的modules例子:
#include <linux/init.h>
#include <linux/module.h>
int static hello_init( void ) //模块加载函数
{
printk(KERN_WARNING"hello word\n");
return 0 ;
}
int static hello_exit( void ) //模块卸载函数
{
printk(KERN_INFO"goodbye!!\n");
return 0 ;
}
module_init(hello_init); //申明模块加载函数
module_exit(hello_exit); //申明模块卸载函数
MODULE_LICENSE("GPL"); //模块遵循协议
MODULE_AUTHOR("bmonky<1129584094@qq.com>"); //模块作者
MODULE_DESCRIPTION("a simple module "); //模块简单描述
下面是简单的Makefile:
obj-m:= hello.o
KDIR := /lib/modules/3.19.0-15-generic/build
all:
make -C $(KDIR) M=$(PWD) modules
编译完后生成:
模块加载命令与模块卸载命令:
insmod //模块加载命令
rmmod //模块卸载命令
加载hello:
sudo insmod hello.ko
显示打印信息:
dmesg | tail -5 //显示syslog最后5行信息
卸载hello模块
sudo rm hello