普通字符设备LED驱动程序(IO映射内存实现)

驱动程序:


这段代码把GPB寄存器的物理地址映射到内存上,再进行操作。

注册一个独立的cdev设备的基本过程如下:

1、为struct cdev 分配空间
struct cdev *my_cdev = cdev_alloc();

2、初始化struct cdev ,主要是对 file_operations成员赋值,

void cdev_init(struct cdev *cdev, const struct file_operations *fops)

3、初始化cdev.owner 指针,实现模块管理时的指针引用

cdev.owner = THIS_MODULE;

4、cdev设置完成后,向内核字符设备数组添加新的struct cdev的信息(在执行这步之前必须确定你对struct cdev的以上设置已经完成)

int cdev_add(struct cdev *dev, dev_t devno, unsigned count)

dev 是 cdev 结构, devno是这个设备响应的第一个设备号, count 是应当关联到设备的设备号的数目.

5、从系统中移除一个字符设备:
void cdev_del(struct cdev *dev)

使用:

1)用Makefile编译成ko文件放到开发板上

2)arm-linux-gcc led2_test.c -o led2_test 编译后放到开发板上

3)insmod mini2440_led2.ko加载模块

4)用cat /proc/devices 看看设备号 led2是253

5)再mknod /dev/led2 c 253 0

4)./led2_test 0 1再./led2_test 1 1测试

5)rmmod mini2440_led2卸载

普通字符设备LED驱动程序(IO映射内存实现)

自动创建设备文件:

加上

ok


普通字符设备LED驱动程序(IO映射内存实现)

你可能感兴趣的:(IO)