Hello World驱动程序
| 1.头文件(必选) |
| 2.模块参数(可选) |
| 3.模块功能函数(可选) |
| 4.其他(可选) |
| 5.模块加载函数(必选) |
| 6.模块卸载函数(必选) |
| 7.模块许可声明(必选) |
1. 头文件(必选)
#include <linux/module.h>
#include <linux/init.h>
2. 模块参数(可选)
3. 模块加载函数(必选)
模块加载时,需要执行的函数
4. 模块卸载函数(必选)
模块卸载时,需要执行的函数
5. 模块许可声明(必选)
MODULE_LICENSE(“GPL”); /*任一版本的GNU公共许可权*/
MODULE_LICENSE(“GPL v2”);
MODULE_LICENSE(“GPL and additional rights”);
MODULE_LICENSE(“Dual BSD/GPL”); /*BSD/GPL双重许可权*/
MODULE_LICENSE(“Dual MPL/GPL”);
MODULE_LICENSE(“Proprietary”); /*专有许可权*/
Hello.c 代码:
#include<linux/init.h>
#include<linux/module.h>
staticint hello_init(void)
{
printk(KERN_ALERT "Hello, World\n");
return 0;
}
staticvoid hello_exit(void)
{
printk(KERN_ALERT "Goodbye,World\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("DualBSD/GPL");
MODULE_AUTHOR("Chaos.tong");
Makefile文件:
KERNELDIR= /opt/FriendlyARM/mini2440/linux-2.6.32.2
PWD :=$(shell pwd)
INSTALLDIR=/lib/modules/2.6.32.2-FriendlyARM
CROSS_COMPILE= arm-linux-
CC=$(CROSS_COMPILE)gcc
obj-m :=hello.o
.PHONY:modulesmodules_install clean
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
cp hello.ko $(INSTALLDIR)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko*.mod.c .tmp_versions
执行make 命令,

生成的hello.ko 放进U盘,传到板子上。

本文详细介绍了一个简单的HelloWorld驱动程序在Linux内核模块中的实现过程。包括必要的头文件引入、模块加载与卸载函数的定义、模块许可声明等关键步骤,并提供了完整的代码示例与Makefile配置,指导读者如何编译并部署该模块。

3412

被折叠的 条评论
为什么被折叠?



