If no softreset save registers are found on the hardware "bootcount" is stored in the environment. To prevent a saveenv on all reboots, the environment variable "upgrade_available" is introduced. If "upgrade_available" is 0, "bootcount" is always 0 therefore no need to save the environment on u-boot boot, if "upgrade_available" is 1 "bootcount" is incremented in the environment and environment gets written on u-boot start. So the Userspace Applikation must set the "upgrade_available" and "bootcount" variable to 0 (for example with fw_setenv), if a boot was successfully. Signed-off-by: Heiko Schocher <hs@denx.de>master
parent
85b8c5c4bf
commit
eda0ba38a8
@ -0,0 +1,29 @@ |
||||
/*
|
||||
* (C) Copyright 2013 |
||||
* Heiko Schocher, DENX Software Engineering, hs@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
|
||||
void bootcount_store(ulong a) |
||||
{ |
||||
int upgrade_available = getenv_ulong("upgrade_available", 10, 0); |
||||
|
||||
if (upgrade_available) { |
||||
setenv_ulong("bootcount", a); |
||||
saveenv(); |
||||
} |
||||
} |
||||
|
||||
ulong bootcount_load(void) |
||||
{ |
||||
int upgrade_available = getenv_ulong("upgrade_available", 10, 0); |
||||
ulong val = 0; |
||||
|
||||
if (upgrade_available) |
||||
val = getenv_ulong("bootcount", 10, 0); |
||||
|
||||
return val; |
||||
} |
Loading…
Reference in new issue