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