diff options
Diffstat (limited to 'doc')
40 files changed, 465 insertions, 104 deletions
diff --git a/doc/README.bootcount b/doc/README.bootcount index b1c2290..f6c5f82 100644 --- a/doc/README.bootcount +++ b/doc/README.bootcount @@ -3,14 +3,16 @@ Boot Count Limit ================ +This is enabled by CONFIG_BOOTCOUNT_LIMIT. + This allows to detect multiple failed attempts to boot Linux. -After a power-on reset, "bootcount" variable will be initialized with 1, and +After a power-on reset, the "bootcount" variable will be initialized to 1, and each reboot will increment the value by 1. If, after a reboot, the new value of "bootcount" exceeds the value of "bootlimit", then instead of the standard boot action (executing the contents of -"bootcmd") an alternate boot action will be performed, and the contents of +"bootcmd"), an alternate boot action will be performed, and the contents of "altbootcmd" will be executed. If the variable "bootlimit" is not defined in the environment, the Boot Count @@ -18,18 +20,18 @@ Limit feature is disabled. If it is enabled, but "altbootcmd" is not defined, then U-Boot will drop into interactive mode and remain there. It is the responsibility of some application code (typically a Linux -application) to reset the variable "bootcount", thus allowing for more boot -cycles. +application) to reset the variable "bootcount" to 0 when the system booted +successfully, thus allowing for more boot cycles. -BOOTCOUNT_EXT -------------- +CONFIG_BOOTCOUNT_EXT +-------------------- This adds support for maintaining boot count in a file on an EXT filesystem. -The file to use is define by: +The file to use is defined by: -SYS_BOOTCOUNT_EXT_INTERFACE -SYS_BOOTCOUNT_EXT_DEVPART -SYS_BOOTCOUNT_EXT_NAME +CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE +CONFIG_SYS_BOOTCOUNT_EXT_DEVPART +CONFIG_SYS_BOOTCOUNT_EXT_NAME The format of the file is: @@ -42,10 +44,10 @@ u8 bootcount u8 upgrade_available ==== ================= -To prevent unattended usage of "altbootcmd" the "upgrade_available" variable is +To prevent unattended usage of "altbootcmd", the "upgrade_available" variable is used. -If "upgrade_available" is 0, "bootcount" is not saved, if "upgrade_available" is -1 "bootcount" is save. -So the Userspace Application must set the "upgrade_available" and "bootcount" -variables to 0, if a boot was successfully. -This also prevents writes on all reboots. +If "upgrade_available" is 0, "bootcount" is not saved. +If "upgrade_available" is 1, "bootcount" is saved. +So a userspace application should take care of setting the "upgrade_available" +and "bootcount" variables to 0, if the system boots successfully. +This also avoids writing the "bootcount" information on all reboots. diff --git a/doc/README.mpc85xx-sd-spi-boot b/doc/README.mpc85xx-sd-spi-boot index e3f5804..329de4e 100644 --- a/doc/README.mpc85xx-sd-spi-boot +++ b/doc/README.mpc85xx-sd-spi-boot @@ -14,7 +14,7 @@ Where to get boot_format: ======================== you can browse it online at: -http://git.freescale.com/git/cgit.cgi/ppc/sdk/boot-format.git/ +https://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/boot-format Building ======== diff --git a/doc/board/amlogic/beelink-gtking.rst b/doc/board/amlogic/beelink-gtking.rst index 56ce2cb..2fb50c5 100644 --- a/doc/board/amlogic/beelink-gtking.rst +++ b/doc/board/amlogic/beelink-gtking.rst @@ -44,6 +44,8 @@ https://github.com/LibreELEC/amlogic-boot-fip/tree/master/beelink-s922x NB: Beelink use a common board config for GT-King, GT-King Pro and the GS-King-X model, hence the "beelink-s922x" name. +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `beelink-s922x` + .. code-block:: bash $ wget https://github.com/LibreELEC/amlogic-boot-fip/archive/master.zip diff --git a/doc/board/amlogic/beelink-gtkingpro.rst b/doc/board/amlogic/beelink-gtkingpro.rst index d750351..07bb04b 100644 --- a/doc/board/amlogic/beelink-gtkingpro.rst +++ b/doc/board/amlogic/beelink-gtkingpro.rst @@ -45,6 +45,8 @@ https://github.com/LibreELEC/amlogic-boot-fip/tree/master/beelink-s922x NB: Beelink use a common board config for GT-King, GT-King Pro and the GS-King-X model, hence the "beelink-s922x" name. +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `beelink-s922x` + .. code-block:: bash $ wget https://github.com/LibreELEC/amlogic-boot-fip/archive/master.zip diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst index 189b1ef..9ef1440 100644 --- a/doc/board/amlogic/index.rst +++ b/doc/board/amlogic/index.rst @@ -74,6 +74,14 @@ This matrix concerns the actual source code version. | PCIe (+NVMe) | *N/A* | *N/A* | *N/A* | **Yes** | **Yes** | **Yes** | **Yes** | +-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+ +Boot Documentation +------------------ + +.. toctree:: + :maxdepth: 1 + + pre-generated-fip + Board Documentation ------------------- diff --git a/doc/board/amlogic/jethub-j100.rst b/doc/board/amlogic/jethub-j100.rst index 5860278..d54519a 100644 --- a/doc/board/amlogic/jethub-j100.rst +++ b/doc/board/amlogic/jethub-j100.rst @@ -37,6 +37,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `jethub-j100` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain binaries from the git tree published by the board vendor: diff --git a/doc/board/amlogic/jethub-j80.rst b/doc/board/amlogic/jethub-j80.rst index 6b7bdc7..f669a01 100644 --- a/doc/board/amlogic/jethub-j80.rst +++ b/doc/board/amlogic/jethub-j80.rst @@ -33,6 +33,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `jethub-j80` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain binaries from the git tree published by the board vendor: diff --git a/doc/board/amlogic/khadas-vim.rst b/doc/board/amlogic/khadas-vim.rst index bbb61c2..04025d7 100644 --- a/doc/board/amlogic/khadas-vim.rst +++ b/doc/board/amlogic/khadas-vim.rst @@ -30,6 +30,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `khadas-vim` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/khadas-vim2.rst b/doc/board/amlogic/khadas-vim2.rst index c57d96d..7ac3bdc 100644 --- a/doc/board/amlogic/khadas-vim2.rst +++ b/doc/board/amlogic/khadas-vim2.rst @@ -31,6 +31,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `khadas-vim2` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/khadas-vim3.rst b/doc/board/amlogic/khadas-vim3.rst index 8b7196d..73dc32b 100644 --- a/doc/board/amlogic/khadas-vim3.rst +++ b/doc/board/amlogic/khadas-vim3.rst @@ -57,6 +57,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `khadas-vim3` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/khadas-vim3l.rst b/doc/board/amlogic/khadas-vim3l.rst index aed8955..692ab3d 100644 --- a/doc/board/amlogic/khadas-vim3l.rst +++ b/doc/board/amlogic/khadas-vim3l.rst @@ -57,6 +57,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `khadas-vim3l` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/libretech-ac.rst b/doc/board/amlogic/libretech-ac.rst index 39bae86..7a915f9 100644 --- a/doc/board/amlogic/libretech-ac.rst +++ b/doc/board/amlogic/libretech-ac.rst @@ -30,6 +30,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `lafrite` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/libretech-cc.rst b/doc/board/amlogic/libretech-cc.rst index 94c74c5..596ce45 100644 --- a/doc/board/amlogic/libretech-cc.rst +++ b/doc/board/amlogic/libretech-cc.rst @@ -54,6 +54,8 @@ These binaries and the tools required below have been collected and prebuilt for convenience at <https://github.com/BayLibre/u-boot/releases/>. These apply to both v1 and v2. +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `lepotato` + Download and extract the libretech-cc release from there, and set FIPDIR to point to the `fip` subdirectory. diff --git a/doc/board/amlogic/nanopi-k2.rst b/doc/board/amlogic/nanopi-k2.rst index 1222ee4..76ff874 100644 --- a/doc/board/amlogic/nanopi-k2.rst +++ b/doc/board/amlogic/nanopi-k2.rst @@ -30,6 +30,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `nanopi-k2` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/odroid-c2.rst b/doc/board/amlogic/odroid-c2.rst index 966c18b..8a1be4b 100644 --- a/doc/board/amlogic/odroid-c2.rst +++ b/doc/board/amlogic/odroid-c2.rst @@ -30,6 +30,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `odroid-c2` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/odroid-c4.rst b/doc/board/amlogic/odroid-c4.rst index f66d60a..b512c6a 100644 --- a/doc/board/amlogic/odroid-c4.rst +++ b/doc/board/amlogic/odroid-c4.rst @@ -34,6 +34,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `odroid-c4` or `odroid-hc4` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/odroid-n2.rst b/doc/board/amlogic/odroid-n2.rst index fe63113..7aad36e 100644 --- a/doc/board/amlogic/odroid-n2.rst +++ b/doc/board/amlogic/odroid-n2.rst @@ -29,6 +29,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `odroid-n2` or `odroid-n2-plus` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/p200.rst b/doc/board/amlogic/p200.rst index c3d6441..5e7c6b0 100644 --- a/doc/board/amlogic/p200.rst +++ b/doc/board/amlogic/p200.rst @@ -31,6 +31,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `p200` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: @@ -54,44 +56,39 @@ Go back to mainline U-boot source tree then : $ mkdir fip - $ cp $FIPDIR/gxl/bl2.bin fip/ - $ cp $FIPDIR/gxl/acs.bin fip/ - $ cp $FIPDIR/gxl/bl21.bin fip/ - $ cp $FIPDIR/gxl/bl30.bin fip/ - $ cp $FIPDIR/gxl/bl301.bin fip/ - $ cp $FIPDIR/gxl/bl31.img fip/ + $ cp $FIPDIR/gxb/bl2.bin fip/ + $ cp $FIPDIR/gxb/acs.bin fip/ + $ cp $FIPDIR/gxb/bl21.bin fip/ + $ cp $FIPDIR/gxb/bl30.bin fip/ + $ cp $FIPDIR/gxb/bl301.bin fip/ + $ cp $FIPDIR/gxb/bl31.img fip/ $ cp u-boot.bin fip/bl33.bin $ $FIPDIR/blx_fix.sh \ fip/bl30.bin \ - fip/zero_tmp \ - fip/bl30_zero.bin \ - fip/bl301.bin \ - fip/bl301_zero.bin \ - fip/bl30_new.bin \ - bl30 + fip/zero_tmp \ + fip/bl30_zero.bin \ + fip/bl301.bin \ + fip/bl301_zero.bin \ + fip/bl30_new.bin \ + bl30 - $ $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 + $ python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 $ $FIPDIR/blx_fix.sh \ - fip/bl2_acs.bin \ - fip/zero_tmp \ - fip/bl2_zero.bin \ - fip/bl21.bin \ - fip/bl21_zero.bin \ - fip/bl2_new.bin \ - bl2 - - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin - $ $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig - $ $FIPDIR/gxl/aml_encrypt_gxl --bootmk \ - --output fip/u-boot.bin \ - --bl2 fip/bl2.n.bin.sig \ - --bl30 fip/bl30_new.bin.enc \ - --bl31 fip/bl31.img.enc \ - --bl33 fip/bl33.bin.enc + fip/bl2_acs.bin \ + fip/zero_tmp \ + fip/bl2_zero.bin \ + fip/bl21.bin \ + fip/bl21_zero.bin \ + fip/bl2_new.bin \ + bl2 + + $ $FIPDIR/fip_create --bl30 fip/bl30_new.bin --bl31 fip/bl31.img --bl33 fip/bl33.bin fip/fip.bin + + $ cat fip/bl2_new.bin fip/fip.bin >fip/boot_new.bin + + $ $FIPDIR/gxb/aml_encrypt_gxb --bootsig --input fip/boot_new.bin --output fip/u-boot.bin and then write the image to SD with: diff --git a/doc/board/amlogic/p201.rst b/doc/board/amlogic/p201.rst index 06da933..2cd2365 100644 --- a/doc/board/amlogic/p201.rst +++ b/doc/board/amlogic/p201.rst @@ -31,6 +31,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `p201` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: @@ -54,44 +56,39 @@ Go back to mainline U-boot source tree then : $ mkdir fip - $ cp $FIPDIR/gxl/bl2.bin fip/ - $ cp $FIPDIR/gxl/acs.bin fip/ - $ cp $FIPDIR/gxl/bl21.bin fip/ - $ cp $FIPDIR/gxl/bl30.bin fip/ - $ cp $FIPDIR/gxl/bl301.bin fip/ - $ cp $FIPDIR/gxl/bl31.img fip/ + $ cp $FIPDIR/gxb/bl2.bin fip/ + $ cp $FIPDIR/gxb/acs.bin fip/ + $ cp $FIPDIR/gxb/bl21.bin fip/ + $ cp $FIPDIR/gxb/bl30.bin fip/ + $ cp $FIPDIR/gxb/bl301.bin fip/ + $ cp $FIPDIR/gxb/bl31.img fip/ $ cp u-boot.bin fip/bl33.bin $ $FIPDIR/blx_fix.sh \ fip/bl30.bin \ - fip/zero_tmp \ - fip/bl30_zero.bin \ - fip/bl301.bin \ - fip/bl301_zero.bin \ - fip/bl30_new.bin \ - bl30 + fip/zero_tmp \ + fip/bl30_zero.bin \ + fip/bl301.bin \ + fip/bl301_zero.bin \ + fip/bl30_new.bin \ + bl30 - $ $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 + $ python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 $ $FIPDIR/blx_fix.sh \ - fip/bl2_acs.bin \ - fip/zero_tmp \ - fip/bl2_zero.bin \ - fip/bl21.bin \ - fip/bl21_zero.bin \ - fip/bl2_new.bin \ - bl2 - - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img - $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin - $ $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig - $ $FIPDIR/gxl/aml_encrypt_gxl --bootmk \ - --output fip/u-boot.bin \ - --bl2 fip/bl2.n.bin.sig \ - --bl30 fip/bl30_new.bin.enc \ - --bl31 fip/bl31.img.enc \ - --bl33 fip/bl33.bin.enc + fip/bl2_acs.bin \ + fip/zero_tmp \ + fip/bl2_zero.bin \ + fip/bl21.bin \ + fip/bl21_zero.bin \ + fip/bl2_new.bin \ + bl2 + + $ $FIPDIR/fip_create --bl30 fip/bl30_new.bin --bl31 fip/bl31.img --bl33 fip/bl33.bin fip/fip.bin + + $ cat fip/bl2_new.bin fip/fip.bin >fip/boot_new.bin + + $ $FIPDIR/gxb/aml_encrypt_gxb --bootsig --input fip/boot_new.bin --output fip/u-boot.bin and then write the image to SD with: diff --git a/doc/board/amlogic/p212.rst b/doc/board/amlogic/p212.rst index e2f3fe3..c1b73e8 100644 --- a/doc/board/amlogic/p212.rst +++ b/doc/board/amlogic/p212.rst @@ -31,6 +31,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `p212` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/pre-generated-fip.rst b/doc/board/amlogic/pre-generated-fip.rst new file mode 100644 index 0000000..c63ea61 --- /dev/null +++ b/doc/board/amlogic/pre-generated-fip.rst @@ -0,0 +1,93 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Pre-Generated FIP file set +========================== + +The Amlogic ARMv8 based SoCs uses a vendor variant of the Trusted Firmware-A +boot architecture. + +You can find documentation on the Trusted Firmware-A architecture on: https://www.trustedfirmware.org/projects/tf-a/ + +The Trusted Firmware-A uses the following boot elements (simplified): + +- BL1: First boot step, implemented in ROM on Amlogic SoCs +- BL2: Second boot step, used to initialize the SoC main clocks & DDR interface. The BL21 and ACS board-specific binaries are "inserted" in the BL32 binary before signing/packaging in order to be flashed on the platform. +- BL30: Amlogic Secure Co-Processor (SCP) firmware used to handle all the system management operations (DVFS, suspend/resume, ...) +- BL301: Amlogic Secure Co-Processor (SCP) board-specific firmware "plug-in" to handle custom DVFS & suspend-resume parameters +- BL31: Initializes the interrupt controller and the system management interface (PSCI) +- BL32 (Optional): Is the Trusted Environment Execution (TEE) Operating System to run secure Trusted Apps, e.g. OP-TEE +- BL33: Is the last non-secure step, usually U-Boot which loads Linux + +Amlogic provides in binary form: + +- bl2.bin +- bl30.bin +- bl30.bin +- bl31.img +- bl32.bin + +And for lastest SoCs, Amlogic also provides the DDR drivers used by the BL2 binary. + +The licence of these files wasn't clear until recently, the currently Amlogic distribution licence +is the following: + +.. code-block:: C + + // Copyright (C) 2018 Amlogic, Inc. All rights reserved. + // + // All information contained herein is Amlogic confidential. + // + // This software is provided to you pursuant to Software License + // Agreement (SLA) with Amlogic Inc ("Amlogic"). This software may be + // used only in accordance with the terms of this agreement. + // + // Redistribution and use in source and binary forms, with or without + // modification is strictly prohibited without prior written permission + // from Amlogic. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The following files are generated from the Amlogic U-Boot fork: + +- acs.bin: contains the PLL & DDR parameters for the board +- bl301.bin: contains the DVFS & suspend-resume handling code for the board +- bl33.bin: U-boot binary image + +The acs.bin & bl301.bin uses the U-Boot GPL-2.0+ headers & build systems, thus those +are considered issued from GPL-2.0+ source code. + +The tools used to sign & package those binary files are delivered in binary format +for Intel x86-64 and Python 2.x only. + +A collection of pre-built with the corresponding Amlogic binaries for the common +commercially available boards were collected in the https://github.com/LibreELEC/amlogic-boot-fip +repository. + +Using this collection for a commercially available board is very easy. + +Here considering the Libre Computer AML-S905X-CC, which codename is `lepotato`: + +.. code-block:: bash + + $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 + $ cd amlogic-boot-fip + $ mkdir my-output-dir + $ ./build-fip.sh lepotato /path/to/u-boot/u-boot.bin my-output-dir + +and then write the image to SD with: + +.. code-block:: bash + + $ DEV=/dev/your_sd_device + $ dd if=my-output-dir/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 + $ dd if=my-output-dir/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444 diff --git a/doc/board/amlogic/radxa-zero.rst b/doc/board/amlogic/radxa-zero.rst index 423403f..f5611f5 100644 --- a/doc/board/amlogic/radxa-zero.rst +++ b/doc/board/amlogic/radxa-zero.rst @@ -34,6 +34,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `radxa-zero` + Amlogic does not provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from git trees published by the board vendor: diff --git a/doc/board/amlogic/s400.rst b/doc/board/amlogic/s400.rst index 52c7b27..c92817b 100644 --- a/doc/board/amlogic/s400.rst +++ b/doc/board/amlogic/s400.rst @@ -31,6 +31,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `s400` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/sei510.rst b/doc/board/amlogic/sei510.rst index 2d296b1..c55e778 100644 --- a/doc/board/amlogic/sei510.rst +++ b/doc/board/amlogic/sei510.rst @@ -27,6 +27,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `sei510` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/sei610.rst b/doc/board/amlogic/sei610.rst index 9434e6f..2d75449 100644 --- a/doc/board/amlogic/sei610.rst +++ b/doc/board/amlogic/sei610.rst @@ -29,6 +29,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `sei610` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/u200.rst b/doc/board/amlogic/u200.rst index 5aa3936..53213fd 100644 --- a/doc/board/amlogic/u200.rst +++ b/doc/board/amlogic/u200.rst @@ -32,6 +32,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `u200` + Amlogic doesn't provide sources for the firmware and for tools needed to create the bootloader image, so it is necessary to obtain them from the git tree published by the board vendor: diff --git a/doc/board/amlogic/wetek-core2.rst b/doc/board/amlogic/wetek-core2.rst index 1012079..0147d5f 100644 --- a/doc/board/amlogic/wetek-core2.rst +++ b/doc/board/amlogic/wetek-core2.rst @@ -29,6 +29,8 @@ U-Boot compilation Image creation -------------- +For simplified usage, pleaser refer to :doc:`pre-generated-fip` with codename `wetek-core2` + Amlogic does not provide sources for the firmware or the tools needed to create the bootloader image, and WeTek has not publicly shared the precompiled FIP binaries. However the public Khadas VIM2 sources also diff --git a/doc/board/broadcom/index.rst b/doc/board/broadcom/index.rst new file mode 100644 index 0000000..4f0e825 --- /dev/null +++ b/doc/board/broadcom/index.rst @@ -0,0 +1,10 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright (C) 2022 Matthias Brugger <mbrugger@suse.com> + +Broadcom +======== + +.. toctree:: + :maxdepth: 2 + + raspberrypi diff --git a/doc/board/broadcom/raspberrypi.rst b/doc/board/broadcom/raspberrypi.rst new file mode 100644 index 0000000..1d00b38 --- /dev/null +++ b/doc/board/broadcom/raspberrypi.rst @@ -0,0 +1,54 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright (C) 2022 Matthias Brugger <mbrugger@suse.com> + +Raspberry Pi +============ + +About this +---------- + +This document describes the information about Raspberry Pi boards +and it's usage steps. + +Raspberry Pi boards +------------------- + +List of the supported Rasbperry Pi boards and the corresponding defconfig files: + +32 bit +^^^^^^ + +* rpi_defconfig + - Raspberry Pi +* rpi_0_w_defconfig + - Raspberry Pi 1 + - Raspberry Pi zero +* rpi_2_defconfig + - Raspberry Pi 2 +* rpi_3_32b_defconfig + - Raspberry Pi 3b +* rpi_4_32b_defconfig + - Raspberry Pi 4b + +64 bit +^^^^^^ + +* rpi_3_defconfig + - Raspberry Pi 3b +* rpi_3_b_plus_defconfig + - Raspberry Pi 3b+ +* rpi_4_defconfig + - Raspberry Pi 4b +* rpi_arm64_defconfig + - Raspberry Pi 3b + - Raspberry Pi 3b+ + - Raspberry Pi 4b + - Raspberry Pi 400 + - Raspberry Pi CM 3 + - Raspberry Pi CM 3+ + - Raspberry Pi CM 4 + - Raspberry Pi zero 2 w + +rpi_arm64_defconfig uses the device-tree provided by the firmware instead of +the embedded one. It allows to use the same U-Boot binary to boot different +boards. diff --git a/doc/board/index.rst b/doc/board/index.rst index be9ba4d..f7bfc44 100644 --- a/doc/board/index.rst +++ b/doc/board/index.rst @@ -14,6 +14,7 @@ Board-specific doc apple/index armltd/index atmel/index + broadcom/index congatec/index coreboot/index emulation/index diff --git a/doc/board/nokia/rx51.rst b/doc/board/nokia/rx51.rst index 941f78e..061fe76 100644 --- a/doc/board/nokia/rx51.rst +++ b/doc/board/nokia/rx51.rst @@ -160,3 +160,60 @@ UBIFS support add following lines into file ``configs/nokia_rx51_defconfig``:: CONFIG_CMD_UBIFS=y CONFIG_MTD_UBI_FASTMAP=y CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1 + +Run in QEMU +----------- + +Download and compile Linaro version of qemu which contains ``n900`` qemu +machine. Source code is available in qemu-linaro git repository and the +last working version is at commit 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1. + +Use following commands to compile ``qemu-system-arm`` binary with ``n900`` +qemu machine support: + +.. code-block:: bash + + git clone https://git.linaro.org/qemu/qemu-linaro.git + cd qemu-linaro + git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1 + ./configure --enable-system --target-list=arm-softmmu --disable-werror + make -j4 + cd .. + ln -s qemu-linaro/arm-softmmu/qemu-system-arm . + +Using ``n900`` qemu machine requires proprietary Nokia qemu ``qflasher`` tool +(in reality it is just generator of qemu MTD images) with first stage images +(``xloader-qemu.bin`` and ``secondary-qemu.bin``), similar what is required +on the real HW. License of flasher and images allows non-commercial +redistribution and it is available at maemo.org website: + +.. code-block:: bash + + wget -c http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz + tar -xf qemu-n900.tar.gz + +To generate qemu bootable MTD image ``mtd.img`` from U-Boot binary +``u-boot.bin`` and unpacked first stage images, run following command: + +.. code-block:: bash + + ./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot.bin -m rx51 -o mtd.img + +Instead of ``u-boot.bin`` binary it is possible to also used combined +U-Boot + kernel binary ``combined.bin``. + +Finally, to boot ``mtd.img`` with graphics display and keyboard with optional +serial console on current terminal, run: + +.. code-block:: bash + + ./qemu-system-arm -M n900 -mtdblock mtd.img -serial /dev/tty + +Additionally it is possible to emulate also eMMC and uSD card by appending +qemu ``-sd`` arguments: + +.. code-block:: bash + + ./qemu-system-arm -M n900 -mtdblock mtd.img -sd emmc.img -sd sd.img -serial /dev/tty + +For more examples, look into the ``test/nokia_rx51_test.sh`` CI testing script. diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst index 144cb98..a75e60b 100644 --- a/doc/board/rockchip/rockchip.rst +++ b/doc/board/rockchip/rockchip.rst @@ -66,6 +66,7 @@ List of mainline supported Rockchip boards: - FriendlyElec NanoPi M4B (nanopi-m4b-rk3399) - FriendlyARM NanoPi NEO4 (nanopi-neo4-rk3399) - Google Bob (chromebook_bob) + - Google Kevin (chromebook_kevin) - Khadas Edge (khadas-edge-rk3399) - Khadas Edge-Captain (khadas-edge-captain-rk3399) - Khadas Edge-V (hadas-edge-v-rk3399) diff --git a/doc/board/sipeed/maix.rst b/doc/board/sipeed/maix.rst index ef79297..903f883 100644 --- a/doc/board/sipeed/maix.rst +++ b/doc/board/sipeed/maix.rst @@ -4,16 +4,16 @@ MAIX ==== -Several of the Sipeed Maix series of boards cotain the Kendryte K210 processor, -a 64-bit RISC-V CPU. This processor contains several peripherals to accelerate -neural network processing and other "ai" tasks. This includes a "KPU" neural -network processor, an audio processor supporting beamforming reception, and a -digital video port supporting capture and output at VGA resolution. Other -peripherals include 8M of SRAM (accessible with and without caching); remappable -pins, including 40 GPIOs; AES, FFT, and SHA256 accelerators; a DMA controller; -and I2C, I2S, and SPI controllers. Maix peripherals vary, but include spi flash; -on-board usb-serial bridges; ports for cameras, displays, and sd cards; and -ESP32 chips. +Several of the Sipeed Maix series of boards contain the Kendryte K210 processor, +a 64-bit RISC-V CPU produced by Canaan Inc. This processor contains several +peripherals to accelerate neural network processing and other "ai" tasks. This +includes a "KPU" neural network processor, an audio processor supporting +beamforming reception, and a digital video port supporting capture and output at +VGA resolution. Other peripherals include 8M of SRAM (accessible with and +without caching); remappable pins, including 40 GPIOs; AES, FFT, and SHA256 +accelerators; a DMA controller; and I2C, I2S, and SPI controllers. Maix +peripherals vary, but include spi flash; on-board usb-serial bridges; ports for +cameras, displays, and sd cards; and ESP32 chips. Currently, only the Sipeed MAIX BiT V2.0 (bitm) and Sipeed MAIXDUINO are supported, but the boards are fairly similar. diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst index b7bf135..fe337c8 100644 --- a/doc/develop/uefi/uefi.rst +++ b/doc/develop/uefi/uefi.rst @@ -105,7 +105,7 @@ The UEFI specification[1] defines a secure way of executing UEFI images by verifying a signature (or message digest) of image with certificates. This feature on U-Boot is enabled with:: - CONFIG_UEFI_SECURE_BOOT=y + CONFIG_EFI_SECURE_BOOT=y To make the boot sequence safe, you need to establish a chain of trust; In UEFI secure boot the chain trust is defined by the following UEFI variables diff --git a/doc/device-tree-bindings/mfd/kendryte,k210-sysctl.txt b/doc/device-tree-bindings/mfd/canaan,k210-sysctl.txt index 5b24abc..e48b164 100644 --- a/doc/device-tree-bindings/mfd/kendryte,k210-sysctl.txt +++ b/doc/device-tree-bindings/mfd/canaan,k210-sysctl.txt @@ -6,7 +6,7 @@ be reference by other bindings which need a phandle to the K210 sysctl regmap. Required properties: - compatible: should be - "kendryte,k210-sysctl", "syscon", "simple-mfd" + "canaan,k210-sysctl", "syscon", "simple-mfd" - reg: address and length of the sysctl registers - reg-io-width: must be <4> @@ -15,18 +15,18 @@ Clock sub-node This node is a binding for the clock tree driver Required properties: -- compatible: should be "kendryte,k210-clk" +- compatible: should be "canaan,k210-clk" - clocks: phandle to the "in0" external oscillator - #clock-cells: must be <1> Example: sysctl: syscon@50440000 { - compatible = "kendryte,k210-sysctl", "syscon", "simple-mfd"; + compatible = "canaan,k210-sysctl", "syscon", "simple-mfd"; reg = <0x50440000 0x100>; reg-io-width = <4>; sysclk: clock-controller { - compatible = "kendryte,k210-clk"; + compatible = "canaan,k210-clk"; clocks = <&in0>; #clock-cells = <1>; }; diff --git a/doc/device-tree-bindings/pinctrl/kendryte,k210-fpioa.txt b/doc/device-tree-bindings/pinctrl/canaan,k210-fpioa.txt index 73871f5..deca0cf 100644 --- a/doc/device-tree-bindings/pinctrl/kendryte,k210-fpioa.txt +++ b/doc/device-tree-bindings/pinctrl/canaan,k210-fpioa.txt @@ -5,10 +5,10 @@ in Kendryte K210 SoCs. Any of the 256 functions can be mapped to any of the 48 pins. Required properties: -- compatible: should be "kendryte,k210-fpioa" +- compatible: should be "canaan,k210-fpioa" - reg: address and length of the FPIOA registers -- kendryte,sysctl: phandle to the "sysctl" register map node -- kendryte,power-offset: offset in the register map of the power bank control +- canaan,sysctl: phandle to the "sysctl" register map node +- canaan,k210-power-offset: offset in the register map of the power bank control register (in bytes) Configuration nodes @@ -54,10 +54,10 @@ Notes on specific properties include: Example: fpioa: pinmux@502B0000 { - compatible = "kendryte,k210-fpioa"; + compatible = "canaan,k210-fpioa"; reg = <0x502B0000 0x100>; - kendryte,sysctl = <&sysctl>; - kendryte,power-offset = <K210_SYSCTL_POWER_SEL>; + canaan,k210-sysctl = <&sysctl>; + canaan,k210-power-offset = <K210_SYSCTL_POWER_SEL>; /* JTAG running at 3.3V and driven at 11 mA */ fpioa_jtag: jtag { diff --git a/doc/device-tree-bindings/spi/snps,dw-apb-ssi.txt b/doc/device-tree-bindings/spi/snps,dw-apb-ssi.txt index 8d2888f..7a0f11c 100644 --- a/doc/device-tree-bindings/spi/snps,dw-apb-ssi.txt +++ b/doc/device-tree-bindings/spi/snps,dw-apb-ssi.txt @@ -5,8 +5,8 @@ Required properties: - compatible : One of "altr,socfpga-spi", "altr,socfpga-arria10-spi", - "canaan,kendryte-k210-spi", - "canaan,kendryte-k210-ssi", + "canaan,k210-spi", + "canaan,k210-ssi", "intel,stratix10-spi", "intel,agilex-spi", "mscc,ocelot-spi", diff --git a/doc/sphinx/requirements.txt b/doc/sphinx/requirements.txt index 44c1878..5baec4d 100644 --- a/doc/sphinx/requirements.txt +++ b/doc/sphinx/requirements.txt @@ -1,4 +1,25 @@ +alabaster==0.7.12 +Babel==2.9.1 +certifi==2021.10.8 +charset-normalizer==2.0.12 docutils==0.16 -sphinx==3.4.3 -sphinx_rtd_theme==1.0.0 +idna==3.3 +imagesize==1.3.0 +Jinja2==3.0.3 +MarkupSafe==2.1.1 +packaging==21.3 +Pygments==2.11.2 +pyparsing==3.0.7 +pytz==2022.1 +requests==2.27.1 six==1.16.0 +snowballstemmer==2.2.0 +Sphinx==3.4.3 +sphinx-rtd-theme==1.0.0 +sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.0 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +urllib3==1.26.9 diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 7501028..5b42579 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -53,3 +53,4 @@ Shell commands size true ums + wdt diff --git a/doc/usage/wdt.rst b/doc/usage/wdt.rst new file mode 100644 index 0000000..8d80433 --- /dev/null +++ b/doc/usage/wdt.rst @@ -0,0 +1,77 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +wdt command +============ + +Synopsis +-------- + +:: + + wdt list + wdt dev [<name>] + wdt start <timeout_ms> [flags] + wdt stop + wdt reset + wdt expirer [flags] + +Description +----------- + +The wdt command is used to control watchdog timers. + +The 'wdt list' command shows a list of all watchdog devices. + +The 'wdt dev' command called without argument shows the current watchdog device. +The current device is set when passing the name of the device as argument. + +The 'wdt start' command starts the current watchdog timer. + +The 'wdt stop' command stops the current watchdog timer. + +The 'wdt reset' command resets the current watchdog timer without stopping it. + +The 'wdt expire' command let's the current watchdog timer expire immediately. +This will lead to a reset. + +name + name of the watchdog device + +timeout_ms + timeout interval in milliseconds + +flags + unsigned long value passed to the driver. The usage is driver specific. + The value is ignored by most drivers. + +Example +------- + +:: + + => wdt dev + No watchdog timer device set! + => wdt list + watchdog@1c20ca0 (sunxi_wdt) + => wdt dev watchdog@1c20ca0 + => wdt dev + dev: watchdog@1c20ca0 + => wdt start 3000 + => wdt reset + => wdt stop + => wdt expire + + U-Boot SPL 2022.04-rc3 (Mar 25 2022 - 13:48:33 +0000) + + In the example above '(sunxi_wdt)' refers to the driver for the watchdog + device. + +Configuration +------------- + +The command is only available if CONFIG_CMD_WDT=y. + +Return value +------------ + +The return value $? is 0 if the command succeeds, 1 upon failure. |