Linux字符设备驱动解析

本文详细介绍了Linux设备驱动开发的基本步骤,包括驱动模块的初始化与注销、字符设备的注册与管理、设备操作函数的实现等内容,并提供了Makefile配置示例。

1.驱动即是一个内核模块,需要模块初始化函数

module_init()

module_exit()

 

2.分配cdev

struct cdev dev;

 

3.初始化cdev并定义file_operation;

cdev_init(cdev *,const struct file_operation *);

 

4.获取设备号并注册cdev结构

alloc_chrdev_region( dev_t *, unsigned , unsigned , const char *);

cdev_add( struct cdev * ,dev_t ,  unsigned );

 

5.编写file_operation结构函数,实现设备操作;

open、release、write、read等

copy_to_user()把内核空间拷贝到用户空间

copy_from_user()把用户空间拷贝到内核空间

 

6.驱动程序的注销;

cdev_del(struct cdev *);

unregister_chrdev_region( dev_t, unsigned );

 

设备文件需要自己创建

在/proc/devices下看主设备号

 

Makefile

obj-m:=led.o
KERNELDIR:=/home/jz2440/linux-2.6.22.6

PWD:=$(shell pwd)

default:
    $(MAKE) -C $(KERNELDIR)  M=$(PWD) modules

clean:
    rm -rf *.o *.mod.c *.mod.o *.ko

 

转载于:https://www.cnblogs.com/ynxf/p/5755622.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值