[PATCH] Fix flash and erase of EMMC_BOOT2 with fastboot

Roman Stratiienko r.stratiienko at gmail.com
Thu May 13 12:48:29 CEST 2021


Oops, sorry, I was wrong, fastboot_mmc_get_dev() is always returning
struct blk_desc; with hwpart=0.

чт, 13 мая 2021 г. в 13:29, Oleh Kravchenko <oleg at kaa.org.ua>:
>
> Hello Roman,
> Thank you for your code-review!
>
> I've checked how Fastboot works with eMMC's boot and user areas.
> Erasing and flashing works just fine:
>
> $ fastboot erase mmc0boot0
> Erasing 'mmc0boot0'...
> OKAY [  2.948s]
> Finished. Total time: 2.983s
>
> > ........ erased 16777216 bytes from mmc hwpart[1]
>
> $ fastboot erase mmc0boot1
> Erasing 'mmc0boot1'...
> OKAY [  2.952s]
> Finished. Total time: 2.989s
>
> > ........ erased 16777216 bytes from mmc hwpart[2]
>
> $ fastboot erase mmc0
> Erasing 'mmc0'...
> OKAY [ 38.037s]
> Finished. Total time: 38.071s
>
> > ........ erased 3850371072 bytes from mmc hwpart[0]
>
> $ fastboot flash mmc0boot0 u-boot.bin
> target reported max download size of 1048576 bytes
> Sending 'mmc0boot0' (439 KB)...
> OKAY [  0.022s]
> Writing 'mmc0boot0'...
> OKAY [  0.106s]
> Finished. Total time: 0.217s
>
> > Starting download of 450560 bytes
> > ...
> > downloading of 450560 bytes finished
> > ........ wrote 450560 bytes to EMMC_BOOT1
>
> $ fastboot flash mmc0boot1 u-boot.bin
> target reported max download size of 1048576 bytes
> Sending 'mmc0boot1' (439 KB)...
> OKAY [  0.022s]
> Writing 'mmc0boot1'...
> OKAY [  0.107s]
> Finished. Total time: 0.219s
>
> > Starting download of 450560 bytes
> > ...
> > downloading of 450560 bytes finished
> > ........ wrote 450560 bytes to EMMC_BOOT2
>
> $ fastboot flash mmc0 /tmp/core-image-minimal.wic
> target reported max download size of 419430400 bytes
> Sending 'mmc0' (402048 KB)...
> OKAY [ 13.727s]
> Writing 'mmc0'...
> OKAY [  0.024s]
> Finished. Total time: 13.834s
>
> > Starting download of 411697152 bytes
> > .................................
> > downloading of 411697152 bytes finished
>
> 13.05.21 11:58, Roman Stratiienko пише:
> > Looks like there is another issue:
> > Erasing the USER partition (CONFIG_FASTBOOT_MMC_USER_SUPPORT), will
> > erase active selected hwpart, and in case it was called after
> > erasing/flashing BOOT1 & BOOT2 it will erase last selected boot
> > partition, instead of USER.
> >
> > чт, 13 мая 2021 г. в 11:42, Roman Stratiienko <r.stratiienko at gmail.com>:
> >>
> >> Hi Oleh,
> >>
> >> Thank you for the fix.
> >>
> >> Reviewed-by: Roman Stratiienko <r.stratiienko at gmail.com>
> >>
> >> чт, 13 мая 2021 г. в 01:44, Oleh Kravchenko <oleg at kaa.org.ua>:
> >>>
> >>> The current U-Boot version has the next matches for boot partitions:
> >>>> mmc0boot0 to EMMC_BOOT1
> >>>> mmc0boot1 to EMMC_BOOT1 (should be EMMC_BOOT2)
> >>> This patch fixes a typo for the boot partition number.
> >>>
> >>> Signed-off-by: Oleh Kravchenko <oleg at kaa.org.ua>
> >>> Cc: Pantelis Antoniou <panto at antoniou-consulting.com>
> >>> Cc: Marek Vasut <marex at denx.de>
> >>> ---
> >>>
> >>>  drivers/fastboot/fb_mmc.c | 4 ++--
> >>>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
> >>> index 8e74e50e91..1827ce5d12 100644
> >>> --- a/drivers/fastboot/fb_mmc.c
> >>> +++ b/drivers/fastboot/fb_mmc.c
> >>> @@ -525,7 +525,7 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer,
> >>>         if (strcmp(cmd, CONFIG_FASTBOOT_MMC_BOOT2_NAME) == 0) {
> >>>                 dev_desc = fastboot_mmc_get_dev(response);
> >>>                 if (dev_desc)
> >>> -                       fb_mmc_boot_ops(dev_desc, download_buffer, 1,
> >>> +                       fb_mmc_boot_ops(dev_desc, download_buffer, 2,
> >>>                                         download_bytes, response);
> >>>                 return;
> >>>         }
> >>> @@ -655,7 +655,7 @@ void fastboot_mmc_erase(const char *cmd, char *response)
> >>>                 /* erase EMMC boot2 */
> >>>                 dev_desc = fastboot_mmc_get_dev(response);
> >>>                 if (dev_desc)
> >>> -                       fb_mmc_boot_ops(dev_desc, NULL, 1, 0, response);
> >>> +                       fb_mmc_boot_ops(dev_desc, NULL, 2, 0, response);
> >>>                 return;
> >>>         }
> >>>  #endif
> >>> --
> >>> 2.26.3
> >>>
>
> --
> Best regards,
> Oleh Kravchenko
>


More information about the U-Boot mailing list