TF-A Memory Layout Tool
=======================

TF-A's memory layout tool is a Python script for analyzing the virtual
memory layout of TF-A builds.

Prerequisites
~~~~~~~~~~~~~

#. Python (3.8 or later)
#. `Poetry`_ Python package manager

Getting Started
~~~~~~~~~~~~~~~

#. Install Poetry

    .. code:: shell

        curl -sSL https://install.python-poetry.org | python3 -

#. Install the required packages

    .. code:: shell

        poetry install --no-root

#. Verify that the tool runs in the installed virtual environment

    .. code:: shell

        poetry run memory --help

Symbol Virtual Map
~~~~~~~~~~~~~~~~~~

The tool can be used to generate a visualisation of the symbol table. By
default, it prints the symbols representing the start and end address of the
main memory regions in an ELF file (i.e. text, bss, rodata) but can be modified
to print any set of symbols.

.. code:: shell

    $ poetry run memory symbols
    build-path: build/fvp/release
    Virtual Address Map:
               +------------__BL1_RAM_END__------------+---------------------------------------+
               +---------__COHERENT_RAM_END__----------+                                       |
               +--------__COHERENT_RAM_START__---------+                                       |
    0x0403b000 +----------__XLAT_TABLE_END__-----------+                                       |
    0x04036000 +---------__XLAT_TABLE_START__----------+                                       |
               +--------__BASE_XLAT_TABLE_END__--------+                                       |
    0x04035600 +--------------__BSS_END__--------------+                                       |
               +-------__BASE_XLAT_TABLE_START__-------+                                       |
               +-----__PMF_PERCPU_TIMESTAMP_END__------+                                       |
               +---------__PMF_TIMESTAMP_END__---------+                                       |
    0x04035400 +--------__PMF_TIMESTAMP_START__--------+                                       |
               +-------------__BSS_START__-------------+                                       |
    0x04034a00 +------------__STACKS_END__-------------+                                       |
    0x04034500 +-----------__STACKS_START__------------+                                       |
    0x040344c5 +-----------__DATA_RAM_END__------------+                                       |
               +-----------__BL1_RAM_START__-----------+                                       |
    0x04034000 +----------__DATA_RAM_START__-----------+                                       |
               |                                       +---------__COHERENT_RAM_END__----------+
               |                                       +--------__COHERENT_RAM_START__---------+
    0x0402e000 |                                       +----------__XLAT_TABLE_END__-----------+
    0x04029000 |                                       +---------__XLAT_TABLE_START__----------+
               |                                       +--------__BASE_XLAT_TABLE_END__--------+
    0x04028800 |                                       +--------------__BSS_END__--------------+
               |                                       +-------__BASE_XLAT_TABLE_START__-------+
               |                                       +-----__PMF_PERCPU_TIMESTAMP_END__------+
               |                                       +---------__PMF_TIMESTAMP_END__---------+
    0x04028580 |                                       +--------__PMF_TIMESTAMP_START__--------+
    0x04028000 |                                       +-------------__BSS_START__-------------+
    0x04027e40 |                                       +------------__STACKS_END__-------------+
    0x04027840 |                                       +-----------__STACKS_START__------------+
    0x04027000 |                                       +------------__RODATA_END__-------------+
               |                                       +------------__CPU_OPS_END__------------+
               |                                       +-----------__CPU_OPS_START__-----------+
               |                                       +--------__FCONF_POPULATOR_END__--------+
               |                                       +--------------__GOT_END__--------------+
               |                                       +-------------__GOT_START__-------------+
               |                                       +---------__PMF_SVC_DESCS_END__---------+
    0x04026c10 |                                       +--------__PMF_SVC_DESCS_START__--------+
    0x04026bf8 |                                       +-------__FCONF_POPULATOR_START__-------+
               |                                       +-----------__RODATA_START__------------+
    0x04026000 |                                       +-------------__TEXT_END__--------------+
    0x04021000 |                                       +------------__TEXT_START__-------------+
    0x000062b5 +------------__BL1_ROM_END__------------+                                       |
    0x00005df0 +----------__DATA_ROM_START__-----------+                                       |
               +------------__CPU_OPS_END__------------+                                       |
               +--------------__GOT_END__--------------+                                       |
               +-------------__GOT_START__-------------+                                       |
    0x00005de8 +------------__RODATA_END__-------------+                                       |
               +-----------__CPU_OPS_START__-----------+                                       |
               +--------__FCONF_POPULATOR_END__--------+                                       |
               +---------__PMF_SVC_DESCS_END__---------+                                       |
    0x00005c98 +--------__PMF_SVC_DESCS_START__--------+                                       |
    0x00005c80 +-------__FCONF_POPULATOR_START__-------+                                       |
               +-----------__RODATA_START__------------+                                       |
    0x00005000 +-------------__TEXT_END__--------------+                                       |
    0x00000000 +------------__TEXT_START__-------------+---------------------------------------+

Addresses are displayed in hexadecimal by default but can be printed in decimal
instead with the ``-d`` option.

Because of the length of many of the symbols, the tool defaults to a text width
of 120 chars. This can be increased if needed with the ``-w`` option.

For more detailed help instructions, run:

.. code:: shell

    poetry run memory --help

Memory Footprint
~~~~~~~~~~~~~~~~

The tool enables users to view static memory consumption. When the ``footprint``
command is provided, the script analyses the ELF binaries in the build path to
generate a table (per memory type), showing memory allocation and usage. This is
the default output generated by the tool.

.. code:: shell

    $ poetry run memory footprint
    build-path: build/fvp/release
    +----------------------------------------------------------------------------+
    |                         Memory Usage (bytes) [RAM]                         |
    +-----------+------------+------------+------------+------------+------------+
    | Component |   Start    |   Limit    |    Size    |    Free    |   Total    |
    +-----------+------------+------------+------------+------------+------------+
    |    BL1    |    4034000 |    4040000 |       7000 |       5000 |       c000 |
    |    BL2    |    4021000 |    4034000 |       d000 |       6000 |      13000 |
    |    BL2U   |    4021000 |    4034000 |       a000 |       9000 |      13000 |
    |    BL31   |    4003000 |    4040000 |      1e000 |      1f000 |      3d000 |
    +-----------+------------+------------+------------+------------+------------+

    +----------------------------------------------------------------------------+
    |                         Memory Usage (bytes) [ROM]                         |
    +-----------+------------+------------+------------+------------+------------+
    | Component |   Start    |   Limit    |    Size    |    Free    |   Total    |
    +-----------+------------+------------+------------+------------+------------+
    |    BL1    |          0 |    4000000 |       5df0 |    3ffa210 |    4000000 |
    +-----------+------------+------------+------------+------------+------------+

The script relies on symbols in the symbol table to determine the start, end,
and limit addresses of each bootloader stage.

Memory Tree
~~~~~~~~~~~

A hierarchical view of the memory layout can be produced by passing the ``tree``
command to the tool. This gives the start, end, and size of each module, their
ELF segments as well as sections.

.. code:: shell

    $ poetry run memory tree
    build-path: build/fvp/release
    name                                       start        end       size
    bl1                                            0    400c000    400c000
    ├── 00                                         0       5de0       5de0
    │   ├── .text                                  0       5000       5000
    │   └── .rodata                             5000       5de0        de0
    ├── 01                                   4034000    40344c5        4c5
    │   └── .data                            4034000    40344c5        4c5
    ├── 02                                   4034500    4034a00        500
    │   └── .stacks                          4034500    4034a00        500
    ├── 04                                   4034a00    4035600        c00
    │   └── .bss                             4034a00    4035600        c00
    └── 03                                   4036000    403b000       5000
        └── .xlat_table                      4036000    403b000       5000
    bl2                                      4021000    4034000      13000
    ├── 00                                   4021000    4027000       6000
    │   ├── .text                            4021000    4026000       5000
    │   └── .rodata                          4026000    4027000       1000
    └── 01                                   4027000    402e000       7000
        ├── .data                            4027000    4027809        809
        ├── .stacks                          4027840    4027e40        600
        ├── .bss                             4028000    4028800        800
        └── .xlat_table                      4029000    402e000       5000
    bl2u                                     4021000    4034000      13000
    ├── 00                                   4021000    4025000       4000
    │   ├── .text                            4021000    4024000       3000
    │   └── .rodata                          4024000    4025000       1000
    └── 01                                   4025000    402b000       6000
        ├── .data                            4025000    4025065         65
        ├── .stacks                          4025080    4025480        400
        ├── .bss                             4025600    4025c00        600
        └── .xlat_table                      4026000    402b000       5000
    bl31                                     4003000    4040000      3d000
    ├── 02                                  ffe00000   ffe03000       3000
    │   └── .el3_tzc_dram                   ffe00000   ffe03000       3000
    ├── 00                                   4003000    4010000       d000
    │   └── .text                            4003000    4010000       d000
    └── 01                                   4010000    4021000      11000
        ├── .rodata                          4010000    4012000       2000
        ├── .data                            4012000    401219d        19d
        ├── .stacks                          40121c0    40161c0       4000
        ├── .bss                             4016200    4018c00       2a00
        ├── .xlat_table                      4019000    4020000       7000
        └── .coherent_ram                    4020000    4021000       1000


The granularity of this view can be modified with the ``--depth`` option. For
instance, if you only require the tree up to the level showing segment data,
you can specify the depth with:

.. code::

    $ poetry run memory tree --depth 2
    build-path: build/fvp/release
    name                          start        end       size
    bl1                               0    400c000    400c000
    ├── 00                            0       5df0       5df0
    ├── 01                      4034000    40344c5        4c5
    ├── 02                      4034500    4034a00        500
    ├── 04                      4034a00    4035600        c00
    └── 03                      4036000    403b000       5000
    bl2                         4021000    4034000      13000
    ├── 00                      4021000    4027000       6000
    └── 01                      4027000    402e000       7000
    bl2u                        4021000    4034000      13000
    ├── 00                      4021000    4025000       4000
    └── 01                      4025000    402b000       6000
    bl31                        4003000    4040000      3d000
    ├── 02                     ffe00000   ffe03000       3000
    ├── 00                      4003000    4010000       d000
    └── 01                      4010000    4021000      11000

--------------

*Copyright (c) 2023-2025, Arm Limited. All rights reserved.*

.. _Poetry: https://python-poetry.org/docs/
