2016.09.01版u-boot问题

2019-07-16 07:55发布

U-Boot 2016.09.01 (Jul 19 2018 - 20:34:36 -0700)

CPUID: 32440001
FCLK:      400 MHz
HCLK:      100 MHz
PCLK:       50 MHz
DRAM:  64 MiB
WARNING: Caches not enabled
Flash: 0 Bytes
NAND:  256 MiB
*** Warning - bad CRC, using default environment
In:    serial
Out:   serial
Err:   serial
Net:   dm9000
Hit any key to stop autoboot:  0
JZ2440 # save
Saving Environment to NAND...
env_valid = 1

saveenv函数原型在common/env_nand.c文件 第一行是我加的打印没有执行


int saveenv(void)
{
        printf("saveenv() ");
        int     ret = 0;
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
        int     env_idx = 0;
        static const struct env_location location[] = {
                {
                        .name = "NAND",
                        .erase_opts = {
                                .length = CONFIG_ENV_RANGE,
                                .offset = CONFIG_ENV_OFFSET,
                        },
                },
#ifdef CONFIG_ENV_OFFSET_REDUND
                {
                        .name = "redundant NAND",
                        .erase_opts = {
                                .length = CONFIG_ENV_RANGE,
                                .offset = CONFIG_ENV_OFFSET_REDUND,
                        },
                },
#endif
        };
        if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
                return 1;
        ret = env_export(env_new);
        if (ret)
                return ret;


#ifdef CONFIG_ENV_OFFSET_REDUND
        env_new->flags = ++env_flags; /* increase the serial */
        env_idx = (gd->env_valid == 1);
#endif

        ret = erase_and_write_env(&location[env_idx], (u_char *)env_new);
#ifdef CONFIG_ENV_OFFSET_REDUND
        if (!ret) {
                /* preset other copy for next write */
                gd->env_valid = gd->env_valid == 2 ? 1 : 2;
                return ret;
        }

        env_idx = (env_idx + 1) & 1;
        ret = erase_and_write_env(&location[env_idx], (u_char *)env_new);
        if (!ret)
                printf("Warning: primary env write failed,"
                                " redundancy is lost! ");
#endif

        return ret;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。