目录

前言

led子系统

led子系统实战-系统调用-ARM平台

前言

接下来记录的是 led子系统

目前不涉及驱动源码

linux子系统

在 Linux 系统中

绝大多数硬件设备都有非常成熟的驱动框架

驱动工程师使用这些框架添加与板子相关的硬件支持

建立硬件与Linux内核的联系

内核再通过统一文件系统接口呈现给用户

用户通过对应的设备文件控制硬件。

led子系统

led子系统相关描述可在内核源码 Documentation/leds/leds-class.txt 了解。

led子系统是一个简单的 linux子系统 ,在目录 /sys/class/leds 下展示该子系统设备。

/sys/class/leds下的目录

对应的LED灯设备

input2::capslock

键盘大写锁定指示灯

input2::numlock

键盘数字键盘指示灯

input2::scrolllock

键盘ScrollLock指示灯

一些属性值

brightness

brightness 的最大值在 max_brightness 文件中定义。

brightness 的值在 brightness 文件中定义。

注意:大部分 led 不支持亮度调节。

trigger.

常见的触发方式

none:无触发方式

disk-activity:硬盘活动

nand-disknand:flash活动

mtd:mtd设备活动

timer:定时器

heartbeat:系统心跳

查看触发方式

cat trigger (x86平台)

查看该文件的内容时,该文件会 列出它的所有可用触方式,而当前使用的触发方式会以“[]”符号括起。

修改触发方式

例子:echo none > /sys/class/leds/ledA/trigger

none:none触发方式

ledA:ledA设备

修改后,便按新的触发方式触发

设计哲学

简单哈哈

推荐命名格式

“设备名字:颜色:功能”

API(后面分析驱动再介绍)

led_set_brightness

led_set_brightness_sync

led_classdev_register

led_classdev

led子系统实战-系统调用-ARM平台

先在终端运行

查询触发方式:cat trigger (注意图中 [])

修改触发方式 (注意图中 [])

使用系统调用方式 APP

main.c 文件

/** @file main.c

* @brief 简要说明

* @details 详细说明

* @author lzm

* @date 2020-11-10 17:01:15

* @version v1.0

* @copyright Copyright By lizhuming, All Rights Reserved

*

**********************************************************

* @LOG 修改日志:

**********************************************************

*/

#include

#include

#include

#include

#include

#include

//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"

int main(int argc, char *argv[])

{

int res = 0;

int r_fd;

int g_fd;

int b_fd;

printf("this is the led demon");

// 获取 LED 设备文件描述符

r_fd = open(RLED_DEV_PATH, O_WRONLY);

if(r_fd < 0){

printf("Fail to open %s devicen",RLED_DEV_PATH);

exit(1);

}

g_fd = open(GLED_DEV_PATH, O_WRONLY);

if(g_fd < 0){

printf("Fail to open %s devicen",GLED_DEV_PATH);

exit(1);

}

b_fd = open(BLED_DEV_PATH, O_WRONLY);

if(b_fd < 0){

printf("Fail to open %s devicen",BLED_DEV_PATH);

exit(1);

}

while(1){

write(r_fd, "255", 3);

sleep(2);

write(g_fd, "255", 3);

sleep(1);

write(r_fd, "0", 1);

sleep(2);

write(g_fd, "0", 1);

sleep(1);

write(b_fd, "255", 3);

sleep(1);

write(b_fd, "0", 1);

sleep(1);

}

}

程序员灯塔

转载请注明原文链接:【linux】led子系统

LINUX系统子系统DEMON,【linux】led子系统相关推荐

  1. 连接linux系统的mysql,Linux系统MySQL开启远程连接

    1.远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码). 2.创建用户用来远程连接 GRANT ALL PRIVILEGES ...

  2. imx6ull移植Linux系统第二篇——Linux内核的移植

    imx6ull移植Linux系统第二篇--Linux内核的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot.系统镜 ...

  3. Alpine linux 小内存版,Alpine Linux系统-Alpine Linux系统【轻量级Linux】下载v3.11.0 最新版-西西软件下载...

    Alpine Linux系统[轻量级Linux],Alpine Linux其实就是一个清凉版的Linux系统,通过牺牲一些不常用的功能和特性来达到更加轻巧的体积以及更快的响应速度.Alpine Lin ...

  4. linux系统清理内存,Linux实验室:五个清理磁盘空间小妙招

    1删除安装包:清空系统APT缓存 玩儿电脑最怕的就是卡慢,那么电脑卡慢应该怎么解决呢?对于windows系统来说,你可能有各种免费的杀毒软件.全家桶帮你清空系统空间,那么Linux系统怎么办?今天笔者 ...

  5. linux系统的笔记本,Linux:开源的免费操作系统_笔记本电脑_笔记本评测-中关村在线...

    ■linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...

  6. Linux系统之部署Linux管理面板1Panel

    Linux系统之部署Linux管理面板1Panel 一.1Panel介绍 1.1Panel简介 2.1Panel特点 二.本地环境规划 1.本此实践目的 2.本地环境规划 三.检查本地环境 1.检查操 ...

  7. 初探linux子系统集之led子系统(一)【转】

    本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37569789 就像学编程第一个范例helloworld一样,学嵌入式,单片机.f ...

  8. xubuntu16.04是linux系统,win10建立Ubuntu16.04子系统,安装经常使用软件以及图形界面(包括win10远程桌面链接Ubuntu)...

    目录linux 2.基本配置github 经过本机远程桌面sublime-text 1.开启win10子系统 [ Windows Subsystem for Linux(WSL)] 准备工做 设置-- ...

  9. linux系统中pinctrl 和gpio子系统使用方法(教你点灯)

    如何使用pinctrl和gpio子系统点亮led pinctrl 子系统作用 设备树PIN配置 gpio子系统介绍 配置gpio相关 编写驱动程序 编写应用程序 pinctrl 子系统作用 pinct ...

  10. Linux系统接口ioc,Linux下SCSI API研究及应用

    Linux下SCSI API研究及应用 Linux SCSI体系结构及API数据结构的操作原理和相关的系统调用,运用SCSI API实现了有关的数据存储. 关键词: SCSI通用驱动器  SCSI接口 ...

最新文章

  1. Verlet Integration
  2. java非打印字符,使用Java正则表达式匹配不可打印字符
  3. Google Protocol Buffer 的使用和原理
  4. Additive属性动画
  5. 温故而知新-面向对象的PHP
  6. android之frame动画详解
  7. android 如何判断h5页面是否加载完成_H5 键盘兼容性小结
  8. Can not load “libqxcb.so”
  9. Android硬件访问服务框架思想初识
  10. visio画图中怎么添加①
  11. UnicodeDecodeError: 'gbk' codec can't decode byte 0xd2 in position 85: illegal multibyte sequence
  12. Centos8安装X11-forwarding图形服务
  13. 兽用体温计行业调研报告 - 市场现状分析与发展前景预测
  14. iOS 初识CoreBluetooth
  15. 【软考】2020年全国计算机技术与软件专业技术资格考试,网络工程师(中级),考纲
  16. 用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存
  17. php 纯数组,PHP 数组
  18. 论坛php 图片上传,图片上传、分享网站
  19. 【读书笔记->统计学】12-02 置信区间的构建-t分布概念简介
  20. Linux使用libmodbus源码开发,LibModbus源码分析

热门文章

  1. php反射型xss,利用反射型XSS漏洞,模拟获取登录账户的Cookie
  2. 反射内存卡学习及使用---rfm2g驱动安装
  3. markdown数学类总结
  4. 风口浪尖上,“猪”可能已经飞不起来了
  5. 计算机应用技术就要前景分析,论计算机应用技术的现状及前景
  6. ppt嵌入文件对计算机有危害,ppt播放SWF文件提示此文件包括的内嵌内容可能对您的计算机有害!如何关闭此提示?...
  7. 脚本引流,什么是脚本引流?脚本引流会是骗局么?
  8. 获取抖音抖店订单相关信息,用于私域引流脚本
  9. 分布式服务架构(一)---服务架构的进化史
  10. 2022年金三银四java跳槽面试题100+大全(还不快点收藏)