android平台6410背光修改

发布者:喜悦的38号最新更新时间:2024-10-22 来源: cnblogs关键字:android平台 手机看文章 扫描二维码
随时随地手机看文章

昨日装机的MID亮度不够,特别是看些视频文件时很不清晰。实际测得输出PWM的GPF15电压不够,仅0.4伏,要求上应该要达到跟WINCE一样的2.8V,才适合供给U7位的MP1528。

      在内核CODE中查找PWM相关文件,找到s3c6410_timer_setup函数是设置PWM通道和分频比等相关函数的调用。恰好该函数在s3cfb_set_brightness中被调用,设置tcnt的值由1000到500,即可达效果。

      补充一点:关于如何让系统不会进入待机睡眠状态的一种机制:终端中用以下命令echo '1' > /sys/power/wake_lock。

=============================================================================

      顺便分析下android平台中是如何从上到下修改到背光的。

(1)寻找到背光调节的CODE:在packages/apps/Settings/src/com/android/settings的BrightnessPreference.java中:

        private void setBrightness(int brightness) {

                 ........

                hardware.setBacklights(brightness);

         }

(2)寻找到硬件服务的CODE:frameworks/base/services/java/com/android/server/HardwareService.java中:

         public void setBacklights(int brightness) {

                 ........

            setLightBrightness_UNCHECKED(LIGHT_ID_BACKLIGHT, brightness);  //注意其中的ID号

        }

其中函数定义:

        void setLightBrightness_UNCHECKED(int light, int brightness)

       {
              int b = brightness & 0x000000ff;
              b = 0xff000000 | (b << 16) | (b << 8) | b;
              setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0);

        }

调用的是native的设备light的函数,并传入参数LIGHT_ID_BACKLIGHT,和亮度。

(3)本地设定的native用于设定亮度的函数在:/hardware/s3c6410/liblights/lights.c中:

      static struct hw_module_methods_t lights_module_methods = {
               .open =  open_lights,
      };

其中:

      static int open_lights(const struct hw_module_t* module, char const* name,
        struct hw_device_t** device)

      {

              ........

                  if (0 == strcmp(LIGHT_ID_BACKLIGHT, name)) {  //注意其ID号与上面是一致的
                           set_light = set_light_backlight;
                  }

       }

实现函数是:

     set_light_backlight(struct light_device_t* dev, struct light_state_t const* state)
     {
          int err = 0;
          int brightness = rgb_to_brightness(state);
          pthread_mutex_lock(&g_lock);
          g_backlight = brightness;
          err = write_int('/sys/class/leds/lcd-backlight/brightness', brightness);
          if (g_haveTrackballLight) {
                handle_trackball_light_locked(dev);
          }
          pthread_mutex_unlock(&g_lock);
          return err;
      }

其中write_int的参数sys/class/leds/lcd-backlight/brightness是linux系统默认的设备驱动模型的参数。可以通过在MID终端里面查看到。比如:cd /sys/class/leds/lcd-backlight,再用ls -l 可以看到好几个属性。这些属性都由class_create来创建的。对于背光,我们可以在sys/class和/sys/devices/都找到对应的背光路径,这两个路径下还可以找得到关联的符号链接;但我们不会在/dev下找到背光的节点,因为一般不会那样做。

(4)在linux层执行改变亮度的函数是:

     static struct led_classdev smdk_backlight_led  = {
          .name  = 'lcd-backlight',
          .brightness = SMDK_DEFAULT_BACKLIGHT_BRIGHTNESS,
          .brightness_set = smdk_brightness_set,
       };

其中:

      static void smdk_brightness_set(struct led_classdev *led_cdev, enum led_brightness value)
     {
           mutex_lock(&smdk_backlight_lock);
           smdk_backlight_brightness = value;
           if(!smdk_backlight_off)
                 smdk_set_backlight_level(smdk_backlight_brightness);
           mutex_unlock(&smdk_backlight_lock);
      }

其中:

      static void smdk_set_backlight_level(u8 level)
     {
            if (smdk_backlight_last_level == level)
                  return;

            s3cfb_set_brightness((int)(level/3)); 
 
             smdk_backlight_last_level = level;
      }

其中:

      void s3cfb_set_brightness(int val)
     {
          int channel = 1; /* must use channel-1 */
          int usec = 0;  /* don't care value */
          unsigned long tcnt = 500;  //1000; //jeff.
          unsigned long tcmp = 0;

          if (val < 0)
              val = 0;

          if (val > S3C_FB_MAX_BRIGHTNESS)
              val = S3C_FB_MAX_BRIGHTNESS;

          s3c_fimd.brightness = val;
          tcmp = val * 5;

          s3c6410_timer_setup (channel, usec, tcnt, tcmp);
      }

 

(5)疑问在于:A,上层调节的brightness,linux下层怎么样转到哪个函数上去的?就算都以lcd-backlight来匹配,问题是brightness怎么匹配到的?B,smdk_brightness_set的参数是enum类型的,而亮度是纯粹的INT类型,是怎么样传过来的?

===============================================================================

       补充一个关于背光的BUG解决记录。在MTK6516平台调节背光亮度时,耳机听筒可以听到电流声。初步估计是背光调节的PWM频率造成的干扰,测得目前的PWM频率是1.57KHZ,也小于背光驱动芯片的最大值2K。在代码数组blSettingsCustom中改动PWM_CLOCK_DIV_BY_2成PWM_CLOCK_DIV_BY_8,即使得PWM频率变为1.57KHZ*2/8=393HZ,烧录完毕测试电流声没有了。实测频率与计算的一致,可见改变PWM频率并不会影响驱动电压,只取决于占空比


关键字:android平台 引用地址:android平台6410背光修改

上一篇:9.内存的了解
下一篇:11.栈的初始化

推荐阅读最新更新时间:2026-03-25 14:39

WiSA Technologies将于CES 2023期间演示在Android电视机SoC平台上运行的多声道音频软件IP
WiSA Technologies将于CES 2023期间演示在Android电视机SoC平台上运行的多声道音频软件IP 美国俄勒冈州比弗顿 — 2023年1月3日 — 为智能设备和下一代家庭娱乐系统提供沉浸式无线声效技术的领先供应商WiSA Technologies股份有限公司将演示其无线多声道音频软件面向Android电视系统级芯片(SoC)平台的首次移植 。该演示将在2023年国际消费电子展(CES 2023)期间举办,只接受预约观看,可预约交流的时间为2023年1月5日-8日(星期四至星期日)。 “我们很高兴能演示WiSA的多声道音频软件知识产权(IP)在标准Android电视SoC平台上的运行情况。” Wi
[家用电子]
WiSA Technologies将于CES 2023期间演示在<font color='red'>Android</font>电视机SoC<font color='red'>平台</font>上运行的多声道音频软件IP
谷歌意外放出“季度平台发布”Android Beta测试版本
本周,Google 放出了与 Android 12.1 和三月安全更新有关的更多细节,而 Pixel 用户也在第一时间观察到了相关变化。需要指出的是,尽管 Google 完成了针对 Android 12L 的 Beta 测试周期,但相关工作并未就此结束。周三的时候,该公司竟然出乎意料地推出了新的 Beta 测试版本。   在 Android 开发者网站上,Google 在一个专题页面上详细介绍了 Android 12“Quarterly Platform Release”的测试版本。   首个版本的编号为“Android 12 QPR3 Beta 1”,允许测试者抢先体验计划于 6 月推出的功能、甚至赶在了 3 月份的最新
[手机便携]
谷歌意外放出“季度<font color='red'>平台</font>发布”<font color='red'>Android</font> Beta测试版本
《光·遇》手游或1月6日合服 iOS平台安卓平台即将互通
《光・遇》手游此前宣布 iOS 平台与安卓平台即将互通,将在 5 日内公布具体的合服时间。   昨日,《光・遇》手游官方发布公告,将在 1 月 6 日 06:00~22:00 进行服务器合并,预计维护时间为 16 小时。维护中无法正常游戏。如果在预计时间内无法完成维护内容,开服时间将顺延。   更新范围:iOS 正式运营服、安卓正式运营服   IT之家了解到,此次维护结束后,将开启“追光汇暖 相约共庆”系列合服庆典,解锁丰厚全服奖励,活动详情将在 1 月 4 日公布。同时,宴会节将延长至 1 月 8 日 23:59。   官方问题解答   Q1、合服后的服务器稳定性会提升吗?   A:我们已经对服务器承载能力进行了优化,合
[手机便携]
新浪众测客户端正式上线 全面覆盖iOS、安卓平台
   刚刚度过甜蜜的520 ,众测君再次闪亮登场,带来甜蜜暴击,全新的新浪众测安卓版客户端上线啦。   还记得2月初iOS客户端上线,让想随时随地参与新浪众测的同学们欢呼雀跃,奔走相告,也在App Store上给众测君留下了众多鼓励的话语和建议。而广大安卓用户除了积极参与活动和帮忙推广以外,对多平台客户端的呼声也越来越迫切。众测君一直都记在心里,加紧开发,终于在今天这个特殊的日子为大家带来了新浪众测安卓版客户端,小伙伴们在手机上终于都可以愉快的玩耍了。   目前新浪众测客户端已经在各大品牌手机的官方应用商店上线,同时在应用宝、PP助手、百度手机助手、360手机助手、UC应用商店等主流的第三方应用市场也都能找到众测君的身影,想第一时
[手机便携]
Qualcomm推出支持Android Things的全新家居中枢平台
2018年1月8日,拉斯维加斯——Qualcomm Incorporated(NASDAQ: QCOM)今日在2018年国际消费电子展(CES® 2018)上,通过其子公司Qualcomm Technologies, Inc.宣布推出两款支持Google Android Things的Qualcomm®家居中枢(Qualcomm® Home Hub)平台。两款平台分别基于Qualcomm SDA624和SDA212系统级芯片(SoC),旨在帮助开发者和OEM厂商快速、经济地开发支持Google服务(如Google Assistant)的家居中枢产品。家居中枢是一个快速增长的行业,依靠云连接和边缘计算功能,支持各种设备形态。此外,该
[物联网]
造智能家居平台,谷歌要抛弃安卓?
  据The Verge报道,这些开发者此前主要负责Next 智能家居 平台的开发,他们现在要和Android系统的负责人——Hiroshi Lockheimer一起工作,去帮助 谷歌 实现占领客厅的目标。下面就随网络通信小编一起来了解一下相关内容吧。   造智能家居平台,谷歌要抛弃安卓?   工程师的调任刚好发生在 谷歌 准备上线一个叫做Google Home的智能音箱的时候。 谷歌 宣布这款音箱将在5月份的I/O开发者大会上上推出,对标Amazon Echo ,此产品由谷歌独立开发(不基于Android系统)。Nest,以及其相关应用平台,已经准备好与Belkin,Philips,以及智能门锁制造商August合作。所以
[网络通信]
微软Cortana语音助手登陆iOS/Android平台
    12月9日,微软一次开发者见面会上介绍了《光环5》游戏以及相关赛程,而作为该游戏中的一个重要角色,Cortana早已成为了微软Win10语 音助手的代名词。据悉,微软曾于上月底启动了iOS版Cortana语音助手的测试,但只有此前申请测试的用户才能使用。而根据最新的消息,Cortana已经正式上架苹果App Store,同时安卓版的Cortana也已经上架谷歌Play商店。(文中配图来自网络)   需要说明的是,此次Cortana是以第三方软件的形式登陆iOS/Android两大平台的,并不能够获得系统级别的权限,因此在体验上肯定无法与 Siri或是Google Now相媲美。但由于Cortana与Siri以及Google
[手机便携]
Opera:Android平台广告营收首超iOS平台
    据国外媒体报道,Opera移动广告平台最新数据显示,来自Android系统的广告营收在2015年第一季度里首次实现超越iOS,不过后者仍然拥有最高的营收/曝光率比,即同等流量下,iOS用户创造的广告收入则远高于Android用户。 以苹果iPad为例,该设备产生的广告收益达到了流量贡献的四倍多,是所有Opera广告网追踪设备中最高的。 事实上,Android广告收入超越iOS广告收入的趋势是预期中的。去年第一季度,Opera数据就已显示Android移动广告曝光率呈现超iOS广告曝光率之势。因此前者在营收上要超越后者,也只是时间问题。更何况,Opera浏览器可以在Android系统中被设为默认(iOS中不行
[手机便携]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved