【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模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章