- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 端口的函数
//************************
您可能关注的文档
最近下载
- 2024海南屯昌县总工会社会化工会工作者招聘3人 (第1号)笔试备考试题及答案解析.docx VIP
- 三年级数学上册人教版53全优卷.pdf
- (高清版)B-T 16886.11-2021 医疗器械生物学评价 第11部分:全身毒性试验.pdf VIP
- 水电站电气一次设计.docx VIP
- ICU患者血糖的管理.ppt VIP
- 光伏+储能 收益率最高的装机、储能测算.xls VIP
- 黑龙江省哈尔滨市巴彦县第一中学2022-2023学年七年级上学期期中考试语文试题(含答案).docx VIP
- 创新文物改编游戏企划书.pptx VIP
- 海尼曼 Fountas & Pinnell 有声绘本-英语入门066 The New Roof.pdf VIP
- 2021.4助理全科基层基地教学管理1.pptx VIP
文档评论(0)