3.4 最简单的设备驱动——LED灯驱动
来源:互联网 发布:办公室做数据是做什么 编辑:程序博客网 时间:2024/06/06 03:37
3.4 最简单的设备驱动——LED灯驱动
ARM处理系统中经常使用GPIO口驱动LED灯作为系统运行状态的指示。采用S3C2410X的GPF4脚接一个LED灯,电路原理图如图3.6所示。这个驱动无疑是ARM系统中最简单的驱动。下面介绍如何开发这个LED灯的驱动。
#define LED_SI_OUT
_raw_writel((_raw_readl(S3C2410_GPFCON)&(~(3<<8)))|(1<<8),S3C2410_GPFCON)
//设置管脚为输出
#define LED_SI_H
_raw_writel(_raw_readl(S3C2410_GPFDAT)|(1<<4),S3C2410_GPFDAT)
//输出高电平
#define LED_SI_L
_raw_writel(_raw_readl(S3C2410_GPFDAT)&(~(1<<4)),S3C2410_GPFDAT)
//输出低电平
#define COMMAND_LEDON 1
#define COMMAND_LEDOFF2
利用ioctl命令来控制LED灯:
int DEMO_ioctl(structinode *inode, struct file *filp,unsigned int cmd, unsigned
long arg)
{
if(cmd==COMMAND_LEDOFF)
{
printk("ioctlLEDOFF successfully\n");
LED_SI_H;
return 0;
}
if(cmd==COMMAND_LEDON)
{
printk("ioctlLEDON successfully\n");
LED_SI_L;
return 0;
}
printk("ioctl error\n");
return-EFAULT;
}
编译完成后,使用insmod加载驱动,然后使用mknod /dev/led c 224 0命令建立节点。应用层的测试程序代码如下:
main()
{
int fd;
int i;
char data[256];
int retval;
fd=open("/dev/led",O_RDWR);
if(fd==-1)
{
perror("error open\n");
exit(-1);
}
printf("open /dev/led successfully\n");
retval=ioctl(fd,COMMAND_LEDON,0);
if(retval==-1)
{
perror("ioctl LEDON error\n");
exit(-1);
}
sleep(10);
retval=ioctl(fd,COMMAND_LEDOFF,0);
if(retval==-1)
{
perror("ioctl LEDOFF error\n");
exit(-1);
}
close(fd);
}
- 3.4 最简单的设备驱动——LED灯驱动
- 简单字符设备驱动——LED驱动
- linux设备驱动入门,最简单的LED驱动,基于tq2440
- Linux设备驱动的Hello World—LED驱动
- Linux设备驱动的Hello World—LED驱动
- Linux设备驱动的Hello World—LED驱动 .
- Tiny6410 简单的LED字符设备驱动
- Tiny6410 简单的LED字符设备驱动
- [设备驱动] 最简单的内核设备驱动--字符驱动
- 自制简单字符型设备驱动程序——LED驱动
- 自制简单字符型设备驱动程序——LED驱动
- Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动
- Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动
- Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动
- 简单的LED驱动
- Linux设备驱动开发——3.点亮LED灯
- Tiny6410杂项设备驱动之——led驱动
- 三星 SMDKC210 开发板的最简单的LED驱动
- 基数排序与hash表
- 继承与派生类 学习笔记1
- apache shiro与spring的环境搭建
- 第一章 入门
- 如何利用组件在flash中加调色板
- 3.4 最简单的设备驱动——LED灯驱动
- 第二章 Shell程序设计
- 第三章 文件操作
- 指针出参探究
- LightOJ 1300 - Odd Personality
- 我们一起学MAC编程吧(1)
- 第四章 Linux环境
- APK编译过程
- 利用百度地图API定位为什么使用百度自己开发的locSDK2.6.jar包