微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 奇怪!power key与PMIC的home key 在手机死机时同时按下不实现复位

奇怪!power key与PMIC的home key 在手机死机时同时按下不实现复位

时间:10-02 整理:3721RD 点击:
正常运行时,是可以复位的
但是当系统真正的死掉了,
长按这两个按键不能复位。
这两个键不都是硬件完成的吗?
为何在系统死掉后,他按进来就没有反映呢?
MT6515+MT6329

我一直至想做这个实验,但是都等不到死机那刻。另,还有一个专门的reset键可用。

好象这里软件也要设置吧  有几种组合形式

还有一个可能的原因,power+home 两个键MT6329有专门的引脚,是不是一定要这样连接才有你需要的功能?如果HOME不是直接重MT6239接出,你可以试着改成单独长按power键实现复位。祝你成功

是用PMIC上的按键的。
两种方式都验证过。
如果系统没有HOLD时,长按这两个键,是可以复位的。
但是如果已经死机了,这两个键就无法复位了。

FAQ的文档是这么说的:
  当系统hang住时,Watchdog_RESET_B会输出低给MT6329,进行reset,具体reset方式请参考 design note v0.4.
  外部通过Powerkey+Homekey搭配可以强制复位.
很明显,后面指的是系统未hang时,进行的强制复位.

这么说,是不是等于系统真被hold住,你按什么都没有意义了,只能等看门狗实现reset。换就换说,没有reset,是因为没有hold住,按键一定有效,reset必定可以实现?

MTK可能最新的软件已经解决了,我们用的是比较老的软件,所以有我说的这个问题。
就是软件死了,按power key与HOME键是可以实现reset后重启的。

按power key与HOME键软件怎么实现的,我的就不行呀,要改 reg 吗?

硬件掉电的方案有三种:
1. 单独按power key
2. 单独按home key
3. 组合键:power key + home key

硬件掉电重启分为两个步骤:先掉电,然后重启。所以如果您只单独设置为用home key来掉电,系统掉电之后,不会重启。因此,如果您按这些键的时间掌握的好的话,您会发现系统会掉电,不会重启。

建议使用方案1和方案3,下面将列举方案1和方案3的设置:

方案1:
1)preloader的设置:
(1).您可以在preload里面对该寄存器进行设置。 时间默认是8s——>这个时间只是掉电的时间,8s之后系统会掉电。如果要让系统重新启动,您需要多按2s。
请在alps\mediatek\platform\mt657*\preloader\src\drivers\Mt657*_pmic6329.c 文件中加入如下函数:
int hard_interrupt_reset(){
  U8 chip_slave_address = 0xC2;
    U8 cmd = 0x0C;
   int cmd_len = 1;
    U8 data = 0xFF;
    int data_len = 1;
   U32 result_tmp;
     U8 val=0x1;
    U8 MASK=0x1;
    U8 SHIFT=0x4;
    result_tmp = pmic6329_i2c_read(chip_slave_address, &cmd, cmd_len, &data, data_len);
    data &= ~(MASK << SHIFT);
    data |= (val << SHIFT);
    result_tmp = pmic6329_i2c_write(chip_slave_address, &cmd, cmd_len, &data, data_len);
   return result_tmp ;
  }
(2).然后在int hw_check_battery(void)这个函数中变量后面调用该函数。
这样在uboot里面硬件掉电就会起作用的。

2)kernel的设置:
mediatek\platform\mt657*\kernel\drivers\keypad\kpd.c
      the definition is as below:
  #ifdef KPD_PMIC_LPRST_TD
upmu_testmode_pwrkey_rst_en(0x01);   //enable pwrkey
upmu_testmode_homekey_rst_en(0x0);   //disable homekey
upmu_testmode_pwrkey_rst_td(KPD_PMIC_LPRST_TD); /tting timer,default 5s
3)请修改 mediatek\platform\mt657*\preloader\src\drivers\mt657*_key.c 中 mt657*_detect_key()如下:
     
      if(get_pmic6329_chip_version() == PMIC6329_E2_CID_CODE)
{
           pmic_read_interface(0x15, &just_rst, 0x01, 0x07);
           if(0)   //=======Modify this line=========
           {
                    printf("Just recover from a reset, bootup anyway\n");
                    return true;
           }
}
方案3:
1)preloader的设置:
设置步骤与方案1一样,只是需要修改如下参数:
   U8 val=0x3;
    U8 MASK=0x3;
    U8 SHIFT=0x3;
2)kernel的设置:
与方案1的区别设置如下:
upmu_testmode_homekey_rst_en(0x01);   //enable homekey  
其他的设置一样。
3)设置与方案1相同。
奇怪!power key与PMIC的home key 在手机死机时同时按下不实现复位

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

网站地图

Top