mtk lk充电&&关机充电&&关机动画显示

这篇具有很好参考价值的文章主要介绍了mtk lk充电&&关机充电&&关机动画显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

lk下充电:

在启动时读取电压小于BATTERY_LOWVOL_THRESOLD便会到lk循环充电,这里的
BATTERY_LOWVOL_THRESOLD是3.45v

1、mtk_battery.c:

通过fg计算电池充电电流,电池温度等

2、mtk_charger_intf.c:

在mtk_charger_init_list数组添加对应IC的probe去做charger init

charger init:根据回调ops获取充电信息info,IC使能等

3、mtk_charger.c:

充电使能:charger_enable_charging

充电保护状态,低电判断:is_low_battery, check_low_battery, check_bat_protect_status

高于3.45v才会进入kernel,进入关机充电,显示关机充电动画,可以开机

void check_low_battery(void)
{
    int bat_vol;
    bat_vol = get_bat_volt(1);

    if (is_low_battery(bat_vol)) {
        if (g_boot_mode == KERNEL_POWER_OFF_CHARGING_BOOT && upmu_is_chr_det() == true) {
            dprintf(CRITICAL, "[%s] Kernel Low Battery Power Off Charging Mode\n", __func__);
            g_boot_mode = LOW_POWER_OFF_CHARGING_BOOT;

            check_bat_protect_status();

        } else {
            dprintf(CRITICAL, "[BATTERY] battery voltage(%dmV) <= CLV ! Can not Boot Linux Kernel !! \n\r",bat_vol);
            show_low_battery_notify();
            chr_power_off();
        }
    }
}

充电电流设置:select_charging_current_limit

充电器是否在位,电池是否在位:upmu_is_chr_det, is_battery_on

power path是否支持:charger_enable_power_path

关机充电&&动画显示:

电池电压高于3.45v,boot_mode select中判断是否是关机电:kernel_power_off_charging_detection,

确定是KERNEL_POWER_OFF_CHARGING_BOOT之后会进入关机充电模式

在lk platform.c中判断是关机充电之后,在显示一帧图片之后,会继续往下走,进入kernel,ramdisk起

一部分服务,其中包括关机充电服务,kpoc_charger

1、kpoc_charger:

可以参考:
https://www.cnblogs.com/sayhellowen/p/6510633.html

总结流程就是:

vendor/mediatek/proprietary/external/charger: 充电控制

从charger下的main.c中的main开始kpoc charger:

<1> 拉起healthd服务

<2> charging_control下主要有两个线程uevent_thread_routinedraw_thread_routine,分别去负责事件通知,和打开fb设备通过ioctl和kernel层驱动层交互显示动画

<3> draw_thread_routine线程中的draw_with_interval中有一段时间的循环控制,这个函数操作图标显示和背光开关,可以通过按键key trigger

int main(__attribute__((unused))int argc, __attribute__((unused))char *argv[])
{
    set_draw_anim_mode(1);
    pthread_mutex_init(&lights_mutex, NULL);

    setpriority(PRIO_PROCESS, 0, -20);
    FILE *oom_adj = fopen("/proc/self/oom_score_adj", "w");
    if (oom_adj) {
        if (fputs("-17", oom_adj) == EOF) {
           KPOC_LOGI("fputs error\n");
        }
        fclose(oom_adj);
    }

    health_service_init();
    light_init();
    //stop_backlight();
    KPOC_LOGI("stop_backlight 1\n");
    bootlogo_init();

    charging_control();

    unsigned int i;
    for (i=0; i< ARRAY_SIZE(pwrkeys); i++)
        KPOC_LOGI("pwrkeys[%d]:%d\n",i,pwrkeys[i]);

    key_control(pwrkeys, ARRAY_SIZE(pwrkeys)); //will loop inside

    return 0;
}

<4> bootlogo.cpp:充电动画版本确认,动画绘制方式以及其他参数的初始化,充电动画logo初始化,通过它来显示充电动画的图片和显示充电电量,应该就是获得充电图片的在文件系统中的位置吧,方便后面调用指定图片

2、libshowlogo:

可以参考:
https://www.cnblogs.com/sayhellowen/p/6510633.html

总结流程是:

vendor/mediatek/proprietary/external/libshowlogo: 动画显示

libshowlogo是根据确认的不同的动画显示版本来显示不同样式的动画

从一个对外接口show_battery_capacity开始分析:

<1> show_battery_capacity

<2> 主要是下面的 fill_animation_battery_by_ver:根据不同版本来显示动画

<3> init_charging_animation_ui_dimension:主要函数,对屏的分辨率大小确认,若是动画由部分错位一般就是这里分辨率不对,或者坐标不对,对应调节就是
<4> fill_animation_battery_new:主要函数,动画显示和填充函数

3、动画资源:

在vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo下放置图片资源,
具体的根据对应logo分辨率来判别:BOOT_LOGO=xxx

图片资源选择,格式转换等可以参考:
https://blog.csdn.net/u011784994/article/details/105561958/?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_utm_term~default-4.pc_relevant_default&spm=1001.2101.3001.4242.3&utm_relevant_index=7

动画原理:

有一张图片来作为显示的背景图,然后有一张图片是很细的一条填充线,来填充到背景图片中,然后有10张静态图来根据不同容量大小拼接显示容量图,所以我们看到是动画是由背景+已拼接容量图+线条填充+数字图片+%图片
低电量充电显示的动画是由[fhd_bat_10_01.bmp~ fhd_bat_10_01.bmp]这10张静态图片组成,针对verion 1.
充电背景图片[fhd_bat_bg.bmp] 共1张,针对verion 1.
正常充电填充图片[fhd_bat_img.bmp] 共1张,针对verion 1.
充电时动画显示是由[fhd_bat_animation_01.bmp~ fhd_bat_animation_10.bmp] 这10张静态图片组成,针对verion 1.
数字图片[fhd_num_0.bmp~ fhd_num_9.bmp]共10张,,针对verion 1.
百分比图片[fhd_mun_percent.bmp] 共1张 ,针对verion 1.
100%电量图[fhd_bat_100.bmp] 共1张 ,针对verion 1.
低电量图片[fhd_low_battery.bmp] 共1张 ,未见过此情况 。
过电压图片[fhd_change_ov.bmp] 共1张,未见过此情况 。
电压过低的图片[fhd_low_voltage.bmp] 共1张,未见过此情况 。
Kernel图片[fhd_kernal.bmp] 共1张 ,
关机插入充电器显示第一张图片[fhd_uboot.bmp] 共1张 ,mt_disp_show_boot_logo();方法调用,入口函数为platform_init();

fill_rect_with_content:主要函数,对显示资源做格式转换和送显,看是argb888还是rgb565

fill_rect_with_content_by_16bit_argb8888:主要函数,这里对图片做转换,还有可以设置lcd翻转rotation,文章来源地址https://www.toymoban.com/news/detail-422732.html

到了这里,关于mtk lk充电&&关机充电&&关机动画显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 笔记本电脑,充电器一拔立马关机,突然无法用电池怎么办

    dell 3490笔记本 笔记本,充电器一拔立马关机 1.拔掉电源适配器,长按开关机按键30秒放电(未解决) 2.拆开电脑,拔掉电池,用万用表测试电池是否正常,检查电池正常,继续尝试放电后插上电池检测主板电池接口处是否有电压,经检测有输出电压11.77V,再次开机恢复正常

    2024年02月11日
    浏览(234)
  • 【案例讲解】LVGL GIF开机动画和关机动画

    更多源码分析请访问: LVGL 源码分析大全 1、播放一次完整的GIF后就退出,退出时并销毁对象,以节省资源; 2、图层能覆盖在其它图层上,即出现这两个场景时,不显示其它内容

    2024年02月10日
    浏览(49)
  • 纯CSS的华为充电动画,它来了

    📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 Krpano专栏:想学Krpano的,冲 🔔 上述专栏,都在不定期持续更新中!!!!!!!!!!!!! 文章目录 ✨ 关键点 ✨ 效果演示 ✨ 分析逻辑  ✨ 下面附上完整代码      

    2024年02月04日
    浏览(29)
  • Android 12.0关机界面全屏显示(UI全屏显示)

    在12.0的系统定制化开发中,原生系统关机界面 UI是靠右边显示的,但是客户需求要求全屏显示 重启和关机功能键居中显示,所以就涉及到调整UI 然后全屏显示,需要实现窗口的全局布局实现全屏功能 在关机页面的布局中,经过adb shell命令查看系统关机界面的布局UI就是 Glo

    2024年02月07日
    浏览(43)
  • 无线充,大功率小家电,智能家居,无人机快速充电等产品供电 LDR6328S芯片TYUPE-C PD诱骗电压 USB-C解决PD电源取电问题

    LDR6328S 是乐得瑞科技有限公司开发的一款兼容 USB PD、QC 和 AFC 协议的 Sink 控制器。 LDR6328S 从支持 USB PD、QC 和 AFC 协议的适配器取电,然后供电给设备。比如可以配置适配器输 出需要的功率,给无线充电器设备供电。LDR6328S 也兼容传统 USB 电源适配器 。 LDR6328S PD诱骗协议芯片

    2024年02月04日
    浏览(50)
  • 【电子实验1】电容充电、放电显示器

    🔎大家好,我是 謓泽 ,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5→周榜38→总榜2629🏅 🆔本文由 泽En 原创 CSDN首发 🙈 如需转载还请通知 ⚠ 📝个人主页:打打酱油desu-CSDN博客 🎁欢迎各位→点赞👍 +

    2024年02月10日
    浏览(50)
  • 基于ADC电压采集的锂电池电量显示方法

    设备采用锂电池供电,可充电,MCU的ADC采集计算锂电池电压,电池电量根据锂电池放电特性,电池电量三段段码显示(分段式显示)。 ADC采集电池电压,判断是否充满电(例如3.7V锂电池充满电的情况下大约是4.2V,满电电压根据实际测试选择,我们选择的是4.1V)。 注意 :电

    2024年02月13日
    浏览(40)
  • STM32之ADC(获取某个端口电压并显示)

    ADC (Analog-Digital Converter) 模拟-数字 转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。 12位 逐次逼近型ADC**,1us转换时间 输入电压范围∶0-3.3V,转换结果范围∶0~4095。 18个输入通道,可测量16个外部和2个内部信号源规

    2023年04月26日
    浏览(42)
  • KUKA机器人通过示教器进行关机冷启动的具体方法演示

    如下图所示,首先需要登录管理员权限,默认密码:KUKA,然后点击左上角的机器人图标进行菜单选项,找到并点击“关机”选项, 如下图所示,找到并点击“重新启动控制系统PC”, 如下图所示,此时系统提示:确实要重新启动控制系统PC吗?之后会冷启动。点击“是”,

    2024年02月09日
    浏览(40)
  • 电脑强制关机两次后报错自动修复你的电脑未正确启动

    因为电脑太卡就强制关机了,开机之后没有等全部加载完,又觉得卡强制关机,再次打卡后显示正在准备自动修复,之后就自动修复你的电脑未正确启动。 当时很慌,自己的毕设还有毕业论文都在电脑里,虽然没有放到系统盘,但是也不想因此重装系统,配置开发环境。之后

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包