【rk3399】AIO-3399J Linux_SDK Recovery按键无法进入Loader模式

    使用wiki页面Linux_SDK链接下载得到的old版本SDK压缩包。

按照创建ubuntu rootfs和打包固件的教程制作的Linux固件,实际使用发现按住Recovery无法进入Laoder模式,log中输出包含

download key pressed... entering recovery mode!

而Linux固件没有Recover分区,因此转而进入正常启动模式。还好进入系统后可以使用reboot参数进入。

sudo reboot loader

loader是作为可选参数传入,推测进入loader的相应驱动是在kernel中实现。

    回到正题,寻找uboot中关于按键检测和启动模式的关键地方:

board_late_init(void)->
    setup_boot_mode(void)->
        rockchip_dnl_mode_check(void)->这条函数下一条是更新启动模式并执行,但实际需要修改的是这条;
            rockchip_u2phy_vbus_detect()->

        跟踪发现这条函数始终返回0,查找源码有两处定义,但跟踪发现却都没有运行,仔细寻找发现头文件中有这样一处定义:

static inline int rockchip_u2phy_vbus_detect(void)

转到头文件查看

#if defined(CONFIG_PHY_ROCKCHIP_INNO_USB2) || defined(CONFIG_ROCKCHIP_USB2_PHY)
int rockchip_u2phy_vbus_detect(void);
#else
static inline int rockchip_u2phy_vbus_detect(void)
{
	return -ENOSYS;
}
#endif

搜索源码,发现CONFIG_PHY_ROCKCHIP_INNO_USB2使用较多,通过menuconfig查找并使能宏和相关依赖,编译烧入后OTG HOST检测正常,再OTG口连接了HOST的情况下按住Recovery重启可正常进入loader模式。

你可能感兴趣的:(rk3399)