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
ae478c26
Unverified
Commit
ae478c26
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 #1768 from bryanodonoghue/integration+linaro_warp7-tbb
Integration+linaro warp7 tbb
parents
a0d89439
31e4c20d
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
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
docs/plat/warp7.rst
+59
-11
docs/plat/warp7.rst
plat/imx/imx7/warp7/include/platform_def.h
+8
-0
plat/imx/imx7/warp7/include/platform_def.h
plat/imx/imx7/warp7/platform.mk
+52
-0
plat/imx/imx7/warp7/platform.mk
plat/imx/imx7/warp7/warp7_bl2_el3_setup.c
+7
-6
plat/imx/imx7/warp7/warp7_bl2_el3_setup.c
plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c
+0
-10
plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c
plat/imx/imx7/warp7/warp7_io_storage.c
+58
-9
plat/imx/imx7/warp7/warp7_io_storage.c
plat/imx/imx7/warp7/warp7_rotpk.S
+15
-0
plat/imx/imx7/warp7/warp7_rotpk.S
plat/imx/imx7/warp7/warp7_trusted_boot.c
+31
-0
plat/imx/imx7/warp7/warp7_trusted_boot.c
with
230 additions
and
36 deletions
+230
-36
docs/plat/warp7.rst
View file @
ae478c26
...
...
@@ -31,36 +31,84 @@ https://git.linaro.org/landing-teams/working/mbl/u-boot.git
make warp7_bl33_defconfig;
make u-boot.imx arch=ARM CROSS_COMPILE=arm-linux-gnueabihf-
##
TF-A
:
##
OP-TEE
:
https://github.com/
ARM-software/arm-trusted-firmware
.git
https://github.com/
OP-TEE/optee_os
.git
.. code:: shell
make CROSS_COMPILE=arm-linux-gnueabihf- PLAT=warp7 ARCH=aarch32 ARM_ARCH_MAJOR=7 ARM_CORTEX_A7=yes AARCH32_SP=optee all
/path/to/u-boot/tools/mkimage -n /path/to/u-boot/u-boot.cfgout -T imximage -e 0x9df00000 -d ./build/warp7/debug/bl2.bin ./build/warp7/debug/bl2.bin.imx
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- PLATFORM=imx PLATFORM_FLAVOR=mx7swarp7 ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_DT_ADDR=0x83000000 CFG_NS_ENTRY_ADDR=0x87800000
##
OP-TEE
:
##
TF-A
:
https://github.com/
OP-TEE/optee_os
.git
https://github.com/
ARM-software/arm-trusted-firmware
.git
.. code:: shell
The following commands assume that a directory exits in the top-level TFA build
directory "fiptool_images". "fiptool_images" contains
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- PLATFORM=imx PLATFORM_FLAVOR=mx7swarp7 ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_DT_ADDR=0x83000000 CFG_NS_ENTRY_ADDR=0x87800000
- u-boot.bin
The binary output from the u-boot instructions above
- tee-header_v2.bin
- tee-pager_v2.bin
- tee-pageable_v2.bin
Binary outputs from the previous OPTEE build steps
## FIP:
It is also assumed copy of mbedtls is available on the path path ../mbedtls
https://github.com/ARMmbed/mbedtls.git
At the time of writing HEAD points to 0592ea772aee48ca1e6d9eb84eca8e143033d973
.. code:: shell
mkdir fiptool_images
cp /path/to/uboot/u-boot.bin fiptool_images
cp /path/to/optee/out/arm-plat-imx/core/tee-header_v2.bin fiptool_images
cp /path/to/optee/out/arm-plat-imx/core/tee-pager_v2.bin fiptool_images
cp /path/to/optee/out/arm-plat-imx/core/tee-pageable_v2.bin fiptool_images
make CROSS_COMPILE=${CROSS_COMPILE} PLAT=warp7 ARCH=aarch32 ARM_ARCH_MAJOR=7 \
ARM_CORTEX_A7=yes AARCH32_SP=optee PLAT_WARP7_UART=1 GENERATE_COT=1 \
TRUSTED_BOARD_BOOT=1 USE_TBBR_DEFS=1 MBEDTLS_DIR=../mbedtls \
NEED_BL32=yes BL32=fiptool_images/tee-header_v2.bin \
BL32_EXTRA1=fiptool_images/tee-pager_v2.bin \
BL32_EXTRA2=fiptool_images/tee-pageable_v2.bin \
BL33=fiptool_images/u-boot.bin certificates all
/path/to/u-boot/tools/mkimage -n /path/to/u-boot/u-boot.cfgout -T imximage -e 0x9df00000 -d ./build/warp7/debug/bl2.bin ./build/warp7/debug/bl2.bin.imx
## FIP:
.. code:: shell
cp /path/to/uboot/u-boot.bin fiptool_images
cp /path/to/linux/arch/boot/dts/imx7s-warp.dtb fiptool_images
tools/fiptool/fiptool create --tos-fw fiptool_images/tee-header_v2.bin --tos-fw-extra1 fiptool_images/tee-pager_v2.bin --tos-fw-extra2 fiptool_images/tee-pageable_v2.bin --nt-fw fiptool_images/u-boot.bin --hw-config fiptool_images/imx7s-warp.dtb warp7.fip
tools/cert_create/cert_create -n --rot-key "build/warp7/debug/rot_key.pem" \
--tfw-nvctr 0 \
--ntfw-nvctr 0 \
--trusted-key-cert fiptool_images/trusted-key-cert.key-crt \
--tb-fw=build/warp7/debug/bl2.bin \
--tb-fw-cert fiptool_images/trusted-boot-fw.key-crt\
--tos-fw fiptool_images/tee-header_v2.bin \
--tos-fw-cert fiptool_images/tee-header_v2.bin.crt \
--tos-fw-key-cert fiptool_images/tee-header_v2.bin.key-crt \
--tos-fw-extra1 fiptool_images/tee-pager_v2.bin \
--tos-fw-extra2 fiptool_images/tee-pageable_v2.bin \
--nt-fw fiptool_images/u-boot.bin \
--nt-fw-cert fiptool_images/u-boot.bin.crt \
--nt-fw-key-cert fiptool_images/u-boot.bin.key-crt \
--hw-config fiptool_images/imx7s-warp.dtb
tools/fiptool/fiptool create --tos-fw fiptool_images/tee-header_v2.bin \
--tos-fw-extra1 fiptool_images/tee-pager_v2.bin \
--tos-fw-extra2 fiptool_images/tee-pageable_v2.bin \
--nt-fw fiptool_images/u-boot.bin \
--hw-config fiptool_images/imx7s-warp.dtb \
--tos-fw-cert fiptool_images/tee-header_v2.bin.crt \
--tos-fw-key-cert fiptool_images/tee-header_v2.bin.key-crt \
--nt-fw-cert fiptool_images/u-boot.bin.crt \
--nt-fw-key-cert fiptool_images/u-boot.bin.key-crt \
--trusted-key-cert fiptool_images/trusted-key-cert.key-crt \
--tb-fw-cert fiptool_images/trusted-boot-fw.key-crt warp7.fip
# Deploy Images
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/include/platform_def.h
View file @
ae478c26
...
...
@@ -106,6 +106,12 @@
#define WARP7_DTB_BASE (DRAM_BASE + 0x03000000)
#define WARP7_DTB_LIMIT (WARP7_DTB_BASE + WARP7_DTB_SIZE)
/* Define the absolute location of DTB Overlay 0x83100000 - 0x83101000 */
#define WARP7_DTB_OVERLAY_SIZE 0x00001000
#define WARP7_DTB_OVERLAY_BASE WARP7_DTB_LIMIT
#define WARP7_DTB_OVERLAY_LIMIT (WARP7_DTB_OVERLAY_BASE + \
WARP7_DTB_OVERLAY_SIZE)
/*
* BL2 specific defines.
*
...
...
@@ -142,6 +148,8 @@
* | DDR | BL33/U-BOOT
* 0x87800000 +-----------------+
* | DDR | Unallocated
* 0x83101000 +-----------------+
* | DDR | DTB Overlay
* 0x83100000 +-----------------+
* | DDR | DTB
* 0x83000000 +-----------------+
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/platform.mk
View file @
ae478c26
...
...
@@ -62,6 +62,43 @@ BL2_SOURCES += common/desc_image_load.c \
plat/imx/imx7/warp7/warp7_image_load.c
\
${XLAT_TABLES_LIB_SRCS}
ifneq
(${TRUSTED_BOARD_BOOT},0)
include
drivers/auth/mbedtls/mbedtls_crypto.mk
include
drivers/auth/mbedtls/mbedtls_x509.mk
AUTH_SOURCES
:=
drivers/auth/auth_mod.c
\
drivers/auth/crypto_mod.c
\
drivers/auth/img_parser_mod.c
\
drivers/auth/tbbr/tbbr_cot.c
BL2_SOURCES
+=
${AUTH_SOURCES}
\
plat/common/tbbr/plat_tbbr.c
\
plat/imx/imx7/warp7/warp7_trusted_boot.c
\
plat/imx/imx7/warp7/warp7_rotpk.S
ROT_KEY
=
$(BUILD_PLAT)
/rot_key.pem
ROTPK_HASH
=
$(BUILD_PLAT)
/rotpk_sha256.bin
$(eval
$(call
add_define_val,ROTPK_HASH,
'"$(ROTPK_HASH)"'
))
$(eval
$(call
MAKE_LIB_DIRS))
$(BUILD_PLAT)/bl2/warp7_rotpk.o
:
$(ROTPK_HASH)
certificates
:
$(ROT_KEY)
$(ROT_KEY)
:
| $(BUILD_PLAT)
@
echo
" OPENSSL
$@
"
@
if
[
!
-f
$(ROT_KEY)
]
;
then
\
openssl genrsa 2048
>
$@
2>/dev/null
;
\
fi
$(ROTPK_HASH)
:
$(ROT_KEY)
@
echo
" OPENSSL
$@
"
$(Q)
openssl rsa
-in
$<
-pubout
-outform
DER 2>/dev/null |
\
openssl dgst
-sha256
-binary
>
$@
2>/dev/null
endif
# Build config flags
# ------------------
...
...
@@ -86,6 +123,21 @@ USE_COHERENT_MEM := 1
PLAT_WARP7_UART
:=
1
$(eval
$(call
add_define,PLAT_WARP7_UART))
# Add the build options to pack BLx images and kernel device tree
# in the FIP if the platform requires.
ifneq
($(BL2),)
$(eval
$(call
TOOL_ADD_PAYLOAD,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert))
endif
ifneq
($(BL32_EXTRA1),)
$(eval
$(call
TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1))
endif
ifneq
($(BL32_EXTRA2),)
$(eval
$(call
TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2))
endif
ifneq
($(HW_CONFIG),)
$(eval
$(call
TOOL_ADD_IMG,HW_CONFIG,--hw-config))
endif
# Verify build config
# -------------------
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/warp7_bl2_el3_setup.c
View file @
ae478c26
...
...
@@ -290,12 +290,13 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2,
imx_wdog_init
();
/* Print out the expected memory map */
VERBOSE
(
"
\t
OPTEE 0x%08x-0x%08x
\n
"
,
WARP7_OPTEE_BASE
,
WARP7_OPTEE_LIMIT
);
VERBOSE
(
"
\t
ATF/BL2 0x%08x-0x%08x
\n
"
,
BL2_RAM_BASE
,
BL2_RAM_LIMIT
);
VERBOSE
(
"
\t
SHRAM 0x%08x-0x%08x
\n
"
,
SHARED_RAM_BASE
,
SHARED_RAM_LIMIT
);
VERBOSE
(
"
\t
FIP 0x%08x-0x%08x
\n
"
,
WARP7_FIP_BASE
,
WARP7_FIP_LIMIT
);
VERBOSE
(
"
\t
DTB 0x%08x-0x%08x
\n
"
,
WARP7_DTB_BASE
,
WARP7_DTB_LIMIT
);
VERBOSE
(
"
\t
UBOOT/BL33 0x%08x-0x%08x
\n
"
,
WARP7_UBOOT_BASE
,
WARP7_UBOOT_LIMIT
);
VERBOSE
(
"
\t
OPTEE 0x%08x-0x%08x
\n
"
,
WARP7_OPTEE_BASE
,
WARP7_OPTEE_LIMIT
);
VERBOSE
(
"
\t
ATF/BL2 0x%08x-0x%08x
\n
"
,
BL2_RAM_BASE
,
BL2_RAM_LIMIT
);
VERBOSE
(
"
\t
SHRAM 0x%08x-0x%08x
\n
"
,
SHARED_RAM_BASE
,
SHARED_RAM_LIMIT
);
VERBOSE
(
"
\t
FIP 0x%08x-0x%08x
\n
"
,
WARP7_FIP_BASE
,
WARP7_FIP_LIMIT
);
VERBOSE
(
"
\t
DTB-OVERLAY 0x%08x-0x%08x
\n
"
,
WARP7_DTB_OVERLAY_BASE
,
WARP7_DTB_OVERLAY_LIMIT
);
VERBOSE
(
"
\t
DTB 0x%08x-0x%08x
\n
"
,
WARP7_DTB_BASE
,
WARP7_DTB_LIMIT
);
VERBOSE
(
"
\t
UBOOT/BL33 0x%08x-0x%08x
\n
"
,
WARP7_UBOOT_BASE
,
WARP7_UBOOT_LIMIT
);
}
/*
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c
View file @
ae478c26
...
...
@@ -27,16 +27,6 @@ static bl_mem_params_node_t bl2_mem_params_descs[] = {
.
next_handoff_image_id
=
BL33_IMAGE_ID
,
},
{
.
image_id
=
HW_CONFIG_ID
,
SET_STATIC_PARAM_HEAD
(
ep_info
,
PARAM_IMAGE_BINARY
,
VERSION_2
,
entry_point_info_t
,
SECURE
|
NON_EXECUTABLE
),
SET_STATIC_PARAM_HEAD
(
image_info
,
PARAM_IMAGE_BINARY
,
VERSION_2
,
image_info_t
,
0
),
.
image_info
.
image_base
=
WARP7_DTB_BASE
,
.
image_info
.
image_max_size
=
WARP7_DTB_SIZE
,
.
next_handoff_image_id
=
INVALID_IMAGE_ID
,
},
{
.
image_id
=
BL32_EXTRA1_IMAGE_ID
,
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/warp7_io_storage.c
View file @
ae478c26
...
...
@@ -60,10 +60,6 @@ static const io_uuid_spec_t bl32_uuid_spec = {
.
uuid
=
UUID_SECURE_PAYLOAD_BL32
,
};
static
const
io_uuid_spec_t
hw_config_uuid_spec
=
{
.
uuid
=
UUID_HW_CONFIG
,
};
static
const
io_uuid_spec_t
bl32_extra1_uuid_spec
=
{
.
uuid
=
UUID_SECURE_PAYLOAD_BL32_EXTRA1
,
};
...
...
@@ -76,6 +72,32 @@ static const io_uuid_spec_t bl33_uuid_spec = {
.
uuid
=
UUID_NON_TRUSTED_FIRMWARE_BL33
,
};
#if TRUSTED_BOARD_BOOT
static
const
io_uuid_spec_t
tb_fw_cert_uuid_spec
=
{
.
uuid
=
UUID_TRUSTED_BOOT_FW_CERT
,
};
static
const
io_uuid_spec_t
trusted_key_cert_uuid_spec
=
{
.
uuid
=
UUID_TRUSTED_KEY_CERT
,
};
static
const
io_uuid_spec_t
tos_fw_key_cert_uuid_spec
=
{
.
uuid
=
UUID_TRUSTED_OS_FW_KEY_CERT
,
};
static
const
io_uuid_spec_t
tos_fw_cert_uuid_spec
=
{
.
uuid
=
UUID_TRUSTED_OS_FW_CONTENT_CERT
,
};
static
const
io_uuid_spec_t
nt_fw_key_cert_uuid_spec
=
{
.
uuid
=
UUID_NON_TRUSTED_FW_KEY_CERT
,
};
static
const
io_uuid_spec_t
nt_fw_cert_uuid_spec
=
{
.
uuid
=
UUID_NON_TRUSTED_FW_CONTENT_CERT
,
};
#endif
/* TRUSTED_BOARD_BOOT */
/* TODO: this structure is replicated multiple times. rationalize it ! */
struct
plat_io_policy
{
uintptr_t
*
dev_handle
;
...
...
@@ -112,16 +134,43 @@ static const struct plat_io_policy policies[] = {
(
uintptr_t
)
&
bl32_extra2_uuid_spec
,
open_fip
},
[
HW_CONFIG
_ID
]
=
{
[
BL33_IMAGE
_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
hw_config
_uuid_spec
,
(
uintptr_t
)
&
bl33
_uuid_spec
,
open_fip
},
[
BL33_IMAGE_ID
]
=
{
#if TRUSTED_BOARD_BOOT
[
TRUSTED_BOOT_FW_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
bl33
_uuid_spec
,
(
uintptr_t
)
&
tb_fw_cert
_uuid_spec
,
open_fip
}
},
[
TRUSTED_KEY_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
trusted_key_cert_uuid_spec
,
open_fip
},
[
TRUSTED_OS_FW_KEY_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
tos_fw_key_cert_uuid_spec
,
open_fip
},
[
NON_TRUSTED_FW_KEY_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
nt_fw_key_cert_uuid_spec
,
open_fip
},
[
TRUSTED_OS_FW_CONTENT_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
tos_fw_cert_uuid_spec
,
open_fip
},
[
NON_TRUSTED_FW_CONTENT_CERT_ID
]
=
{
&
fip_dev_handle
,
(
uintptr_t
)
&
nt_fw_cert_uuid_spec
,
open_fip
},
#endif
/* TRUSTED_BOARD_BOOT */
};
static
int
open_fip
(
const
uintptr_t
spec
)
...
...
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/warp7_rotpk.S
0 → 100644
View file @
ae478c26
/*
*
Copyright
(
c
)
2018
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
.
global
warp7_rotpk_hash
.
global
warp7_rotpk_hash_end
warp7_rotpk_hash
:
/
*
DER
header
*/
.
byte
0x30
,
0x31
,
0x30
,
0x0D
,
0x06
,
0x09
,
0x60
,
0x86
,
0x48
.
byte
0x01
,
0x65
,
0x03
,
0x04
,
0x02
,
0x01
,
0x05
,
0x00
,
0x04
,
0x20
/
*
SHA256
*/
.
incbin
ROTPK_HASH
warp7_rotpk_hash_end
:
This diff is collapsed.
Click to expand it.
plat/imx/imx7/warp7/warp7_trusted_boot.c
0 → 100644
View file @
ae478c26
/*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <plat/common/platform.h>
extern
char
warp7_rotpk_hash
[],
warp7_rotpk_hash_end
[];
int
plat_get_rotpk_info
(
void
*
cookie
,
void
**
key_ptr
,
unsigned
int
*
key_len
,
unsigned
int
*
flags
)
{
*
key_ptr
=
warp7_rotpk_hash
;
*
key_len
=
warp7_rotpk_hash_end
-
warp7_rotpk_hash
;
*
flags
=
ROTPK_IS_HASH
;
return
0
;
}
int
plat_get_nv_ctr
(
void
*
cookie
,
unsigned
int
*
nv_ctr
)
{
*
nv_ctr
=
0
;
return
0
;
}
int
plat_set_nv_ctr
(
void
*
cookie
,
unsigned
int
nv_ctr
)
{
return
1
;
}
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