mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
[new uImage] Use show_boot_progress() for new uImage format
This patch allocates a set of show_boot_progress() IDs for new uImage format and adds show_boot_progress() calls in new uImage format handling code. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
This commit is contained in:
parent
c28c4d193d
commit
1372cce2b9
6 changed files with 125 additions and 24 deletions
83
README
83
README
|
@ -1659,6 +1659,8 @@ The following options need to be configured:
|
|||
example, some LED's) on your board. At the moment,
|
||||
the following checkpoints are implemented:
|
||||
|
||||
Legacy uImage format:
|
||||
|
||||
Arg Where When
|
||||
1 common/cmd_bootm.c before attempting to boot an image
|
||||
-1 common/cmd_bootm.c Image header has bad magic number
|
||||
|
@ -1669,25 +1671,26 @@ The following options need to be configured:
|
|||
4 common/cmd_bootm.c Image data has correct checksum
|
||||
-4 common/cmd_bootm.c Image is for unsupported architecture
|
||||
5 common/cmd_bootm.c Architecture check OK
|
||||
-5 common/cmd_bootm.c Wrong Image Type (not kernel, multi, standalone)
|
||||
-5 common/cmd_bootm.c Wrong Image Type (not kernel, multi)
|
||||
6 common/cmd_bootm.c Image Type check OK
|
||||
-6 common/cmd_bootm.c gunzip uncompression error
|
||||
-7 common/cmd_bootm.c Unimplemented compression type
|
||||
7 common/cmd_bootm.c Uncompression OK
|
||||
-8 common/cmd_bootm.c Wrong Image Type (not kernel, multi, standalone)
|
||||
8 common/cmd_bootm.c Image Type check OK
|
||||
8 common/cmd_bootm.c No uncompress/copy overwrite error
|
||||
-9 common/cmd_bootm.c Unsupported OS (not Linux, BSD, VxWorks, QNX)
|
||||
9 common/cmd_bootm.c Start initial ramdisk verification
|
||||
-10 common/cmd_bootm.c Ramdisk header has bad magic number
|
||||
-11 common/cmd_bootm.c Ramdisk header has bad checksum
|
||||
10 common/cmd_bootm.c Ramdisk header is OK
|
||||
-12 common/cmd_bootm.c Ramdisk data has bad checksum
|
||||
11 common/cmd_bootm.c Ramdisk data has correct checksum
|
||||
12 common/cmd_bootm.c Ramdisk verification complete, start loading
|
||||
-13 common/cmd_bootm.c Wrong Image Type (not PPC Linux Ramdisk)
|
||||
13 common/cmd_bootm.c Start multifile image verification
|
||||
14 common/cmd_bootm.c No initial ramdisk, no multifile, continue.
|
||||
15 common/cmd_bootm.c All preparation done, transferring control to OS
|
||||
|
||||
9 common/image.c Start initial ramdisk verification
|
||||
-10 common/image.c Ramdisk header has bad magic number
|
||||
-11 common/image.c Ramdisk header has bad checksum
|
||||
10 common/image.c Ramdisk header is OK
|
||||
-12 common/image.c Ramdisk data has bad checksum
|
||||
11 common/image.c Ramdisk data has correct checksum
|
||||
12 common/image.c Ramdisk verification complete, start loading
|
||||
-13 common/image.c Wrong Image Type (not PPC Linux Ramdisk)
|
||||
13 common/image.c Start multifile image verification
|
||||
14 common/image.c No initial ramdisk, no multifile, continue.
|
||||
|
||||
15 lib_<arch>/bootm.c All preparation done, transferring control to OS
|
||||
|
||||
-30 lib_ppc/board.c Fatal error, hang the system
|
||||
-31 post/post.c POST test failed, detected by post_output_backlog()
|
||||
|
@ -1757,6 +1760,58 @@ The following options need to be configured:
|
|||
-83 common/cmd_net.c some error in automatic boot or autoscript
|
||||
84 common/cmd_net.c end without errors
|
||||
|
||||
FIT uImage format:
|
||||
|
||||
Arg Where When
|
||||
100 common/cmd_bootm.c Kernel FIT Image has correct format
|
||||
-100 common/cmd_bootm.c Kernel FIT Image has incorrect format
|
||||
101 common/cmd_bootm.c No Kernel subimage unit name, using configuration
|
||||
-101 common/cmd_bootm.c Can't get configuration for kernel subimage
|
||||
102 common/cmd_bootm.c Kernel unit name specified
|
||||
-103 common/cmd_bootm.c Can't get kernel subimage node offset
|
||||
104 common/cmd_bootm.c Got kernel subimage node offset
|
||||
-104 common/cmd_bootm.c Kernel subimage hash verification failed
|
||||
105 common/cmd_bootm.c Kernel subimage hash verification OK
|
||||
-105 common/cmd_bootm.c Kernel subimage is for unsupported architecture
|
||||
106 common/cmd_bootm.c Architecture check OK
|
||||
-106 common/cmd_bootm.c Kernel subimage has wrong typea
|
||||
107 common/cmd_bootm.c Kernel subimge type OK
|
||||
-107 common/cmd_bootm.c Can't get kernel subimage data/size
|
||||
108 common/cmd_bootm.c Got kernel subimage data/size
|
||||
-108 common/cmd_bootm.c Wrong image type (not legacy, FIT)
|
||||
-109 common/cmd_bootm.c Can't get kernel subimage type
|
||||
-110 common/cmd_bootm.c Can't get kernel subimage comp
|
||||
-111 common/cmd_bootm.c Can't get kernel subimage os
|
||||
-112 common/cmd_bootm.c Can't get kernel subimage load address
|
||||
-113 common/cmd_bootm.c Image uncompress/copy overwrite error
|
||||
|
||||
120 common/image.c Start initial ramdisk verification
|
||||
-120 common/image.c Ramdisk FIT image has incorrect format
|
||||
121 common/image.c Ramdisk FIT image has correct format
|
||||
122 common/image.c No Ramdisk subimage unit name, using configuration
|
||||
-122 common/image.c Can't get configuration for ramdisk subimage
|
||||
123 common/image.c Ramdisk unit name specified
|
||||
-124 common/image.c Can't get ramdisk subimage node offset
|
||||
125 common/image.c Got ramdisk subimage node offset
|
||||
-125 common/image.c Ramdisk subimage hash verification failed
|
||||
126 common/image.c Ramdisk subimage hash verification OK
|
||||
-126 common/image.c Ramdisk subimage for unsupported architecture
|
||||
127 common/image.c Architecture check OK
|
||||
-127 common/image.c Can't get ramdisk subimage data/size
|
||||
128 common/image.c Got ramdisk subimage data/size
|
||||
129 common/image.c Can't get ramdisk load address
|
||||
-129 common/image.c Got ramdisk load address
|
||||
|
||||
-130 common/cmd_doc.c Icorrect FIT image format
|
||||
131 common/cmd_doc.c FIT image format OK
|
||||
|
||||
-140 common/cmd_ide.c Icorrect FIT image format
|
||||
141 common/cmd_ide.c FIT image format OK
|
||||
|
||||
-150 common/cmd_nand.c Icorrect FIT image format
|
||||
151 common/cmd_nand.c FIT image format OK
|
||||
|
||||
|
||||
Modem Support:
|
||||
--------------
|
||||
|
||||
|
|
|
@ -155,8 +155,6 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
|
||||
show_boot_progress (6);
|
||||
|
||||
/* get image parameters */
|
||||
switch (genimg_get_format (os_hdr)) {
|
||||
case IMAGE_FORMAT_LEGACY:
|
||||
|
@ -172,18 +170,21 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
if (fit_image_get_type (images.fit_hdr_os,
|
||||
images.fit_noffset_os, &type)) {
|
||||
puts ("Can't get image type!\n");
|
||||
show_boot_progress (-109);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (fit_image_get_comp (images.fit_hdr_os,
|
||||
images.fit_noffset_os, &comp)) {
|
||||
puts ("Can't get image compression!\n");
|
||||
show_boot_progress (-110);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (fit_image_get_os (images.fit_hdr_os,
|
||||
images.fit_noffset_os, &os)) {
|
||||
puts ("Can't get image OS!\n");
|
||||
show_boot_progress (-111);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -192,6 +193,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
if (fit_image_get_load (images.fit_hdr_os, images.fit_noffset_os,
|
||||
&load_start)) {
|
||||
puts ("Can't get image load address!\n");
|
||||
show_boot_progress (-112);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
@ -284,6 +286,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
debug ("load_start = 0x%lx, load_end = 0x%lx\n", load_start, load_end);
|
||||
|
||||
puts ("ERROR: image overwritten - must RESET the board to recover.\n");
|
||||
show_boot_progress (-113);
|
||||
do_reset (cmdtp, flag, argc, argv);
|
||||
}
|
||||
|
||||
|
@ -416,21 +419,27 @@ static int fit_check_kernel (const void *fit, int os_noffset, int verify)
|
|||
puts (" Verifying Hash Integrity ... ");
|
||||
if (!fit_image_check_hashes (fit, os_noffset)) {
|
||||
puts ("Bad Data Hash\n");
|
||||
show_boot_progress (-104);
|
||||
return 0;
|
||||
}
|
||||
puts ("OK\n");
|
||||
}
|
||||
show_boot_progress (105);
|
||||
|
||||
if (!fit_image_check_target_arch (fit, os_noffset)) {
|
||||
puts ("Unsupported Architecture\n");
|
||||
show_boot_progress (-105);
|
||||
return 0;
|
||||
}
|
||||
|
||||
show_boot_progress (106);
|
||||
if (!fit_image_check_type (fit, os_noffset, IH_TYPE_KERNEL)) {
|
||||
puts ("Not a kernel image\n");
|
||||
show_boot_progress (-106);
|
||||
return 0;
|
||||
}
|
||||
|
||||
show_boot_progress (107);
|
||||
return 1;
|
||||
}
|
||||
#endif /* CONFIG_FIT */
|
||||
|
@ -515,6 +524,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
|
|||
images->legacy_hdr_os = hdr;
|
||||
images->legacy_hdr_valid = 1;
|
||||
|
||||
show_boot_progress (6);
|
||||
break;
|
||||
#if defined(CONFIG_FIT)
|
||||
case IMAGE_FORMAT_FIT:
|
||||
|
@ -524,8 +534,10 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
|
|||
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
puts ("Bad FIT kernel image format!\n");
|
||||
show_boot_progress (-100);
|
||||
return NULL;
|
||||
}
|
||||
show_boot_progress (100);
|
||||
|
||||
if (!fit_uname_kernel) {
|
||||
/*
|
||||
|
@ -533,29 +545,38 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
|
|||
* node first. If config unit node name is NULL
|
||||
* fit_conf_get_node() will try to find default config node
|
||||
*/
|
||||
show_boot_progress (101);
|
||||
conf_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
|
||||
if (conf_noffset < 0)
|
||||
if (conf_noffset < 0) {
|
||||
show_boot_progress (-101);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
os_noffset = fit_conf_get_kernel_node (fit_hdr, conf_noffset);
|
||||
fit_uname_kernel = fit_get_name (fit_hdr, os_noffset, NULL);
|
||||
} else {
|
||||
/* get kernel component image node offset */
|
||||
show_boot_progress (102);
|
||||
os_noffset = fit_image_get_node (fit_hdr, fit_uname_kernel);
|
||||
}
|
||||
if (os_noffset < 0)
|
||||
if (os_noffset < 0) {
|
||||
show_boot_progress (-103);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
printf (" Trying '%s' kernel subimage\n", fit_uname_kernel);
|
||||
|
||||
show_boot_progress (104);
|
||||
if (!fit_check_kernel (fit_hdr, os_noffset, images->verify))
|
||||
return NULL;
|
||||
|
||||
/* get kernel image data address and length */
|
||||
if (fit_image_get_data (fit_hdr, os_noffset, &data, &len)) {
|
||||
puts ("Could not find kernel subimage data!\n");
|
||||
show_boot_progress (-107);
|
||||
return NULL;
|
||||
}
|
||||
show_boot_progress (108);
|
||||
|
||||
*os_len = len;
|
||||
*os_data = (ulong)data;
|
||||
|
@ -566,6 +587,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
|
|||
#endif
|
||||
default:
|
||||
printf ("Wrong Image Format for %s command\n", cmdtp->name);
|
||||
show_boot_progress (-108);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -276,9 +276,11 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
case IMAGE_FORMAT_FIT:
|
||||
fit_hdr = (const void *)addr;
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
show_boot_progress (-130);
|
||||
puts ("** Bad FIT image format\n");
|
||||
return 1;
|
||||
}
|
||||
show_boot_progress (131);
|
||||
puts ("Fit image detected...\n");
|
||||
|
||||
cnt = fit_get_size (fit_hdr);
|
||||
|
|
|
@ -470,9 +470,11 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
case IMAGE_FORMAT_FIT:
|
||||
fit_hdr = (const void *)addr;
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
show_boot_progress (-140);
|
||||
puts ("** Bad FIT image format\n");
|
||||
return 1;
|
||||
}
|
||||
show_boot_progress (141);
|
||||
puts ("Fit image detected...\n");
|
||||
|
||||
cnt = fit_get_size (fit_hdr);
|
||||
|
|
|
@ -528,9 +528,11 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
|
|||
case IMAGE_FORMAT_FIT:
|
||||
fit_hdr = (const void *)addr;
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
show_boot_progress (-150);
|
||||
puts ("** Bad FIT image format\n");
|
||||
return 1;
|
||||
}
|
||||
show_boot_progress (151);
|
||||
puts ("Fit image detected...\n");
|
||||
|
||||
cnt = fit_get_size (fit_hdr);
|
||||
|
@ -1020,9 +1022,11 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
case IMAGE_FORMAT_FIT:
|
||||
fit_hdr = (const void *)addr;
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
show_boot_progress (-150);
|
||||
puts ("** Bad FIT image format\n");
|
||||
return 1;
|
||||
}
|
||||
show_boot_progress (151);
|
||||
puts ("Fit image detected...\n");
|
||||
|
||||
cnt = fit_get_size (fit_hdr);
|
||||
|
|
|
@ -397,10 +397,7 @@ inline void image_print_contents_noindent (image_header_t *hdr)
|
|||
static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
|
||||
int verify)
|
||||
{
|
||||
image_header_t *rd_hdr;
|
||||
|
||||
show_boot_progress (9);
|
||||
rd_hdr = (image_header_t *)rd_addr;
|
||||
image_header_t *rd_hdr = (image_header_t *)rd_addr;
|
||||
|
||||
if (!image_check_magic (rd_hdr)) {
|
||||
puts ("Bad Magic Number\n");
|
||||
|
@ -830,6 +827,7 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
|
|||
printf ("## Loading init Ramdisk from Legacy "
|
||||
"Image at %08lx ...\n", rd_addr);
|
||||
|
||||
show_boot_progress (9);
|
||||
rd_hdr = image_get_ramdisk (rd_addr, arch,
|
||||
images->verify);
|
||||
|
||||
|
@ -846,10 +844,13 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
|
|||
printf ("## Loading init Ramdisk from FIT "
|
||||
"Image at %08lx ...\n", rd_addr);
|
||||
|
||||
show_boot_progress (120);
|
||||
if (!fit_check_format (fit_hdr)) {
|
||||
puts ("Bad FIT ramdisk image format!\n");
|
||||
show_boot_progress (-120);
|
||||
return 0;
|
||||
}
|
||||
show_boot_progress (121);
|
||||
|
||||
if (!fit_uname_ramdisk) {
|
||||
/*
|
||||
|
@ -857,37 +858,48 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
|
|||
* node first. If config unit node name is NULL
|
||||
* fit_conf_get_node() will try to find default config node
|
||||
*/
|
||||
show_boot_progress (122);
|
||||
conf_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
|
||||
if (conf_noffset < 0)
|
||||
if (conf_noffset < 0) {
|
||||
show_boot_progress (-122);
|
||||
return 0;
|
||||
}
|
||||
|
||||
rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, conf_noffset);
|
||||
fit_uname_ramdisk = fit_get_name (fit_hdr, rd_noffset, NULL);
|
||||
} else {
|
||||
/* get ramdisk component image node offset */
|
||||
show_boot_progress (123);
|
||||
rd_noffset = fit_image_get_node (fit_hdr, fit_uname_ramdisk);
|
||||
}
|
||||
if (rd_noffset < 0)
|
||||
if (rd_noffset < 0) {
|
||||
show_boot_progress (-124);
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf (" Trying '%s' ramdisk subimage\n", fit_uname_ramdisk);
|
||||
|
||||
show_boot_progress (125);
|
||||
if (!fit_check_ramdisk (fit_hdr, rd_noffset, arch, images->verify))
|
||||
return 0;
|
||||
|
||||
/* get ramdisk image data address and length */
|
||||
if (fit_image_get_data (fit_hdr, rd_noffset, &data, &size)) {
|
||||
puts ("Could not find ramdisk subimage data!\n");
|
||||
show_boot_progress (-127);
|
||||
return 0;
|
||||
}
|
||||
show_boot_progress (128);
|
||||
|
||||
rd_data = (ulong)data;
|
||||
rd_len = size;
|
||||
|
||||
if (fit_image_get_load (fit_hdr, rd_noffset, &rd_load)) {
|
||||
puts ("Can't get ramdisk subimage load address!\n");
|
||||
show_boot_progress (-129);
|
||||
return 0;
|
||||
}
|
||||
show_boot_progress (129);
|
||||
|
||||
images->fit_hdr_rd = fit_hdr;
|
||||
images->fit_uname_rd = fit_uname_ramdisk;
|
||||
|
@ -2445,19 +2457,23 @@ static int fit_check_ramdisk (const void *fit, int rd_noffset, uint8_t arch, int
|
|||
puts (" Verifying Hash Integrity ... ");
|
||||
if (!fit_image_check_hashes (fit, rd_noffset)) {
|
||||
puts ("Bad Data Hash\n");
|
||||
show_boot_progress (-125);
|
||||
return 0;
|
||||
}
|
||||
puts ("OK\n");
|
||||
}
|
||||
|
||||
show_boot_progress (126);
|
||||
if (!fit_image_check_os (fit, rd_noffset, IH_OS_LINUX) ||
|
||||
!fit_image_check_arch (fit, rd_noffset, arch) ||
|
||||
!fit_image_check_type (fit, rd_noffset, IH_TYPE_RAMDISK)) {
|
||||
printf ("No Linux %s Ramdisk Image\n",
|
||||
genimg_get_arch_name(arch));
|
||||
show_boot_progress (-126);
|
||||
return 0;
|
||||
}
|
||||
|
||||
show_boot_progress (127);
|
||||
return 1;
|
||||
}
|
||||
#endif /* USE_HOSTCC */
|
||||
|
|
Loading…
Reference in a new issue