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를 계속 로드할 수 있게 됩니다.