修改u-boot:u-boot\common\board_r.c
#include <key.h>
#include <boot_rkimg.h>
在static int run_main_loop(void)
{
init_key_pwr_down, //调用,等待按键
run_main_loop,
};
static int init_key_pwr_down(void)
{
printf("winfu enter init_key_pwr_down | CTR + C ... \n");
int gpio = 96; // gpio3_0 led
int ret = gpio_request(gpio, "led_gpio");
if (ret && ret != -EBUSY) {
printf("gpio: requesting pin %u failed\n", gpio);
}
gpio_direction_output(gpio, 0);
while(1)
{
int state = key_is_pressed(key_read(KEY_POWER)); //接收power按键按下
if(state ==1)
{
gpio_direction_output(gpio, 1); //按键指示灯
break;
}
char *p = env_get("preboot"); //过滤软件reboot,以及recovery重启
if (p != NULL) {
break;
}
int boot_mode = rockchip_get_boot_mode(); //过滤软件reboot,以及recovery重启
if (boot_mode != BOOT_MODE_UNDEFINE) {
break;
}
if (ctrlc()) { //增加ctr+c 开机,主要是调试方便,不用按按键
printf("CTR + C break ... \n");
break;
}
}
return 0;
}