16338876bSHarrison MutaiRuntime Instrumentation Testing - N1SDP 26338876bSHarrison Mutai======================================= 36338876bSHarrison Mutai 46338876bSHarrison MutaiFor this test we used the N1 System Development Platform (`N1SDP`_), which 56338876bSHarrison Mutaicontains an SoC consisting of two dual-core Arm N1 clusters. 66338876bSHarrison Mutai 76338876bSHarrison MutaiThe following source trees and binaries were used: 86338876bSHarrison Mutai 96338876bSHarrison Mutai- TF-A [`v2.9-rc0-16-g666aec401`_] 106338876bSHarrison Mutai- TFTF [`v2.9-rc0`_] 116338876bSHarrison Mutai- SCP/MCP `Prebuilt Images`_ 126338876bSHarrison Mutai 13*5fdf198cSThaddeus SernaPlease see the Runtime Instrumentation :ref:`Testing Methodology 14*5fdf198cSThaddeus Serna<Runtime Instrumentation Methodology>` page for more details. 156338876bSHarrison Mutai 166338876bSHarrison MutaiProcedure 176338876bSHarrison Mutai--------- 186338876bSHarrison Mutai 196338876bSHarrison Mutai#. Build TFTF with runtime instrumentation enabled: 206338876bSHarrison Mutai 216338876bSHarrison Mutai .. code:: shell 226338876bSHarrison Mutai 236338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 246338876bSHarrison Mutai TESTS=runtime-instrumentation all 256338876bSHarrison Mutai 266338876bSHarrison Mutai#. Build TF-A with the following build options: 276338876bSHarrison Mutai 286338876bSHarrison Mutai .. code:: shell 296338876bSHarrison Mutai 306338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 316338876bSHarrison Mutai ENABLE_RUNTIME_INSTRUMENTATION=1 fiptool all 326338876bSHarrison Mutai 336338876bSHarrison Mutai#. Fetch the SCP firmware images: 346338876bSHarrison Mutai 356338876bSHarrison Mutai .. code:: shell 366338876bSHarrison Mutai 376338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 386338876bSHarrison Mutai -sLS -o build/n1sdp/release/scp_rom.bin \ 396338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl1.bin 406338876bSHarrison Mutai curl --fail --connect-timeout 5 \ 416338876bSHarrison Mutai --retry 5 -sLS -o build/n1sdp/release/scp_ram.bin \ 426338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl2.bin 436338876bSHarrison Mutai 446338876bSHarrison Mutai#. Fetch the MCP firmware images: 456338876bSHarrison Mutai 466338876bSHarrison Mutai .. code:: shell 476338876bSHarrison Mutai 486338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 496338876bSHarrison Mutai -sLS -o build/n1sdp/release/mcp_rom.bin \ 506338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl1.bin 516338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 526338876bSHarrison Mutai -sLS -o build/n1sdp/release/mcp_ram.bin \ 536338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl2.bin 546338876bSHarrison Mutai 556338876bSHarrison Mutai#. Using the fiptool, create a new FIP package and append the SCP ram image onto 566338876bSHarrison Mutai it. 576338876bSHarrison Mutai 586338876bSHarrison Mutai .. code:: shell 596338876bSHarrison Mutai 606338876bSHarrison Mutai ./tools/fiptool/fiptool create --blob \ 616338876bSHarrison Mutai uuid=cfacc2c4-15e8-4668-82be-430a38fad705,file=build/n1sdp/release/bl1.bin \ 626338876bSHarrison Mutai --scp-fw build/n1sdp/release/scp_ram.bin build/n1sdp/release/scp_fw.bin 636338876bSHarrison Mutai 646338876bSHarrison Mutai#. Append the MCP image to the FIP. 656338876bSHarrison Mutai 666338876bSHarrison Mutai .. code:: shell 676338876bSHarrison Mutai 686338876bSHarrison Mutai ./tools/fiptool/fiptool create \ 696338876bSHarrison Mutai --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file=build/n1sdp/release/mcp_ram.bin \ 706338876bSHarrison Mutai build/n1sdp/release/mcp_fw.bin 716338876bSHarrison Mutai 726338876bSHarrison Mutai#. Then, add TFTF as the Non-Secure workload in the FIP image: 736338876bSHarrison Mutai 746338876bSHarrison Mutai .. code:: shell 756338876bSHarrison Mutai 766338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 776338876bSHarrison Mutai ENABLE_RUNTIME_INSTRUMENTATION=1 SCP_BL2=/dev/null \ 786338876bSHarrison Mutai BL33=<path/to/tftf.bin> fip 796338876bSHarrison Mutai 806338876bSHarrison Mutai#. Load the following images onto the development board: ``fip.bin``, 816338876bSHarrison Mutai ``scp_rom.bin``, ``scp_ram.bin``, ``mcp_rom.bin``, and ``mcp_ram.bin``. 826338876bSHarrison Mutai 836338876bSHarrison Mutai.. note:: 846338876bSHarrison Mutai 856338876bSHarrison Mutai These instructions presume you have a complete firmware stack. The N1SDP 866338876bSHarrison Mutai `user guide`_ provides a detailed explanation on how to get setup from 876338876bSHarrison Mutai scratch. 886338876bSHarrison Mutai 896338876bSHarrison MutaiResults 906338876bSHarrison Mutai------- 916338876bSHarrison Mutai 926338876bSHarrison Mutai``CPU_SUSPEND`` to deepest power level 936338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 946338876bSHarrison Mutai 956338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 966338876bSHarrison Mutai parallel 976338876bSHarrison Mutai 986338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 996338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 1006338876bSHarrison Mutai +=========+======+===========+=========+=============+ 1016338876bSHarrison Mutai | 0 | 0 | 3.44 | 10.04 | 0.4 | 1026338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1036338876bSHarrison Mutai | 0 | 1 | 4.98 | 12.72 | 0.16 | 1046338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1056338876bSHarrison Mutai | 1 | 0 | 3.58 | 15.42 | 0.2 | 1066338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1076338876bSHarrison Mutai | 1 | 1 | 5.24 | 17.78 | 0.18 | 1086338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1096338876bSHarrison Mutai 1106338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 1116338876bSHarrison Mutai serial 1126338876bSHarrison Mutai 1136338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1146338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 1156338876bSHarrison Mutai +=========+======+===========+=========+=============+ 1166338876bSHarrison Mutai | 0 | 0 | 1.82 | 9.98 | 0.32 | 1176338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1186338876bSHarrison Mutai | 0 | 1 | 1.96 | 9.96 | 0.18 | 1196338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1206338876bSHarrison Mutai | 1 | 0 | 2.0 | 10.5 | 0.16 | 1216338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1226338876bSHarrison Mutai | 1 | 1 | 2.22 | 10.56 | 0.16 | 1236338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1246338876bSHarrison Mutai 1256338876bSHarrison Mutai``CPU_SUSPEND`` to power level 0 1266338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1276338876bSHarrison Mutai 1286338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 1296338876bSHarrison Mutai parallel 1306338876bSHarrison Mutai 1316338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1326338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 1336338876bSHarrison Mutai +=========+======+===========+=========+=============+ 1346338876bSHarrison Mutai | 0 | 0 | 1.52 | 11.84 | 0.34 | 1356338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1366338876bSHarrison Mutai | 0 | 1 | 1.1 | 13.66 | 0.14 | 1376338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1386338876bSHarrison Mutai | 1 | 0 | 2.18 | 9.48 | 0.18 | 1396338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1406338876bSHarrison Mutai | 1 | 1 | 2.06 | 14.4 | 0.16 | 1416338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1426338876bSHarrison Mutai 1436338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial 1446338876bSHarrison Mutai 1456338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1466338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 1476338876bSHarrison Mutai +=========+======+===========+=========+=============+ 1486338876bSHarrison Mutai | 0 | 0 | 1.54 | 9.34 | 0.3 | 1496338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1506338876bSHarrison Mutai | 0 | 1 | 1.88 | 9.5 | 0.16 | 1516338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1526338876bSHarrison Mutai | 1 | 0 | 1.86 | 9.86 | 0.2 | 1536338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1546338876bSHarrison Mutai | 1 | 1 | 2.02 | 9.64 | 0.18 | 1556338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1566338876bSHarrison Mutai 1576338876bSHarrison Mutai``CPU_OFF`` on all non-lead CPUs 1586338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1596338876bSHarrison Mutai 1606338876bSHarrison Mutai``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead 1616338876bSHarrison Mutaicore to the deepest power level. 1626338876bSHarrison Mutai 1636338876bSHarrison Mutai.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs 1646338876bSHarrison Mutai 1656338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1666338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 1676338876bSHarrison Mutai +=========+======+===========+=========+=============+ 1686338876bSHarrison Mutai | 0 | 0 | 1.86 | 9.88 | 0.32 | 1696338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1706338876bSHarrison Mutai | 0 | 1 | 21.1 | 12.44 | 0.42 | 1716338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1726338876bSHarrison Mutai | 1 | 0 | 21.22 | 13.2 | 0.32 | 1736338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1746338876bSHarrison Mutai | 1 | 1 | 21.56 | 13.18 | 0.54 | 1756338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 1766338876bSHarrison Mutai 1776338876bSHarrison Mutai``CPU_VERSION`` in parallel 1786338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1796338876bSHarrison Mutai 1806338876bSHarrison Mutai.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores 1816338876bSHarrison Mutai 1826338876bSHarrison Mutai +-------------+--------+--------------+ 1836338876bSHarrison Mutai | Cluster | Core | Latency | 1846338876bSHarrison Mutai +=============+========+==============+ 1856338876bSHarrison Mutai | 0 | 0 | 0.08 | 1866338876bSHarrison Mutai +-------------+--------+--------------+ 1876338876bSHarrison Mutai | 0 | 1 | 0.22 | 1886338876bSHarrison Mutai +-------------+--------+--------------+ 1896338876bSHarrison Mutai | 1 | 0 | 0.28 | 1906338876bSHarrison Mutai +-------------+--------+--------------+ 1916338876bSHarrison Mutai | 1 | 1 | 0.26 | 1926338876bSHarrison Mutai +-------------+--------+--------------+ 1936338876bSHarrison Mutai 1946338876bSHarrison Mutai-------------- 1956338876bSHarrison Mutai 1966338876bSHarrison Mutai*Copyright (c) 2023, Arm Limited. All rights reserved.* 1976338876bSHarrison Mutai 1986338876bSHarrison Mutai.. _v2.9-rc0-16-g666aec401: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/v2.9-rc0-16-g666aec401 1996338876bSHarrison Mutai.. _v2.9-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.9-rc0 2006338876bSHarrison Mutai.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst 2016338876bSHarrison Mutai.. _Prebuilt Images: https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/ 2026338876bSHarrison Mutai.. _N1SDP: https://developer.arm.com/documentation/101489/latest 203