




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UT-S3C6410 ARM11 Linux 下的LED驱动在李人东老师的要求下,让我把基于Linux下ARM的初级驱动开发流程在这里演示一遍,为了不枉费李人东老师的一片心血,和对ARM还没有入门苦苦探索的亲们,给你们开启一扇窗户,少走一些弯路,废话少说,现在开始:一 、实验环境操作系统:ubuntu 9.0 或以上交叉编译环境:arm-Linux-gcc 4.2.2或以上,安装在/usr/local/arm/4.2.2/6410板子内核源码路径在:/s3c6410/linux-2.6.28-v1.0/硬件平台:UT-S3C6410开发板(其他类型的开发板也可以注意配置GPIO)注:交叉编译环境一定要装好,一般的开发板给的配套资料中都会有,安装过程也都有详细的过程,如果没有,亲,你只有自己解决了。也可以联系我(476695721),泪奔支持你们。二 、实验原理控制LED是最简单的一件事情,就像学C语言时候写的“hello world”程序一样,是一个入门的程序。首先来了解一下相关的硬件知识:UT-S3C6410 LED原理图 UT-S3C6410 LED外部引脚图 从上面的原理图可以得知,LED与CPU引脚的连接方法如下,高电平点亮。LED1-GPM0LED2 -GPM1LED3-GPM2LED4-GPM3 从数据手册可以找到相应的控制方法。这里我们以LED1为例,介绍一下LED1的操作方法,其他的类似,请大家自行分析。通过上面可以得知,需要先将GPM0设置为输出方式。将寄存器GPMCON低四位配置成0001。然后将GPMDAT寄存器的第0位置1灯亮,置LED0灯亮,开发板上有四个LED所以要对GPMDAT的低四位进行操作,就可以实现对灯的亮灭操作了。三、实验步骤1、编写驱动程序driver_led.c#include #include #include #include /* copy_to_user,copy_from_user */ #include #include #include #include #include #include #define LED_MAJOR 240 int led_open (struct inode *inode,struct file *filp) unsigned tmp; tmp = readl(S3C64XX_GPMCON); tmp = (tmp & (0xffffU)|(0x1111U); writel(tmp, S3C64XX_GPMCON); printk(#open GPMCON#n); return 0; ssize_t led_read (struct file *filp, char _user *buf, size_t count,loff_t *f_pos) printk(#read#n); return count; ssize_t led_write (struct file *filp, const char _user *buf, size_t count,loff_t *f_pos) char wbuf10; unsigned tmp; printk(#write LED#n); copy_from_user(wbuf,buf,count); switch(wbuf0) case 0: /on tmp = readl(S3C64XX_GPMDAT); tmp |= (0xfU); writel(tmp, S3C64XX_GPMDAT); break; case 1: /off tmp = readl(S3C64XX_GPMDAT); tmp &= (0xfU); writel(tmp, S3C64XX_GPMDAT); break; default : break; return count; int led_release (struct inode *inode, struct file *filp) printk(#release#n); return 0; struct file_operations led_fops = .owner = THIS_MODULE, .open = led_open, .read = led_read, .write = led_write, .release = led_release, ; int _init led_init (void) int rc; printk (Test led devn); rc = register_chrdev(LED_MAJOR,led,&led_fops); if (rc 0) printk (register %s char dev errorn,led); return -1; printk (ok!n); return 0; void _exit led_exit (void) unregister_chrdev(LED_MAJOR,led); printk (module exitn); return ; module_init(led_init); module_exit(led_exit); Makefile文件Makefileobj-m:=driver_led.oKDIR:=/s3c6410/urbetter-linux2.6.28-v1.0all:make -C $(KDIR) M=$(shell pwd) modulescp driver_led.ko /home/fusq/nfs_shareclean:make -C $(KDIR) M=$(shell pwd) clean2、编写测试程序test.c#include #include #include #include int main (void) int fd; char buf10=0,1; fd = open(/dev/my_led,O_RDWR); if (fd 0) printf (Open /dev/my_led file errorn); return -1; while(1) write(fd,&buf0,1); sleep(1); write(fd,&buf1,1); sleep(1); close (fd); return 0; 3、编译驱动程序与测试程序 3.1编译驱动程序 #make 编译成驱动文件driver_led.ko并自动拷贝到了/home/fusq/nfs_share注:要注意Makefile要符合Linux下的文本格式,如果出现不执行,请在Linux下vi或vim重新编辑一下。如果出现头文件找不到,请找到该头文件的具体位置一般都在(urbetter-linux2.6.28-v1.0)文件夹下,将该头文件最后路径的文件夹名字填到程序头文件调用中。 3.2编译测试程序 #arm-linux-gcc test.c -o test 将测试程序也放到/home/fusq/nfs_share共享文件夹下 #cp test /home/fusq/nfs_share4、将程序下载到开发板 将开发板的IP地址修改,与主机在同一个网段,并修改PC机上Linux下/etc/exports网络配置文件的IP与开发板的一致。确保PC机上Linux已经安装了NFS服务器,网络共享文件夹在/home/fusq/nfs_share。 在开发板的Linux下挂载nfs网络共享文件夹:rooturbetter /# mount -t nfs -o nolock 0:/home/fusq/nfs_share /mnt/nfs挂载到/mnt/nfs下。注:如果没有安装NFS服务器,为了完成实验,可以用串口将或是USB等设备将driver_led.ko和test文件拷贝到开发板的Linux工作目录下效果是一样的。 5、测试5.1加载驱动 #insmod /mnt/nfs/driver_led.ko网络有点小不稳定,亲们要耐心等待,不过还是成功了!5.2创建设备文件 #mknod /dev/my_led c 240 05.3测试 ./testrooturbetter /# ./test注:此时可以看到UT-S3C6410板子上的LED0-3在闪烁,如果出现执行权限不过,修改一下test的用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 押题宝典高校教师资格证之《高等教育心理学》试题及参考答案详解(典型题)
- 2025年数字人民币跨境支付跨行互通与清算体系建设报告
- 2025年学前教育机构师资管理创新与职业素养提升报告
- 邮政行业职业技能鉴定通关考试题库含完整答案详解(易错题)
- 2025年尾矿资源化利用与生态修复技术政策实施效果跟踪报告
- 2025年智能客服行业情感分析技术挑战与对策报告
- 2025产品二线市场总代理合同书
- 2025版新型复合材料围墙施工合作协议
- 2025版抹灰班组承包工程竣工结算合同
- 2025年度动产典当借款合同范本
- JJF 2216-2025电磁流量计在线校准规范
- 高处安装维护拆除作业培训
- 工厂防呆培训课件
- 消防联动调试方案
- 自动化仪表施工方案
- 图书管理员考试复习全书:试题及答案
- T-CECC 029.1-2024 数据分类分级指南 第1部分:医疗健康
- 污泥运输合同范本
- DBJ04T 289-2020 建筑工程施工安全资料管理标准
- 开学防自然灾害 反毒品安全主题班会 课件
- 运输车辆司机安全培训考试专项测试题及答案
评论
0/150
提交评论