summaryrefslogtreecommitdiff
path: root/cleopatre/u-boot-1.1.6/common
diff options
context:
space:
mode:
authorsave2010-06-10 08:13:04 +0000
committersave2010-06-10 08:13:04 +0000
commit1e7eb50f83d9a8594cecfdc77352a1288ba7f6a3 (patch)
treeb33bcab92bc9f9e2e379f3fb43944b1e5131630a /cleopatre/u-boot-1.1.6/common
parent5d91138f67a6636bc66e2bbc13a8dc43af4477ad (diff)
cleo/u-boot: print version string of each image on each boot, closes #1599
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@7185 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cleopatre/u-boot-1.1.6/common')
-rw-r--r--cleopatre/u-boot-1.1.6/common/cmd_spidboot.c38
1 files changed, 26 insertions, 12 deletions
diff --git a/cleopatre/u-boot-1.1.6/common/cmd_spidboot.c b/cleopatre/u-boot-1.1.6/common/cmd_spidboot.c
index 2b150b8ef8..f80352d4a0 100644
--- a/cleopatre/u-boot-1.1.6/common/cmd_spidboot.c
+++ b/cleopatre/u-boot-1.1.6/common/cmd_spidboot.c
@@ -238,9 +238,9 @@ static int check_img(spidcom_image_desc_t *desc, char *addr)
return IMAGE_NOT_VALID;
}
- /* Now check other flagas... */
+ /* Now check other flags... */
- if ( strcmp(desc->magic, SPIDCOM_IMG_DESC_MAGIC) )
+ if ( memcmp(desc->magic, SPIDCOM_IMG_DESC_MAGIC, sizeof(desc->magic)) )
{
desc->is_valid = 0;
/* Mark descriptor has changed to write this new value under flash */
@@ -341,6 +341,7 @@ static int select_image(int img_nb)
spidcom_image_desc_t *desc;
int img_state[MAX_IMG] = {0};
ulong max_index = 0;
+ char img_version[17];
int i;
for (i=0; i<img_nb; i++)
@@ -349,10 +350,20 @@ static int select_image(int img_nb)
load_header(desc, (char *)img_addr[i]);
img_state[i] = check_img(desc, (char *)img_addr[i]);
+ if(!memcmp(desc->magic, SPIDCOM_IMG_DESC_MAGIC, sizeof(desc->magic)))
+ {
+ strncpy(img_version, desc->version, sizeof(img_version));
+ img_version[sizeof(img_version)-1] = '\0';
+ }
+ else
+ {
+ strcpy(img_version, "Unknown");
+ }
+
switch(img_state[i])
{
case IMAGE_OK:
- printf("IMG at address %#x is OK.\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is OK.\n", img_version, img_addr[i]);
if (desc->index >= max_index)
{
max_index = desc->index;
@@ -361,35 +372,35 @@ static int select_image(int img_nb)
break;
case IMAGE_OK_ORIGIN:
- printf("IMG at address %#x is OK.\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is OK.\n", img_version, img_addr[i]);
break;
case BAD_MAGIC_NUMBER:
- printf("IMG at address %#x is not OK (bad magic number).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (bad magic number).\n", img_version, img_addr[i]);
break;
case WRONG_IMAGE_ARCH:
- printf("IMG at address %#x is not OK (architecture error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (architecture error).\n", img_version, img_addr[i]);
break;
case WRONG_IMAGE_TYPE:
- printf("IMG at address %#x is not OK (type error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (type error).\n", img_version, img_addr[i]);
break;
case UPD_NOT_FINISHED:
- printf("IMG at address %#x is not OK (update error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (update error).\n", img_version, img_addr[i]);
break;
case INDEX_NOT_VALID:
- printf("IMG at address %#x is not OK (index error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (index error).\n", img_version, img_addr[i]);
break;
case IMAGE_NOT_SUCCESS:
- printf("IMG at address %#x is not OK (image error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (image error).\n", img_version, img_addr[i]);
break;
default: /* IMAGE_NOT_VALID */
- printf("IMG at address %#x is not OK (valid error).\n", img_addr[i]);
+ printf("IMG (%-16s) at address %#x is not OK (valid error).\n", img_version, img_addr[i]);
}
}
@@ -450,6 +461,7 @@ int do_spidboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong img_0_addr;
ulong img_max_size;
int sel_img = -1; /* image selected for boot after all the checks */
+ char img_version[17];
#ifdef CONFIG_CMDLINE_TAG
char *commandline = getenv ("bootargs");
@@ -515,7 +527,9 @@ int do_spidboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
* selected image => we will not check it's validity */
}
- printf ("## Booting image at 0x%08lx ...\n", addr);
+ strncpy(img_version, hdr->version, sizeof(img_version));
+ img_version[sizeof(img_version)-1] = '\0';
+ printf ("## Booting image \"%s\" at 0x%08lx ...\n", img_version, addr);
/* do the image transfer */
data = (int)addr + sizeof(spidcom_image_desc_t);