本文基于Android7.1.1 msm8953 platform  Linux kernel 3.18.

按照惯例先上一张 led子系统的 思维导图

上图是根据 kernel/msm-3.18/drivers/leds/ 下的Makefile文件分析而成,so. 讲到这,阅读makefile对分析源码结构很有帮助哦

这里贴一下Makefile的源码,不同平台略有不同。

# LED Core
obj-$(CONFIG_NEW_LEDS)       += led-core.o
obj-$(CONFIG_LEDS_CLASS)      += led-class.o
obj-$(CONFIG_LEDS_TRIGGERS)       += led-triggers.oEXTRA_CFLAGS += -DDEBUG# LED Platform Drivers
obj-$(CONFIG_LEDS_88PM860X)       += leds-88pm860x.o
obj-$(CONFIG_LEDS_BD2802)     += leds-bd2802.o
obj-$(CONFIG_LEDS_LOCOMO)     += leds-locomo.o
obj-$(CONFIG_LEDS_LM3530)     += leds-lm3530.o
obj-$(CONFIG_LEDS_LM3533)     += leds-lm3533.o
obj-$(CONFIG_LEDS_LM3642)     += leds-lm3642.o
obj-$(CONFIG_LEDS_MIKROTIK_RB532)  += leds-rb532.o
obj-$(CONFIG_LEDS_S3C24XX)    += leds-s3c24xx.o
obj-$(CONFIG_LEDS_NET48XX)    += leds-net48xx.o
obj-$(CONFIG_LEDS_WRAP)          += leds-wrap.o
obj-$(CONFIG_LEDS_COBALT_QUBE)    += leds-cobalt-qube.o
obj-$(CONFIG_LEDS_COBALT_RAQ)     += leds-cobalt-raq.o
obj-$(CONFIG_LEDS_SUNFIRE)    += leds-sunfire.o
obj-$(CONFIG_LEDS_PCA9532)    += leds-pca9532.o
obj-$(CONFIG_LEDS_GPIO_REGISTER)   += leds-gpio-register.o
obj-$(CONFIG_LEDS_GPIO)          += leds-gpio.o
obj-$(CONFIG_LEDS_LP3944)     += leds-lp3944.o
obj-$(CONFIG_LEDS_LP55XX_COMMON)   += leds-lp55xx-common.o
obj-$(CONFIG_LEDS_LP5521)     += leds-lp5521.o
obj-$(CONFIG_LEDS_LP5523)     += leds-lp5523.o
obj-$(CONFIG_LEDS_LP5562)     += leds-lp5562.o
obj-$(CONFIG_LEDS_LP8501)     += leds-lp8501.o
obj-$(CONFIG_LEDS_LP8788)     += leds-lp8788.o
obj-$(CONFIG_LEDS_TCA6507)    += leds-tca6507.o
obj-$(CONFIG_LEDS_CLEVO_MAIL)     += leds-clevo-mail.o
obj-$(CONFIG_LEDS_IPAQ_MICRO)     += leds-ipaq-micro.o
obj-$(CONFIG_LEDS_HP6XX)      += leds-hp6xx.o
obj-$(CONFIG_LEDS_OT200)      += leds-ot200.o
obj-$(CONFIG_LEDS_FSG)       += leds-fsg.o
obj-$(CONFIG_LEDS_PCA955X)    += leds-pca955x.o
obj-$(CONFIG_LEDS_PCA963X)    += leds-pca963x.o
obj-$(CONFIG_LEDS_DA903X)     += leds-da903x.o
obj-$(CONFIG_LEDS_DA9052)     += leds-da9052.o
obj-$(CONFIG_LEDS_WM831X_STATUS)   += leds-wm831x-status.o
obj-$(CONFIG_LEDS_WM8350)     += leds-wm8350.o
obj-$(CONFIG_LEDS_PWM)       += leds-pwm.o
obj-$(CONFIG_LEDS_REGULATOR)      += leds-regulator.o
obj-$(CONFIG_LEDS_INTEL_SS4200)       += leds-ss4200.o
obj-$(CONFIG_LEDS_LT3593)     += leds-lt3593.o
obj-$(CONFIG_LEDS_ADP5520)    += leds-adp5520.o
obj-$(CONFIG_LEDS_DELL_NETBOOKS)   += dell-led.o
obj-$(CONFIG_LEDS_MC13783)    += leds-mc13783.o
obj-$(CONFIG_LEDS_NS2)       += leds-ns2.o
obj-$(CONFIG_LEDS_NETXBIG)    += leds-netxbig.o
obj-$(CONFIG_LEDS_ASIC3)      += leds-asic3.o
obj-$(CONFIG_LEDS_MAX8997)    += leds-max8997.o
obj-$(CONFIG_LEDS_LM355x)     += leds-lm355x.o
obj-$(CONFIG_LEDS_BLINKM)     += leds-blinkm.o
obj-$(CONFIG_LEDS_QPNP)          += leds-qpnp.o
obj-$(CONFIG_LEDS_QPNP_FLASH)     += leds-qpnp-flash.o
obj-$(CONFIG_LEDS_QPNP_WLED)      += leds-qpnp-wled.o
obj-$(CONFIG_LEDS_SYSCON)     += leds-syscon.o
obj-$(CONFIG_LEDS_VERSATILE)      += leds-versatile.o
obj-$(CONFIG_LEDS_MENF21BMC)      += leds-menf21bmc.o
obj-$(CONFIG_LEDS_AW2013)     += leds-aw2013.o
obj-$(CONFIG_LEDS_SC60STATUS)     += ledsc60statu.o# LED SPI Drivers
obj-$(CONFIG_LEDS_DAC124S085)     += leds-dac124s085.o# LED Triggers
obj-$(CONFIG_LEDS_TRIGGERS)       += trigger/

下面在展示下当一个led驱动正常注册的目录结构

这里先后展示了三个总体信息,帮助读者能够在脑海中有个全局的概念。后面会对上述提到的一一分析:

https://blog.csdn.net/qq_23327993/article/details/86520880

Android(Linux) led子系统分析相关推荐

  1. Linux input子系统分析

    输入输出是用户和产品交互的手段,因此输入驱动开发在Linux驱动开发中很常见.同时,input子系统的分层架构思想在Linux驱动设计中极具代表性和先进性,因此对Linux input子系统进行深入分 ...

  2. linux input子系统分析--子系统核心.事件处理层.事件传递过程

    linux input子系统分析--子系统核心.事件处理层.事件传递过程 一.  输入子系统核心分析. 1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注 ...

  3. linux input子系统分析--主要函数

    linux input子系统分析--主要函数 一. 各种注册函数 因为分析一所讲的每种数据结构都代表一类对象,所以每种数据结构都会对应一个注册函数,他们都定义在子系统核心的input.c文件中.主要有 ...

  4. linux input子系统分析--概述与数据结构

    linux input子系统分析--概述与数据结构 Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互.输入设 ...

  5. Linux MMC子系统分析(二)——Host分析

    Linux MMC子系统分析(二)--Host分析 前言 通过前面对mmc子系统的模型分析,我们能够知道host是对应于硬件控制器的具体操作.本文将以sdhci-s3c.c为例对host进行简单的分析 ...

  6. linux IIC子系统分析(九)——实例分析通过设备节点访问I2c设备

    在< linux IIC子系统分析(四)--I2c bus初始化> 中我们创建了I2C 总线驱动,I2C adapter device 和adapter drivers也在这时创建 在&l ...

  7. linux IIC子系统分析(二)—— linux i2c 架构概述

    I2C总线因为它及简单的硬件连接和通讯方式,在现在的很多设备上它是一种不可或缺的通讯总线.如果用当单片机直接操作I2C,其实很简单,只要正确把握IIC的操作时序就可以了.但是在linux系统中,I2C ...

  8. [arm 驱动]Linux输入子系统分析

    首先说明一下,本文是基于Linux-2.6.38版本内核来分析Linux输入子系统架构和原理的.这阵子本来没有打算花时间来分析Linux input system的,然而当在研究S3C6410触摸屏驱 ...

  9. LINUX IIO子系统分析之二 IIO子系统相关数据结构分析

    上一章我们简要说明了IIO子系统的架构,本章我们通过数据结构的定义,分析IIO子系统的设计实现,本章的主要内容如下: 一.IIO子系统各数据结构说明 二.数据结构间的关联说明 一.IIO子系统各数据结 ...

  10. LINUX IIO子系统分析之一 IIO子系统概述

    从本章开始,我们进行IIO子系统专栏的分析文档,本次IIO子系统专栏分析文档大概包含如下几章: 一. IIO子系统概述 二.IIO子系统相关数据结构分析 三.iio trigger 介绍 四.iio ...

最新文章

  1. 水平反向拆分VSCode编辑器快捷键为Ctrl+\(正交拆分Ctrl+K Ctrl+\),如何快速将当前组编辑器窗口复制到另一侧?设置垂直向下拆分编辑器快捷键Alt+\
  2. Thymeleaf语法规则
  3. [Leetcode] Flatten Binary Tree to Linked List 整平二叉树
  4. Vue框架搭建快速入门
  5. hdu5751 Eades
  6. 缓存 ASP.NET 页
  7. 小心sae的jvm异常导致的Error 404 – Not Found.No context on this server matched or handled this request....
  8. UVA 1329 Corporative Network(并查集:路径压缩)
  9. Mac安装jadx查看dex文件
  10. 【Nginx】Nginx 工作原理
  11. python 调用函数
  12. SAP中常用SM系列事务代码总结
  13. vps和云主机哪个好
  14. 什么是线性电路,非线性电路
  15. css画一个卡通动画
  16. python上市公司_Python批量下载上交所上市公司报告
  17. “新基建”奏响项目建设最强音,长沙上半年重大项目完成投资2142亿元
  18. POJ 2579 HDU 1218 Blurred Vision(水~)
  19. python 取整法(进一取值)
  20. 5、获取蓝牙设备列表(getBluetoothDevices)

热门文章

  1. 【面试记录】比亚迪二面
  2. xp系统如何通过cmd运行命令符查看电脑配置的两种方法
  3. mysql的innodb引擎_浅谈MYSQL引擎之INNODB引擎
  4. python爬取网易云飙升榜数据
  5. python使用pip
  6. Unity 使用AVProVideo插件加载并下载视频
  7. 条形码扫描模块的作用是什么?有什么应用意义?
  8. LLVM IR / LLVM指令集入门
  9. 政府普及政务工作邮箱的难题
  10. Lattice diamond 编程时工具报出 ID错误问题的解决