4,465
社区成员




Saving Environment to Flash...
Protect off 01020000 ... 0102FFFF
Un-Protected 1 sectors
Erasing Flash... [XXXXX]
Error: Erase Failure!
Erased 1 sectors
Writing to Flash... ********#
Error: Program Failure!
done
Protected 1 sectors
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
netmask=255.255.255.0
gatewayip=10.10.52.1
serverip=192.168.2.121
ipaddr=192.168.2.120
getwayip=192.168.2.1
Environment size: 162/65532 bytes
int saveenv(void)
{
int rc = 1;
printf ("Protect off %08lX ... %08lX\n",
(ulong)flash_addr, end_addr);
if (flash_sect_protect (0, (ulong)flash_addr, end_addr)) {
goto Done;
}
debug ("Protect off %08lX ... %08lX\n",
(ulong)flash_addr_new, end_addr_new);
if (flash_sect_protect (0, (ulong)flash_addr_new, end_addr_new)) {
goto Done;
}
puts ("Erasing Flash...");
debug (" %08lX ... %08lX ...",
(ulong)flash_addr_new, end_addr_new);
if (flash_sect_erase ((ulong)flash_addr_new, end_addr_new)) {
goto Done;
}
puts ("Writing to Flash... ");
debug (" %08lX ... %08lX ...",
(ulong)&(flash_addr_new->data),
sizeof(env_ptr->data)+(ulong)&(flash_addr_new->data));
if (flash_write(env_ptr->data,
(ulong)&(flash_addr_new->data),
sizeof(env_ptr->data)) ||
flash_write((char *)&(env_ptr->crc),
(ulong)&(flash_addr_new->crc),
sizeof(env_ptr->crc)) ||
flash_write((char *)&obsolete_flag,
(ulong)&(flash_addr->flags),
sizeof(flash_addr->flags)) ||
flash_write((char *)&active_flag,
(ulong)&(flash_addr_new->flags),
sizeof(flash_addr_new->flags)))
{
flash_perror (rc);
goto Done;
}
puts ("done\n");
{
env_t * etmp = flash_addr;
ulong ltmp = end_addr;
flash_addr = flash_addr_new;
flash_addr_new = etmp;
end_addr = end_addr_new;
end_addr_new = ltmp;
}
rc = 0;
Done:
/* try to re-protect */
(void) flash_sect_protect (1, (ulong)flash_addr, end_addr);
(void) flash_sect_protect (1, (ulong)flash_addr_new, end_addr_new);
return rc;
}