欢迎来到天天文库
浏览记录
ID:56758923
大小:41.00 KB
页数:12页
时间:2020-07-07
《嵌入式Linux下LED报警灯驱动设计及编程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《嵌入式Linux下LED报警灯驱动设计及编程》实验报告学生姓名:学号:专业班级:指导教师:完成时间:实验5嵌入式Linux下LED报警灯驱动设计及编程一.实验目的理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问、接口函数编写、和文件系统挂接、注册及相关应用编程等知识点。二.实验内容实验5.1嵌入式Linux下LED报警灯驱动设计及跑马灯应用编程实验5.2添加看门狗功能的跑马灯应用编程三.预备知识Linux使用、驱动相关知识等四.实验设备及工具(包括软件调试工具)硬件:ARM嵌入式开
2、发平台、PC机Pentium100以上、串口线。软件:WinXP或UBUNTU开发环境。五.实验5.1步骤5.1前期准备(1)看懂相关硬件电路图【见S3C6410实验箱电路图-底板.pdf】,以LED报警灯为例进行设计打开PDF硬件电路图,明确LED灯用到的多个GPIO及其控制器本实验电路LED1-------GPM0LED2-------GPM1LED3-------GPM2LED4-------GPM3LED5-------GPM4LED6-------GPM5LED7-------GPQ0LED8----
3、---GPQ1得出结论:8个LED灯使用到的硬件控制器分别为GPM和GPQ两个硬件控制器(2)在芯片手册中找到相应的硬件控制器部分,重心是看懂端口寄存器本实验要求完成LED流水灯设计,所以需要设置控制器中端口寄存器:GPMCON----设置相应位为输出口GPMDAT-----控制相应位输出高电平-----点亮LED灯输出低电平-----熄灭LED灯(3)linux内核中相关寄存器读写函数读寄存器函数readl(寄存器虚地址);写寄存器函数writel(值(无符号整型),寄存器虚地址);具体端口寄存器地址宏定义在
4、/opt/FriendlyARM/linux-2.6.38/arch/arm/mach-s3c64xx/include/mach文件夹下的文件中,如端口M寄存器在gpio-bank-m.h文件中有定义:#defineS3C64XX_GPMCON(S3C64XX_GPM_BASE+0x00)#defineS3C64XX_GPMDAT(S3C64XX_GPM_BASE+0x04)5.2LED报警灯驱动设计s3c6410_leddrv.c(1)头文件包含和相关宏定义#include5、h>#include#include//#include#include#include#include#include#include#include#include#include#incl6、ude#include#include#include#include#include#include#include#include#include#include#include7、ach/map.h>#include#include#include#include#include#defineON1#defineOFF0(2)编写驱动接口函数/*功能:配置GPM0~5/GPQ0~1为输出口参数:无返回值:无*/voidLedConfig(void){//读出端口M控制寄存器(S3C64XX_GPMCON8、)值,修改并写回相关端口寄存器//addyourcodeunsignedinttmp;tmp=readl(S3C64XX_GPMCON);tmp&=~((0XF<<0X0)9、(0XF<<0X4)10、(0XF<<0X8)11、(0XF<<0XC)12、(0XF<<0X10)13、(0XF<<0X14));tmp14、=(0X1<<0X0)15、(0X1<<0X4)16、(0X1<<0X8)17、(0X1<<0XC)18、
5、h>#include#include//#include#include#include#include#include#include#include#include#include#incl
6、ude#include#include#include#include#include#include#include#include#include#include#include7、ach/map.h>#include#include#include#include#include#defineON1#defineOFF0(2)编写驱动接口函数/*功能:配置GPM0~5/GPQ0~1为输出口参数:无返回值:无*/voidLedConfig(void){//读出端口M控制寄存器(S3C64XX_GPMCON8、)值,修改并写回相关端口寄存器//addyourcodeunsignedinttmp;tmp=readl(S3C64XX_GPMCON);tmp&=~((0XF<<0X0)9、(0XF<<0X4)10、(0XF<<0X8)11、(0XF<<0XC)12、(0XF<<0X10)13、(0XF<<0X14));tmp14、=(0X1<<0X0)15、(0X1<<0X4)16、(0X1<<0X8)17、(0X1<<0XC)18、
7、ach/map.h>#include#include#include#include#include#defineON1#defineOFF0(2)编写驱动接口函数/*功能:配置GPM0~5/GPQ0~1为输出口参数:无返回值:无*/voidLedConfig(void){//读出端口M控制寄存器(S3C64XX_GPMCON
8、)值,修改并写回相关端口寄存器//addyourcodeunsignedinttmp;tmp=readl(S3C64XX_GPMCON);tmp&=~((0XF<<0X0)
9、(0XF<<0X4)
10、(0XF<<0X8)
11、(0XF<<0XC)
12、(0XF<<0X10)
13、(0XF<<0X14));tmp
14、=(0X1<<0X0)
15、(0X1<<0X4)
16、(0X1<<0X8)
17、(0X1<<0XC)
18、
此文档下载收益归作者所有