Android驱动开发实例控制LED灯

上传人:博****1 文档编号:476188931 上传时间:2022-12-06 格式:DOC 页数:11 大小:422KB
返回 下载 相关 举报
Android驱动开发实例控制LED灯_第1页
第1页 / 共11页
Android驱动开发实例控制LED灯_第2页
第2页 / 共11页
Android驱动开发实例控制LED灯_第3页
第3页 / 共11页
Android驱动开发实例控制LED灯_第4页
第4页 / 共11页
Android驱动开发实例控制LED灯_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Android驱动开发实例控制LED灯》由会员分享,可在线阅读,更多相关《Android驱动开发实例控制LED灯(11页珍藏版)》请在金锄头文库上搜索。

1、An droid 驱动例子(LED灯控制)本例子,讲述在 Android 2.1上完全自已开发一个驱动去控制硬件口并写应用测试该驱动,通过这样一个例 子,解析android下的驱动开发流程的应用调用流程,可以说是很好的入门引导要达到的效果:通过Android的应用,调用驱动程序,在开发板上控制4个LED的亮灭。、硬件原理1 VDOJOJD7Cec去nLxL:4D11H-LED如上图,通过 4个10 口控制这LED,低电平LED亮, 这 4 个 I0 口分别是 GPM1, GPM2, GPM3, GPM4,二、驱动程序1、 在kernel文件夹下的driver目录,新键驱动文件夹# cd ker

2、nel_ Android _2 6 28 6/drivers进到开发板的kernel目录,建驱动文件夹#mkdir ledtest2、 在 /driver/ledtest 目录下,新建 leddriver.c ,leddriver.h , Kconfig, Makefile 等 4 个文件leddriver.c1.#include2.#include3.#include4.#include/* For _init/_exit/.*/5.#include6.#include7.#include8.#include9.#includevplat/gpio-cfg.h10.#includevplat

3、/regs-clock.h11.#include12.#include13.#include14.#include15.#include16.#include17.#include/for register_chrdev()18.#include19.#include20.#includeleddriver.h21.#include/* For MODULE_ALIAS_MISCDEV22.(WATCHDOG_MINOR) */23.#include/* For the watchdog specific items */24.#include/* For file operations */

4、25.#defineViberator_MAJOR97/? -ee ?o?26.#defineSCULL_NR_DEVS427.#defineSCULL_QUANTUM400028.#defineSCULL_QSET100029./-do as the GIO driver30.#defineDEVCOUNT431.#defineGIO_MINOR2/* GIO minor no. */32.staticdev_t dev;/ ee ?g?g?* ee士? o?33.staticstruct cdev *cdev_p;34.staticint openCnt;35./- e?d?36.intV

5、IB_major = 97;/we asigment it for test37.intVIB_minor = 0;38.intVIB_nr_devs = SCULL_NR_DEVS;39.int VIB_quantum = SCULL_QUANTUM;40.int VIB_qset = SCULL_QSET;41.42.staticstructclass *vib_dev_class;43.#defineGPNCON S3C64XX_GPNCON44.#defineGPNDAT S3C64XX_GPNDAT45.#define GPNPUD S3C64XX_GPNPUD46.#define

6、GPMCON S3C64XX_GPMCON47.#define GPMDAT S3C64XX_GPMDAT48.#define GPMPUD S3C64XX_GPMPUD49.50.#define VIB_ON 0x1151.#define VIB_OFF 0x2252.staticconst struct file_operations GPIO_Viberator_ctl_ops=53.owner= THIS_MODULE,54.open = GPIO_VIB_open,55.read =GPIO_VIB_read,56.write =GPIO_VIB_write,57.ioctl = G

7、PIO_VIB_ioctl,58.release =GPIO_VIB_release,59.;60.ssize_t GPIO_VIB_read(struct file * file,char * buf,size_t count,loff_t * f_ops)61.62.printk( GPIO_VIB_read rn);63.gpio_direction_output(S3C64XX_GPM(3), 0);/64.return count ;65.66.ssize_t GPIO_VIB_write (struct file * file,const char * buf, size_t co

8、unt,loff_t * f_ops)67.68.printk( GPIO_VIB_write rn);69.gpio_direction_output(S3C64XX_GPM(3), 1);/70.return count;71.72.73.ssize_t GPIO_VIB_ioctl(struct inode * inode,struct file *file,unsigned intcmd, long data)74.staticint GPIO_VIB_ioctl(structinode *inode,structfile *file,unsignedintcmd, unsignedl

9、ong arg)75.76.printk(KERN_ERRVIB:GPIO_VIB_ioctl -CMD=%x n,cmd);77.switch (cmd)78.79.case VIB_ON:80.gpio_direction_output(S3C64XX_GPM(1), 0);/81.gpio_direction_output(S3C64XX_GPM(2), 0);/82.gpio_direction_output(S3C64XX_GPM(3), 0);/83.gpio_direction_output(S3C64XX_GPM(4), 1);/84.printk(KERN_ERRVIB:GP

10、IO_VIB_ioctl -VIB_ONn);85.break ;86.case VIB_OFF:87.88.printk(KERN_ERRVIB:GPIO_VIB_ioctl -VIB_OFFn);89.gpio_direction_output(S3C64XX_GPM(1), 1);/90.gpio_direction_output(S3C64XX_GPM(2), 1);/91.gpio_direction_output(S3C64XX_GPM(3), 1);/92.gpio_direction_output(S3C64XX_GPM(4), 0);/93.break ;94.95.defa

11、ult : break ;96.97.98.gpio_free(S3C64XX_GPN(7);99. 100.ssize_t GPIO_VIB_open(struct inode * inode,struclfile* file)101.102./? ?eey103.MOD_INC_USE_COUNT;104.printk(GPIO_VIB_open() n);105.return 0;106.107.ssize_t GPIO_VIB_release(struct inode * inode,structfile* file)108.109./ MOD_DEC_USE_COUNT;? ?ee y?110.printk(GPIO_VIB_release() n);111.return 0;112.113.staticint GPIO_VIB_CTL_ini

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号