Linux设备驱动学习与实践之一-最简单的模块

本文介绍了一个简单的Linux模块编程实例,包括必要的头文件引入、模块初始化与退出函数的编写,以及如何通过Makefile进行编译,并在Linux环境下加载与卸载模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需要用到的符号与头文件

(1)linux/init.h

module_init();

module_exit();
(2)linux/module.h
MODULE_LICENSE(_licence);


二、源代码
1、hello.c

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("GPL");

static int hello_init(void)
{
	printk(KERN_ALERT "Hello, world\n");
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);


2、Makefile

obj-m:=hello.o
KERNELBUILD :=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
	make -C $(KERNELBUILD) M=$(PWD) modules

三、上机操作
硬件环境:PC
软件环境:Windows XP(主机操作系统)、Vmware Workstation、Ubuntu 10.10(虚拟机操作系统)、Putty(SSH客户端)


max@max-virtual-machine:~$cd workspace/ldd
max@max-virtual-machine:~/workspace/ldd$mkdir hello
max@max-virtual-machine:~/workspace/ldd$ vim hello.c
max@max-virtual-machine:~/workspace/ldd$ vim Makefile
max@max-virtual-machine:~/workspace/ldd$ make -n
make -C /lib/modules/2.6.35-22-generic/build M=/home/max/workspace/ldd modules
max@max-virtual-machine:~/workspace/ldd$ make
make -C /lib/modules/2.6.35-22-generic/build M=/home/max/workspace/ldd modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /home/max/workspace/ldd/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/max/workspace/ldd/hello.mod.o
  LD [M]  /home/max/workspace/ldd/hello.ko
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.35-22-generic'
max@max-virtual-machine:~/workspace/ldd$ su
密码:
root@max-virtual-machine:/home/max/workspace/ldd# insmod hello.ko
root@max-virtual-machine:/home/max/workspace/ldd# dmesg

。。。
。。。
。。。
[ 6174.596217] Hello, world
root@max-virtual-machine:/home/max/workspace/ldd# rmmod hello
root@max-virtual-machine:/home/max/workspace/ldd# dmesg

。。。
。。。
。。。
[ 6174.596217] Hello, world

[ 6275.920652] Goodbye, cruel world

四、参考文献

《Linux设备驱动程序》

《Linux设备驱动开发详解》

《嵌入式系统原理与设计》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值