以前阅读源码时一般只阅读到fwk层部分,近期因为一个问题,想顺便把fwk层到hal 到驱动的调用关系都看下。在此做下记录。

原始问题是客户嫌屏幕调到最大亮度后仍然觉得亮度不够亮,让看看能不能把亮度调亮点。

分析

这个需求首先得硬件上能支持亮度能满足客户需求,在硬件上支持的前提下再看软件上怎么把亮度设置到满足需求(驱动得能调节到那个值,应用层到驱动间的映射能满足在设置最大亮度时驱动能调到对应值)

接着驱动报出驱动部分调节亮度的函数disp_pwm_set_backlight 在传入最大值时能满足客户需求,但是设置中设置的亮度最大值传到驱动时,参数并没有设置到对应的最大值。这就说明是应用层往下面传的时候中间出现了转换。

网上搜索了一下设置屏幕亮度的流程,参考:https://blog.csdn.net/FightFightFight/article/details/81320519

最后的setBrightness是调用LightsService.java中的setBrightness 方法,再通过jni调用com_android_server_lights_LightsService.cpp中的setLight_native

static void setLight_native(JNIEnv* /* env */,jobject /* clazz */,jint light,jint colorARGB,jint flashMode,jint onMS,jint offMS,jint brightnessMode) {if (!validate(light, flashMode, brightnessMode)) {return;}sp<ILight> hal = LightHal::associate();if (hal == nullptr) {return;}Type type = static_cast<Type>(light);LightState state = constructState(colorARGB, flashMode, onMS, offMS, brightnessMode);{android::base::Timer t;Return<Status> ret = hal->setLight(type, state);processReturn(ret, type, state);if (t.duration() > 50ms) ALOGD("Excessive delay setting light");}
}
LightHal是hal层代码,其默认是在/hardware/interfaces/light/2.0/default 下,但是我使用的MTK代码中,在vendor做了定制,其实现在vendor/mediatek/proprietary/hardware/liblights/lights.c 中,进一步分析可知设置背光应该是set_light_backlight方法,写的/sys/class/leds/lcd-backlight/brightness设备节点。截止到此当亮度设置到最大值时,应用层往下传入的参数是255,这应该算最大值了。那么做的转换多半是hal层到驱动之间哪里有转换,从驱动那边得知的是设置背光调用的是 kernel-4.4/drivers/misc/mediatek/video/common/pwm10/ddp_pwm.c  由于kernel-4.4中有很多类似的写背光的驱动文件,估计是有什么宏去控制编译时调用什么文件。这个我现在也没有找到规则,有人知道的话,麻烦跟我说下。 最后看了一下代码,应该在disp_pwm_level_remap 中可以重新定义传入的参数和驱动间的数值映射,不过最后由于种种原因,这个后来不需要做了。。。就不了了之了。。。。

Android HAL层到驱动代码搜索---基于背光亮度的调试相关推荐

  1. 北斗gps Android hal层so库代码

    网上下载的代码,自己编辑修改,加入了北斗定位功能,主要是修改了GSV,GSA语句的解析,在A10平台上测试良好: 北斗双模下的LOG: $GPGSV,3,3,10,31,46,012,,32,39,2 ...

  2. Android 系统(4)---Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. HAL:Hardw ...

  3. Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 阅读数:5070 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. ...

  4. Android Hal层简要分析

    Android Hal层简要分析 Android Hal层(即 Hardware Abstraction Layer)是Google开发的Android系统里上层应用对底层硬件操作屏蔽的一个软件层次, ...

  5. Android hal 层 C 堆栈打印方法

    Android hal 层 C 堆栈打印方法 一.添加CallStack文件 在hardware/qcom/audio/hal/ 下添加 callstack.cpp 和 callstack.h文件 # ...

  6. 【转】android hal 层GPS 研究总结——关于GPS GGA/GSV/RMC 数据的解析

    [转]android hal 层GPS 研究总结 2011-09-22 快跑的未必能赢,力战的未必获胜,聪明的未必得粮食,明哲的未必得资财,灵活的未必得喜悦.所临到世人的,是在乎当时的机会. 人生一世 ...

  7. Android HAL 层,三个重要的结构体的源码~

    最近在学习android HAL 层 ~ 离不开这三个数据结构~~先贴出来 typedef struct hw_module_t {     /** tag must be initialized t ...

  8. Android HAL层分析 (gralloc显示模块 举例)

     Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚.思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些 ...

  9. Android HAL层浅析

    文章目录 1.HAL层在Android系统中的位置 2.HAL层概述 3.旧的HAL架构module 4.新的HAL架构module stub 5.HAL Stub框架分析 1.HAL层在Androi ...

最新文章

  1. Java项目:校园外卖点餐系统(java+SSM+JSP+maven+mysql)
  2. 1470篇!CVPR2020结果出炉(附13篇论文链接/开源代码/解读)
  3. Open-E DSS V7 应用系列之六 构建软件iSCSI
  4. Git同步本地项目文件到github
  5. GaussianBlur函数
  6. 淘宝拼多多之争,从宏观的角度看拼多多是如何实现商业逆袭的?
  7. Cpp / 右值、纯右值、将亡值
  8. android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
  9. pdnovel.php_Pdnovel 在線閱讀體驗
  10. 软件测试组长要做的事情,测试组长的工作计划(共10篇).docx
  11. SQL Server 中“dbo”到底是什么
  12. nginx 漏洞修复
  13. 微信html下拉刷新页面,微信公众号内的页面的下拉刷新,兼容手机端和PC端
  14. Win系统 - 你知道 insert 键的隐藏功能吗?
  15. 七夕蛤蟆背后的赚钱逻辑,没想到叫两声:孤寡,就可以日赚 10 万
  16. PADS9.5安装破解后提示无License文件方法
  17. Tiled的qbs方式编译记录
  18. JAVA中的“人妖”
  19. mysql 报错“发生系统错误 3.系统找不到指定路径”
  20. DISM 修复 Win10

热门文章

  1. android手机电池寿命,安卓手机如何查电池使用寿命
  2. Android 时间格式化
  3. 物质模拟器4.0版 改了bug,爆炸时也可移动
  4. vscode中配置LeetCode插件的教程(愉快刷题)
  5. 备忘录吕吕没有备忘录十新建_前往地图备忘单
  6. 实现32/64位Windows虚拟扫描仪自定义图片加载
  7. 读JQuery 有感
  8. 牛逼!100多个常用 API 接口整理大全,常用的都有。。
  9. HIDS常见功能要求
  10. Python爬虫实战:爬取贝壳网二手房成交数据,将数据存入Excel。