Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
c8a6af66
Unverified
Commit
c8a6af66
authored
6 years ago
by
Antonio Niño Díaz
Committed by
GitHub
6 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1832 from jts-arm/docs
docs: Document romlib design
parents
625a9146
e36950bd
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
docs/diagrams/romlib_design.dia
+0
-0
docs/diagrams/romlib_design.dia
docs/diagrams/romlib_design.png
+0
-0
docs/diagrams/romlib_design.png
docs/diagrams/romlib_wrapper.dia
+0
-0
docs/diagrams/romlib_wrapper.dia
docs/diagrams/romlib_wrapper.png
+0
-0
docs/diagrams/romlib_wrapper.png
docs/firmware-design.rst
+6
-0
docs/firmware-design.rst
docs/romlib-design.rst
+125
-0
docs/romlib-design.rst
with
131 additions
and
0 deletions
+131
-0
docs/diagrams/romlib_design.dia
0 → 100755
View file @
c8a6af66
File added
This diff is collapsed.
Click to expand it.
docs/diagrams/romlib_design.png
0 → 100755
View file @
c8a6af66
16.8 KB
This diff is collapsed.
Click to expand it.
docs/diagrams/romlib_wrapper.dia
0 → 100755
View file @
c8a6af66
File added
This diff is collapsed.
Click to expand it.
docs/diagrams/romlib_wrapper.png
0 → 100755
View file @
c8a6af66
11.8 KB
This diff is collapsed.
Click to expand it.
docs/firmware-design.rst
View file @
c8a6af66
...
...
@@ -1866,6 +1866,11 @@ BL image during boot.
|
MHU
|
0x04000000
+----------+
Library
at
ROM
---------------
Please
refer
to
the
`
ROMLIB
Design
`
_
document
.
Firmware
Image
Package
(
FIP
)
----------------------------
...
...
@@ -2660,5 +2665,6 @@ References
..
_TF
-
A
Interrupt
Management
Design
guide
:
./
interrupt
-
framework
-
design
.
rst
..
_Xlat_tables
design
:
xlat
-
tables
-
lib
-
v2
-
design
.
rst
..
_Exception
Handling
Framework
:
exception
-
handling
.
rst
..
_ROMLIB
Design
:
romlib
-
design
.
rst
..
|
Image
1
|
image
::
diagrams
/
rt
-
svc
-
descs
-
layout
.
png
?
raw
=
true
This diff is collapsed.
Click to expand it.
docs/romlib-design.rst
0 → 100644
View file @
c8a6af66
Library at ROM
==============
.. section-numbering::
:suffix: .
.. contents::
This document provides an overview of the "library at ROM" implementation in
Trusted Firmware-A (TF-A).
Introduction
~~~~~~~~~~~~
The "library at ROM" feature allows platforms to build a library of functions to
be placed in ROM. This reduces SRAM usage by utilising the available space in
ROM. The "library at ROM" contains a jump table with the list of functions that
are placed in ROM. The capabilities of the "library at ROM" are:
1. Functions can be from one or several libraries.
2. Functions can be patched after they have been programmed into ROM.
3. Platform-specific libraries can be placed in ROM.
4. Functions can be accessed by one or more BL images.
Index file
~~~~~~~~~~
.. image:: diagrams/romlib_design.png
:width: 600
Library at ROM is described by an index file with the list of functions to be
placed in ROM. The index file is platform specific and its format is:
::
lib function [patch]
lib -- Name of the library the function belongs to
function -- Name of the function to be placed in library at ROM
[patch] -- Option to patch the function
It is also possible to insert reserved spaces in the list by using the keyword
"reserved" rather than the "lib" and "function" names as shown below:
::
reserved reserved
The reserved spaces can be used to add more functions in the future without
affecting the order and location of functions already existing in the jump
table. Also, for additional flexibility and modularity, the index file can
include other index files.
For an index file example, refer to ``lib/romlib/jmptbl.i``.
Wrapper functions
~~~~~~~~~~~~~~~~~
.. image:: diagrams/romlib_wrapper.png
:width: 600
When invoking a function of the "library at ROM", the calling sequence is as
follows:
BL image --> wrapper function --> jump table entry --> library at ROM
The index file is used to create a jump table which is placed in ROM. Then, the
wrappers refer to the jump table to call the "library at ROM" functions. The
wrappers essentially contain a branch instruction to the jump table entry
corresponding to the original function. Finally, the original function in the BL
image(s) is replaced with the wrapper function.
The "library at ROM" contains a necessary init function that initialises the
global variables defined by the functions inside "library at ROM".
Scripts
~~~~~~~
There are several scripts that generate the necessary files for the "library at
ROM" to work:
1. ``gentbl.sh`` - Generates the jump table by parsing the index file.
2. ``genvar.sh`` - Generates the jump table global variable (**not** the jump
table itself) with the absolute address in ROM. This global variable is,
basically, a pointer to the jump table.
3. ``genwrappers.sh`` - Generates a wrapper function for each entry in the index
file except for the ones that contain the keyword ``patch``. The generated
wrapper file is called ``<lib>_<fn_name>.S``.
Patching of functions in library at ROM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ``genwrappers.sh`` script does not generate wrappers for the entries in the
index file that contain the keyword ``patch``. Thus, it allows calling the
function from the actual library by breaking the link to the "library at ROM"
version of this function.
The calling sequence for a patched function is as follows:
BL image --> function
Build library at ROM
~~~~~~~~~~~~~~~~~~~~~
The environment variable ``CROSS_COMPILE`` must be set as per the user guide.
::
make PLAT=fvp \
MBEDTLS_DIR=</path/to/mbedtls/> \
TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 \
ARM_ROTPK_LOCATION=devel_rsa \
ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem \
BL33=</path/to/bl33.bin> \
USE_ROMLIB=1 \
all fip
--------------
*Copyright (c) 2019, Arm Limited. All rights reserved.*
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help