시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 (155) 썸네일형 리스트형 [Arm프로세서] 트러스트존(TrustZone): 논 시큐어 월드와 시큐어 월드란 트러스트 존의 개념을 이해하려면 먼저 논시큐어 월드와 시큐어 월드의 개념을 알아야 합니다. 논 시큐어 월드란논 시큐어 월드는 무엇일까요? 일반적인 운영체제 커널이나 애플리케이션이 동작하는 실행 환경입니다. [중요] 여기서 월드는 실행 환경 혹은 모드와 유사한 개념으로 사용됩니다. 보안 관점으로 논 시큐어 월드는 보안 수준이 낮아 해커의 공격을 당할 수 있는 실행 환경으로 볼 수 있습니다. 예를 들어 여러분이 사용하는 운영체제의 커널이나 애플리케이션은 논 시큐어 월드에서 실행됩니다. 그런데 여기까지 내용을 읽으면 논 시큐어 월드에서 실행되는 것이 구체적으로 무엇인지 감지 오지 않습니다. 이해를 돕기 위해 다음과 같은 예제 코드를 소개합니다. #include int main() { printf("h.. [Arm프로세서] 트러스트존(TrustZone)의 유래 트러스트존의 유래를 소개하려면 먼저 시스템의 공격을 방지하기 위한 시스템의 설계 과정에 대해 언급할 필요가 있습니다. 2000년 초부터 다양한 소프트웨어 기술들이 소개되고 발전되는데, 이에 비례해 해킹 기술이 업그레이드됩니다. 해커들이 다양한 소프트웨어 기법을 활용해 시스템을 공격하면서 해킹의 공격 루트가 다양해집니다. 애플리케이션에서 디바이스 드라이버 그리고 네트워트 패킷이나 서버를 통해 시스템을 침입하는 경로가 늘어난 것입니다. 많은 IT 업체들이 해킹으로 피해를 보면서 보안 수준이 높은 시스템 아키텍처의 필요성을 절감합니다. 그래서 IT업체들은 중요한 데이터를 암호화해서 저장하거나 해커의 공격으로 보호 받을 수 있게 시스템을 설계하게 됩니다. 고육지책으로 보안과 관련된 기능(Feature)를 .. [Arm프로세서] GIC의 기본 구조 효율적으로 인터럽트를 설정 및 처리하기 위해 GIC를 사용합니다. GIC를 구성하는 하드웨어 블록을 제대로 이해하고 GIC에서 정의한 레지스터의 용도와 사용 방법만 익히면 됩니다. GIC의 가장 중요한 기능은 무엇일까요? 이 질문에는 다음과 같이 답할 수 있습니다. ● 인터럽트의 우선 순위를 각 I/O 장치에 적용해 설정 ● 입력으로 받은 인터럽트를 CPU에 전달 GIC는 인터럽트 콘트롤러이므로 GIC의 주된 기능은 다른 인터럽트 콘트롤러와 다르지 않습니다. 대신 GIC에서 인터럽트를 4가지로 분류해 관리합니다. 이어서 GIC에서 정의된 4가지 인터럽트 소스를 소개하고 인터럽트 상태 머신을 설명합니다. ARMv7: 메모리 어보트 타입 익셉션의 실행 흐름 메모리 어보트 타입 익셉션이 발생하면 익셉션 핸들러에서 디버깅 정보를 출력하고 시스템을 리셋시킵니다. 소프트웨어적으로 시스템이 치명적인 오류가 있는 상태로 판단하기 때문입니다. 다음 그림을 보면서 메모리 어보트 타입 익셉션의 전체 실행 흐름을 알아봅시다. 대표사진 삭제사진 설명을 입력하세요. 그림 8.2 메모리 어보트 타입 익셉션이 발생할 때 전체 흐름 익셉션의 전체 실행 흐름도는 4단계로 분류할 수 있는데, 각 단계 별로 어떤 동작을 수행하는지 알아봅시다. 1단계: 프로세스가 실행하는 도중에 익셉션을 유발하는 명령어 실행 먼저 ①로 표시된 부분을 눈으로 따라가 봅시다. 프로세스가 메모리 어보트를 유발하는 명령어를 실행하는 부분입니다. 2단계: ARM 프로세서가 익셉션을 감지 ② 로 표시된 부분은.. ARMv7 익셉션(Exception)을 이루는 주요 개념 처음에 ARM 아키텍처의 익셉션을 공부할 때 익셉션 벡터 테이블을 이해하는데만 집중하는 분들이 많습니다. "ARMv7 아키텍처의 익셉션 동작 원리를 파악하려면 익셉션 벡터 테이블만 제대로 이해하면 된다"라고 생각하기 때문입니다. 하지만 익셉션 벡터 테이블의 내용만 익히면 배운 내용을 실전 프로젝트에 활용하기 어렵습니다. 왜냐면, 익셉션 벡터 테이블의 내용보다도 다음과 같은 사실을 파악하는게 더 중요하기 때문입니다. ❑ 익셉션은 소프웨어적으로 어떤 명령어가 실행될 때 유발될까? ❑ ARM 프로세서가 익셉션을 감지한 후 소프트웨어적으로 어떤 처리를 수행할까? 위에서 소개한 질문에 답을 하려면 다음 그림에서 소개한 익셉션을 구성하는 주요 개념에 대해 파악할 필요가 있습니다. 그림 8.1 ARMv7 익셉션을 .. [Arm프로세서] GIC: 인터럽트 소스와 타입 효율적으로 인터럽트를 설정 및 처리하기 위해 GIC를 사용하는데, GIC의 가장 중요한 기능은 다음과 같이 요약할 수 있습니다. 인터럽트의 우선순위를 각 I/O 장치에 적용해 설정 입력으로 받은 인터럽트를 CPU에 전달 GIC는 인터럽트 컨트롤러이므로 GIC의 주된 기능은 다른 인터럽트 컨트롤러와 다르지 않습니다. 다른 인터럽트 컨트롤러와 다른 점은 GIC는 인터럽트를 4가지 종류로 분류해 관리한다는 점입니다. 이어서 GIC에서 정의된 4가지 인터럽트 소스를 소개하고 인터럽트 상태 머신을 설명합니다. GIC는 4가지 타입의 인터럽트 소스를 처리하며 다음 표에서 종류를 확인할 수 있습니다.표 10.2 GIC를 구성하는 인터럽트 소스의 종류 이처럼 GIC는 페리페럴에서 전달된 4가지 인터럽트 입력.. [Arm프로세서] Armv8 - 링크 레지스터: X30 이어서 X30 레지스터를 스펙 문서 분석을 통해 알아봅시다. 출처: ARM® Cortex®-A Series Programmer's Guide for ARMv8-A https://developer.arm.com/documentation/den0024/latest/ 6.4 Flow control ... Calls to subroutines, where it is necessary for the return address to be stored in the link register (X30), use the BL instruction. This does not have a conditional version. BL behaves as a B instruction with the additional effect.. [Arm프로세서] Armv8 - SP_ELn과 X30 레지스터란? [Arm프로세서] Armv8 - SP_ELn과 X30 레지스터란? Armv8 아키텍처에서 정의된 레지스터 중 SP_ELn과 X30 레지스터는 AAPCS와 연관된 핵심 레지스터입니다. 전체 레지스터 목록 중에서 SP_ELn과 X30 레지스터를 먼저 소개하겠습니다. 전체 레지스터 목록 중 SP_ELn과 X30 레지스터 다음 그림을 보면서 Armv8 아키텍처에서 정의된 레지스터 중 AAPCS와 연관된 레지스터 목록을 알아봅시다. 그림 13.1 Armv8 아키텍처의 레지스터 목록 중 AAPCS와 연관된 레지스터 위 그림은 Armv8 아키텍처에서 정의된 레지스터 목록입니다. 그림에서 빗금으로 표기된 박스를 보겠습니다. SP_EL1은 EL1(익셉션 레벨1)에서 실행되는 SP 레지스터, SP_EL0는 EL0(익셉션 .. 이전 1 2 3 4 5 6 ··· 20 다음