欢迎来到天天文库
浏览记录
ID:6150833
大小:718.00 KB
页数:11页
时间:2018-01-04
《tiny-s3c6410_linux下led灯驱动移植过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、UT-S3C6410ARM11Linux下的LED驱动一、实验环境 操作系统:fedora13交叉编译环境:arm-Linux-gcc或以上, 6410板子内核源码路径在:忘了,需要厂家给的内核源代码硬件平台:S3C6410开发板(其他类型的开发板也可以注意配置GPIO)注:交叉编译环境一定要装好,一般的开发板给的配套资料中都会有,安装过程也都有详细的过程,如果没有,亲,你只有自己解决了。也可以联系我(476695721@qq.com),泪奔支持你们。二、实验原理 控制LED是最简单的一件事情,就像学C语言时候写的“helloworld”程序一样,是一个入门的
2、程序。 首先来了解一下相关的硬件知识: UT-S3C6410 LED原理图 UT-S3C6410 LED外部引脚图 从上面的原理图可以得知,LED与CPU引脚的连接方法如下,高电平点亮。 LED1 -GPM0 LED2-GPM1 LED3 -GPM2 LED4 -GPM3 从数据手册可以找到相应的控制方法。这里我们以LED1为例,介绍一下LED1的操作方
3、法,其他的类似,请大家自行分析。通过上面可以得知,需要先将GPM0设置为输出方式。将寄存器GPMCON低四位配置成0001。然后将GPMDAT寄存器的第0位置1灯亮,置LED0灯亮,开发板上有四个LED所以要对GPMDAT的低四位进行操作,就可以实现对灯的亮灭操作了。三、实验步骤1、编写驱动程序mini6410_leds.c#include#include#include//#include#include#in
4、clude#include#include#include#include#include#include#include#include#include#include#include#include5、ring.h>#include#include#include#include#include#include#include#include#include#include#include#defineDEVICE_NAME6、"leds"staticlongsbc2440_leds_ioctl(structfile*filp,unsignedintcmd,unsignedlongarg){switch(cmd){unsignedtmp;case0:case1:if(arg>4){return-EINVAL;}tmp=readl(S3C64XX_GPKDAT);tmp&=~(1<<(4+arg));tmp7、=((!cmd)<<(4+arg));writel(tmp,S3C64XX_GPKDAT);//printk(DEVICE_NAME":%d%d",arg,cmd);return0;def8、ault:return-EINVAL;}}staticstructfile_operationsdev_fops={.owner=THIS_MODULE,.unlocked_ioctl=sbc2440_leds_ioctl,};staticstructmiscdevicemisc={.minor=MISC_DYNAMIC_MINOR,.name=DEVICE_NAME,.fops=&dev_fops,};staticint__initdev_init(void){intret;{unsignedtmp;tmp=readl(S3
5、ring.h>#include#include#include#include#include#include#include#include#include#include#include#defineDEVICE_NAME
6、"leds"staticlongsbc2440_leds_ioctl(structfile*filp,unsignedintcmd,unsignedlongarg){switch(cmd){unsignedtmp;case0:case1:if(arg>4){return-EINVAL;}tmp=readl(S3C64XX_GPKDAT);tmp&=~(1<<(4+arg));tmp
7、=((!cmd)<<(4+arg));writel(tmp,S3C64XX_GPKDAT);//printk(DEVICE_NAME":%d%d",arg,cmd);return0;def
8、ault:return-EINVAL;}}staticstructfile_operationsdev_fops={.owner=THIS_MODULE,.unlocked_ioctl=sbc2440_leds_ioctl,};staticstructmiscdevicemisc={.minor=MISC_DYNAMIC_MINOR,.name=DEVICE_NAME,.fops=&dev_fops,};staticint__initdev_init(void){intret;{unsignedtmp;tmp=readl(S3
此文档下载收益归作者所有