void env_relocate (void)
{
if (gd->env_valid == 0) {
puts ("*** Warning - bad CRC, using default environment\n\n");
show_boot_progress (-60);
set_default_env();
}
else {
env_relocate_spec ();
}
gd->env_addr = (ulong)&(env_ptr->data);
}
void env_relocate_spec (void)
{
#if !defined(ENV_IS_EMBEDDED)
int ret;
ret = readenv(CONFIG_ENV_OFFSET, (u_char *) env_ptr);
if (ret)
return use_default();
if (crc32(0, env_ptr->data, ENV_SIZE) != env_ptr->crc)
return use_default();
#endif /* ! ENV_IS_EMBEDDED */
}
该代码段涉及环境变量的处理,当环境数据的CRC校验失败时,警告并使用默认环境。它读取环境块,验证其CRC,并在必要时使用默认设置。函数voidenv_relocate()检查环境的有效性,而voidenv_relocate_spec()专注于特定的环境重定位操作。

594

被折叠的 条评论
为什么被折叠?



