Skip to content
GitLab
Menu
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
659a6701
Commit
659a6701
authored
May 23, 2014
by
Andrew Thoelke
Browse files
Merge pull request #101 from sandrine-bailleux:sb/tf-issue-81-v2
parents
b3bcbcf1
f860e2cf
Changes
6
Hide whitespace changes
Inline
Side-by-side
bl32/tsp/tsp.ld.S
View file @
659a6701
...
...
@@ -36,7 +36,7 @@ ENTRY(tsp_entrypoint)
MEMORY
{
RAM
(
rwx
)
:
ORIGIN
=
T
ZDRA
M_BASE
,
LENGTH
=
T
ZDRA
M_SIZE
RAM
(
rwx
)
:
ORIGIN
=
T
SP_SEC_ME
M_BASE
,
LENGTH
=
T
SP_SEC_ME
M_SIZE
}
...
...
@@ -113,11 +113,11 @@ SECTIONS
__COHERENT_RAM_END__
=
.
;
}
>
RAM
__BL2_END__
=
.
;
__BL
3
2_END__
=
.
;
__BSS_SIZE__
=
SIZEOF
(
.
bss
)
;
__COHERENT_RAM_UNALIGNED_SIZE__
=
__COHERENT_RAM_END_UNALIGNED__
-
__COHERENT_RAM_START__
;
ASSERT
(.
<=
TZDRAM_BASE
+
(
1
<<
21
)
,
"BL32 image does not fit
in the first 2MB of Trusted DRAM
."
)
ASSERT
(.
<=
BL32_LIMIT
,
"BL3
-
2 image does not fit."
)
}
docs/porting-guide.md
View file @
659a6701
...
...
@@ -191,9 +191,36 @@ constants defined. In the ARM FVP port, this file is found in
image. Must be aligned on a page-size boundary.
*
**#define : NS_IMAGE_OFFSET**
Defines the base address in non-secure DRAM where BL2 loads the BL3-3 binary
image. Must be aligned on a page-size boundary.
If the BL3-2 image is supported by the platform, the following constants must
be defined as well:
*
**#define : TSP_SEC_MEM_BASE**
Defines the base address of the secure memory used by the BL3-2 image on the
platform.
*
**#define : TSP_SEC_MEM_SIZE**
Defines the size of the secure memory used by the BL3-2 image on the
platform.
*
**#define : BL32_BASE**
Defines the base address in secure memory where BL2 loads the BL3-2 binary
image. Must be inside the secure memory identified by `TSP_SEC_MEM_BASE` and
`TSP_SEC_MEM_SIZE` constants. Must also be aligned on a page-size boundary.
*
**#define : BL32_LIMIT**
Defines the maximum address that the BL3-2 image can occupy. Must be inside
the secure memory identified by `TSP_SEC_MEM_BASE` and `TSP_SEC_MEM_SIZE`
constants.
### File : platform_macros.S [mandatory]
Each platform must export a file of this name with the following
...
...
docs/user-guide.md
View file @
659a6701
...
...
@@ -89,7 +89,8 @@ To build the software for the FVPs, follow these steps:
By default this produces a release version of the build. To produce a debug
version instead, refer to the "Debugging options" section below. UEFI can be
used as the BL3-3 image, refer to the "Obtaining the normal world software"
section below.
section below. By default this won't compile the TSP in, refer to the
"Building the Test Secure Payload" section below.
The build process creates products in a `build` directory tree, building
the objects and binaries for each boot loader stage in separate
...
...
@@ -243,6 +244,48 @@ Extra debug options can be passed to the build system by setting `CFLAGS`:
NOTE: The Foundation FVP does not provide a debugger interface.
### Building the Test Secure Payload
The TSP is coupled with a companion runtime service in the BL3-1 firmware,
called the TSPD. Therefore, if you intend to use the TSP, the BL3-1 image
must be recompiled as well. For more information on SPs and SPDs, see the
"Secure-EL1 Payloads and Dispatchers" section in the [Firmware Design].
First clean the Trusted Firmware build directory to get rid of any previous
BL3-1 binary. Then to build the TSP image and include it into the FIP use:
CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf- \
BL33=<path-to>/<bl33_image> \
make PLAT=fvp SPD=tspd all fip
An additional boot loader binary file is created in the
`build`
directory:
* `build/<platform>/<build-type>/bl32.bin`
The Firmware Package contains this new image:
Firmware Image Package ToC:
---------------------------
- Trusted Boot Firmware BL2: offset=0xD8, size=0x6000
file: './build/fvp/release/bl2.bin'
- EL3 Runtime Firmware BL3-1: offset=0x60D8, size=0x9000
file: './build/fvp/release/bl31.bin'
- Secure Payload BL3-2 (Trusted OS): offset=0xF0D8, size=0x3000
file: './build/fvp/release/bl32.bin'
- Non-Trusted Firmware BL3-3: offset=0x120D8, size=0x280000
file: '../FVP_AARCH64_EFI.fd'
---------------------------
Creating "build/fvp/release/fip.bin"
On FVP, the TSP binary runs from Trusted SRAM by default. It is also possible
to run it from Trusted DRAM. This is controlled by the build configuration
`TSP_RAM_LOCATION`
:
CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf- \
BL33=<path-to>/<bl33_image> \
make PLAT=fvp SPD=tspd TSP_RAM_LOCATION=tdram all fip
### Checking source code style
When making changes to the source for submission to the project, the source
...
...
plat/fvp/bl2_plat_setup.c
View file @
659a6701
...
...
@@ -98,11 +98,13 @@ bl31_params_t *bl2_plat_get_bl31_params(void)
{
bl2_to_bl31_params_mem_t
*
bl31_params_mem
;
#if TSP_RAM_LOCATION_ID == TSP_IN_TZDRAM
/*
* Ensure that the secure DRAM memory used for passing BL31 arguments
* does not overlap with the BL32_BASE.
*/
assert
(
BL32_BASE
>
PARAMS_BASE
+
sizeof
(
bl2_to_bl31_params_mem_t
));
#endif
/*
* Allocate the memory for all the arguments that needs to
...
...
@@ -265,15 +267,13 @@ void bl2_plat_get_bl32_meminfo(meminfo_t *bl32_meminfo)
{
/*
* Populate the extents of memory available for loading BL32.
* TODO: We are temporarily executing BL2 from TZDRAM;
* will eventually move to Trusted SRAM
*/
bl32_meminfo
->
total_base
=
BL32_BASE
;
bl32_meminfo
->
free_base
=
BL32_BASE
;
bl32_meminfo
->
total_size
=
(
T
ZDRA
M_BASE
+
T
ZDRA
M_SIZE
)
-
BL32_BASE
;
(
T
SP_SEC_ME
M_BASE
+
T
SP_SEC_ME
M_SIZE
)
-
BL32_BASE
;
bl32_meminfo
->
free_size
=
(
T
ZDRA
M_BASE
+
T
ZDRA
M_SIZE
)
-
BL32_BASE
;
(
T
SP_SEC_ME
M_BASE
+
T
SP_SEC_ME
M_SIZE
)
-
BL32_BASE
;
bl32_meminfo
->
attr
=
BOT_LOAD
;
bl32_meminfo
->
next
=
0
;
}
...
...
plat/fvp/platform.h
View file @
659a6701
...
...
@@ -238,17 +238,35 @@
/*******************************************************************************
* BL2 specific defines.
******************************************************************************/
#define BL2_BASE
0x0402D
000
#define BL2_BASE
(TZRAM_BASE + TZRAM_SIZE - 0xc
000
)
/*******************************************************************************
* BL31 specific defines.
******************************************************************************/
#define BL31_BASE
0x0400C
000
#define BL31_BASE
(TZRAM_BASE + 0x6
000
)
/*******************************************************************************
* BL32 specific defines.
******************************************************************************/
#define BL32_BASE (TZDRAM_BASE + 0x2000)
/*
* On FVP, the TSP can execute either from Trusted SRAM or Trusted DRAM.
*/
#define TSP_IN_TZRAM 0
#define TSP_IN_TZDRAM 1
#if TSP_RAM_LOCATION_ID == TSP_IN_TZRAM
# define TSP_SEC_MEM_BASE TZRAM_BASE
# define TSP_SEC_MEM_SIZE TZRAM_SIZE
# define BL32_BASE (TZRAM_BASE + TZRAM_SIZE - 0x1c000)
# define BL32_LIMIT BL2_BASE
#elif TSP_RAM_LOCATION_ID == TSP_IN_TZDRAM
# define TSP_SEC_MEM_BASE TZDRAM_BASE
# define TSP_SEC_MEM_SIZE TZDRAM_SIZE
# define BL32_BASE (TZDRAM_BASE + 0x2000)
# define BL32_LIMIT (TZDRAM_BASE + (1 << 21))
#else
# error "Unsupported TSP_RAM_LOCATION_ID value"
#endif
/*******************************************************************************
* Platform specific page table and MMU setup constants
...
...
plat/fvp/platform.mk
View file @
659a6701
...
...
@@ -28,6 +28,21 @@
# POSSIBILITY OF SUCH DAMAGE.
#
# On FVP, the TSP can execute either from Trusted SRAM or Trusted DRAM.
# Trusted SRAM is the default.
TSP_RAM_LOCATION
:=
tsram
ifeq
(${TSP_RAM_LOCATION}, tsram)
TSP_RAM_LOCATION_ID
:=
TSP_IN_TZRAM
else
ifeq
(${TSP_RAM_LOCATION}, tdram)
TSP_RAM_LOCATION_ID
:=
TSP_IN_TZDRAM
else
$(error
"Unsupported TSP_RAM_LOCATION value"
)
endif
# Process TSP_RAM_LOCATION_ID flag
$(eval
$(call
add_define,TSP_RAM_LOCATION_ID))
PLAT_INCLUDES
:=
-Iplat
/fvp/include/
PLAT_BL_COMMON_SOURCES
:=
drivers/arm/pl011/pl011.c
\
...
...
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