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를 계속 로드할 수 있게 됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-05-07(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-05-07(UTC)"],[],[],null,["# Trusty OS (TOS) partitions\n\n[Trusty](/docs/security/features/trusty) is Google's implementation of a Trusted\nExecution Environment (TEE) OS that runs alongside Android. This is the\nspecification for devices using Arm Trustzone technology to provide a TEE. If\nyour ARM devices use Trusty as the secure OS solution, implement the bootloader\nas described in the following sections.\n\nInitialize TOS\n--------------\n\nTo load and initialize the Trusty OS (TOS), a bootloader should:\n\n- Set up and configure all available RAM.\n- Initialize at least one serial port.\n- Verify signature of TOS image.\n- Load TOS into RAM (execution from flash or TCM isn't supported).\n- Jump to the first instruction in the TOS image after setting up the state and registers as described below.\n\nCall in to the TOS image\n------------------------\n\nConfigure the following state at entry:\n\n- MMU turned off\n- Data cache flushed and turned off (instruction cache can be on or off)\n- All interrupts (IRQs and FIQs) disabled\n- CPU in SVC mode on ARMv7 and EL3 on ARMv8\n- Registers in the following state:\n - `r0/x0`: Size of memory allocated to TOS.\n - `r1/x1`: Physical address of a contiguous block of memory that contains platform-specific boot parameters. The layout of this block is platform-specific.\n - `r2/x2`: Size of the above block of memory.\n - `r14/x30`: Return address to jump to (in nonsecure mode) after TOS initializes.\n\n| **Note:** `r0-r3/x0-x3` also serve as scratch registers to TOS. Don't expect their values to be preserved upon return.\n\nOn a 64-bit platform:\n\n- Only `w0-w2` are used for parameters, so `x0-x2` should contain only 32-bit values.\n- `x30` can contain a 64-bit value.\n- The value in `x0` when added to the base address of TOS entry-point should result in a 32-bit value. The same applies to the size in register x2 when added to the address of boot parameter block in `x1`.\n\nReturn from TOS\n---------------\n\nAfter TOS completes initialization, it returns to the bootloader in nonsecure\nmode (SCR.NS set to `1`) so that the bootloader can continue loading the primary\noperating system (that is, Android)."]]