iperfTZ is a GlobalPlatform compatible tool to measure I/O throughput within tursted applications in ARM TrustZone. It uses GlobalPlatform’s Generic Interface Socket API for setting up sockets which connect to a remote application.
iperfTZ depends on the build environment provided by a trusted OS.
iperfTZ can be built out-of-tree with OP-TEE using make. Three environment variables have to be defined, in order to cross compile and link the client and trusted applications:
CROSS_COMPILE: path to the cross-compilation toolchainTEEC_EXPORT: path to the TEE Client API libraryTA_DEV_KIT_DIR: path to the trusted application development kit
Before iperfTZ can be cross-compiled, ensure that the out/ folder has been generated for the optee_client repository. Change into the OP-TEE build repository directory and generate the output:
make optee-client-commonAfterwards, change back into the iperfTZ folder and run the following command.
make CROSS_COMPILE=/path/to/optee/toolchains/aarch64/bin/aarch64-linux-gnu- TEEC_EXPORT=/path/to/optee/optee_client/out/export/usr TA_DEV_KIT_DIR=/path/to/optee/optee_os/out/arm/export-ta_arm64NOTE
The value of the environment variable
TEEC_EXPORThas changed with OP-TEE v3.5.
- with OP-TEE v3.4 and earlier:
TEEC_EXPORT=/path/to/optee/optee_client/out/export
- with OP-TEE v3.5 and later:
TEEC_EXPORT=/path/to/optee/optee_client/out/export/usr
The build output can then be found in the out/ folder of iperfTZ’s base folder.
This work has been supported by EU H2020 ICT project LEGaTO, contract #780681 .