[U-Boot] [PATCH v3 3/3] doc: relocate/rename Android README and add BCB overview
Sam Protsenko
semen.protsenko at linaro.org
Tue Jul 2 18:11:45 UTC 2019
Hi Eugeniu,
On Thu, May 23, 2019 at 6:33 PM Eugeniu Rosca <erosca at de.adit-jv.com> wrote:
>
> Rename:
> - doc/{README.avb2 => android/avb2.txt}
> - doc/{README.android-fastboot => android/fastboot.txt}
>
> Add a new file documenting the 'bcb' command:
> - doc/android/bcb.txt
>
> The new directory structure has been reviewed by Simon in
> https://patchwork.ozlabs.org/patch/1101107/#2176031 .
>
> Signed-off-by: Eugeniu Rosca <erosca at de.adit-jv.com>
> ---
> v3:
> - Newly pushed.
> ---
> doc/{README.avb2 => android/avb2.txt} | 0
> doc/android/bcb.txt | 89 +++++++++++++++++++
> .../fastboot.txt} | 0
> 3 files changed, 89 insertions(+)
> rename doc/{README.avb2 => android/avb2.txt} (100%)
> create mode 100644 doc/android/bcb.txt
> rename doc/{README.android-fastboot => android/fastboot.txt} (100%)
>
Sorry for the late review, but it seems like some links to renamed doc
weren't changed properly (easily found by grep). Can you please add
change [1] to this patch, so that we don't need to send it separately
later?
[1] https://pastebin.ubuntu.com/p/nSd5z8JFtr/
Thanks!
> diff --git a/doc/README.avb2 b/doc/android/avb2.txt
> similarity index 100%
> rename from doc/README.avb2
> rename to doc/android/avb2.txt
> diff --git a/doc/android/bcb.txt b/doc/android/bcb.txt
> new file mode 100644
> index 000000000000..7b7177cacf21
> --- /dev/null
> +++ b/doc/android/bcb.txt
> @@ -0,0 +1,89 @@
> +Android Bootloader Control Block (BCB)
> +
> +The purpose behind this file is to:
> + - give an overview of BCB w/o duplicating public documentation
> + - describe the main BCB use-cases which concern U-Boot
> + - reflect current support status in U-Boot
> + - mention any relevant U-Boot build-time tunables
> + - precisely exemplify one or more use-cases
> +
> +Additions and fixes are welcome!
> +
> +
> +1. OVERVIEW
> +---------------------------------
> +Bootloader Control Block (BCB) is a well established term/acronym in
> +the Android namespace which refers to a location in a dedicated raw
> +(i.e. FS-unaware) flash (e.g. eMMC) partition, usually called "misc",
> +which is used as media for exchanging messages between Android userspace
> +(particularly recovery [1]) and an Android-capable bootloader.
> +
> +On higher level, BCB provides a way to implement a subset of Android
> +Bootloader Requirements [2], amongst which are:
> + - Android-specific bootloader flow [3]
> + - Get the "reboot reason" (and act accordingly) [4]
> + - Get/pass a list of commands from/to recovery [1]
> + - TODO
> +
> +
> +2. 'BCB'. SHELL COMMAND OVERVIEW
> +-----------------------------------
> +The 'bcb' command provides a CLI to facilitate the development of the
> +requirements enumerated above. Below is the command's help message:
> +
> +=> bcb
> +bcb - Load/set/clear/test/dump/store Android BCB fields
> +
> +Usage:
> +bcb load <dev> <part> - load BCB from mmc <dev>:<part>
> +bcb set <field> <val> - set BCB <field> to <val>
> +bcb clear [<field>] - clear BCB <field> or all fields
> +bcb test <field> <op> <val> - test BCB <field> against <val>
> +bcb dump <field> - dump BCB <field>
> +bcb store - store BCB back to mmc
> +
> +Legend:
> +<dev> - MMC device index containing the BCB partition
> +<part> - MMC partition index or name containing the BCB
> +<field> - one of {command,status,recovery,stage,reserved}
> +<op> - the binary operator used in 'bcb test':
> + '=' returns true if <val> matches the string stored in <field>
> + '~' returns true if <val> matches a subset of <field>'s string
> +<val> - string/text provided as input to bcb {set,test}
> + NOTE: any ':' character in <val> will be replaced by line feed
> + during 'bcb set' and used as separator by upper layers
> +
> +
> +3. 'BCB'. EXAMPLE OF GETTING REBOOT REASON
> +-----------------------------------
> +if bcb load 1 misc; then
> + # valid BCB found
> + if bcb test command = bootonce-bootloader; then
> + bcb clear command; bcb store;
> + # do the equivalent of AOSP ${fastbootcmd}
> + # i.e. call fastboot
> + else if bcb test command = boot-recovery; then
> + bcb clear command; bcb store;
> + # do the equivalent of AOSP ${recoverycmd}
> + # i.e. do anything required for booting into recovery
> + else
> + # boot Android OS normally
> + fi
> +else
> + # corrupted/non-existent BCB
> + # report error or boot non-Android OS (platform-specific)
> +fi
> +
> +
> +4. ENABLE ON YOUR BOARD
> +-----------------------------------
> +The following Kconfig options must be enabled:
> +CONFIG_PARTITIONS=y
> +CONFIG_MMC=y
> +CONFIG_BCB=y
> +
> +[1] https://android.googlesource.com/platform/bootable/recovery
> +[2] https://source.android.com/devices/bootloader
> +[3] https://patchwork.ozlabs.org/patch/746835/
> + ("[U-Boot,5/6] Initial support for the Android Bootloader flow")
> +[4] https://source.android.com/devices/bootloader/boot-reason
> diff --git a/doc/README.android-fastboot b/doc/android/fastboot.txt
> similarity index 100%
> rename from doc/README.android-fastboot
> rename to doc/android/fastboot.txt
> --
> 2.21.0
>
More information about the U-Boot
mailing list