소스 : https://github.com/codetronik/optee_example
프로젝트 구조는 아래와 같이 구성되어야 한다. (어떻게 만들던 상관없지만, Normal 과 TA는 분리되어 있어야 개발이 편해진다.)
├── include
│ └── common.h
├── normal
│ └── main.cpp
└── ta
├── Makefile
├── ta.c
├── sub.mk // 필수 파일
└── user_ta_header_defines.h // 필수 파일
유저가 OP-TEE OS의 Normal World(일반 리눅스 영역)에서 main을 실행하면, Secure World의 TA와 통신하게 된다.

TA 소스는 콜백 함수 구현이므로, 반드시 C로 작성하여야 컴파일이 된다. Normal은 C++로 작성해도 상관 없다.
TA와 Normal 각각 컴파일 하여야 한다.
필자는 라즈베리파이를 사용 중이라 크로스컴파일러 설치를 안했으므로, 참고 바람.
normal의 경우 필자는 clang을 사용했다.
// normal
clang --sysroot=/home/code/optee/out-br/host/aarch64-buildroot-linux-gnu/sysroot -o main main.cpp -lteec -std=c++20 -lstdc++ -Wunused-parameter
// TA
make
TA 실행 파일(11223344-5566-7788-99aa-bbccddeeff00.ta)은 /lib/optee_armtz에 복사한다. Normal은 /tmp 등 적절한 곳에 복사한다. 우분투<->QEMU간 파일 전송은 #1편을 참조
Secure World 콘솔을 보면, Hello 가 로깅된 것을 확인할 수 있다.
참조 : https://optee.readthedocs.io/en/latest/building/trusted_applications.html
'OP-TEE' 카테고리의 다른 글
[OP-TEE with QEMU] 3. 키 생성 및 AES (0) | 2025.03.13 |
---|---|
[OP-TEE with QEMU] 1. 환경 구축 (0) | 2025.02.25 |
라즈베리파이5 환경 구축 (0) | 2025.02.23 |