驱动程序:
这段代码把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卸载
自动创建设备文件:
加上
ok