微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 待机电流问题,如何查找EINT唤醒源

待机电流问题,如何查找EINT唤醒源

时间:10-02 整理:3721RD 点击:

产生EINT的channel会记录在EINT_STA状态寄存器里面,这一点所有平台都一样;只
要知道这个状态寄存器的值就可以知道哪个channel发生了中断;但是不同平台的log
细节会有些不同。
--->89/72/82在wakeup时,如果唤醒源是EINT,会主动打印出EINT_STA的值
--->77默认不会打印这个寄存器,需要先开启EINT_DEBUG这个宏,才能看到EINT_STA
的值
kernel log分析:
--------------------------------------------------------------------------
-------------------------------------------------
【step1 - 从kernel log中找到EINT channel id】
MT6577
[power/Sleep] wake up by EINT (0X20)(0x4)(180689) (* 这里0x20是EINT
wakesrc id,0x4是sleep ISR寄存器状态,都不是channel id!)
EINT Module - EINT_STA = 0x400,--->bit[n] =1, channel id 就等于n
MT6589/MT6582
[SPM] wake up by EINT (0x20)(0x20)(370340)
EINT_STA:
3 --->这个值就是EINT channel id,不需要转换
MT6572
[PCM WAKEUP NORMAL]CPU WAKE UP BY: EINT :0x10000 --->bit[n] =1, channel id
就等于n
【step2 - 过滤PMIC触发的EINT唤醒】
pwrkey/charger/usb/这些事件发生时会有EINT产生,走的都是PMIC的EINT channel
;并且89/72平台上,rtc(比如第三方APK造成的唤醒)和其他一些中断也会走PMIC
的EINT;因此要先把PMIC EINT过滤掉,不需要去关注这个channel上的唤醒(当然
rtc唤醒的话还是要分析的,只不过并不是去分析EINT唤醒源了)。所幸PMIC的EINT
channel id是固定的,不能修改,所以可以直接看channel id来过滤,各平台的
PMIC EINT channel如下:
MT6577 9 (EINT_STA=0x400)
MT6589 3 (EINT_STA=3)
MT6572 16(EINT_STA=0x10000)
MT6582 25(EINT_STA=25)
【step3 -从cust_eint.h中找到触发EINT的模块】
CUST_EINT_XXX_NUM 对应的值就是XXX模块的EINT channel id。
如果在这个文件中没有找到造成唤醒的channel id的定义,说明可能没有用DCT Tool
去配置EINT,而是直接写死在代码里,那就尝试搜索所有调用
mt65xx_eint_registration的代码,看有没有注册这个channel id的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top