Message ID | 20170622081159.14025-1-guillaume.gardet@free.fr |
---|---|
State | Changes Requested |
Delegated to: | Philipp Tomsich |
Headers | show |
Guillaume, > On 22 Jun 2017, at 10:11, Guillaume GARDET <guillaume.gardet@free.fr> wrote: > > Revert commit 253c60a557d6740f15169a1f15772d7e64928d9b as it breaks the > return value of 'mkimage -T rkimage' and print the following error: > './tools/mkimage: Can't print header for Rockchip Boot Image support: Success’ If you revert the underlying change, then 'dumpimage -l spl.img’ will break for all Rockchip rksd/rkspi images (see the original commit message for details why it is necessary). E.g. with the change in question reverted: ptomsich@android:~/rk3399/u-boot$ tools/dumpimage -l spl-3368.img ptomsich@android:~/rk3399/u-boot$ With the change in question in place: ptomsich@android:~/rk3399/u-boot$ tools/dumpimage -l spl-3368.img Image Type: Rockchip RK33 (SD/MMC) boot image Data Size: 28672 bytes ptomsich@android:~/rk3399/u-boot$ Looks like correctly doing this is even more involved in the imagetool framework than meets the eye, as you error is coming from: > /* Print the image information by processing image header */ > if (tparams->print_header) > tparams->print_header (ptr); > else { > fprintf (stderr, "%s: Can't print header for %s: %s\n", > params.cmdname, tparams->name, strerror(errno)); > exit (EXIT_FAILURE); > } So you might want to check whether adding but just the print_header function works for you—the verify should be a sufficient guard for the dumpimage case. A yet better solution would be to implement verify_header/print_header in a useful way for the rkimage type as well … Regards, Philipp. > Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr> > > Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Cc: Simon Glass <sjg@chromium.org> > Cc: Tom Rini <trini@konsulko.com> > > --- > tools/rkimage.c | 21 ++++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/tools/rkimage.c b/tools/rkimage.c > index 9880b1569f..44d098c775 100644 > --- a/tools/rkimage.c > +++ b/tools/rkimage.c > @@ -13,6 +13,16 @@ > > static uint32_t header; > > +static int rkimage_verify_header(unsigned char *buf, int size, > + struct image_tool_params *params) > +{ > + return 0; > +} > + > +static void rkimage_print_header(const void *buf) > +{ > +} > + > static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, > struct image_tool_params *params) > { > @@ -23,6 +33,11 @@ static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, > rkcommon_rc4_encode_spl(buf, 4, params->file_size); > } > > +static int rkimage_extract_subimage(void *buf, struct image_tool_params *params) > +{ > + return 0; > +} > + > static int rkimage_check_image_type(uint8_t type) > { > if (type == IH_TYPE_RKIMAGE) > @@ -40,10 +55,10 @@ U_BOOT_IMAGE_TYPE( > 4, > &header, > rkcommon_check_params, > - NULL, > - NULL, > + rkimage_verify_header, > + rkimage_print_header, > rkimage_set_header, > - NULL, > + rkimage_extract_subimage, > rkimage_check_image_type, > NULL, > NULL > -- > 2.12.3 >
Le 22/06/2017 à 18:19, Dr. Philipp Tomsich a écrit : > Guillaume, > >> On 22 Jun 2017, at 10:11, Guillaume GARDET <guillaume.gardet@free.fr> wrote: >> >> Revert commit 253c60a557d6740f15169a1f15772d7e64928d9b as it breaks the >> return value of 'mkimage -T rkimage' and print the following error: >> './tools/mkimage: Can't print header for Rockchip Boot Image support: Success’ > If you revert the underlying change, then 'dumpimage -l spl.img’ will break for all > Rockchip rksd/rkspi images (see the original commit message for details why it > is necessary). > > E.g. with the change in question reverted: > ptomsich@android:~/rk3399/u-boot$ tools/dumpimage -l spl-3368.img > ptomsich@android:~/rk3399/u-boot$ > With the change in question in place: > ptomsich@android:~/rk3399/u-boot$ tools/dumpimage -l spl-3368.img > Image Type: Rockchip RK33 (SD/MMC) boot image > Data Size: 28672 bytes > ptomsich@android:~/rk3399/u-boot$ > > Looks like correctly doing this is even more involved in the imagetool framework > than meets the eye, as you error is coming from: >> /* Print the image information by processing image header */ >> if (tparams->print_header) >> tparams->print_header (ptr); >> else { >> fprintf (stderr, "%s: Can't print header for %s: %s\n", >> params.cmdname, tparams->name, strerror(errno)); >> exit (EXIT_FAILURE); >> } > > So you might want to check whether adding but just the print_header > function works for you—the verify should be a sufficient guard for the > dumpimage case. > > A yet better solution would be to implement verify_header/print_header > in a useful way for the rkimage type as well … I am not familiar with RK, so I cannot implement this. We should find a solution quite quickly since the release is not so far. Later, we could implement missing functions if wanted. Could you propose a fix to your commit which is working for you, please? Guillaume > > Regards, > Philipp. > >> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr> >> >> Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> >> Cc: Simon Glass <sjg@chromium.org> >> Cc: Tom Rini <trini@konsulko.com> >> >> --- >> tools/rkimage.c | 21 ++++++++++++++++++--- >> 1 file changed, 18 insertions(+), 3 deletions(-) >> >> diff --git a/tools/rkimage.c b/tools/rkimage.c >> index 9880b1569f..44d098c775 100644 >> --- a/tools/rkimage.c >> +++ b/tools/rkimage.c >> @@ -13,6 +13,16 @@ >> >> static uint32_t header; >> >> +static int rkimage_verify_header(unsigned char *buf, int size, >> + struct image_tool_params *params) >> +{ >> + return 0; >> +} >> + >> +static void rkimage_print_header(const void *buf) >> +{ >> +} >> + >> static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, >> struct image_tool_params *params) >> { >> @@ -23,6 +33,11 @@ static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, >> rkcommon_rc4_encode_spl(buf, 4, params->file_size); >> } >> >> +static int rkimage_extract_subimage(void *buf, struct image_tool_params *params) >> +{ >> + return 0; >> +} >> + >> static int rkimage_check_image_type(uint8_t type) >> { >> if (type == IH_TYPE_RKIMAGE) >> @@ -40,10 +55,10 @@ U_BOOT_IMAGE_TYPE( >> 4, >> &header, >> rkcommon_check_params, >> - NULL, >> - NULL, >> + rkimage_verify_header, >> + rkimage_print_header, >> rkimage_set_header, >> - NULL, >> + rkimage_extract_subimage, >> rkimage_check_image_type, >> NULL, >> NULL >> -- >> 2.12.3 >> >
diff --git a/tools/rkimage.c b/tools/rkimage.c index 9880b1569f..44d098c775 100644 --- a/tools/rkimage.c +++ b/tools/rkimage.c @@ -13,6 +13,16 @@ static uint32_t header; +static int rkimage_verify_header(unsigned char *buf, int size, + struct image_tool_params *params) +{ + return 0; +} + +static void rkimage_print_header(const void *buf) +{ +} + static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, struct image_tool_params *params) { @@ -23,6 +33,11 @@ static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd, rkcommon_rc4_encode_spl(buf, 4, params->file_size); } +static int rkimage_extract_subimage(void *buf, struct image_tool_params *params) +{ + return 0; +} + static int rkimage_check_image_type(uint8_t type) { if (type == IH_TYPE_RKIMAGE) @@ -40,10 +55,10 @@ U_BOOT_IMAGE_TYPE( 4, &header, rkcommon_check_params, - NULL, - NULL, + rkimage_verify_header, + rkimage_print_header, rkimage_set_header, - NULL, + rkimage_extract_subimage, rkimage_check_image_type, NULL, NULL
Revert commit 253c60a557d6740f15169a1f15772d7e64928d9b as it breaks the return value of 'mkimage -T rkimage' and print the following error: './tools/mkimage: Can't print header for Rockchip Boot Image support: Success' Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr> Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@konsulko.com> --- tools/rkimage.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)