
Hi Lukasz,
On Sun, Jul 12, 2015 at 10:30 AM, Lukasz Majewski l.majewski@majess.pl wrote:
This code allows using DFU defined mediums for storing data received via TFTP protocol.
It reuses legacy code at common/update.c.
To run update_tftp() during boot one needs to define "update_tftp_exec_at_boot=true".
Signed-off-by: Lukasz Majewski l.majewski@majess.pl
common/update.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/common/update.c b/common/update.c index 75c6d62..f3ed036 100644 --- a/common/update.c +++ b/common/update.c @@ -18,6 +18,7 @@ #include <net.h> #include <tftp.h> #include <malloc.h> +#include <dfu.h>
/* env variable holding the location of the update file */ #define UPDATE_FILE_ENV "updatefile" @@ -224,11 +225,18 @@ static int update_fit_getparams(const void *fit, int noffset, ulong *addr,
int update_tftp(ulong addr) {
char *filename, *env_addr;
int images_noffset, ndepth, noffset;
char *filename, *env_addr, *fit_image_name; ulong update_addr, update_fladdr, update_size;
void *fit;
int images_noffset, ndepth, noffset;
bool update_tftp_dfu = false; int ret = 0;
void *fit;
if (!getenv("update_tftp_exec_at_boot"))
return 0;
if (getenv("update_tftp_dfu"))
update_tftp_dfu = true;
As I mentioned in the documentation patch, it would be nice to split these out and drop the env vars.
/* use already present image */ if (addr)
@@ -277,8 +285,8 @@ got_update_file: if (ndepth != 1) goto next_node;
printf("Processing update '%s' :",
fit_get_name(fit, noffset, NULL));
fit_image_name = (char *)fit_get_name(fit, noffset, NULL);
printf("Processing update '%s' :", fit_image_name); if (!fit_image_verify(fit, noffset)) { printf("Error: invalid update hash, aborting\n");
@@ -294,10 +302,21 @@ got_update_file: ret = 1; goto next_node; }
if (update_flash(update_addr, update_fladdr, update_size)) {
printf("Error: can't flash update, aborting\n");
ret = 1;
goto next_node;
if (!update_tftp_dfu) {
if (update_flash(update_addr, update_fladdr,
update_size)) {
printf("Error: can't flash update, aborting\n");
ret = 1;
goto next_node;
}
} else if (fit_image_check_type(fit, noffset,
IH_TYPE_FIRMWARE)) {
if (dfu_tftp_write(fit_image_name,
update_addr, update_size)) {
ret = 1;
goto next_node;
} }
next_node: noffset = fdt_next_node(fit, noffset, &ndepth); -- 2.1.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot