基于Timedout框架的GPIO驱动分析.docxVIP

  • 12
  • 0
  • 约7.06千字
  • 约 6页
  • 2016-12-02 发布于重庆
  • 举报
基于Timedout框架的GPIO驱动分析

Timed GPIO驱动程序分析 Timed GPIO驱动程序是android系统基于linux内核新增加的一类驱动程序,这类驱动程序主要是运用了内核定时器,与内核定时器进行绑定,使得控制GPIO口的高低电平与时间打上关系,既可以实现在一定的时间实现GPIO口为高或者低电平。Timed GPIO驱动被实现为平台设备驱动,Timed GPIO驱动源码位于如下目录:\kernel\drivers\staging\android Timed GPIO驱动程序主要包括如下几个文件: Timed_gpio.c Timed_gpio.h Timed_output.c Timed_output.h Timed_gpio.c文件为具体的驱动程序,Timed_output.c为向sys文件系统注册类的框架代码, 下面将具体分析每一个文件的作用及实现的具体功能。 首先分析注册类的框架代码 :Timed_output.c Timed_output.h Timed_output.h文件分析: struct timed_output_dev { const char *name; void (*enable)(struct timed_output_dev *sdev, int timeout); int (*get_time)(struct timed_output_dev *sdev); struct device *dev; int index; int state; }; extern int timed_output_dev_register(struct timed_output_dev *dev); extern void timed_output_dev_unregister(struct timed_output_dev *dev); Timed_output.h文件主要定义了一个结构体timed_output_dev设备结构体,该结构体表示一个具体的设备, Name:代表Time GPIO设备的名字,enable:为一个函数指针,主要用于设置定时器的过期时间, Enable:用于获取离过期还剩余的时间。Index:为设备索引号,代表同一名字的设备的数量,state带表当前设备的状态值。 timed_output_dev_register,timed_output_dev_unregister这两个函数声明用于timed_output设备的注册和卸载。 Timed_output.c文件分析: 该文件主要用于向系统注册timed_output驱动程序框架,其中主要实现了Timed_output.h文件中定义的结构体及函数。 timed_output框架注册函数的实现,这个函数用于将驱动程序注册到kernel中,后面分析Timed GPIO驱动的具体实现时会调用此函数向系统注册Timed GPIO驱动。 int timed_output_dev_register(struct timed_output_dev *tdev) { int ret; if (!tdev || !tdev-name || !tdev-enable || !tdev-get_time) return -EINVAL; ret = create_timed_output_class(); 调用此函数在sys/class下生成timed_output类 if (ret 0) return ret; tdev-index = atomic_inc_return(device_count); tdev-dev = device_create(timed_output_class, NULL, MKDEV(0, tdev-index), NULL, tdev-name); if (IS_ERR(tdev-dev)) return PTR_ERR(tdev-dev); ret = device_create_file(tdev-dev, dev_attr_enable); if (ret 0) goto err_create_file; dev_set_drvdata(tdev-dev, tdev); tdev-state = 0; return 0; err_create_file: device_destroy(timed_output_class, MKDEV(0, tdev-index)); printk(KERN_ERR timed_output: Failed to register driver %s\n, tdev-name); return re

文档评论(0)

1亿VIP精品文档

相关文档