[Firefly-RK3399] U-Boot配置U盘启动

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Firefly-RK3399] U-Boot配置U盘启动相关的知识,希望对你有一定的参考价值。

1、原理

RK3399默认不能从maskrom模式直接启动U盘中的BootLoader,因此需要别的存储媒介在U-Boot阶段读取U盘中的内核。

下面是U-Boot代码中U盘启动的代码部分,位于arch/arm/mach-rockchip/board.c

#ifdef CONFIG_ROCKCHIP_USB_BOOT
static int boot_from_udisk(void)
{
        struct blk_desc *desc;
        char *devtype;
        char *devnum;

        devtype = env_get("devtype");
        devnum = env_get("devnum");

        /* Booting priority: mmc1 > udisk */
        if (!strcmp(devtype, "mmc") && !strcmp(devnum, "1"))
                return 0;

        if (!run_command("usb start", -1)) {
                desc = blk_get_devnum_by_type(IF_TYPE_USB, 0);
                if (!desc) {
                        printf("No usb device found\\n");
                        return -ENODEV;
                }

                if (!run_command("rkimgtest usb 0", -1)) {
                        rockchip_set_bootdev(desc);
                        env_set("devtype", "usb");
                        env_set("devnum", "0");
                        printf("Boot from usb 0\\n");
                } else {
                        printf("No usb dev 0 found\\n");
                        return -ENODEV;
                }
        }

        return 0;
}
#endif

2、config配置

CONFIG_ROCKCHIP_USB_BOOT

3、编译

./make.sh firefly-rk3399

4、烧写

把编译生成的uboot.img烧写到eMMC:

sudo ../tools/linux/Linux_Upgrade_Tool/upgrade_tool di -u uboot.img

以上是关于[Firefly-RK3399] U-Boot配置U盘启动的主要内容,如果未能解决你的问题,请参考以下文章

[Firefly-RK3399] U-Boot shell中增加saveenv命令

[Firefly-RK3399] U-Boot配置启动时进入启动菜单bootmenu

[Firefly-RK3399] U-Boot适配红外遥控器IR

__Firefly专栏文章导航与优秀笔记整理(2021.11.27更新)

技术案例Firefly-RK3399多路视频编解码

Firefly-RK3399笔记