Trusty는 Android와 함께 실행되는 신뢰할 수 있는 실행 환경(TEE) OS를 Google에서 구현한 것입니다. Arm Trustzone 기술을 사용하여 TEE를 제공하는 기기의 사양입니다. ARM 기기에서 보안 OS 솔루션으로 Trusty를 사용하는 경우 다음 섹션의 설명에 따라 부트로더를 구현하세요.
TOS 초기화
Trusty OS(TOS)를 로드하고 초기화하려면 부트로더가 다음을 실행해야 합니다.
- 사용 가능한 모든 RAM을 설정 및 구성합니다.
- 하나 이상의 직렬 포트를 초기화합니다.
- TOS 이미지의 서명을 확인합니다.
- TOS를 RAM에 로드합니다(플래시 또는 TCM에서의 실행은 지원되지 않음).
- 아래에 설명된 대로 상태 및 레지스터를 설정한 후 TOS 이미지의 첫 번째 안내로 이동합니다.
TOS 이미지로 호출
entry에서 다음 상태를 구성합니다.
- MMU 사용 중지
- 데이터 캐시 플러시 및 사용 중지(안내 캐시는 사용될 수도, 사용 중지될 수도 있음).
- 모든 인터럽트(IRQ 및 FIQ) 사용 중지
- CPU가 ARM v7에서는 SVC 모드, ARM v8에서는 EL3
- 다음과 같은 상태의 레지스터
r0/x0
: TOS에 할당된 메모리의 크기입니다.r1/x1
: 플랫폼별 부팅 매개변수가 포함된 메모리 연속 블록의 실제 주소입니다. 이 블록의 레이아웃은 플랫폼에 따라 다릅니다.r2/x2
: 위 메모리 블록의 크기입니다.r14/x30
: TOS가 초기화된 후 비보안 모드에서 이동할 반환 주소입니다.
64비트 플랫폼의 경우 다음과 같습니다.
w0-w2
만 매개변수에 사용되므로x0-x2
는 32비트 값만 포함해야 합니다.x30
은 64비트 값을 포함할 수 있습니다.x0
의 값이 TOS 진입점의 기본 주소에 추가될 때 32비트 값이 생성됩니다. 이 사항은 레지스터 x2가x1
의 부팅 매개변수 블록 주소에 추가될 때 x2 레지스터의 크기에 동일하게 적용됩니다.
TOS에서 반환
초기화가 완료되면 TOS가 비보안 모드에서 부트로더로 반환되어(SCR.NS가 1
로 설정) 부트로더가 기본 운영체제인 Android를 계속 로드할 수 있게 됩니다.