diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/board/ti/am62ax_sk.rst | 31 | ||||
| -rw-r--r-- | doc/board/ti/am62px_sk.rst | 31 | ||||
| -rw-r--r-- | doc/board/ti/am62x_sk.rst | 319 | ||||
| -rw-r--r-- | doc/board/ti/img/fitImage_falcon.svg | 180 | ||||
| -rw-r--r-- | doc/board/ti/img/tifsstub_dm_tifalcon.bin.svg | 285 |
5 files changed, 846 insertions, 0 deletions
diff --git a/doc/board/ti/am62ax_sk.rst b/doc/board/ti/am62ax_sk.rst index 4dd998bcce9..8eeb90a271b 100644 --- a/doc/board/ti/am62ax_sk.rst +++ b/doc/board/ti/am62ax_sk.rst @@ -187,6 +187,37 @@ https://www.ti.com/lit/pdf/spruj16 under the `Boot Mode Pins` section. For SW2 and SW1, the switch state in the "ON" position = 1. +Falcon Mode +----------- + +Falcon Mode on AM62ax platforms bypasses the A53 SPL and U-Boot with the overall +boot flow as below: + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_boot_flow + :end-before: .. am62x_evm_falcon_end_boot_flow + +Build Process +^^^^^^^^^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_build_process + :end-before: .. am62x_evm_falcon_end_build_process + +Usage +^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_usage + :end-before: .. am62x_evm_falcon_end_usage + +R5 SPL Memory Map +^^^^^^^^^^^^^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_r5_memory_map + :end-before: .. am62x_evm_falcon_end_r5_memory_map + Debugging U-Boot ---------------- diff --git a/doc/board/ti/am62px_sk.rst b/doc/board/ti/am62px_sk.rst index a07d6a4da45..da70cd58095 100644 --- a/doc/board/ti/am62px_sk.rst +++ b/doc/board/ti/am62px_sk.rst @@ -290,6 +290,37 @@ https://www.ti.com/lit/pdf/spruj83 under the `Boot Mode Pins` section. For SW2 and SW1, the switch state in the "ON" position = 1. +Falcon Mode +----------- + +Falcon Mode on AM62px platforms bypasses the A53 SPL and U-Boot with the overall +boot flow as below: + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_boot_flow + :end-before: .. am62x_evm_falcon_end_boot_flow + +Build Process +^^^^^^^^^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_build_process + :end-before: .. am62x_evm_falcon_end_build_process + +Usage +^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_usage + :end-before: .. am62x_evm_falcon_end_usage + +R5 SPL Memory Map +^^^^^^^^^^^^^^^^^ + +.. include:: am62x_sk.rst + :start-after: .. am62x_evm_falcon_start_r5_memory_map + :end-before: .. am62x_evm_falcon_end_r5_memory_map + Debugging U-Boot ---------------- diff --git a/doc/board/ti/am62x_sk.rst b/doc/board/ti/am62x_sk.rst index dab2970a85c..1a0e5e07c4b 100644 --- a/doc/board/ti/am62x_sk.rst +++ b/doc/board/ti/am62x_sk.rst @@ -526,6 +526,325 @@ Next, based on NET_VCI_STRING string mentioned in respective defconfig file `tib fetches `tispl.bin` and then `tispl.bin` fetches `u-boot.img` from TFTP server which completes Ethernet boot on the device. +Falcon Mode +----------- + +Falcon Mode on AM62x platforms bypasses the A53 SPL and U-Boot with the overall +boot flow as below: + +.. am62x_evm_falcon_start_boot_flow + +**Normal boot flow:** + +.. code-block:: + + | tiboot3.bin | tispl.bin | u-boot.img | Image | + |-------------+----------------------------+------------+---------| + R5 Core | SPL | | | | + ---------| \ | | | | + A53 Core | ------> TFA -> OP-TEE -> A53 SPL --> U-Boot --> Kernel | + +**With falcon mode:** + +.. code-block:: + + | tiboot3.bin | tifalcon.bin | fitImage | + |-------------+------------------+----------| + R5 Core | SPL | | | + ---------| \ | | | + A53 Core | ------> TFA -> OP-TEE --> Kernel | + +.. am62x_evm_falcon_end_boot_flow + +Build Process +^^^^^^^^^^^^^ + +.. am62x_evm_falcon_start_build_process + +Enabling falcon mode requires re-building TFA, U-Boot and the kernel +``fitImage`` as follows: + +0. Setup environment variables: +""""""""""""""""""""""""""""""" + +Refer to the build procedure above for setting up the environment variables. + +1. Trusted Firmware-A: +"""""""""""""""""""""" + +The R5 SPL in falcon mode loads the kernel at ``0x82000000`` and the +corresponding DTB at ``0x88000000``. Therefore TFA needs to be rebuild with +changes to the respective addresses. + +.. prompt:: bash $ + + # Change load addresses for the kernel and DTB + export TFA_EXTRA_ARGS="PRELOADED_BL33_BASE=0x82000000 K3_HW_CONFIG_BASE=0x88000000" + +.. include:: k3.rst + :start-after: .. k3_rst_include_start_build_steps_tfa + :end-before: .. k3_rst_include_end_build_steps_tfa + +2. U-Boot: +"""""""""" + +* **2.1 R5:** + +.. prompt:: bash $ + + # use the common falcon config fragment for all K3 platforms + export $UBOOT_FALCON_CFG_FRAGMENTR="k3_r5_falcon.config" + export UBOOT_CFG_CORTEXR="${UBOOT_CFG_CORTEXR} ${UBOOT_FALCON_CFG_FRAGMENTR}" + +.. include:: k3.rst + :start-after: .. k3_rst_include_start_build_steps_spl_r5 + :end-before: .. k3_rst_include_end_build_steps_spl_r5 + +* **2.2 A53:** + +After rebuilding TFA, the binary needs to be repackaged inside the tispl +binaries: + +.. include:: k3.rst + :start-after: .. k3_rst_include_start_build_steps_uboot + :end-before: .. k3_rst_include_end_build_steps_uboot + +3. fitImage: +"""""""""""" + +.. warning:: + + The ``fitImage`` available by default under ``boot/fitImage`` in rootfs of + the standard SDK release is not compatible with falcon mode. + +For authenticated boot in falcon mode, the compute heavy authentication +required for the ``fitImage`` is offloaded from the slower R5 core to TIFS. This +requires ``fitImage`` to package the necessary binaries (kernel and dtb) with a +pre-signed x509 certificate. + +**fitImage for falcon mode:** + +.. image:: img/fitImage_falcon.svg + :alt: fitImage for falcon boot image format + +* **Sources** + + * **Core Secdev K3** + + | **source:** https://git.ti.com/cgit/security-development-tools/core-secdev-k3 + | **branch:** master + +**Follow the steps below to create a falcon compatible fitImage:** + +**3.1 Environment setup** + +.. prompt:: bash $ + + export DTB=path/to/dtb + export IMAGE=path/to/kernel-image + +**3.2 fitImage creation** + + An Image tree source (*its*) file describes the structure and contents of the + final image produced by the ``mkimage`` tool. + + To create the ``fitImage`` for falcon mode, create a file ``fitImage.its`` + with the following contents inside the ``core-secdev-k3`` source directory,: + +.. code-block:: dts + + /dts-v1/; + + / { + description = "Kernel fitImage"; + #address-cells = <1>; + + images { + kernel-sec { + description = "Linux kernel"; + data = /incbin/("Image.sec"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "none"; + load = <0x82000000>; + entry = <0x82000000>; + }; + + fdt-sec { + description = "Flattened Device Tree blob"; + data = /incbin/("falcon.dtb.sec"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x88000000>; + entry = <0x88000000>; + }; + }; + + configurations { + default = "conf-falcon"; + conf-falcon { + description = "Pre-signed Linux kernel, FDT blob"; + kernel = "kernel-sec"; + fdt = "fdt-sec"; + }; + }; + }; + +Sign the kernel and dtb using ``secure-binary-image.sh`` and create the +``fitImage`` using mkimage: + +.. prompt:: bash $ + + # inside core-secdev-k3 source + cp $IMAGE Image + cp $DTB falcon.dtb + ./scripts/secure-binary-image.sh Image Image.sec + ./scripts/secure-binary-image.sh falcon.dtb falcon.dtb.sec + mkimage -f fitImage.its fitImage + +.. am62x_evm_falcon_end_build_process + +Usage +^^^^^ + +.. am62x_evm_falcon_start_usage + +Falcon Mode makes use of a cut down variant of the tispl binary called +``tifalcon.bin`` with lacks the Cortex-A SPL and it's DTBs. This file should +be present alongside the existing ``tispl.bin`` after building U-Boot for the +Cortex-A core. + +- **tifalcon.bin** + +.. image:: img/tifsstub_dm_tifalcon.bin.svg + :alt: tifalcon.bin image format + +The R5 SPL requires both ``tifalcon.bin`` and the ``fitImage`` (created +in previous steps) to be present in the second partition of the MMC device +specified by the ``mmcdev`` environment variable. By default, ``mmcdev`` is +set to 1, which implies that the SD card is the boot media. Additionally, the +``bootpart`` environment variable, which defaults to 1:2, specifies that the +second partition of the SD card should be used as the root file system for the +kernel. + +To use eMMC instead of SD as the boot media, rebuild the R5 SPL with the +following diff: + +.. code-block:: diff + + diff --git a/board/ti/<soc>/<soc>.env b/board/ti/<soc>/<soc>.env + index 82b9f0741bb..73d59ac425c 100644 + --- a/board/ti/<soc>/<soc>.env + +++ b/board/ti/<soc>/<soc>.env + @@ -17,8 +17,8 @@ run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr} + + boot_targets=mmc1 mmc0 usb pxe dhcp + boot=mmc + -mmcdev=1 + -bootpart=1:2 + +mmcdev=0 + +bootpart=0:1 + bootdir=/boot + rd_spec=- + +**List of files required on SD/eMMC for Falcon Mode:** + +.. list-table:: + :widths: 8 8 8 25 + :header-rows: 1 + + * - File + - Copy path on SD/eMMC + - Partition + - Description + + * - ``tifalcon.bin`` + - ``/boot/tifalcon.bin`` + - rootfs (ext4) + - tispl binary without SPL for the A core and DTB + + * - ``fitImage`` + - ``/boot/fitImage`` + - rootfs (ext4) + - kernel and dtb fitImage with pre-signed binaries + +.. note:: + + Falcon mode requires the boot binaries to be present in the root file system + of either eMMC or SD, even when using raw eMMC boot mode to load + ``tiboot3.bin``. + +.. am62x_evm_falcon_end_usage + +R5 SPL Memory Map +^^^^^^^^^^^^^^^^^ + +.. am62x_evm_falcon_start_r5_memory_map + +Standard Boot: +"""""""""""""" + +.. code-block:: + + 0x80000000 +===============================+ Start of DDR + 512KiB | TFA reserved memory space | CONFIG_K3_ATF_LOAD_ADDR + | | + 0x80080000 +-------------------------------+ PRELOADED_BL33_BASE in TFA + 29.5MiB | A53 SPL + DTB + | CONFIG_SPL_LOAD_FIT_ADDRESS + | Download region for FIT in DFU| + 0x81e00000 +-------------------------------+ + | R5 U-Boot SPL Stack + Heap | + 2MiB | (size defined by | + | SPL_STACK_R_MALLOC_SIMPLE_LEN)| + 0x82000000 +-------------------------------+ CONFIG_SPL_STACK_R_ADDR + 112MiB | Unused | + 0x89000000 +-------------------------------+ + 331MiB | Device Manager (DM) Load Addr | + 0x9db00000 +-------------------------------+ + 12MiB | DM Reserved | + 0x9e700000 +-------------------------------+ + 1MiB | Unused | + 0x9e800000 +-------------------------------+ BL32_BASE in TFA + 24MiB | OPTEE | + 0xa0000000 +===============================+ End of DDR (512MiB) + +Falcon Mode: +"""""""""""" + +.. code-block:: + + 0x80000000 +===============================+ Start of DDR + 512KiB | TFA reserved memory space | CONFIG_K3_ATF_LOAD_ADDR + 0x80080000 +-------------------------------+ + 31.5MiB | Unused | + 0x82000000 +-------------------------------+ PRELOADED_BL33_BASE in TFA + | | CONFIG_SYS_LOAD_ADDR + 57MiB | Kernel + initramfs Image | CONFIG_SPL_LOAD_FIT_ADDRESS + | | + 0x85900000 +-------------------------------+ + | | + | R5 U-Boot SPL Stack + Heap | + 39MiB | (size defined by | + | SPL_STACK_R_MALLOC_SIMPLE_LEN)| + | | + 0x88000000 +-------------------------------+ CONFIG_SPL_STACK_R_ADDR + | | K3_HW_CONFIG_BASE in TFA + 16MiB | Kernel DTB | CONFIG_SPL_PAYLOAD_ARGS_ADDR + | | + 0x89000000 +-------------------------------+ + 331MiB | Device Manager (DM) Load Addr | + 0x9db00000 +-------------------------------+ + 12MiB | DM Reserved | + 0x9e700000 +-------------------------------+ + 1MiB | Unused | + 0x9e800000 +-------------------------------+ BL32_BASE in TFA + 24MiB | OPTEE | + 0xa0000000 +===============================+ End of DDR (512MiB) + +.. am62x_evm_falcon_end_r5_memory_map + Debugging U-Boot ---------------- diff --git a/doc/board/ti/img/fitImage_falcon.svg b/doc/board/ti/img/fitImage_falcon.svg new file mode 100644 index 00000000000..b5f0229397f --- /dev/null +++ b/doc/board/ti/img/fitImage_falcon.svg @@ -0,0 +1,180 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause --> + +<!-- Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ --> + +<svg + version="1.1" + width="231" + height="220" + viewBox="-0.5 -0.5 231 220" + id="svg72" + sodipodi:docname="fitImage_falcon.svg" + inkscape:version="1.4.1 (93de688d07, 2025-03-30)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview74" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="2.9" + inkscape:cx="83.62069" + inkscape:cy="131.72414" + inkscape:window-width="1918" + inkscape:window-height="1078" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="g62" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + <defs + id="defs2"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 104.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="231 : 104.5 : 1" + inkscape:persp3d-origin="115.5 : 46 : 1" + id="perspective1" /> + </defs> + <g + id="g62"> + <rect + x="-0.06279549" + y="-0.062792346" + width="230.12561" + height="219.12558" + rx="34.518837" + ry="27.33382" + fill="#d5e8d4" + stroke="#82b366" + pointer-events="all" + id="rect4" + style="display:inline;fill:#dbe4f4;fill-opacity:1;stroke:#8166b3;stroke-width:0.888796;stroke-dasharray:none;stroke-opacity:1" /> + <text + x="115.15599" + y="156.49472" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8-8-7-6-6" + style="display:inline" + inkscape:label="x509 cert">x509 Certificate</text> + <text + x="115.15598" + y="85.615631" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8-8-7-6-6-1" + style="display:inline" + inkscape:label="x509 cert">x509 Certificate</text> + <text + x="114.532" + y="42.263863" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8-8-7-6-6-5" + style="display:inline" + inkscape:label="x509 cert">Fit Header</text> + <text + x="114.78398" + y="106.884" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8-8-7-6-6-5-5" + style="display:inline" + inkscape:label="x509 cert">Kernel Image</text> + <rect + style="display:none;fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1" + id="rect1" + width="171.46796" + height="210.89911" + x="36.799908" + y="21.652758" + transform="translate(-7.533886,15.237117)" /> + <text + xml:space="preserve" + style="font-size:21.3333px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#db8c8c;fill-opacity:1;stroke:#000000;stroke-width:1.13386" + x="90.327087" + y="177.15775" + id="text1"><tspan + sodipodi:role="line" + id="tspan1" + x="90.327087" + y="177.15775" /></text> + <text + xml:space="preserve" + style="font-size:21.3333px;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#db8c8c;fill-opacity:1;stroke:#000000;stroke-width:1.13386" + x="106.45526" + y="214.93161" + id="text2"><tspan + sodipodi:role="line" + id="tspan2" + x="106.45526" + y="214.93161" /></text> + <g + id="g62-6" + transform="translate(-5.6022949,-9.676433)"> + <text + x="120.33229" + y="188.7475" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8-8-7-6-6-5-2" + style="display:inline" + inkscape:label="x509 cert">DTB</text> + </g> + <rect + style="fill:#db8c8c;fill-opacity:0;stroke:#000000;stroke-width:1.13386" + id="rect2" + width="82.644012" + height="17.6518" + x="73.677986" + y="94.992081" /> + <rect + style="fill:#db8c8c;fill-opacity:0;stroke:#000000;stroke-width:1.13386;stroke-dasharray:none" + id="rect2-7" + width="32.336376" + height="18.068098" + x="98.83181" + y="165.66302" /> + <rect + style="fill:#db8c8c;fill-opacity:0;stroke:#000000;stroke-width:1.77036;stroke-dasharray:none" + id="rect3" + width="152.43475" + height="70.500725" + x="38.782627" + y="127.54861" /> + <rect + style="fill:#db8c8c;fill-opacity:0;stroke:#000000;stroke-width:1.77036;stroke-dasharray:none" + id="rect3-9" + width="152.43475" + height="70.500732" + x="38.782623" + y="56.777336" /> + <rect + style="fill:#db8c8c;fill-opacity:0;stroke:#000000;stroke-width:1.78506;stroke-dasharray:none" + id="rect5" + width="152.41736" + height="36.60006" + x="38.791306" + y="20.211617" /> + </g> +</svg> diff --git a/doc/board/ti/img/tifsstub_dm_tifalcon.bin.svg b/doc/board/ti/img/tifsstub_dm_tifalcon.bin.svg new file mode 100644 index 00000000000..2508923d480 --- /dev/null +++ b/doc/board/ti/img/tifsstub_dm_tifalcon.bin.svg @@ -0,0 +1,285 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause --> + +<!-- Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ --> + +<svg + version="1.1" + width="231" + height="280" + viewBox="-0.5 -0.5 231 280" + id="svg72" + sodipodi:docname="tifsstub_dm_tifalcon.bin.svg" + inkscape:version="1.4.1 (93de688d07, 2025-03-30)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <sodipodi:namedview + id="namedview74" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="2.3561254" + inkscape:cx="175.5" + inkscape:cy="151.30774" + inkscape:window-width="1920" + inkscape:window-height="1080" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="g62" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + <defs + id="defs2"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 104.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="231 : 104.5 : 1" + inkscape:persp3d-origin="115.5 : 46 : 1" + id="perspective1" /> + </defs> + <g + id="g62"> + <rect + x="-0.0064085587" + y="-0.0064054145" + width="230.01283" + height="278.39682" + rx="34.501923" + ry="34.727341" + fill="#d5e8d4" + stroke="#82b366" + pointer-events="all" + id="rect4" + style="stroke-width:1.00331" /> + <rect + x="40" + y="30" + width="160" + height="60" + fill="none" + stroke="#000000" + pointer-events="all" + id="rect6" /> + <g + transform="translate(-0.5,-0.5)" + id="g12"> + <switch + id="switch10"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 60px; margin-left: 41px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">FIT Header</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="120" + y="64" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text8">FIT Header</text> + </switch> + </g> + <rect + x="40" + y="160" + width="160" + height="50" + fill="none" + stroke="#000000" + pointer-events="all" + id="rect14" /> + <g + transform="translate(-0.5,-0.5)" + id="g20"> + <switch + id="switch18"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 185px; margin-left: 41px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">TIFS Stub<xhtml:br /> + +(GP, HS-FS, HS-SE)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="120" + y="189" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text16">TIFS Stub...</text> + </switch> + </g> + <rect + x="40" + y="90" + width="160" + height="30" + fill="none" + stroke="#000000" + pointer-events="all" + id="rect22" /> + <g + transform="translate(-0.5,-0.5)" + id="g28"> + <switch + id="switch26"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 105px; margin-left: 41px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">TF-A</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="120" + y="109" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24">TF-A</text> + </switch> + </g> + <rect + x="40" + y="120" + width="160" + height="40" + fill="none" + stroke="#000000" + pointer-events="all" + id="rect30" /> + <g + transform="translate(-0.5,-0.5)" + id="g36"> + <switch + id="switch34"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 140px; margin-left: 41px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">OP-TEE</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="120" + y="144" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text32">OP-TEE</text> + </switch> + </g> + <rect + x="40" + y="210" + width="160" + height="40" + fill="none" + stroke="#000000" + pointer-events="all" + id="rect38" /> + <g + transform="translate(-0.5,-0.5)" + id="g44"> + <switch + id="switch42"> + <foreignObject + style="overflow: visible; text-align: left;" + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 230px; margin-left: 41px;"> + <xhtml:div + style="box-sizing: border-box; font-size: 0px; text-align: center;" + data-drawio-colors="color: rgb(0, 0, 0); "> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">R5 DM FW</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="120" + y="234" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text40">R5 DM FW</text> + </switch> + </g> + </g> + <switch + id="switch70"> + <g + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + id="g64" /> + <a + transform="translate(0,-5)" + xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" + target="_blank" + id="a68"> + <text + text-anchor="middle" + font-size="10px" + x="50%" + y="100%" + id="text66">Text is not SVG - cannot display</text> + </a> + </switch> +</svg> |
