blob: ce14dab64aa8f0fdd6d8666d694733fa3da02b3e [file] [log] [blame]
Harrison Mutaie9bc4882023-02-23 10:33:58 +00001TF-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/