.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
.. sectionauthor:: Bryan Brattlof <bb@ti.com>

K3 Generation
=============

Summary
-------

Texas Instrument's K3 family of SoCs utilize a heterogeneous multicore
and highly integrated device architecture targeted to maximize
performance and power efficiency for a wide range of industrial,
automotive and other broad market segments.

Typically the processing cores and the peripherals for these devices are
partitioned into three functional domains to provide ultra-low power
modes as well as accommodating application and industrial safety systems
on the same SoC.  These functional domains are typically called the:

* Wakeup (WKUP) domain
* Micro-controller (MCU) domain
* Main domain

For a more detailed view of what peripherals are attached to each
domain, consult the device specific documentation.

K3 Based SoCs
-------------

.. toctree::
   :maxdepth: 1

   j721e_evm
   j7200_evm
   am62x_sk

Boot Flow Overview
------------------

For all K3 SoCs the first core started will be inside the Security
Management Subsystem (SMS) which will secure the device and start a core
in the wakeup domain to run the ROM code. ROM will then initialize the
boot media needed to load the binaries packaged inside `tiboot3.bin`,
including a 32bit U-Boot SPL, (called the wakup SPL) that ROM will jump
to after it has finished loading everything into internal SRAM.

.. code-block:: text

   |  WKUP Domain
    ROM -> WKUP SPL ->

The wakeup SPL, running on a wakeup domain core, will initialize DDR and
any peripherals needed load the larger binaries inside the `tispl.bin`
into DDR.  Once loaded the wakeup SPL will start one of the 'big'
application cores inside the main domain to initialize the main domain,
starting with ARM Trusted Firmware (ATF), before moving on to start
OPTEE and the main domain's U-Boot SPL.

.. code-block:: text

   |  WKUP Domain   | Main Domain ->
    ROM -> WKUP SPL -> ATF -> OPTEE -> Main SPL

The main domain's SPL, running on a 64bit application core, has
virtually unlimited space (billions of bytes now that DDR is working) to
initialize even more peripherals needed to load in the `u-boot.img`
which loads more firmware into the micro-controller & wakeup domains and
finally prepare the main domain to run Linux.

.. code-block:: text

   |  WKUP Domain   | Main Domain ->
    ROM -> WKUP SPL -> ATF -> OPTEE -> Main SPL -> UBoot -> Linux

This is the typical boot flow for all K3 based SoCs, however this flow
offers quite a lot in the terms of flexibility, especially on High
Security (HS) SoCs.

Boot Flow Variations
^^^^^^^^^^^^^^^^^^^^

All K3 SoCs will generally use the above boot flow with two main
differences depending on the capabilities of the boot ROM and the number
of cores inside the device. These differences split the bootflow into
essentially 4 unique but very similar flows:

* Split binary with a combined firmware: (eg: AM65)
* Combined binary with a combined firmware: (eg: AM64)
* Split binary with a split firmware: (eg: J721E)
* Combined binary with a split firmware: (eg: AM62)

For devices that utilize the split binary approach, ROM is not capable
of loading the firmware into the SoC requiring the wakeup domain's
U-Boot SPL to load the firmware.

Devices with a split firmware will have two firmwares loaded into the
device at different times during the bootup process. TI's Foundational
Security (TIFS), needed to operate the Security Management Subsystem,
will either be loaded by ROM or the WKUP U-Boot SPL, then once the
wakeup U-Boot SPL has completed, the second Device Management (DM)
firmware can be loaded on the now free core in the wakeup domain.

For more information on the bootup process of your SoC, consult the
device specific boot flow documentation.

Software Sources
----------------

All scripts and code needed to build the `tiboot3.bin`, `tispl.bin` and
`u-boot.img` for all K3 SoCs can be located at the following places
online

* **Das U-Boot**

  | **source:** https://source.denx.de/u-boot/u-boot.git
  | **branch:** master

* **K3 Image Gen**

  | **source:** https://git.ti.com/git/k3-image-gen/k3-image-gen.git
  | **branch:** master

* **ARM Trusted Firmware (ATF)**

  | **source:** https://github.com/ARM-software/arm-trusted-firmware.git
  | **branch:** master

* **Open Portable Trusted Execution Environment (OPTEE)**

  | **source:** https://github.com/OP-TEE/optee_os.git
  | **branch:** master

* **TI Firmware (TIFS, DM, DSMC)**

  | **source:** https://git.ti.com/git/processor-firmware/ti-linux-firmware.git
  | **branch:** ti-linux-firmware

* **TI's Security Development Tools**

  | **source:** https://git.ti.com/git/security-development-tools/core-secdev-k3.git
  | **branch:** master

Build Procedure
---------------

Depending on the specifics of your device, you will need three or more
binaries to boot your SoC.

* `tiboot3.bin` (bootloader for the wakeup domain)
* `tispl.bin` (bootloader for the main domain)
* `u-boot.img`

During the bootup process, both the 32bit wakeup domain and the 64bit
main domains will be involved. This means everything inside the
`tiboot3.bin` running in the wakeup domain will need to be compiled for
32bit cores and most binaries in the `tispl.bin` will need to be
compiled for 64bit main domain CPU cores.

All of that to say you will need both a 32bit and 64bit cross compiler
(assuming you're using an x86 desktop)

.. code-block:: bash

   export CC32=arm-linux-gnueabihf-
   export CC64=aarch64-linux-gnu-

Building tiboot3.bin
^^^^^^^^^^^^^^^^^^^^^

1. To generate the U-Boot SPL for the wakeup domain, use the following
   commands, substituting :code:`{SOC}` for the name of your device (eg:
   am62x)

.. code-block:: bash

   # inside u-boot source
   make ARCH=arm O=build/wkup CROSS_COMPILE=$CC32 {SOC}_evm_r5_defconfig
   make ARCH=arm O=build/wkup CROSS_COMPILE=$CC32

2. Next we will use the K3 Image Gen scripts to package the various
   firmware and the wakeup UBoot SPL into the final `tiboot3.bin`
   binary. (or the `sysfw.itb` if your device uses the split binary
   flow)

.. code-block:: bash

   # inside k3-image-gen source
   make CROSS_COMPILE=$CC32 SOC={SOC} SOC_TYPE={hs,gp} \
        TI_SECURE_DEV_PKG=<path/to/securit-development-tools> \
        SYSFW_PATH=<path/to/ti-sysfw/ti-fs-firmware-{SOC}-{hs|gp}.bin> \
        SYSFW_HS_INNER_CERT_PATH=<path/to/ti-sysfw/ti-fs-firmware-{SOC}-hs-cert.bin

For devices that use the *combined binary flow*, you will also need to
supply the location of the SPL we created in step 1 above, so it can be
packaged into the final `tiboot3.bin`.

.. code-block:: bash

   SBL=<path/to/wakeup/u-boot-spl.bin>

At this point you should have all the needed binaries to boot the wakeup
domain of your K3 SoC.

**Combined Binary Boot Flow** (eg: am62x, am64x, ... )

   `k3-image-gen/tiboot3-{SOC}-{hs,gp}-evm.bin`

**Split Binary Boot Flow** (eg: j721e, am65x)

   | `u-boot/build/wkup/tiboot3.bin`
   | `k3-image-gen/sysfw-{SOC}-evm.bin`

.. note ::

   It's important to rename the generated `tiboot3.bin` and `sysfw.itb`
   to match exactly `tiboot3.bin` and `sysfw.itb` as ROM and the wakeup
   UBoot SPL will only look for and load the files with these names.

Building tispl.bin
^^^^^^^^^^^^^^^^^^^

The `tispl.bin` is a standard fitImage combining the firmware need for
the main domain to function properly as well as Device Management (DM)
firmware if your device using a split firmware.

3. We will first need ATF, as it's the first thing to run on the 'big'
   application cores on the main domain.

.. code-block:: bash

   # inside arm-trusted-firmware source
   make CROSS_COMPILE=$CC64 ARCH=aarch64 PLAT=k3 \
        TARGET_BOARD={lite|generic} \
        SPD=opteed \

Typically all `j7*` devices will use `TARGET_BOARD=generic` while all
Sitara (`am6*`) devices use the `lite` option.

4. The Open Portable Trusted Execution Environment (OPTEE) is designed
   to run as a companion to a non-secure Linux kernel for Cortex-A cores
   using the TrustZone technology built into the core.

.. code-block:: bash

   # inside optee_os source
   make CROSS_COMPILE=$CC32 CROSS_COMPILE64=$CC64 \
        PLATFORM=k3 CFG_ARM64_core=y

5. Finally, after ATF has initialized the main domain and OPTEE has
   finished, we can jump back into U-Boot again, this time running on a
   64bit core in the main domain.

.. code-block:: bash

   # inside u-boot source
   make ARCH=arm O=build/main CROSS_COMPILE=$CC64 {SOC}_evm_a{53,72}_defconfig
   make ARCH=arm O=build/main CROSS_COMPILE=$CC64 \
        ATF=<path/to/atf/bl31.bin \
        TEE=<path/to/optee/tee-pager_v2.bin

If your device uses a split firmware, you will also need to supply the
path to the Device Management (DM) Firmware to be included in the final
`tispl.bin` binary

.. code-block:: bash

   DM=<path/to/ti-linux-firmware/ti-dm/ipc_echo_testb_mcu1_0_release_strip.xer5f>

At this point you should have every binary needed initialize both the
wakeup and main domain and to boot to the U-Boot prompt

**Main Domain Bootloader**

   | `u-boot/build/main/tispl.bin`
   | `u-boot/build/main/u-boot.img`
