现在的位置: 首页 > 综合 > 正文

混杂设备驱动程序的编写

2012年04月28日 ⁄ 综合 ⁄ 共 1109字 ⁄ 字号 评论关闭

混杂设备

定义: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

【上篇】
【下篇】

抱歉!评论已关闭.