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