https://optee.readthedocs.io/en/latest/index.html
공식 문서에 build하는 방법이 있으나 32bit기준으로 설명되어 있으며 개발환경, 폴더 구조에 대하여 정확하게 설명하는 부분도 없고 google에 정보도 많이 없어 본인의 기록을 위해 적습니다.
- 개발환경
- Ubuntu18.04.05
- Python 3.6.9
- gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
32bit일 때 arm-linux-gnueabihf-gcc 를 cross complier로 사용하지만 64bit의 경우는 aarch64-linux-gnu-gcc를 사용하게 됩니다.
필요한 라이브러리를 다운받아야 하는데 일단
$ sudo apt-get install build-essential
$ sudo apt-get install gcc-aarch64-linux-gnu
$ sudo apt-get install g++-aarch64-linux-gnu
를 다운 받습니다. Makefile을 보니까 필요한게
aarch64-linux-gnu-gcc
aarch64-linux-gnu-ld
aarch64-linux-gnu-ar
aarch64-linux-gnu-nm
aarch64-linux-gnu-objcopy
aarch64-linux-gnu-objdump
aarch64-linux-gnu-readelf
요정도 있어야 될것 같습니다.
(*제가 테스트한 pwd경로와 폴더 구조입니다.)
optee_client
$ git clone https://github.com/OP-TEE/optee_client
$ cd optee_client
$ make CROSS_COMPILE=aarch64-linux-gnu-
$ sudo make install
$ mkdir build
$ cd build
$ cmake -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc ..
$ make
빌드에 성공하면 optee_client 경로에
out/
tee-supplicant/
폴더가 생성됩니다. 각각 out/export, out/libckteec, out/libteec 폴더가 생성되고 /optee_client/build/tee-supplicant 경로에 tee-supplicant 바이너리가 빌드되어 있으면 성공입니다.
추가로 64bit로 빌드된 것을 확인하기 위해
$ file tee-supplicant
실행했을때
ELF 64-bit를 확인할 수 있습니다.
optee_os
$ git clone https://github.com/OP-TEE/optee_os
$ cd optee_os
$ make \
CFG_ARM64_core=y \
CFG_TEE_BENCHMARK=n \
CFG_TEE_CORE_LOG_LEVEL=3 \
CROSS_COMPILE=aarch64-linux-gnu- \
CROSS_COMPILE_core=aarch64-linux-gnu- \
CROSS_COMPILE_ta_arm32=arm-linux-gnueabihf- \
CROSS_COMPILE_ta_arm64=aarch64-linux-gnu- \
DEBUG=1 \
O=out/arm \
PLATFORM=vexpress-qemu_armv8a
빌드에 성공하면 out폴더가 생성됩니다. 폴더를 따라가다보면 optee_os/out/arm/export-ta_arm64 경로가 있는것을 확인해야합니다.
optee_example[hello-world]
$ git clone https://github.com/linaro-swg/optee_examples.git
$ cd optee_examples/hello_world/host
$ make \
CROSS_COMPILE=aarch64-linux-gnu- \
TEEC_EXPORT=<optee_client>/out/export/usr \
--no-builtin-variables
$ cd optee_examples/hello_world/ta
$ make \
CROSS_COMPILE=aarch64-linux-gnu- \
PLATFORM=vexpress-qemu_virt \
TA_DEV_KIT_DIR=<optee_os>/out/arm/export-ta_arm64
host/ 에서 명령어를 실행하면 optee_example_hello_world 바이너리가 생성됩니다.
make 명령어는 제 환경 기준으로
$ make \
CROSS_COMPILE=aarch64-linux-gnu- \
TEEC_EXPORT=/home/lsdk/tee/optee_client/out/export/usr \
--no-builtin-variables
명령어를 사용했습니다.
ta/의 결과는 아래 사진처럼 나오는데
.ta 파일인 8aaaf200-2450-11e4-abe2-0002a5d5c51b.ta가 중요합니다. 나중에 보드에 올릴때 .ta 저걸 올리기 때문에 잘 가지고 있어야 합니다.
'IT 이야기' 카테고리의 다른 글
[Linux] dd명령어 활용, dump (0) | 2021.09.01 |
---|---|
[네트워크] DNS (Domain Name System) (0) | 2021.08.05 |
MYSql Server8.0.17~19 'member' 예약어 이슈 (0) | 2021.07.07 |
CPU scheduling, 노예의 탄생 (0) | 2021.07.06 |
TPM(Trusted Platform Module) (0) | 2021.06.25 |
댓글