学习Linux(32)控制LED设备
2020-07-20 18:21
225 查看
在Linux系统中,绝大多数硬件设备都有非常成熟的驱动框架,驱动工程师使用这些框架添加与板子相关的硬件支持,建立硬件与Linux内核的联系,内核再通过统一文件系统接口呈现给用户,用户通过对应的设备文件控制硬件。
对于LED设备,Linux提供了LED子系统驱动框架,在Linux内核源码中的“Documentation/leds/leds-class.txt”有相关的描述,它实现了一个leds类,用户层通过sysfs文件系统对LED进行控制。
驱动程序:为迎接设备创建相应的设备节点文件。规定好设备文件的使用方式
应用程序:根据驱动程序规定的设备文件使用方式去控制硬件
控制硬件设备步骤:
1、找出硬件设备所对应的设备节点文件
/dev 目录下
对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件全部特性
/sys 目录下
业余工程师使用,一个设备节点文件只控制硬件的一个特性
2、找出驱动程序规定的设备文件使用方式
LED灯设备文件
设备节点
/sys/class/leds
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> //ARM 开发板LED设备的路径 #define RLED_DEV_PATH "/sys/class/leds/red/brightness" #define GLED_DEV_PATH "/sys/class/leds/green/brightness" #define BLED_DEV_PATH "/sys/class/leds/blue/brightness" //Ubuntu主机LED设备的路径,具体请根据自己的主机LED设备修改 // #define RLED_DEV_PATH "/sys/class/leds/input2::capslock/brightness" // #define GLED_DEV_PATH "/sys/class/leds/input2::numlock/brightness" // #define BLED_DEV_PATH "/sys/class/leds/input2::scrolllock/brightness" int main(int argc, char *argv[]) { int res = 0; int r_fd, g_fd, b_fd; printf("This is the led demo\n"); //获取红灯的设备文件描述符 r_fd = open(RLED_DEV_PATH, O_WRONLY); if(r_fd < 0){ printf("Fail to Open %s device\n", RLED_DEV_PATH); exit(1); } //获取绿灯的设备文件描述符 g_fd = open(GLED_DEV_PATH, O_WRONLY); if(g_fd < 0){ printf("Fail to Open %s device\n", GLED_DEV_PATH); exit(1); } //获取蓝灯的设备文件描述符 b_fd = open(BLED_DEV_PATH, O_WRONLY); if(b_fd < 0){ printf("Fail to Open %s device\n", BLED_DEV_PATH); exit(1); } while(1){ //红灯亮 write(r_fd, "255", 3); //延时1s sleep(1); //红灯灭 write(r_fd, "0", 1); //绿灯亮 write(g_fd, "255", 3); //延时1s sleep(1); //绿灯灭 write(g_fd, "0", 1); //蓝灯亮 write(b_fd, "255", 3); //延时1s sleep(1); //蓝灯亮 write(b_fd, "0", 1); } }
Hankin
2020.07.17
相关文章推荐
- 嵌入式Linux应用学习(一)------QT控制LED设备硬件
- 树莓派linux驱动学习之LED控制
- 嵌入式Linux学习入门:控制LED灯
- linux的misc设备led--6410---学习笔记
- 树莓派linux驱动学习之LED控制
- mini2440之Linux驱动学习_4_LED设备驱动学习
- linux驱动学习--第十三天:第七章 Linux 设备驱动中的并发控制
- Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文档的访问控制]
- 树莓派linux驱动学习之LED控制
- 树莓派linux驱动学习之LED控制
- 我的嵌入式LINUX学习.卷32------字符设备驱动实例
- mini2440之Linux驱动学习_3_字符设备控制学习
- Linux学习:LED字符设备驱动
- Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]
- 一步一步学习 Linux 驱动之字符设备 LED
- 一步一步学习 Linux 驱动之设备控制接口函数(ioctl 函数)
- 嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
- 嵌入式Linux学习笔记(三) 字符型设备驱动--LED的驱动开发
- linux 设备驱动开发学习笔记(一):并发控制
- linux字符驱动学习实践1(简单控制LED灯)