1TF-A Memory Layout Tool 2======================= 3 4TF-A's memory layout tool is a Python script for analyzing the virtual 5memory layout of TF-A builds. 6 7Prerequisites 8~~~~~~~~~~~~~ 9 10#. Python (3.8 or later) 11#. `Poetry`_ Python package manager 12 13Getting Started 14~~~~~~~~~~~~~~~ 15 16#. Install Poetry 17 18 .. code:: shell 19 20 curl -sSL https://install.python-poetry.org | python3 - 21 22#. Install the required packages 23 24 .. code:: shell 25 26 poetry install --with memory 27 28#. Verify that the tool runs in the installed virtual environment 29 30 .. code:: shell 31 32 poetry run memory --help 33 34Symbol Virtual Map 35~~~~~~~~~~~~~~~~~~ 36 37The tool can be used to generate a visualisation of the symbol table. By 38default, it prints the symbols representing the start and end address of the 39main memory regions in an ELF file (i.e. text, bss, rodata) but can be modified 40to print any set of symbols. 41 42.. code:: shell 43 44 $ poetry run memory -s 45 build-path: build/fvp/release 46 Virtual Address Map: 47 +------------__BL1_RAM_END__------------+---------------------------------------+ 48 +---------__COHERENT_RAM_END__----------+ | 49 +--------__COHERENT_RAM_START__---------+ | 50 0x0403b000 +----------__XLAT_TABLE_END__-----------+ | 51 0x04036000 +---------__XLAT_TABLE_START__----------+ | 52 +--------__BASE_XLAT_TABLE_END__--------+ | 53 0x04035600 +--------------__BSS_END__--------------+ | 54 +-------__BASE_XLAT_TABLE_START__-------+ | 55 +-----__PMF_PERCPU_TIMESTAMP_END__------+ | 56 +---------__PMF_TIMESTAMP_END__---------+ | 57 0x04035400 +--------__PMF_TIMESTAMP_START__--------+ | 58 +-------------__BSS_START__-------------+ | 59 0x04034a00 +------------__STACKS_END__-------------+ | 60 0x04034500 +-----------__STACKS_START__------------+ | 61 0x040344c5 +-----------__DATA_RAM_END__------------+ | 62 +-----------__BL1_RAM_START__-----------+ | 63 0x04034000 +----------__DATA_RAM_START__-----------+ | 64 | +---------__COHERENT_RAM_END__----------+ 65 | +--------__COHERENT_RAM_START__---------+ 66 0x0402e000 | +----------__XLAT_TABLE_END__-----------+ 67 0x04029000 | +---------__XLAT_TABLE_START__----------+ 68 | +--------__BASE_XLAT_TABLE_END__--------+ 69 0x04028800 | +--------------__BSS_END__--------------+ 70 | +-------__BASE_XLAT_TABLE_START__-------+ 71 | +-----__PMF_PERCPU_TIMESTAMP_END__------+ 72 | +---------__PMF_TIMESTAMP_END__---------+ 73 0x04028580 | +--------__PMF_TIMESTAMP_START__--------+ 74 0x04028000 | +-------------__BSS_START__-------------+ 75 0x04027e40 | +------------__STACKS_END__-------------+ 76 0x04027840 | +-----------__STACKS_START__------------+ 77 0x04027000 | +------------__RODATA_END__-------------+ 78 | +------------__CPU_OPS_END__------------+ 79 | +-----------__CPU_OPS_START__-----------+ 80 | +--------__FCONF_POPULATOR_END__--------+ 81 | +--------------__GOT_END__--------------+ 82 | +-------------__GOT_START__-------------+ 83 | +---------__PMF_SVC_DESCS_END__---------+ 84 0x04026c10 | +--------__PMF_SVC_DESCS_START__--------+ 85 0x04026bf8 | +-------__FCONF_POPULATOR_START__-------+ 86 | +-----------__RODATA_START__------------+ 87 0x04026000 | +-------------__TEXT_END__--------------+ 88 0x04021000 | +------------__TEXT_START__-------------+ 89 0x000062b5 +------------__BL1_ROM_END__------------+ | 90 0x00005df0 +----------__DATA_ROM_START__-----------+ | 91 +------------__CPU_OPS_END__------------+ | 92 +--------------__GOT_END__--------------+ | 93 +-------------__GOT_START__-------------+ | 94 0x00005de8 +------------__RODATA_END__-------------+ | 95 +-----------__CPU_OPS_START__-----------+ | 96 +--------__FCONF_POPULATOR_END__--------+ | 97 +---------__PMF_SVC_DESCS_END__---------+ | 98 0x00005c98 +--------__PMF_SVC_DESCS_START__--------+ | 99 0x00005c80 +-------__FCONF_POPULATOR_START__-------+ | 100 +-----------__RODATA_START__------------+ | 101 0x00005000 +-------------__TEXT_END__--------------+ | 102 0x00000000 +------------__TEXT_START__-------------+---------------------------------------+ 103 104Addresses are displayed in hexadecimal by default but can be printed in decimal 105instead with the ``-d`` option. 106 107Because of the length of many of the symbols, the tool defaults to a text width 108of 120 chars. This can be increased if needed with the ``-w`` option. 109 110For more detailed help instructions, run: 111 112.. code:: shell 113 114 poetry run memory --help 115 116-------------- 117 118*Copyright (c) 2023, Arm Limited. All rights reserved.* 119 120.. _Poetry: https://python-poetry.org/docs/ 121