欢迎来到天天文库
浏览记录
ID:18771600
大小:567.50 KB
页数:12页
时间:2018-09-23
《ut探伤通用规程[1]》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、UT-S3C6410ARM11Linux下的LED驱动 在李人东老师的要求下,让我把基于Linux下ARM的初级驱动开发流程在这里演示一遍,为了不枉费李人东老师的一片心血,和对ARM还没有入门苦苦探索的亲们,给你们开启一扇窗户,少走一些弯路,废话少说,现在开始:一、实验环境 操作系统:ubuntu9.0或以上 交叉编译环境:arm-Linux-gcc4.2.2或以上,安装在/usr/local/arm/4.2.2/ 6410板子内核源码路径在:/s3c6410/linux-2.6.28-v1.0/硬件
2、平台:UT-S3C6410开发板(其他类型的开发板也可以注意配置GPIO)注:交叉编译环境一定要装好,一般的开发板给的配套资料中都会有,安装过程也都有详细的过程,如果没有,亲,你只有自己解决了。也可以联系我(476695721@qq.com),泪奔支持你们。二、实验原理 控制LED是最简单的一件事情,就像学C语言时候写的“helloworld”程序一样,是一个入门的程序。 首先来了解一下相关的硬件知识: UT-S3C6410 LED
3、原理图 UT-S3C6410 LED外部引脚图 从上面的原理图可以得知,LED与CPU引脚的连接方法如下,高电平点亮。 LED1 -GPM0 LED2-GPM1 LED3 -GPM2 LED4 -GPM3 从数据手册可以找到相应的控制方法。这里我们以LED1为例,介绍一下LED1的操作方法,其他的类似,请大家自行分析。通过上面可以得知,需要先将GPM0设置为输出方式。将寄存器GPMCON低四位
4、配置成0001。然后将GPMDAT寄存器的第0位置1灯亮,置LED0灯亮,开发板上有四个LED所以要对GPMDAT的低四位进行操作,就可以实现对灯的亮灭操作了。三、实验步骤1、编写驱动程序driver_led.c #include#include#include#include/*copy_to_user,copy_from_user*/#include#include
5、#include#include#include#include#defineLED_MAJOR240intled_open(structinode*inode,structfile*filp){unsignedtmp;tmp=readl(S3C64XX_GPMCON);tmp=(tmp&~(0xffffU))
6、(0x1111U);writel(tmp,S3C64XX
7、_GPMCON);printk("#########openGPMCON######");return0;}ssize_tled_read(structfile*filp,char__user*buf,size_tcount,loff_t*f_pos){printk("#########read######");returncount;}ssize_tled_write(structfile*filp,constchar__user*buf,size_tcount,loff_t*f_pos){charwbuf[10]
8、;unsignedtmp;printk("#########writeLED######");copy_from_user(wbuf,buf,count);switch(wbuf[0]){case0://ontmp=readl(S3C64XX_GPMDAT);tmp
9、=(0xfU);writel(tmp,S3C64XX_GPMDAT);break;case1://offtmp=readl(S3C64XX_GPMDAT);tmp&=~(0xfU);writel(tmp,S3C64XX_GPMDAT);break;defau
10、lt:break;}returncount;}intled_release(structinode*inode,structfile*filp){printk("#########release######");return0;}structfile_operationsled_fop
此文档下载收益归作者所有