研发干货丨关于RK3399 开发板休眠、关机功能简析

文章目录power按键
   ~短按休眠和长按关机
关机命令
   ~poweroff命令关机
ok3399-c平台采用rk3399 主cpu芯片设计,支持底板power按键休眠唤醒以及关机功能,linux命令行也可以通过命令进行关机,下面对这两种方式进行简单的解析。
power按键power按键的休眠唤醒功能一般是与pmic芯片和cpu相关的,硬件上该按键会连接到pmic的pwron引脚和cpu对应的引脚上。
先来看power按键在pmic侧的响应机制,power键按下以后,经过tdbpwronf时间以后,int引脚变为低电平,触发中断。内核驱动响应中断,执行休眠程序。
如果pwron继续保持低电平超过tdpwronlp,pmic就会响应,rk3399板卡将进行关机。
rk3399短按休眠和长按关机log信息:
[   10.250531] pm: syncing filesystems ... done. [   10.255148] test message.            //加入的测试信息 [   10.256842] freezing user space processes ... (elapsed 0.003 seconds) done. [   10.260770] freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. [   10.263308] suspending console(s) (use no_console_suspend to debug) info:    sleep mode config[0xde]: info:           ap_pwroff info:           slp_armpd info:           slp_pllpd info:           ddr_ret info:           slp_center_pd info:    wakeup source config[0x804]: info:           
gpio
 interrupt can wakeup system info:           pwm interrupt can wakeup system info:    pwm config[0x4]: info:           pwm: pwm2d_regulator_en info:    apios info[0x0]: info:           not config info:    gpio power info: info:           gpio1_c1 info:           gpio1_b6 info:    pmu_mode_cong: 0x1477bf51
涉及驱动文件
kernel/kernel/power/suspend.c/** * enter_state - do common work needed to enter system sleep state. * @state: system sleep state to enter. * * make sure that no one else is trying to put the system into a sleep state. * fail if that's not the case.  otherwise, prepare for system suspend, make the * system enter the given sleep state and clean up after wakeup. */ static int enter_state(suspend_state_t state) {        int error;        trace_suspend_resume(tps(suspend_enter), state, true);        if (state == pm_suspend_freeze) { #ifdef config_pm_debug                if (pm_test_level != test_none && pm_test_level dev,                         have no rk808, so do nothing here\n);                return;        }        /* close rtc int when power off */        regmap_update_bits(rk808->regmap,                           rk808_int_sts_msk_reg1,                           (0x3 << 5), (0x3 rtc
_int_reg,                           (0x3 << 2), (0x0 regmap);                        if (ret)                                dev_err(&rk808_i2c_client->dev,                                        system power off error!\n);                        mdelay(10);                        dev_info(&rk808_i2c_client->dev,                                 cpu should never reach here, stop!\n);                        while (1)                                ;                }        } }#define dev_off_rst     bit(3) static int rk808_shutdown(struct regmap *regmap) {        int ret;        ret = regmap_update_bits(regmap,                                 rk808_devctrl_reg,                                 dev_off_rst, dev_off_rst);        return ret; }
最终调用的的rk808shutdown接口函数,对rk808devctrlreg寄存器写入devoff_rst,触发rk3399主板关机。
进入飞凌嵌入式官网>>了解关于ok3399-c开发板的更多信息。

选择最佳PCB通孔选项的7个技巧
2019年全球TV市场总结和2020年展望:预则立,不预则“怠”
诺基亚为何精简业务
如何利用树莓派的手势控制全息音频可视化器
魅族16th拆机图解 这样的做工用料还是相当超值的
研发干货丨关于RK3399 开发板休眠、关机功能简析
采用PCM编码原理及FPGA编程技术实现PCM数字基群接口传
人工智能和云计算方面的盈利怎样
巧用Altium Transparent 2D视图布置电源过孔
研华科技与讯连科技合作推出“ FaceView” AI面部识别工业应用程序
比亚迪被低估56%,到底如何才能在竞争激励的汽车市场脱颖而出?
圆形连接器报到!汽车高压连接家族再添一枚大将
电机烧机判定标准是什么样的
用算力制造算力,揭秘中兴通讯服务器及存储智能工厂
美格智能LXC容器化解决方案,轻松玩转多系统虚拟化
伺服电机靠什么为动力源进行移动
智算中心网络架构设计及组网实践案例
小米全面屏电视E55A的出色体验
助听器简介和重要的设计注意事项
数字功放芯片NTP8835和TAS5731M的对比测评