.. SPDX-License-Identifier: GPL-2.0+

Binman bintool Documentation
============================

This file describes the bintools (binary tools) supported by binman. Bintools
are binman's name for external executables that it runs to generate or process
binaries. It is fairly easy to create new bintools. Just add a new file to the
'btool' directory. You can use existing bintools as examples.



Bintool: bzip2: Compression/decompression using the bzip2 algorithm
-------------------------------------------------------------------

This bintool supports running `bzip2` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man bzip2



Bintool: cbfstool: Coreboot filesystem (CBFS) tool
--------------------------------------------------

This bintool supports creating new CBFS images and adding files to an
existing image, i.e. the features needed by binman.

It also supports fetching a binary cbfstool, since building it from source
is fairly slow.

Documentation about CBFS is at https://www.coreboot.org/CBFS



Bintool: fiptool: Image generation for ARM Trusted Firmware
-----------------------------------------------------------

This bintool supports running `fiptool` with some basic parameters as
neeed by binman.

It also supports build fiptool from source.

fiptool provides a way to package firmware in an ARM Trusted Firmware
Firmware Image Package (ATF FIP) format. It is used with Trusted Firmware A,
for example.

See `TF-A FIP tool documentation`_ for more information.

.. _`TF-A FIP tool documentation`:
    https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/tools-build.html?highlight=fiptool#building-and-using-the-fip-tool



Bintool: futility: Handles the 'futility' tool
----------------------------------------------

futility (flash utility) is a tool for working with Chromium OS flash
images. This Bintool implements just the features used by Binman, related to
GBB creation and firmware signing.

A binary version of the tool can be fetched.

See `Chromium OS vboot documentation`_ for more information.

.. _`Chromium OS vboot documentation`:
    https://chromium.googlesource.com/chromiumos/platform/vboot/+/refs/heads/main/_vboot_reference/README



Bintool: gzip: Compression/decompression using the gzip algorithm
-----------------------------------------------------------------

This bintool supports running `gzip` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man gzip



Bintool: ifwitool: Handles the 'ifwitool' tool
----------------------------------------------

This bintool supports running `ifwitool` with some basic parameters as
neeed by binman. It includes creating a file from a FIT as well as adding,
replacing, deleting and extracting subparts.

The tool is built as part of U-Boot, but a binary version can be fetched if
required.

ifwitool provides a way to package firmware in an Intel Firmware Image
(IFWI) file on some Intel SoCs, e.g. Apolo Lake.



Bintool: lz4: Compression/decompression using the LZ4 algorithm
---------------------------------------------------------------

This bintool supports running `lz4` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man lz4



Bintool: lzma_alone: Compression/decompression using the LZMA algorithm
-----------------------------------------------------------------------

This bintool supports running `lzma_alone` to compress and decompress data,
as used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man lzma_alone



Bintool: lzop: Compression/decompression using the lzop algorithm
-----------------------------------------------------------------

This bintool supports running `lzop` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man lzop



Bintool: mkimage: Image generation for U-Boot
---------------------------------------------

This bintool supports running `mkimage` with some basic parameters as
neeed by binman.

Normally binman uses the mkimage built by U-Boot. But when run outside the
U-Boot build system, binman can use the version installed in your system.
Support is provided for fetching this on Debian-like systems, using apt.



Bintool: openssl: openssl tool
------------------------------

This bintool supports creating new openssl certificates.

It also supports fetching a binary openssl

Documentation about openssl is at https://www.openssl.org/



Bintool: xz: Compression/decompression using the xz algorithm
-------------------------------------------------------------

This bintool supports running `xz` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man xz



Bintool: zstd: Compression/decompression using the zstd algorithm
-----------------------------------------------------------------

This bintool supports running `zstd` to compress and decompress data, as
used by binman.

It is also possible to fetch the tool, which uses `apt` to install it.

Documentation is available via::

    man zstd



Bintool: fdt_add_pubkey: Add public key to device tree
------------------------------------------------------

This bintool supports running `fdt_add_pubkey` in order to add a public
key coming from a certificate to a device-tree.

Normally signing is done using `mkimage` in context of `binman sign`. However,
in this process the public key is not added to the stage before u-boot proper.
Using `fdt_add_pubkey` the key can be injected to the SPL independent of
`mkimage`



Bintool: bootgen: Sign ZynqMP FSBL image
---------------------------------------------

This bintool supports running `bootgen` in order to sign a SPL for ZynqMP
devices.

The bintool automatically creates an appropriate input image file (.bif) for
bootgen based on the passed arguments. The output is a bootable,
authenticated `boot.bin` file.
