DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.
  • DmozDir.org
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!

【linux】led子系统

  • 【linux】led子系统

  • 已被浏览: 42 次2020年11月16日    来源:  https://www.cnblogs.com/lizhuming/p/13986601.html
  • 目录前言linux子系统led子系统led子系统实战-系统调用-ARM平台接下来记录的是 led子系统目前不涉及驱动源码linux子系统在 Linux 系统中绝大多数硬件设备都有非常成熟的驱动框架驱动工程师使用这些框架添加与板子相关的硬件

    目录
    • 前言
    • linux子系统
    • 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 triggerx86平台
            • 查看该文件的内容时,该文件会 列出它的所有可用触方式,而当前使用的触发方式会以“[]”符号括起。

        • 修改触发方式
          • 例子: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 <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"
    
    int main(int argc, char *argv[])
    {
        int res = 0;
        int r_fd;
        int g_fd;
        int b_fd;
        
        printf("this is the led demo\n");
    
        // 获取 LED 设备文件描述符
        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);
            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);
        }
    }
    

    以上信息来源于网络,如有侵权,请联系站长删除。

    TAG:子系统 Linux LED

  • 上一篇:【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分
  • 与“【linux】led子系统”相关的资讯
  • 领导Gamestop股票狂热的Reddit Trady丢失了1300万美元
  • Linux ulimit使用
  • linux环境下使用jmeter进行分布式测试
  • Linux常用命令总结
  • Linux core dump使用