LED驱动程序实验

上传人:公**** 文档编号:507924530 上传时间:2022-10-22 格式:DOC 页数:7 大小:80.50KB
返回 下载 相关 举报
LED驱动程序实验_第1页
第1页 / 共7页
LED驱动程序实验_第2页
第2页 / 共7页
LED驱动程序实验_第3页
第3页 / 共7页
LED驱动程序实验_第4页
第4页 / 共7页
LED驱动程序实验_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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

1、LEDR1801K实验八LED驱动实验实验目的掌握字符设备驱动程序编写的框架:掌握设备驱动相关的知识;实验原理参考人课课件字符设备驱动程序框架.PPTK 硬件电路LED1LED1 OVDD SYS 3 3VLED2LED2 OVDD_SYS_3 3VLEDR1851KLED3LED3 OVDD SYS 3.3VLEDR19O1KLED4LED4OVDD_SYS_3.3VR1911KLED1LED2LED3LED4Xispl 2C0SCL/CA M_G PIO10/G P M 4_0Xispl2C0SDA/CAM_GPIO11/GPM4_1CA M_GP 1012/CAM_SP 11 _CLK/

2、G P M 4_2 CA M_G PIO13ZCA M_S PI1_n SS/G P M 4_3数据手册6.2.3.113 GPM4CONBase Address; 0x1100_0000Address = Base Address + 0x02E0f Reset Value = 0x0000 0000GPM4CON315:12RW0x0 = Input0x1 = Output0x2 = CAMJ2C1_SDA0x3 = CAM GPIC5130x4 = CAM_SPI1_nSS0x5 to OxE = Reserved0xF = EXTJNT1230x00GPM4CON211:8RW0x0

3、= Input0x1 = Output0x2 = CAM I2C1 SCL0x3 = CAM GPIO120x4 = CAM_SPI1_CLK0x5 to OxE = ReservedOxF = EXTJNT1220x00GPM4CON17:4RW0x0 = Input0x1 = Output0x2 = CAM I2C0 SDAOx3 = CAM-GPIO110x4 to OxE = ReservedOxF = EXTNT42 0x00NameBitTypoDescriptionReset ValueGPM4CON0【3:0RW0x0 = Input0x1 = Output0x2 = CAM

4、I2C0 SCL0x3 = CAMZGPIO100x4 to OxE = ReservedOxF = EXTJNT12(00x006.2.3.114 GPM4DAT Base Address: 0x1100_0000 Address = Base Address 0x02E4. Reset Value = 0x00NameBitTypoDescriptionRosot ValueGPM4DAT7:07:0RWXWhen you configure port as input port then corresponding bit is pin state. When configuring a

5、s output port then pin state should be same as corresp on ding bit. When the port is configured as functional pin. the undefined value will be read.0x00实验内容(1)应用层调用open方法打开设备文件时,四个led灯亮;close关闭文件时,灯灭。(2)应用层read时,读出LED亮灭的状态(一个字节);(3)应用层write时,写入一个字节,字节的低4位控制灯的亮灭:如:二进制位:1111011111111011111111011111111

6、0表示第LED4灯亮 表示第LED3灯亮 表示第LED2灯亮 表示第LED!灯亮(4)驱动程序要能够自动建立设备文件(5)要求自己编写一个应用层的测试程序,在应用测试程序中,实现流水灯。配置编译内核General setup “(-xxxx) Local version - append to kernel release版本中加入自己的姓名拼音 样include #include 样include 挣include 样include 样include 样include 样include 挣include 編写硬件底层操作函数实现open,release,write,read创建一个 file

7、_operations 结构static iiit iiiit XXX_init(void)硬件寄存器映射申请设备号初始化cdev结构注册cdev结构创建 struct class创建device设备文件return 0;static void _exit XXX_exit(void)/雄销cdev结构注销设备号取消地址映射删除创建的device设备文件删除注册的classmodule_iiiit();module_iiiit();MODULE_LICENSE(.);要求手写实验报告(下周小课交)在实验报告中画出驱动层与应用层层次结构框图,源程序抄写在实验报告中!Leddrv:存include

8、 vlinux/modiile.h 存include 存include 存include 存include 存include 存include 存include 存include volatile unsigned long *vir_GPM4CON;volatile unsigned long *vir_GPM4DAT;static mt led_div_open(stmct inode *iinstnict file *fp)fi*vu_GPM4CON &=Oxffif;*vu_GPM4CON |= Oxllll;*vii_GPM4DAT &=Oxf;prmtk(Hall led on!i

9、T);return 0:static mt led_div_release(stnict inode *iiKStmct file *fp)fi*vuGPM4DAT |= Oxf;prmtk(Hall ledreturn 0:static unsigned char data=O:static ssize_t led_div_wnte(stmct file *fp5 const char _user *buf. size_t len. lofflt *offset) ficopy_fiom_user(&data、buf. 1);printk(,data=%dtl,data);*vii_GPM4

10、DAT = data;return 1;static ssize_t led_div_read(sti-uct file *fp, char _user *buf, size_t len, lofLt * offset)if(data&(l0) data = 1;else if(data&(11) data = 2; else if(data&(12) data = 3; else if(data&(13) data = 4; copy_to_user(buf, &data, 1);return 1;static stmct file_operations led_div_fops= owne

11、r=THIS MODULE. open = led_drv_open、.release = led_div_release, write = led_div_wfite, read = led_drv_read,; static stmct cdev *led_div-cdev;stmct class *led_class;static dev_t dev=0;static mt _uiit led_drv_imt(void)ivir_GPM4CON= ioremap(0x 110002e0. 8);vir GPM4DAT= vir GPM4CON+1;alloc_cliidev_region

12、(&dev, 0、1, Hled_deviceH);led_div_cdev = cdev_alloc();cdev_init(led_drv_cck; &hd_drv_fops);led div cdev-ownei-THIS MODULE:zcdev_add(led_div_cdev,dev, 1);led_class = class_create(THIS_MODULEJ,led_duH);/sys/clas&4ed_du7device_create(led_class, NULL. dev. NULL/,led_dev_fileH);/,7dev/led_dev_filenreturn

13、 0;static void _exit led_dnr_exit(void)fidevice_destiov(led_class? dev); class_destioy(led_class); cdev_del(led_div_cdev);umegister_cludev_region(dev, 1); iouimiap(vir_GPM4CON); module_init(led_div_init); module_exit(led_div_exit); MODULE_LICENSE(”GPLJ;Ledtest:存include 存include 存include 存include 存include mt mam(int argc, chai *aigv)imt i=0;unsigned char val = 1;unsigned char led_state=0;mt fd = open(,7dev/led_dev_file,O_RDVrR); sleep ;fbr(i=0;i12;i-H-)wiite(fd, &val,l);s

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

当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

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