嵌入式linux报警,嵌入式Linux下LED报警灯驱动设计及编程

《嵌入式Linux下LED报警灯驱动设计及编程》由会员分享,可在线阅读,更多相关《嵌入式Linux下LED报警灯驱动设计及编程(12页珍藏版)》请在人人文库网上搜索。

1、嵌入式Linux下LED报警灯驱动设计及编程实验报告学生姓名: 学 号: 专业班级: 指导教师: 完成时间: 实验5 嵌入式Linux下LED报警灯驱动设计及编程一.实验目的理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问、接口函数编写、和文件系统挂接、注册及相关应用编程等知识点。二.实验内容实验5.1 嵌入式Linux下LED报警灯驱动设计及跑马灯应用编程实验5.2 添加看门狗功能的跑马灯应用编程三.预备知识Linux使用、驱动相关知识等四.实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。软件: WinX。

2、P或UBUNTU开发环境。五.实验5.1步骤5.1 前期准备(1)看懂相关硬件电路图【见S3C6410实验箱电路图-底板.pdf】,以LED报警灯为例进行设计打开PDF硬件电路图,明确LED灯用到的多个GPIO及其控制器本实验电路 LED1-GPM0LED2-GPM1LED3-GPM2LED4-GPM3LED5-GPM4LED6-GPM5LED7-GPQ0LED8-GPQ1得出结论:8个LED灯使用到的硬件控制器分别为GPM和GPQ两个硬件控制器(2)在芯片手册中找到相应的硬件控制器部分,重心是看懂端口寄存器本实验要求完成LED流水灯设计,所以需要设置控制器中端口寄存器:GPMCON-设置相应。

3、位为输出口GPMDAT-控制相应位输出高电平-点亮LED灯输出低电平-熄灭LED灯(3) linux内核中相关寄存器读写函数读寄存器函数readl(寄存器虚地址);写寄存器函数writel(值(无符号整型), 寄存器虚地址);具体端口寄存器地址宏定义在/opt/FriendlyARM/linux-2.6.38/arch/arm/mach-s3c64xx/include/mach文件夹下的文件中,如端口M寄存器在gpio-bank-m.h文件中有定义:#define S3C64XX_GPMCON(S3C64XX_GPM_BASE + 0x00)#define S3C64XX_GPMDAT(S3C。

4、64XX_GPM_BASE + 0x04)5.2 LED报警灯驱动设计s3c6410_leddrv.c(1)头文件包含和相关宏定义#include #include #include /#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 。

5、#include #include #include #define ON 1#define OFF 0(2)编写驱动接口函数/*功能:配置GPM05/GPQ01为输出口参数:无返回值:无*/void LedConfig(void)/读出端口M控制寄存器(S3C64XX_GPMCON)值,修改并写回相关端口寄存器/add your code unsigned int tmp;tmp =readl(S3C64XX_GPMCON);tmp &= (0XF#include #include #include #include #define ON 1#define OFF 0void main()f。

6、d=open(___”/dev/leddev”___,O_RDWR);if(fd#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef S3C_VA_WATCHDOG#define S3C_VA_WATCHDOG (0)#include (2)编写驱动接口函数/*功能:打开看门狗,允许复位,禁止看门狗中断,并设置看门狗最长看门时间参数:无返回值:无*/void WdtC。

7、onfig(void)/读出看门狗控制寄存器S3C2410_WTCON,保存原值,并按照要求修改/最后写回看门狗端口控制寄存器S3C2410_WTCON/add your code unsigned int tmp;tmp=(0XFF#include #include #include #include #include #define ON 1#define OFF 0void *wdt_thrd_func(void *arg);void main()pthread_t wdt_thd;fd1=open(__/dev/leddev___,O_RDWR);/打开LED设备if(fd10)exi。

8、t(1);fd2=open(__/dev/wdtdev___,O_RDWR);/打开看门狗设备if(fd20)exit(1);/创建看门狗喂狗线程if (pthread_create(&wdt_thd,NULL, wdt_thrd_func,NULL)!=0) printf(Create watchdog thread error!n);exit(1);while(1)/点亮LED灯ioctl(fd,ON);sleep(5);/熄灭LED灯_ioctl(leddev_fd,OFF);____sleep(5);close (fd);void *wdt_thrd_func(void *arg)/每隔10秒喂狗一次unsigned int wdt_val=0XFFFF;while(1)/喂狗write(fd2,&wdt_val,sizeof(int);sleep(10);return。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值