본문 바로가기

추천 검색어

실시간 인기 검색어

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리

Armv8-A와 Armv7-A로 배우는 시스템 반도체와 전기자동차 시스템 개발의 핵심
위키북스 임베디드 & 모바일 시리즈 42
김동현 저자(글)
위키북스 · 2023년 06월 22일
10.0
10점 중 10점
(7개의 리뷰)
최고예요 (67%의 구매자)
  • 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 대표 이미지
    시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 대표 이미지
  • 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 부가 이미지1
    시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 부가 이미지1
  • A4
    사이즈 비교
    210x297
    시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 사이즈 비교 188x240
    단위 : mm
01 / 03
무료배송 소득공제
10% 43,200 48,000
적립/혜택
2,400P

기본적립

5% 적립 2,400P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 2,400P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송
배송비 안내
국내도서/외국도서
도서 포함 15,000원 이상 구매 시 무료배송
도서+사은품 또는 도서+사은품+교보Only(교보굿즈)

15,000원 미만 시 2,500원 배송비 부과

교보Only(교보배송)
각각 구매하거나 함께 20,000원 이상 구매 시 무료배송

20,000원 미만 시 2,500원 배송비 부과

해외주문 서양도서/해외주문 일본도서(교보배송)
각각 구매하거나 함께 15,000원 이상 구매 시 무료배송

15,000원 미만 시 2,500원 배송비 부과

업체배송 상품(전집, GIFT, 음반/DVD 등)
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
3/8(토) 출고예정
기본배송지 기준
배송일자 기준 안내
로그인 : 회원정보에 등록된 기본배송지
로그아웃 : '서울시 종로구 종로1' 주소 기준
로그인정확한 배송 안내를 받아보세요!

이달의 꽃과 함께 책을 받아보세요!

1권 구매 시 결제 단계에서 적용 가능합니다.

알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 상세 이미지
친절한 선배 개발자가 Arm 아키텍처에 대해 꼼꼼하게 알려주듯, Arm 아키텍처(Armv8-A, Armv7-A) 아키텍처를 쉽고 친절하게 설명합니다!
이 책에서는 Arm 아키텍처를 구성하는 주요 기능 중에서 실전 프로젝트에 바로 적용될 만한 내용을 선별해 자세히 설명합니다. 또한 리눅스 커널이나 하이퍼바이저, 트러스티드 펌웨어 같은 시스템 소프트웨어에서 Arm 아키텍처를 구성하는 주요 기능들이 어떤 방식으로 활용되는지 상세하게 다룹니다. 각 장에서 설명하는 내용은 시스템 반도체나 전기자동차 같은 시스템 소프트웨어 개발에 그대로 적용될 수 있습니다.

★ 이 책에서 다루는 내용 ★

◎ Arm 아키텍처의 기본인 어셈블리 명령어, 레지스터, AAPCS
◎ Armv8-A에서 정의된 익셉션 레벨, Armv7-A의 동작 모드
◎ 익셉션의 동작 원리 및 익셉션 핸들러 코드 분석을 통한 원리 설명
◎ 하이퍼바이저의 근간인 가상화와 시큐리티 기술의 핵심인 트러스트존
◎ 메모리 아키텍처와 캐시, 메모리 모델과 배리어의 동작 원리

이 책의 총서 (27)

작가정보

저자(글) 김동현

《디버깅을 통해 배우는 리눅스 커널의 구조와 원리》의 저자이며, LG전자에서 12년째 Arm 프로세서 기반 리눅스 시스템 엔지니어로 일하고 있다. 주로 Arm 프로세서에서 설계된 신규 칩셋(SoC: Application Processor) 기반의 프로젝트에서 시스템(타깃 보드)을 브링업하거나 다양한 트러블슈팅으로 크래시 이슈를 해결하는 과제에 참여했다. Arm 아키텍처에 관심이 많고 특히 Arm 아키텍처를 구성하는 기능들이 리눅스 커널, 부트로더 혹은 하이퍼바이저에 어떤 방식으로 구현됐는지 디버깅하는 것을 즐긴다. 로우 레벨 소프트웨어의 다양한 문제를 해결하는 디버깅 방법에 관심이 많고, 실무 지식을 다른 동료 개발자와 공유하면서 기쁨을 느낀다.

- 유튜브: https://www.youtube.com/@schezokim
- 블로그: https://austindhkim.tistory.com

* 저자의 Arm(Armv8-A, Armv7-A) 아키텍처 직강(유료): https://wikibook.co.kr/arm-arch

목차

  • ▣ 1장: Arm 프로세서 소개
    1.1 Arm 프로세서의 역사
    __1.1.1 에이콘의 설립
    __1.1.2 Arm사의 설립
    __1.1.3 2010년 이후의 모바일 시장 석권
    1.2 Arm 프로세서의 시리즈
    __1.2.1 Cortex-A 시리즈
    __1.2.2 Cortex-R 시리즈
    __1.2.3 Cortex-M 시리즈
    1.3 Arm 프로세서의 전망
    __1.3.1 Arm 프로세서의 출하량
    __1.3.2 Arm의 생태계
    1.4 Arm의 라이선스 모델
    1.5 Arm 프로세서 관련 용어
    __1.5.1 Arm 아키텍처란?
    __1.5.2 Arm 프로세서란?
    __1.5.3 Arm 코어란?
    1.6 이 책의 구성
    1.7 이 책에서 다루는 Arm 아키텍처와 운영체제
    __1.7.1 Arm 아키텍처
    __1.7.2 Arm 프로세서와 함께 다루는 운영체제
    1.8 정리

    ▣ 2장: Arm 아키텍처 학습 방법
    2.1 Arm 프로세서는 왜 배워야 할까?
    __2.1.1 브링업을 잘 하기 위해
    __2.1.2 디바이스 드라이버 개발을 잘 하기 위해
    __2.1.3 RTOS나 리눅스 커널을 깊이 있게 이해하기 위해
    __2.1.4 디버깅을 통한 문제 해결 능력을 키우기 위해
    __2.1.5 Arm 아키텍처를 일반 소프트웨어 개발자도 배워야 하는 이유
    2.2 Arm 프로세서를 공부하는 방법의 문제점
    __2.2.1 Arm 어셈블리 명령어를 무리하게 암기한다
    __2.2.2 Arm 아키텍처의 내용만 따로 배운다
    __2.2.3 배운 내용이 실전 프로젝트에서 어떻게 활용되는지 파악하지 않는다
    2.3 Arm 아키텍처는 어떻게 공부해야 할까?
    __2.3.1 디버깅을 하면서 어셈블리 명령어를 익힌다
    __2.3.2 운영체제의 기본 원리와 함께 Arm 아키텍처를 배운다
    __2.3.3 실전 프로젝트에서 배운 내용이 어떤 방식으로 구현돼 있는지 확인한다
    2.4 정리

    ▣ 3장: 레지스터
    3.1 레지스터 소개
    __3.1.1 레지스터란?
    __3.1.2 Arm 아키텍처의 레지스터
    3.2 Armv7 아키텍처의 레지스터
    __3.2.1 범용 레지스터
    ____3.2.1.1 Arm 스펙에서 범용 레지스터 확인하기
    ____3.2.1.2 R0 ~ R15 레지스터의 역할
    ____3.2.1.3 범용 레지스터에서 뱅크드 레지스터란?
    __3.2.2 CPSR와 SPSR 레지스터
    ____3.2.2.1 CPSR 레지스터
    ____3.2.2.2 SPSR 레지스터
    3.3 Armv8 아키텍처의 레지스터
    __3.3.1 Armv8 아키텍처의 범용 레지스터
    ____3.3.1.1 범용 레지스터 소개
    __3.3.2 스페셜 레지스터
    __3.3.3 PSTATE와 SPSR_ELx 레지스터
    ____3.3.3.1 PSTATE
    ____3.3.3.2 SPSR_ELx 레지스터
    ____3.3.3.3 PSTATE의 필드를 설정하는 명령어
    __3.3.4 시스템 레지스터
    __3.3.5 시스템 레지스터에 접근하는 명령어
    3.4 정리

    ▣ 4장: 어셈블리 명령어
    4.1 Arm 어셈블리 명령어 소개
    __4.1.1 어셈블리 명령어란?
    __4.1.2 어셈블리 명령어의 기본 형식
    __4.1.3 어셈블리 명령어의 종류
    __4.1.4 어셈블리 명령어로 무엇을 할 수 있을까?
    __4.1.5 어셈블리 명령어의 진실과 오해
    4.2 데이터 처리 명령어
    __4.2.1 Move 명령어
    ____4.2.1.1 MOV 명령어
    ____4.2.1.2 MVN 명령어
    __4.2.2 산술 명령어
    ____4.2.2.1 ADD 명령어
    ____4.2.2.2 SUB 명령어
    ____4.2.2.3 ADC 명령어
    ____4.2.2.4 SBC 명령어
    ____4.2.2.5 RSB 명령어
    ____4.2.2.6 RSC 명령어
    __4.2.3 비트 시프트 명령어
    ____4.2.3.1 LSL 명령어
    ____4.2.3.2 LSR 명령어
    ____4.2.3.3 ASR 명령어
    ____4.2.3.4 ROR 명령어
    __4.2.4 논리 비트 명령어
    ____4.2.4.1 AND 명령어
    ____4.2.4.2 ORR 명령어
    ____4.2.4.3 ORN 명령어
    ____4.2.4.4 BIC 명령어
    ____4.2.4.5 EOR 명령어
    4.3 메모리 연산 명령어
    __4.3.1 Load(ldr) 명령어
    __4.3.2 Store(str) 명령어
    4.4 Armv7 - A32 비교 및 분기 명령어
    __4.4.1 플래그 설정 명령어
    ____4.4.1.1 CMP 명령어
    ____4.4.1.2 CMN 명령어
    ____4.4.1.3 TST 명령어
    ____4.4.1.4 TEQ 명령어
    __4.4.2 조건부 코드
    __4.4.3 B와 BL 명령어
    ____4.4.3.1 B 〈label〉 명령어
    ____4.4.3.2 BL 〈label〉 명령어
    ____4.4.3.3 BR 명령어
    ____4.4.3.4 BLR 명령어
    4.5 Armv8 - A64 조건부 분기 명령어
    __4.5.1 조건부 분기 명령어(B.COND)
    __4.5.2 Compare/Test 분기 명령어
    ____4.5.2.1 CBZ 명령어
    ____4.5.2.2 CBNZ 명령어
    ____4.5.2.3 TBZ 명령어
    ____4.5.2.4 TBNZ 명령어
    4.6 트랩 관련 명령어
    __4.6.1 SVC 명령어
    __4.6.2 HVC 명령어
    __4.6.3 SMC 명령어
    4.7 프로세서 상태 제어 명령어
    __4.7.1 xPSR(CPSR, SPSR) 레지스터 설정 명령어
    __4.7.2 PSTATE 설정 명령어
    4.8 정리

    ▣ 5장: Armv7 - 동작 모드
    5.1 Armv7 아키텍처의 동작 모드 소개
    __5.1.1 PL와 동작 모드 소개
    __5.1.2 어떤 동작 모드를 선택해야 할까?
    5.2 동작 모드와 관련된 레지스터
    __5.2.1 CPSR 레지스터
    __5.2.2 SPSR 레지스터
    5.3 동작 모드를 바꾸는 명령어
    __5.3.1 MSR CPSR_C 명령어로 동작 모드 변경
    ____5.3.1.1 MSR CPSR_C 명령어를 실행하면 변경되는 비트
    ____5.3.1.2 MSR CPSR_C 명령어를 사용하는 예제 코드 분석
    __5.3.2 SUBS와 MOVS 명령어
    5.4 동작 모드를 활용한 리눅스 커널의 구현 방식
    __5.4.1 동작 모드별로 스택을 저장
    __5.4.2 익셉션이 유발된 후 슈퍼바이저 모드로 변경
    5.5 정리

    ▣ 6장: Armv8 - 익셉션 레벨
    6.1 Armv8 아키텍처의 익셉션 레벨
    __6.1.1 익셉션 레벨 소개
    __6.1.2 익셉션 레벨과 특권 레벨
    __6.1.3 익셉션 레벨은 어떻게 변경될까?
    6.2 익셉션 레벨과 관련된 레지스터
    __6.2.1 PSTATE와 CurrentEL 레지스터
    __6.2.2 SPSR_ELx 레지스터
    __6.2.3 ELR_ELx 레지스터
    6.3 익셉션 레벨과 관련된 명령어
    __6.3.1 mrs 〈Xt〉 CurrentEL
    __6.3.2 ERET 명령어
    __6.3.3 슈퍼바이저 콜(시스템 콜 발생)
    __6.3.4 하이퍼바이저 콜
    __6.3.5 시큐어 모니터 콜
    6.4 익셉션 레벨을 읽고 제어하는 예제 코드 분석
    __6.4.1 리눅스 커널에서 익셉션 레벨을 읽고 제어하는 루틴
    __6.4.2 XEN 하이퍼바이저에서 익셉션 레벨을 체크
    6.5 정리

    ▣ 7장: 익셉션 소개
    7.1 익셉션 소개
    __7.1.1 CPU 아키텍처 관점에서 익셉션이란?
    __7.1.2 Arm 아키텍처 관점에서 익셉션이란?
    __7.1.3 소프트웨어 관점에서 익셉션이란?
    7.2 익셉션의 동작 원리를 잘 알아야 하는 이유
    __7.2.1 실전 프로젝트에서 문제해결 능력을 키울 수 있다
    __7.2.2 운영체제를 깊이 있게 이해하기 위해
    __7.2.3 하이퍼바이저, 트러스트존을 이해하기 위해
    7.3 익셉션을 배우기 어려운 이유
    __7.3.1 익셉션의 주요 내용은 CPU 설계 관점으로 설명한 내용이 많다
    __7.3.2 익셉션이 발생하면 지정된 주소로 분기하는 동작이 낯설다
    7.4 익셉션을 효과적으로 배우는 방법
    __7.4.1 익셉션을 배우는 데 필요한 기반 지식을 함께 배운다
    __7.4.2 익셉션의 기본 동작 원리를 먼저 배운다
    __7.4.3 운영체제 커널에 구현된 익셉션 코드를 함께 분석한다
    __7.4.4 실습을 하면서 익셉션을 배운다
    7.5 익셉션을 구성하는 주요 개념
    __7.5.1 익셉션이 발생할 때의 기본 동작
    __7.5.2 익셉션 벡터 테이블
    __7.5.3 익셉션과 관련된 레지스터
    __7.5.4 익셉션 관련 코드는 어디에 구현됐을까?
    ____7.5.4.1 익셉션과 관련된 코드는 무엇일까?
    ____7.5.4.2 익셉션 핸들러란?
    7.6 정리

    ▣ 8장: Armv7 - 익셉션
    8.1 Armv7 익셉션의 주요 동작
    __8.1.1 Armv7 아키텍처의 익셉션 소개
    __8.1.2 익셉션을 구성하는 주요 개념
    8.2 익셉션의 전체 실행 흐름
    __8.2.1 메모리 어보트 타입 익셉션의 실행 흐름
    __8.2.2 인터럽트 타입 익셉션의 실행 흐름
    __8.2.3 소프트웨어 인터럽트 익셉션의 실행 흐름
    __8.2.4 익셉션의 전체 실행 흐름 정리
    8.3 익셉션 종류별 레지스터 변경
    __8.3.1 메모리 어보트 타입 익셉션
    ____8.3.1.1 Prefetch Abort가 발생할 때 Arm 코어의 세부 동작
    ____8.3.1.2 Data Abort를 유발할 때 Arm 코어의 세부 동작
    ____8.3.1.3 Undefined Instruction 익셉션을 유발할 때의 Arm 코어의 세부 동작
    __8.3.2 인터럽트 타입 익셉션을 유발할 때 Arm 코어의 세부 동작
    __8.3.3 소프트웨어 인터럽트
    8.4 파이프라인과 익셉션
    __8.4.1 파이프라인의 어느 단계에서 익셉션이 발생할까?
    __8.4.2 익셉션이 유발된 시점의 이전 모드로 복귀하는 방법 정리
    8.5 익셉션 벡터 테이블
    __8.5.1 익셉션 벡터 테이블이란?
    __8.5.2 익셉션 벡터 테이블과 익셉션 핸들러
    __8.5.3 익셉션 핸들러란?
    8.6 익셉션과 같이 배워야 하는 운영체제 지식
    __8.6.1 익셉션이 발생하면 프로세스는 어떻게 동작할까?
    __8.6.2 익셉션 벡터는 프로세스의 어느 공간에서 실행될까?
    8.7 메모리 어보트 타입 익셉션은 실제로 어떻게 유발될까?
    __8.7.1 Undefined Instruction 익셉션이 발생하는 사례
    __8.7.2 Prefetch Abort 익셉션이 발생하는 사례
    __8.7.3 Data Abort 익셉션이 발생하는 사례
    8.8 정리

    ▣ 9장: Armv8 - 익셉션
    9.1 Armv8 아키텍처의 익셉션 소개
    __9.1.1 Armv8 익셉션의 특징
    __9.1.2 Armv8 아키텍처의 익셉션을 잘 알아야 하는 이유
    9.2 Armv8 익셉션의 종류와 분류 체계
    __9.2.1 Synchronous 타입 익셉션
    __9.2.2 Asynchronous 익셉션 타입
    9.3 익셉션 클래스와 익셉션 신드롬 레지스터(ESR_ELx)
    __9.3.1 익셉션 신드롬 레지스터(ESR_ELx)
    __9.3.2 익셉션 클래스
    ____9.3.2.1 메모리 어보트 관련 익셉션 클래스
    ____9.3.2.2 트랩 관련 익셉션 클래스
    ____9.3.2.3 코프로세서의 트랩 관련 익셉션 클래스
    ____9.3.2.4 브레이크포인트 관련 익셉션 클래스
    ____9.3.2.5 기타 익셉션 클래스
    9.4 Armv8 익셉션을 구성하는 주요 개념
    __9.4.1 익셉션의 유발 요인
    __9.4.2 레지스터 업데이트
    __9.4.3 익셉션 레벨 변경
    __9.4.4 익셉션 벡터 테이블
    __9.4.5 익셉션 핸들러
    9.5 익셉션의 전체 실행 흐름
    __9.5.1 Synchronous 익셉션의 실행 흐름
    ____9.5.1.1 메모리 어보트로 Synchronous 익셉션이 처리되는 전체 흐름
    ____9.5.1.2 소프트웨어 인터럽트로 Synchronous 익셉션이 처리되는 전체 흐름
    __9.5.2 인터럽트 타입 익셉션의 실행 흐름
    __9.5.3 익셉션의 전체 실행 흐름 정리
    9.6 익셉션 종류별 레지스터 변경
    __9.6.1 Synchronous 익셉션을 유발할 때 변경되는 레지스터
    __9.6.2 IRQ 인터럽트 익셉션을 유발할 때 Arm 코어의 세부 동작
    9.7 익셉션 벡터 테이블 분석
    __9.7.1 익셉션 벡터 테이블을 구성하는 용어
    __9.7.2 익셉션 벡터 테이블의 내용 해석하기
    __9.7.3 익셉션 레벨별 익셉션 벡터 테이블 분석
    ____9.7.3.1 VBAR_EL1을 기준으로 익셉션 벡터 테이블 분석
    ____9.7.3.2 VBAR_EL2 기준 익셉션 벡터 테이블 분석하기
    __9.7.4 익셉션 핸들러 코드 분석
    __9.7.5 VBAR_EL1, VBAR_EL2 기준으로 익셉션 핸들러는 어디에 존재할까?
    9.8 익셉션과 익셉션 모델
    __9.8.1 EL0에서 익셉션 유발
    __9.8.2 EL1에서 익셉션 유발
    9.9 Illegal Return Event(허용되지 않는 익셉션 레벨 복귀)
    __9.9.1 Illegal Return Event란?
    __9.9.2 Illegal Return Event의 후속 처리
    9.10 정리

    ▣ 10장: GIC
    10.1 인터럽트 컨트롤러 소개
    __10.1.1 인터럽트 컨트롤러가 필요한 이유
    __10.1.2 인터럽트 컨트롤러의 기본 구조
    10.2 GIC 소개
    __10.2.1 GIC는 왜 배워야 할까?
    __10.2.2 GIC의 기본 기능
    __10.2.3 GIC 버전과 주요 기능
    10.3 GIC의 기본 구조
    __10.3.1 인터럽트 소스와 타입
    ____10.3.1.1 SPI(Shared Peripheral Interrupt)
    ____10.3.1.2 PPI(Private Peripheral Interrupt)
    ____10.3.1.3 SGI 인터럽트
    ____10.3.1.4 GIC 인터럽트 종류와 인터럽트 아이디
    ____10.3.1.5 인터럽트 아이디를 읽어 제어하는 코드 리뷰
    __10.3.2 인터럽트 상태 머신
    ____10.3.2.1 레벨 센서티브 타입 인터럽트의 상태 머신
    ____10.3.2.2 에지 트리거 타입 인터럽트의 상태 머신
    10.4 GIC의 프로그래머 모델
    __10.4.1 디스트리뷰터(GICD_*) 시스템 레지스터
    ____10.4.1.1 GICD_IROUTER〈n〉 레지스터
    ____10.4.1.2 GICD_IPRIORITYR〈n〉 레지스터
    ____10.4.1.3 GICD_ICFGR〈n〉 레지스터
    ____10.4.1.4 GICD_IGROUPR〈n〉 레지스터
    ____10.4.1.5 GICD_IGRPMODR〈n〉 레지스터
    __10.4.2 리디스트리뷰터 - Redistributors(GICR_*)
    ____10.4.2.1 GICR_ISENABLER0 레지스터
    ____10.4.2.2 GICR_ICFGR0 레지스터
    ____10.4.2.3 GICR_IPRIORITYR〈n〉 레지스터
    ____10.4.2.4 GICR_IGROUPR0 레지스터
    ____10.4.2.5 GICR_IGRPMODR0 레지스터
    __10.4.3 CPU 인터페이스(ICC_*_ELn)
    ____10.4.3.1 ICC_IAR1_EL1 레지스터
    ____10.4.3.2 ICC_EOIR1_EL1 레지스터
    ____10.4.3.3 ICC_PMR_EL1 레지스터
    ____10.4.3.4 ICC_RPR_EL1 레지스터
    ____10.4.3.5 ICC_BPR0_EL1 레지스터
    ____10.4.3.6 ICC_CTLR_EL1 레지스터
    ____10.4.3.7 ICC_SRE_EL1 레지스터
    ____10.4.3.8 ICC_IGRPEN1_EL1 레지스터
    10.5 인터럽트 그룹
    __10.5.1 인터럽트 그룹이 생겨난 이유
    __10.5.2 인터럽트 그룹이란?
    10.6 GIC 레지스터 설정
    __10.6.1 전반적인 설정(GICD_CTRL)
    __10.6.2 PE에서 설정하는 GIC 시스템 레지스터
    ____10.6.2.1 리디스트리뷰터 설정
    ____10.6.2.2 CPU 인터페이스 설정
    ____10.6.2.3 익셉션 벡터 베이스 주소와 SCR_EL3, HCR_EL2 설정
    __10.6.3 SPI, PPI, SGI 설정
    ____10.6.3.1 기본 속성 설정
    ____10.6.3.2 SPI를 특정 CPU 코어에 타깃팅: Affinity 설정
    __10.6.4 주요 기능 설정 및 동작 원리
    ____10.6.4.1 시큐어 인터럽트 라우팅
    ____10.6.4.2 러닝 우선순위와 인터럽트 동작
    10.7 GIC 인터럽트 핸들러에서 인터럽트 처리하기
    __10.7.1 Arm 코어의 익셉션 핸들러 루틴
    __10.7.2 GIC 인터럽트 핸들러 루틴
    __10.7.3 GIC 인터럽트 핸들러 코드 분석
    10.8 정리

    ▣ 11장: AAPCS(함수 호출 규약)
    11.1 AAPCS 소개
    __11.1.1 함수 호출과 관련된 진실과 오해
    __11.1.2 Arm 스펙 문서에서의 AAPCS
    11.2 소프트웨어 개발자는 왜 AAPCS를 알아야 할까?
    __11.2.1 프로그램의 근본 동작 원리 파악
    __11.2.2 안정적이고 최적화된 코드 작성
    __11.2.3 실전 프로젝트에서의 디버깅을 위한 기초 체력 증진
    11.3 AAPCS를 배우는 방법
    __11.3.1 AAPCS를 배우기 어려운 이유
    __11.3.2 AAPCS를 효과적으로 배우는 방법
    11.4 AAPCS를 배우기 위해 알아야 하는 지식
    __11.4.1 스택 자료구조란?
    __11.4.2 프로세스의 스택 공간이란?
    __11.4.3 스택 포인터와 스택 프레임
    __11.4.4 AAPCS와 관련된 레지스터
    11.5 정리

    ▣ 12장: Armv7 - AAPCS
    12.1 Armv7 아키텍처에서의 AAPCS 관련 레지스터
    __12.1.1 SP와 LR 레지스터란?
    __12.1.2 함수를 호출하기 위한 설계
    12.2 서브루틴(함수)으로 분기될 때 실행되는 어셈블리 명령어
    __12.2.1 스택과 관련된 명령어
    ____12.2.1.1 PUSH 명령어
    ____12.2.1.2 SUB 명령어
    ____12.2.1.3 POP 명령어
    __12.2.2 분기 명령어
    12.3 AAPCS와 관련된 레지스터와 어셈블리 명령어 분석
    __12.3.1 SP 레지스터의 세부 동작
    __12.3.2 LR(R14) 링크 레지스터와 어셈블리 명령어 분석
    __12.3.3 함수를 호출할 때 쓰이는 R0 ~ R3 레지스터와 명령어 분석
    12.4 AAPCS와 C 코드 최적화
    __12.4.1 함수 인자의 개수는 4개 이하로 제한
    __12.4.2 함수 반환형은 워드 단위로 지정
    __12.4.3 매우 자주 호출되는 함수는 inline 키워드로 선언
    12.5 정리

    ▣ 13장: Armv8 - AAPCS
    13.1 Armv8 아키텍처의 AAPCS 관련 레지스터
    __13.1.1 SP_ELn과 X30 레지스터란?
    __13.1.2 함수를 호출하기 위한 설계
    13.2 서브루틴(함수)으로 분기될 때 실행되는 어셈블리 명령어
    __13.2.1 스택과 관련된 명령어
    ____13.2.1.1 STP 명령어
    ____13.2.1.2 SUB 명령어
    ____13.2.1.3 LDP 명령어
    __13.2.2 분기와 복귀 명령어
    ____13.2.2.1 BL 명령어
    ____13.2.2.2 RET 명령어
    13.3 AAPCS와 관련된 레지스터와 어셈블리 명령어 분석
    __13.3.1 스택 포인터 레지스터의 세부 동작
    __13.3.2 X30 링크 레지스터와 어셈블리 명령어 분석
    __13.3.3 함수를 호출할 때 쓰이는 X0 ~ X7 레지스터와 명령어 분석
    13.4 AAPCS와 C 코드 최적화
    __13.4.1 함수 인자의 개수는 8개 이하로 제한
    __13.4.2 매우 자주 호출되는 함수는 inline 키워드로 선언
    13.5 정리

    ▣ 14장: 트러스트존
    14.1 트러스트존이란?
    __14.1.1 트러스트존이 도입된 이유
    14.2 트러스트존의 주요 개념
    __14.2.1 논시큐어 월드와 시큐어 월드란?
    __14.2.2 시큐어 모니터 콜
    14.3 Armv7 아키텍처의 트러스트존
    __14.3.1 시큐어 월드로 실행 흐름이 변경되는 과정
    __14.3.2 시큐어 모드와 익셉션 벡터 테이블
    __14.3.3 시큐어 상태와 SCR 레지스터
    __14.3.4 시큐어 월드의 익셉션 핸들러 구현
    __14.3.5 모니터 모드의 익셉션 핸들러 리뷰
    14.4 Armv8 아키텍처의 트러스트존
    __14.4.1 익셉션 레벨과 시큐어 모드와의 관계
    __14.4.2 시큐어 상태와 SCR_EL3 레지스터
    __14.4.3 SCR_EL3 레지스터에 접근하는 명령어
    __14.4.4 트러스트존에서 구현된 익셉션 핸들러
    14.5 트러스트존과 관련된 하드웨어 기능
    __14.5.1 AWPROT, ARPROT 시그널
    __14.5.2 트러스트존의 5가지 하드웨어 기능
    14.6 트러스트존의 실제 구현 방식
    __14.6.1 시큐어 월드에서 트러스티드 OS는 어떻게 구동할까?
    __14.6.2 시큐어 RTOS 구현 사례: QSEE
    14.7 Arm 트러스티드 펌웨어 EL3 모니터 코드 리뷰
    __14.7.1 Arm 트러스티드 펌웨어란?
    __14.7.2 EL3 모니터 익셉션 핸들러 코드 분석
    ____14.7.2.1 EL3 모니터 익셉션 핸들러 코드
    ____14.7.2.2 익셉션 종류별 익셉션 핸들러 코드 분석
    ____14.7.2.3 익셉션 핸들러 코드 분석
    14.8 정리

    ▣ 15장: 가상화(Virtualization)
    15.1 하이퍼바이저 소개
    __15.1.1 하이퍼바이저란?
    __15.1.2 하이퍼바이저 타입
    __15.1.3 하이퍼바이저를 구성하는 요소
    __15.1.4 하이퍼바이저는 왜 알아야 할까?
    15.2 가상화 관련 명령어
    __15.2.1 HVC 명령어
    __15.2.2 WFE, WFI 명령어
    15.3 가상화 관련 레지스터
    __15.3.1 HCR_EL2 레지스터
    __15.3.2 HCR_EL2 레지스터에 접근하는 명령어
    __15.3.3 HCR_EL2 레지스터에 접근하는 어셈블리 코드 분석
    15.4 가상화와 익셉션 벡터 테이블
    __15.4.1 익셉션 벡터 테이블 확인하기
    __15.4.2 가상화 관점의 익셉션 벡터 테이블 분석
    15.5 XEN 하이퍼바이저 코드 리뷰
    __15.5.1 XEN 하이퍼바이저 소개
    __15.5.2 EL2 익셉션 핸들러 코드 분석
    ____15.5.2.1 익셉션 핸들러 코드 소개
    ____15.5.2.2 익셉션 핸들러 코드 분석
    __15.5.3 게스트 Exit를 처리하는 코드 분석
    15.6 정리

    ▣ 16장: Armv9 - CCA
    16.1 CCA 소개
    __16.1.1 CCA란?
    __16.1.2 CCA가 도입된 이유
    __16.1.3 CCA를 구성하는 요소
    __16.1.4 CCA와 관련된 오픈소스 프로젝트
    16.2 RME
    __16.2.1 Realm 상태란?
    __16.2.2 Realm 월드의 소프트웨어 스택
    __16.2.3 RMM
    ____16.2.3.1 RMM의 주요 기능
    ____16.2.3.2 RMM에 접근하는 두 가지 채널
    16.3 GPT와 주소 접근 권한 제어
    __16.3.1 GPT(Granule Protection Table)란?
    __16.3.2 GPC(Granule Protection Check)의 동작 원리
    16.4 RME 관련 시스템 레지스터
    __16.4.1 SCR_EL3와 시큐어 상태
    __16.4.2 GPTBR_EL3 레지스터
    __16.4.3 GPCCR_EL3 레지스터
    16.5 정리

    ▣ 17장: 메모리 모델
    17.1 메모리 모델 소개
    __17.1.1 노멀 메모리 타입이란?
    __17.1.2 디바이스 메모리란?
    __17.1.3 메모리 맵과 메모리 모델
    17.2 메모리 리오더링과 Weakly Ordered 속성
    __17.2.1 메모리 리오더링 소개
    __17.2.2 어드레스 의존성이란?
    __17.2.3 메모리 리오더링 예시
    17.3 메모리 배리어
    __17.3.1 Data Memory Barrier(DMB)
    __17.3.2 Data Synchronization Barrier(DSB)
    __17.3.3 Instruction Synchronization Barrier(ISB)
    17.4 Shareability 도메인과 배리어 명령어 옵션
    __17.4.1 멀티 코어 시스템에서 데이터 동기화
    __17.4.2 Qualifier 및 Shareable 메모리 속성
    __17.4.3 배리어 명령어 옵션
    __17.4.4 배리어 명령어에 Qualifier를 적용하는 방법
    17.5 배리어 명령어 사용 케이스 스터디
    __17.5.1 리눅스 커널: 스핀락 해제 시 배리어 사용
    __17.5.2 시스템 레지스터 설정 시 ISB 배리어 설정
    17.6 정리

    ▣ 18장: 캐시
    18.1 캐시 소개
    __18.1.1 캐시란?
    __18.1.2 메모리 아키텍처에서 캐시란?
    __18.1.3 L1 캐시와 L2 캐시란?
    __18.1.4 캐시 알고리즘의 배경
    ____18.1.4.1 공간 지역성
    ____18.1.4.2 시간 지역성
    ____18.1.4.3 알고리즘 지역성
    18.2 캐시의 기본 동작 원리
    __18.2.1 캐시의 검색 방법
    ____18.2.1.1 캐시에 접근하기 위해 주소를 분류하는 방식
    ____18.2.1.2 캐시의 구성
    __18.2.2 캐시 룩업의 동작 원리
    ____18.2.2.1 캐시 히트 동작
    ____18.2.2.2 캐시 미스 동작
    __18.2.3 Way와 Set의 개념
    18.3 멀티 레벨 캐시
    __18.3.1 캐시의 성능 지표
    __18.3.2 멀티 캐시를 구성하는 원리
    __18.3.3 멀티 캐시 정책
    18.4 Arm Cortex 프로세서의 캐시 구조
    __18.4.1 Direct-Mapped 캐시 구조
    __18.4.2 Set-Associative 캐시 구조
    __18.4.3 Arm 프로세서별 캐시 스펙
    18.5 캐시 제어 레지스터
    __18.5.1 CTR_EL0 레지스터
    __18.5.2 CLIDR_EL1 레지스터
    __18.5.3 CCSIDR_EL1 레지스터
    18.6 캐시 제어 어셈블리 명령어
    __18.6.1 캐시 관련 용어 알아보기
    __18.6.2 캐시 관련 어셈블리 명령어
    18.7 정리

    ▣ 19장: 메모리 매니지먼트
    19.1 메모리 매니지먼트 소개
    __19.1.1 메모리 매니지먼트란?
    __19.1.2 MMU란?
    __19.1.3 가상 주소와 물리 주소의 개념
    __19.1.4 운영체제 관점에서 메모리 매니지먼트란?
    19.2 MMU의 세부 동작
    __19.2.1 MMU를 구성하는 주요 기능
    __19.2.2 MMU에서 주소를 변환하는 과정
    19.3 익셉션 레벨별 가상 주소 영역
    __19.3.1 가상화 시스템에서 가상 주소 공간
    __19.3.2 가상 주소 공간과 관련된 변환 테이블 베이스 주소
    __19.3.3 가상 주소 영역의 사이즈는 어떻게 설정될까?
    19.4 메모리 컨트롤 시스템 레지스터
    __19.4.1 TTBR0_EL1, Translation Table Base Register 0(EL1)
    __19.4.2 TCR_EL1 레지스터
    __19.4.3 SCTLR_EL1 레지스터
    __19.4.4 FAR_EL1, Fault Address Register(EL1)
    19.5 메모리 속성과 MMU를 설정하는 예제 코드 분석
    __19.5.1 메모리 속성 정보를 설정하는 루틴의 예
    __19.5.2 MMU를 설정하는 명령어 루틴 소개 - XEN 하이퍼바이저
    19.6 정리

    ▣ 부록A: 어셈블리 명령어
    A.1 Armv7 어셈블리 명령어
    __A.1.1 이동, 산술, 비트 연산 명령어
    __A.1.2 비교 및 분기 명령어
    __A.1.3 로드 및 스토어 명령어
    __A.1.4 곱셈 명령어
    __A.1.5 스택 제어 명령어
    __A.1.6 시스템 명령어
    __A.1.7 배리어 명령어
    A.2 Armv8 - A64(Aarch64) 명령어
    __A.2.1 이동, 산술, 비트 연산 명령어
    __A.2.2 비교 및 분기 명령어
    __A.2.3 로드 및 스토어 명령어
    __A.2.4 시스템 명령어
    __A.2.5 배리어 명령어

    ▣ 부록B: 레지스터
    B.1 Armv7 레지스터
    __B.1.1 범용 레지스터
    __B.1.2 시스템 레지스터
    B.2 Armv8 레지스터
    __B.2.1 범용 레지스터
    __B.2.2 스페셜 레지스터
    __B.2.3 시스템 레지스터

    ▣ 부록C: 인라인 어셈블리
    C.1 인라인 어셈블리 소개
    C.2 인라인 어셈블리 명령어 형식 1
    C.3 인라인 어셈블리 명령어 형식 2

    ▣ 부록D: Arm 아키텍처 관련 실전 프로젝트 케이스 스터디
    D.1 스택 오염
    __D.1.1 스택 오염은 왜 발생할까?
    __D.1.2 스택 오염이 발생한 실제 예시
    __D.1.3 스택 오염 문제는 어떻게 디버깅할까?
    D.2 스택 오버플로란?
    __D.2.1 스택 오버플로 증상과 그 원인
    __D.2.2 스택 오버플로가 발생하면 시스템은 어떻게 오동작할까?
    __D.2.3 스택 오버플로는 어떻게 방지할까?
    ____D.2.3.1 코드를 Arm 아키텍처 관점으로 분석
    ____D.2.3.2 컴파일러에서 스택 오버플로 검출 기능 활성화
    ____D.2.3.3 배열 대신 동적 메모리를 할당하는 코드를 사용
    ____D.2.3.4 스택 크기를 증가
    ____D.2.3.5 디버깅 코드 활용

기본정보

상품정보 테이블로 ISBN, 발행(출시)일자 , 쪽수, 크기, 총권수, 시리즈명을(를) 나타낸 표입니다.
ISBN 9791158394349
발행(출시)일자 2023년 06월 22일
쪽수 744쪽
크기
188 * 240 * 34 mm / 1484 g
총권수 1권
시리즈명
위키북스 임베디드 & 모바일 시리즈

Klover

구매 후 리뷰 작성 시, e교환권 200원 적립

10점 중 10점
/최고예요
Arm 아키텍처 를 배우는데 최적의 선택이 아닌가 싶습니다. 강추합니다.
10점 중 10점
/도움돼요
아키텍쳐를 알아야 임베디드 프로그램을 잘 할 수있는거같아요.
간단한 어셈내용까지 들어있어서 도움이됩니다
10점 중 10점
/최고예요
책 내용이 도움이 많이 되네요.

10점 중 10점
/도움돼요
ARM 구조와 원리에 대해 늘 궁금했었는데 이책이 많이 도움이 될 것 같습니다.
10점 중 10점
/최고예요
잘 읽힙니다 좋아요

문장수집 (0)

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)

구매 후 리뷰 작성 시, e교환권 100원 적립

이 책의 첫 기록을 남겨주세요.

교환/반품/품절 안내

  • 반품/교환방법

    마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환 신청, [1:1 상담 > 반품/교환/환불] 또는 고객센터 (1544-1900)
    * 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900)
  • 반품/교환가능 기간

    변심반품의 경우 수령 후 7일 이내,
    상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
  • 반품/교환비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 반품/교환 불가 사유

    1) 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
    2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
    3) 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
    4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
    5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
    6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
    7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
    8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
    9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등
  • 상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
  • 소비자 피해보상 환불 지연에 따른 배상

    1) 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
    2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

기분 좋은 발견

이 분야의 베스트

한강 스페셜 에디션
이벤트
  • 25년 2월 북드림
  • 2025 1학기 대학교재전
01 / 02
TOP