]>
Commit | Line | Data |
---|---|---|
5e993f12 | 1 | Index: common/environment.c |
2 | =================================================================== | |
3 | --- common/environment.c (revision 950) | |
4 | +++ common/environment.c (working copy) | |
5 | @@ -44,7 +44,7 @@ | |
6 | * Generate embedded environment table | |
7 | * inside U-Boot image, if needed. | |
8 | */ | |
9 | -#if defined(ENV_IS_EMBEDDED) | |
10 | +#if defined(ENV_IS_EMBEDDED) || (defined(ENV_IS_EMBEDDED_CUSTOM) && defined(USE_HOSTCC)) | |
11 | /* | |
12 | * Only put the environment in it's own section when we are building | |
13 | * U-Boot proper. The host based program "tools/envcrc" does not need | |
14 | Index: tools/envcrc.c | |
15 | =================================================================== | |
16 | --- tools/envcrc.c (revision 950) | |
17 | +++ tools/envcrc.c (working copy) | |
18 | @@ -23,6 +23,7 @@ | |
19 | ||
20 | #include <stdio.h> | |
21 | #include <stdlib.h> | |
22 | +#include <string.h> | |
23 | #include <unistd.h> | |
24 | ||
25 | #ifndef __ASSEMBLY__ | |
26 | @@ -68,14 +69,14 @@ | |
27 | ||
28 | extern unsigned long crc32 (unsigned long, const unsigned char *, unsigned int); | |
29 | ||
30 | -#ifdef ENV_IS_EMBEDDED | |
31 | +#if defined(ENV_IS_EMBEDDED) || defined(ENV_IS_EMBEDDED_CUSTOM) | |
32 | extern unsigned int env_size; | |
33 | extern unsigned char environment; | |
34 | #endif /* ENV_IS_EMBEDDED */ | |
35 | ||
36 | int main (int argc, char **argv) | |
37 | { | |
38 | -#ifdef ENV_IS_EMBEDDED | |
39 | +#if defined(ENV_IS_EMBEDDED) || defined(ENV_IS_EMBEDDED_CUSTOM) | |
40 | int crc; | |
41 | unsigned char *envptr = &environment, | |
42 | *dataptr = envptr + ENV_HEADER_SIZE; | |
43 | @@ -85,10 +86,27 @@ int main (int argc, char **argv) | |
44 | ||
45 | /* Check if verbose mode is activated passing a parameter to the program */ | |
46 | if (argc > 1) { | |
47 | - printf ("CRC32 from offset %08X to %08X of environment = %08X\n", | |
48 | - (unsigned int) (dataptr - envptr), | |
49 | - (unsigned int) (dataptr - envptr) + datasize, | |
50 | - crc); | |
51 | + if (!strcmp(argv[1], "--binary")) { | |
52 | + int le = (argc > 2 ? !strcmp(argv[2], "le") : 1); | |
53 | + size_t i, start, end, step; | |
54 | + if (le) { | |
55 | + start = 0; | |
56 | + end = ENV_HEADER_SIZE; | |
57 | + step = 1; | |
58 | + } else { | |
59 | + start = ENV_HEADER_SIZE - 1; | |
60 | + end = -1; | |
61 | + step = -1; | |
62 | + } | |
63 | + for (i = start; i != end; i += step) | |
64 | + printf ("%c", (crc & (0xFF << (i * 8))) >> (i * 8)); | |
65 | + fwrite (dataptr, 1, datasize, stdout); | |
66 | + } else { | |
67 | + printf ("CRC32 from offset %08X to %08X of environment = %08X\n", | |
68 | + (unsigned int) (dataptr - envptr), | |
69 | + (unsigned int) (dataptr - envptr) + datasize, | |
70 | + crc); | |
71 | + } | |
72 | } else { | |
73 | printf ("0x%08X\n", crc); | |
74 | } |