首页 > 其他 > 详细

u-boot qspi driver何时加载的

时间:2020-11-15 18:19:28      阅读:74      评论:0      收藏:0      [点我收藏+]

通过打印信息抓到

 

fdtdec_get_config_int: load-environment
Loading Environment from SPI Flash

之后开始加载qspi driver

 

initr_env

  should_load_env

    env_relocate  

      env_load

static int initr_env(void)
{
    /* initialize environment */
    if (should_load_env()) //返回1 执行env_relocate
env_relocate();
else set_default_env(NULL); #ifdef CONFIG_OF_CONTROL env_set_addr("fdtcontroladdr", gd->fdt_blob); #endif /* Initialize from environment */ load_addr = env_get_ulong("loadaddr", 16, load_addr); return 0; }

 

static int should_load_env(void)
{
#ifdef CONFIG_OF_CONTROL
    return fdtdec_get_config_int(gd->fdt_blob, "load-environment", 1); //返回1
#elif defined CONFIG_DELAY_ENVIRONMENT
    return 0;
#else
    return 1;
#endif
}
int fdtdec_get_config_int(const void *blob, const char *prop_name,
              int default_val)
{
    int config_node;

    debug("%s: %s\n", __func__, prop_name);
    config_node = fdt_path_offset(blob, "/config"); //没有config这个节点 config_node <0
if (config_node < 0) return default_val; //返回1 return fdtdec_get_int(blob, config_node, prop_name, default_val); }

 

void env_relocate(void)
{
#if defined(CONFIG_NEEDS_MANUAL_RELOC) //不执行
    env_reloc();
    env_fix_drivers();
    env_htab.change_ok += gd->reloc_off;
#endif
    if (gd->env_valid == ENV_INVALID) { //board_init_f env_init gd->env_valid = ENV_VALID;
#if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_SPL_BUILD)
        /* Environment not changable */
        set_default_env(NULL);
#else
        bootstage_error(BOOTSTAGE_ID_NET_CHECKSUM);
        set_default_env("!bad CRC");
#endif
    } else {
        env_load();
    }
}
int env_load(void)
{
    struct env_driver *drv; 
    int prio;

    for (prio = 0; (drv = env_driver_lookup(ENVOP_LOAD, prio)); prio++) {
        int ret;

        if (!drv->load)
            continue;

        if (!env_has_inited(drv->location))
            continue;

        printf("Loading Environment from %s... ", drv->name);
        ret = drv->load(); //此处感觉先要加载qpsi controller的驱动
        if (ret)
            printf("Failed (%d)\n", ret);
        else
            printf("OK\n");

        if (!ret)
            return 0;
    }

    return -ENODEV;
}

 

 

config_node 

u-boot qspi driver何时加载的

原文:https://www.cnblogs.com/idyllcheung/p/13977572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!