您的位置:首页 > 其它

混杂设备驱动程序的编写

2012-09-11 17:29 281 查看
混杂设备
定义:linux中把无法归类的五花八门的设备定义为混杂设备,像LED,按键等。所有的混杂设备都被分配一个主设备号10,但每个设备可选择一个单独的次设备号。
混杂设备用一个struct miscdevice结构体来描述,混杂驱动只需要调用misc_register()即可完成字符驱动的所有步骤:

#include<linux/miscdevice.h>

建一个miscdevice结构体

static struct miscdevice misc = {

.minor = MISC_DYNAMIC_MINOR,

.name = DEVICE_NAME,

.fops = &dev_fops,

};

在驱动函数初始化中注册这个混杂设备

misc_register(&misc);

驱动卸载时,注销这个设备

misc_deregister(&misc);

混杂设备miscdevice说明

miscdevice结构体

struct miscdevice {

int minor;

const char *name;

const struct file_operations *fops;

struct list_head list;

struct device *parent;

struct device *this_device;

const char *nodename;

mode_t mode;

};

设备注册和注销

extern int misc_register(structmiscdevice * misc);

extern int misc_deregister(structmiscdevice *misc);

在写一个LED设备驱动程序时,IO口配置放在设备初始化中;LED的控制使用IOCTL,有关GPIO操作的的函数都在
#include<mach/gpio-fns.h>
中,如
voids3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
voids3c2410_gpio_setpin(unsigned int pin, unsigned int to);
voids3c2410_gpio_pullup(unsigned int pin, unsigned int to);
unsigned ints3c2410_gpio_getpin(unsigned int pin);

而GPIO端口定义在
#include<mach/regs-gpio.h>
中,如
S3C2410_GPBCON
S3C2410_GPBDAT
S3C2410_GPBUP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: