mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 04:46:01 +01:00
binman: Add documentation for bintools
Add this documention to explain how bintools are used and which ones are available. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
bc570646f6
commit
3e7749eaea
1
doc/develop/package/bintools.rst
Symbolic link
1
doc/develop/package/bintools.rst
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../tools/binman/bintools.rst
|
@ -1027,6 +1027,77 @@ by increasing the -v/--verbosity from the default of 1:
|
|||||||
You can use BINMAN_VERBOSE=5 (for example) when building to select this.
|
You can use BINMAN_VERBOSE=5 (for example) when building to select this.
|
||||||
|
|
||||||
|
|
||||||
|
Bintools
|
||||||
|
========
|
||||||
|
|
||||||
|
`Bintool` is the name binman gives to a binary tool which it uses to create and
|
||||||
|
manipulate binaries that binman cannot handle itself. Bintools are often
|
||||||
|
necessary since Binman only supports a subset of the available file formats
|
||||||
|
natively.
|
||||||
|
|
||||||
|
Many SoC vendors invent ways to load code into their SoC using new file formats,
|
||||||
|
sometimes changing the format with successive SoC generations. Sometimes the
|
||||||
|
tool is available as Open Source. Sometimes it is a pre-compiled binary that
|
||||||
|
must be downloaded from the vendor's website. Sometimes it is available in
|
||||||
|
source form but difficult or slow to build.
|
||||||
|
|
||||||
|
Even for images that use bintools, binman still assembles the image from its
|
||||||
|
image description. It may handle parts of the image natively and part with
|
||||||
|
various bintools.
|
||||||
|
|
||||||
|
Binman relies on these tools so provides various features to manage them:
|
||||||
|
|
||||||
|
- Determining whether the tool is currently installed
|
||||||
|
- Downloading or building the tool
|
||||||
|
- Determining the version of the tool that is installed
|
||||||
|
- Deciding which tools are needed to build an image
|
||||||
|
|
||||||
|
The Bintool class is an interface to the tool, a thin level of abstration, using
|
||||||
|
Python functions to run the tool for each purpose (e.g. creating a new
|
||||||
|
structure, adding a file to an existing structure) rather than just lists of
|
||||||
|
string arguments.
|
||||||
|
|
||||||
|
As with external blobs, bintools (which are like 'external' tools) can be
|
||||||
|
missing. When building an image requires a bintool and it is not installed,
|
||||||
|
binman detects this and reports the problem, but continues to build an image.
|
||||||
|
This is useful in CI systems which want to check that everything is correct but
|
||||||
|
don't have access to the bintools.
|
||||||
|
|
||||||
|
To make this work, all calls to bintools (e.g. with Bintool.run_cmd()) must cope
|
||||||
|
with the tool being missing, i.e. when None is returned, by:
|
||||||
|
|
||||||
|
- Calling self.record_missing_bintool()
|
||||||
|
- Setting up some fake contents so binman can continue
|
||||||
|
|
||||||
|
Of course the image will not work, but binman reports which bintools are needed
|
||||||
|
and also provide a way to fetch them.
|
||||||
|
|
||||||
|
To see the available bintools, use::
|
||||||
|
|
||||||
|
binman tool --list
|
||||||
|
|
||||||
|
To fetch tools which are missing, use::
|
||||||
|
|
||||||
|
binman tool --fetch missing
|
||||||
|
|
||||||
|
You can also use `--fetch all` to fetch all tools or `--fetch <tool>` to fetch
|
||||||
|
a particular tool. Some tools are built from source code, in which case you will
|
||||||
|
need to have at least the `build-essential` and `git` packages installed.
|
||||||
|
|
||||||
|
Bintool Documentation
|
||||||
|
=====================
|
||||||
|
|
||||||
|
To provide details on the various bintools supported by binman, bintools.rst is
|
||||||
|
generated from the source code using:
|
||||||
|
|
||||||
|
binman bintool-docs >tools/binman/bintools.rst
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
bintools
|
||||||
|
|
||||||
|
|
||||||
Technical details
|
Technical details
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
115
tools/binman/bintools.rst
Normal file
115
tools/binman/bintools.rst
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
.. 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: 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: 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: 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user