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 --with memory #. 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 -s 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 -------------- *Copyright (c) 2023, Arm Limited. All rights reserved.* .. _Poetry: https://python-poetry.org/docs/