[工学]实验21-Linux LED驱动实验0801.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]实验21-Linux LED驱动实验0801

Linux LED 设备驱动实验 1.1 实验目的 (1)了解 LED 原理及其与 S3C2410 的接口电路设计 (2)了解S3C2410芯片的 I/O 端口配置方法 (3)通过S3C2410芯片的 GPF4 端口控制 Super-ARM主板上 D1 的亮灭 (4)掌握 LED 驱动的编写及测试过程,进而熟悉开发简单字符设备驱动的方法 1.2 实验原理 (1)LED 接口电路 由于单只 LED 管的工作电压低(大约在 1.5~2V) ,个别需达到 4V,同时工作电流仅为 1~5mA,因此可以用 CPU 的通用输入输出管脚(GPIO)直接控制 LED 的亮灭。 LED 的接口电路如下图1所示: 图1 LED接口电路 1.3 实验任务 本实验的最终目的是实现Super-ARM平台上的 LED 驱动。包含以下几个任务: (1)编写 LED 设备驱动程序,驱动程序中手动定义设备名称及主设备号,这个设备号必须是系统尚未使用的设备号,笔者这里暂用 212,你也可以尝试用别的数字。当然最好的方法是动态分配设备号,如果使用这种方法,在/dev 目录下为 LED 设备建立设备节点的时候,需要先从/proc/devices 文件中获取该设备的主设备号。在驱动程序中还要实现与 LED 相应的 I/O 配置,以及读写设备的接口函数等。 (2)将驱动编译成模块,并实现模块的加载及卸载。 (3)编写驱动的测试程序,在程序中实现打开 LED 设备,控制 LED 设备一亮一灭,关闭 LED 设备等。 1.4 实验步骤 ⑴ 编写 led.c文件 ①建立 led目录: #mkdir /gdut2410/led ②进入led目录,在该目录下建立两个子目录driver 和 test ,前者用来存放驱动程序,后者用来存放驱动测试程序: #cd /gdut2410/led #mkdir driver test ③进入驱动程序目录,建立设备驱动文件 led.c: cd driver gedit led.c LED 驱动程序如代码清单5-1 所示: 代码清单 5-1 LED驱动程序 led.c //***************************** 头文件 ******************************** #include linux/kernel.h #include linux/module.h #include linux/device.h #include linux/types.h #include linux/ioctl.h #include linux/errno.h #include linux/init.h #include linux/cdev.h #include asm/uaccess.h #include linux/fs.h #include asm/io.h #include asm/arch/regs-gpio.h //*********************** 定义设备结构体及相关宏 ********************** #define DEVICE_NAME led //定义设备名 #define DEVICE_MAJOR 212 //手动定义 LED 设备的主设备号为 212 static int led_major = DEVICE_MAJOR ; #define LED1 S3C2410_GPF4 //定义LED1 对应 S3C2410 的 GPF4 端口 #define LED1_OUTP S3C2410_GPF4_OUTP #define LED_ON 0 //给端口低电平(0)时,LED 亮 #define LED_OFF 1 //给端口高电平(1)时,LED 灭 //定义 LED 设备结构体 struct s3c2410_led_dev { struct cdev cdev; //LED 设备对应一个字符设备结构体 int status; //LED 状态标识,0 代表灭,1 代表亮 }; static struct s3c2410_led_dev dev; //***************************** 函数声明 ******************************** void s3c2410_led_InitIO(void); //初始化 IO 端口的函数 //************************

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档