




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LED控制一、 确定任务1、 掌握基本的字符设备的驱动程序设计。2、 掌握基本的文件操作。3、掌握在操作系统下对普通IO端口的使用方法二、 学习内容 1、 阅读S5PV210的数据手册,熟悉GPIO端口的原理。2、 编写LED应用程序。3、 编写Makefile文件。4、 下载并调试LED跑马灯应用程序。三、基础知识1、 硬件原理:a) 原理图:b) 寄存器简介:GPJ2CON为GPIO端口引脚功能控制寄存器,每个引脚占4位,如:GPJ2CON03:0设置为输出功能时,GPJ2CON03:0=0001GPJ2DAT7:0寄存器对应于GPJ2引脚,当GPJ2设置为输入输出功能时,GPJ2DAT相
2、应的位对应着GPJ2引脚的状态。当引脚设置为其他功能,引脚的状态值是未知的。GPJ2PUD寄存器用于设置GPJ2引脚的上拉电阻或者下拉电阻的使能。四、代码设计 1、 该驱动设计为一个字符设备,主要通过驱动提供的ioctl函数来实现对相应IO引脚的置高与置低,以此来实现对LED灯的关闭和打开。2、 驱动代码简析:(详细代码见附件文件夹)#define DEVICE_NAME "leds" /设备节点名称static int led_gpios = /led GPIO接口资源S5PV210_GPJ2(0),S5PV210_GPJ2(1),S5PV210_GPJ2(2),S5PV
3、210_GPJ2(3),;#define LED_NUMARRAY_SIZE(led_gpios)static long gec210_leds_ioctl(struct file *filp, unsigned int cmd,unsigned long arg) / 上层应用ioctl 函数最终调用的底层函数switch(cmd) case 0:case 1:if (arg > LED_NUM) return -EINVAL;gpio_set_value(led_gpiosarg, !cmd);/printk(DEVICE_NAME": %d %dn", arg,
4、 cmd);break;default:return -EINVAL;return 0;static struct file_operations gec210_led_dev_fops = .owner= THIS_MODULE,.unlocked_ioctl= gec210_leds_ioctl,;static struct miscdevice gec210_led_dev = /构建设备资源.minor= MISC_DYNAMIC_MINOR,.name= DEVICE_NAME,.fops= &gec210_led_dev_fops,;static int _init gec
5、210_led_dev_init(void) int ret;int i;for (i = 0; i < LED_NUM; i+) ret = gpio_request(led_gpiosi, "LED"); /GPIO 资源请求if (ret) printk("%s: request GPIO %d for LED failed, ret = %dn", DEVICE_NAME,led_gpiosi, ret);return ret;s3c_gpio_cfgpin(led_gpiosi, S3C_GPIO_OUTPUT); /配置GPIO资源gp
6、io_set_value(led_gpiosi, 1);/设置LED IO口值实现点灯ret = misc_register(&gec210_led_dev);/注册misc设备printk(DEVICE_NAME"tinitializedn");return ret;static void _exit gec210_led_dev_exit(void) int i;for (i = 0; i < LED_NUM; i+) gpio_free(led_gpiosi);/释放GPIO资源misc_deregister(&gec210_led_dev);
7、/解除已经注册的misc设备module_init(gec210_led_dev_init); /驱动入口函数module_exit(gec210_led_dev_exit);/驱动出口函数MODULE_LICENSE("GPL");/GPL 协议规范MODULE_AUTHOR("GEC Inc.");3、 驱动程序的makefile文件:ifneq ($(KERNELRELEASE),) obj-m :=led_drv.oelsemodule-objs :=led_drv.o/此处应与驱动程序的文件名字相同,以后不再/赘述 KERNELDIR ?= /
8、home/gec/linux_kernel#若仅编译宿主机的驱动模块则将KERNELDIR 替换成以下语句#KERNELDIR ?=/lib/modules/$(shell uname r)/build/PWD := $(shell pwd)modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesendifclean: $(RM) *.ko *.mod.c *.mod.o *.o *.order *.symvers *.cmd4、 Led测试程序#include <stdio.h>#include <string.h>#incl
9、ude <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <linux/input.h>#define IOCTL_LED_ON 0#define IOCTL_LED_OFF 1void usage(char *exename) printf("Usage:n"); printf(" %s <led_no> <on/off>n", exename); printf(" led_no =0, 1, 2,
10、3n");int main(int argc, char *argv) unsigned int led_no; int fd = -1; if (argc != 3) goto err; fd = open("/dev/leds", O_RDWR); / 打开设备 if (fd < 0) printf("Can't open /dev/ledsn"); return -1; led_no = strtoul(argv1, 0, 0) - 1; / 操作哪个LED? if (led_no > 3) goto err; if
11、(!strcmp(argv2, "on") ioctl(fd, IOCTL_LED_ON, led_no); / 点亮它 else if (!strcmp(argv2, "off") ioctl(fd, IOCTL_LED_OFF, led_no); / 熄灭它 else goto err; close(fd); return 0; err: if (fd > 0) close(fd); usage(argv0); return -1;5、 LED测试程序的makefile# General MakefileExec := led_testObj := led_test.cCC := arm-linux-gcc /根据读者自身实际交叉编译工具确定。$(Exec) : $(Obj)$(CC) -o $ $(Obj) $(LDLIBS$(LDLIBS-$()clean:rm -vf $(Exec) *.elf *.o五、编译代码和运行在ubuntu上建立目录/home/gec/led_test/driver_code/将上述的LED驱动源文件和驱动Makefile文件拷贝到该目录下,并在终端中执行make。将得到led_drv.ko加载到目标板/tmp目录下。rootgec:/tmp#insmod led_drv.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工程经济重要考点试题及答案
- 自考行政管理本科信息分析试题及答案探讨
- 快速拿证水利水电考试试题及答案总结
- 2025年工程经济课程动态试题及答案
- 2025年建筑工程考前冲刺试题及答案
- 现代管理学实战案例试题及答案
- 2025年经济师复习知识要点试题及答案
- 2025年老字号餐饮品牌餐饮行业竞争格局与品牌战略研究报告
- 绥化2025年黑龙江绥棱县事业单位招聘工作人员笔试历年参考题库附带答案详解
- 行政管理学多元视角试题及答案
- 广东旅游车队公司一览
- 模具加工3数控加工_图文.ppt课件
- 河南省确山县三里河治理工程
- 水利工程合同工程完工验收工程建设管理工作报告
- 基于PLC的温室大棚控制系统设计说明
- 多级泵检修及维护(1)
- 涵洞孔径计算
- 测量未知电阻的方法
- 中国民主同盟入盟申请表
- 观感质量检查表
- 最全半导体能带分布图
评论
0/150
提交评论