LED驱动程序实验

上传人:热**** 文档编号:36358774 上传时间:2018-03-28 格式:PDF 页数:8 大小:258.82KB
返回 下载 相关 举报
LED驱动程序实验_第1页
第1页 / 共8页
LED驱动程序实验_第2页
第2页 / 共8页
LED驱动程序实验_第3页
第3页 / 共8页
LED驱动程序实验_第4页
第4页 / 共8页
LED驱动程序实验_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《LED驱动程序实验》由会员分享,可在线阅读,更多相关《LED驱动程序实验(8页珍藏版)》请在金锄头文库上搜索。

1、实验八LED 驱动实验实验目的掌握字符设备驱动程序编写的框架;掌握设备驱动相关的知识;实验原理参考大课课件字符设备驱动程序框架.PPT 。硬件电路数据手册实验内容(1)应用层调用open方法打开设备文件时,四个led 灯亮;close 关闭文件时,灯灭。(2)应用层read时,读出LED 亮灭的状态(一个字节);(3)应用层write 时,写入一个字节,字节的低4 位控制灯的亮灭;如:二进制位:11110111 表示第 LED4 灯亮11111011 表示第 LED3 灯亮11111101 表示第 LED2 灯亮11111110 表示第 LED1 灯亮(4)驱动程序要能够自动建立设备文件(5)

2、要求自己编写一个应用层的测试程序,在应用测试程序中,实现流水灯。配置编译内核General setup - (-xxxx) Local version - append to kernel release 版本中加入自己的姓名拼音#include #include #include #include #include #include #include #include #include /编写硬件底层操作函数实现 open,release,write,read/创建一个file_operations 结构static int _init xxx_init(void) /硬件寄存器映射/申请设

3、备号/初始化 cdev结构/注册 cdev结构/创建 struct class /创建 device设备文件return 0; static void _exit XXX_ exit(void) /注销 cdev结构/注销设备号/取消地址映射/删除创建的device设备文件/删除注册的class module_init(.); module_init(.); MODULE_LICENSE(.); 要求手写实验报告(下周小课交)在实验报告中画出驱动层与应用层层次结构框图,源程序抄写在实验报告中!Leddrv:#include #include #include #include #include

4、 #include #include #include #include volatile unsigned long *vir_GPM4CON; volatile unsigned long *vir_GPM4DAT; static int led_drv_open(struct inode *in,struct file *fp) *vir_GPM4CON *vir_GPM4CON |= 0x1111; *vir_GPM4DAT printk(“all led on!n“); return 0; static int led_drv_release(struct inode *in,str

5、uct file *fp) *vir_GPM4DAT |= 0xf; printk(“all led off!n“); return 0; static unsigned char data=0; static ssize_t led_drv_write(struct file *fp, const char _user *buf, size_t len, loff_t *offset) copy_from_user( printk(“data=%dt“,data); *vir_GPM4DAT = data; return 1; static ssize_t led_drv_read(stru

6、ct file *fp, char _user *buf, size_t len, loff_t * offset) if(data cdev_add(led_drv_cdev,dev, 1); led_class = class_create(THIS_MODULE,“led_dir“);/sys/class/led_dir/ device_create(led_class, NULL, dev, NULL,“led_dev_file“);/“/dev/led_dev_file“ return 0; static void _exit led_drv_exit(void) device_de

7、stroy(led_class, dev); class_destroy(led_class); cdev_del(led_drv_cdev); unregister_chrdev_region(dev, 1); iounmap(vir_GPM4CON); module_init(led_drv_init); module_exit(led_drv_exit); MODULE_LICENSE(“GPL“); Ledtest:#include #include #include #include #include int main(int argc, char *argv) int i=0; unsigned char val = 1; unsigned char led_state=0; int fd = open(“/dev/led_dev_file“,O_RDWR); sleep(2); for(i=0;i 8) val = 1; close(fd); sleep(2); return 0; Makefile:obj-m += leddrv.o all: make -C /home/sice/linux-3.5 M=pwd modules clean: make -C /home/sice/linux-3.5 M=pwd modules clea

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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