[U-Boot] [RFC] fastboot: flashing to emmc hw boot (0, 1) partitions

Hi,
Currently a lot of boards started (AFAIK: Colibri/Apalis iMX6/iMX7/iMX8QXP; TI AM56XX [1] etc.) using hardware boot0/1 partitions for storing U-boot blob (which obviously speeds up the booting process).
Taking into account that current implementation of fastboot driver does support only flashing images to "software" partitions in the user data area, does it make sense to add also the same support for boot0/boot1?
It will definitely simplify and unify the way of firmware flashing, as currently people are playing around with `mmc partinfo`/`mmc write` and flashing stuff manually instead of using fastboot (where it's enabled).
My suggestion is to introduce custom handling for `boot0` and `boot1` in the same manner as done for `zimage` [2] [3] for re-packing Android boot image with the new zImage. Example of flashing:
-> fastboot flash boot0 u-boot.img
Question: are there any objections (why it should not be done)/limitations I'm not aware of?
Thanks for your suggestions.
[1] http://git.ti.com/cgit/cgit.cgi/ti-u-boot/ti-u-boot.git/tree/board/ti/am65x/... [2] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81... [3] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81...
-- Best regards - Freundliche Grüsse - Meilleures salutations
Igor Opaniuk
mailto: igor.opaniuk@gmail.com skype: igor.opanyuk +380 (93) 836 40 67 http://ua.linkedin.com/in/iopaniuk

On 6/12/19 3:22 PM, Igor Opaniuk wrote:
Hi,
Currently a lot of boards started (AFAIK: Colibri/Apalis iMX6/iMX7/iMX8QXP; TI AM56XX [1] etc.) using hardware boot0/1 partitions for storing U-boot blob (which obviously speeds up the booting process).
Taking into account that current implementation of fastboot driver does support only flashing images to "software" partitions in the user data area, does it make sense to add also the same support for boot0/boot1?
It will definitely simplify and unify the way of firmware flashing, as currently people are playing around with `mmc partinfo`/`mmc write` and flashing stuff manually instead of using fastboot (where it's enabled).
My suggestion is to introduce custom handling for `boot0` and `boot1` in the same manner as done for `zimage` [2] [3] for re-packing Android boot image with the new zImage. Example of flashing:
-> fastboot flash boot0 u-boot.img
Question: are there any objections (why it should not be done)/limitations I'm not aware of?
Thanks for your suggestions.
[1] http://git.ti.com/cgit/cgit.cgi/ti-u-boot/ti-u-boot.git/tree/board/ti/am65x/... [2] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81... [3] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81...
+CC Lukasz, Peng.

Hi Igor,
Although we are thinking to use QSPI for boot speedup, it still would be nice to see flashing to boot0 implemented. Technically, I don't see much difficulties here, as we already can do this from U-Boot shell, like this:
=> mmc dev 0 1 => fatload mmc 1 ${loadaddr} tiboot3.bin => mmc write ${loadaddr} 0x0 0x400
Of course, boot procedure should be probably changed too, as ROM-code must be given the access to boot0 partition:
=> mmc partconf 0 1 1 1 => mmc bootbus 0 1 0 0
Anyway, that's not so difficult to add to "fastboot flash" U-Boot implementation. The only thing I'm worrying about is how to differentiate between User Data Area and Boot Area partitions in fastboot tool. Because when we do:
$ fastboot flash boot0 some.img
we might as well mean that boot0 is UDA partition name. So we have two options here: 1. In U-Boot: recognize "boot0" name as a special case and flash into boot0 area instead of trying to flash into UDA area 2. In fastboot tool: provide some new option so that user can specify which area to use (boot area or UDA)
As I see it, once we decide on the course of action (#1 or #2), RFC patch with initial implementation should be sent, so that we have more specifics to talk about.
Thanks!
On Wed, Jun 12, 2019 at 4:23 PM Igor Opaniuk igor.opaniuk@gmail.com wrote:
Hi,
Currently a lot of boards started (AFAIK: Colibri/Apalis iMX6/iMX7/iMX8QXP; TI AM56XX [1] etc.) using hardware boot0/1 partitions for storing U-boot blob (which obviously speeds up the booting process).
Taking into account that current implementation of fastboot driver does support only flashing images to "software" partitions in the user data area, does it make sense to add also the same support for boot0/boot1?
It will definitely simplify and unify the way of firmware flashing, as currently people are playing around with `mmc partinfo`/`mmc write` and flashing stuff manually instead of using fastboot (where it's enabled).
My suggestion is to introduce custom handling for `boot0` and `boot1` in the same manner as done for `zimage` [2] [3] for re-packing Android boot image with the new zImage. Example of flashing:
-> fastboot flash boot0 u-boot.img
Question: are there any objections (why it should not be done)/limitations I'm not aware of?
Thanks for your suggestions.
[1] http://git.ti.com/cgit/cgit.cgi/ti-u-boot/ti-u-boot.git/tree/board/ti/am65x/... [2] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81... [3] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/fastboot/fb_mmc.c;h=90ca81...
-- Best regards - Freundliche Grüsse - Meilleures salutations
Igor Opaniuk
mailto: igor.opaniuk@gmail.com skype: igor.opanyuk +380 (93) 836 40 67 http://ua.linkedin.com/in/iopaniuk
participants (3)
-
Igor Opaniuk
-
Marek Vasut
-
Sam Protsenko