为了消抖或者防误撞,一般都要求电源按键,长按多长时间,设备才能真正的进入开机流程,否则就不会加载系统,在当前阶段,直接 power down 。SL8521E 的 power 按键时间检测函数为:
boot_pwr_check(), 其在 get_mode_from_keypad() 函数里面去调用。
boot_mode_enum_type get_mode_from_keypad(void)
{
uint32_t key_mode = 0;
uint32_t key_code = 0;
volatile int i;
if (boot_pwr_check() >= PWR_KEY_DETECT_CNT) {
这里的宏 PWR_KEY_DETECT_CNT 将被定义在 uboot-15/include/configs/sl8521e_3h10/sl8521e_3h10.h 的文件中。默认是2,表示2秒。
实际上,这个2s也是不精确的,如果是 userdebug 版本,有各种 debug log 输出的话,这个2s大约会拉长到5s;而user版本,没有各种 debug log,可以精确到 2s。