하드웨어

/

임베디드 · IoT

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)

시스템 소프트웨어의 기본 중의 기본, 최신 Arm 아키텍처(Armv8-A, Armv7-A)의 핵심을 "시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리"의 저자가 제대로 잡아드립니다!

(5.0) 수강평 7개

수강생 162명

Thumbnail

초급자를 위해 준비한
[임베디드 · IoT, 컴퓨터 구조] 강의입니다.

이런 걸
배워요!

  • Arm 아키텍처(Armv8-A, Armv7-A)의 기본 동작 원리를 파악할 수 있습니다.

  • Arm 아키텍처(Armv8-A, Armv7-A)의 익셉션의 세부 동작 원리에 대해 깊이있게 파악할 수 있습니다.

  • Armv7-A/Armv8-A에서 정의된 AAPCS를 잘 이해할 수 있습니다.

  • 익셉션과 AAPCS를 활용해 메모리 어보트 성 이슈를 디버깅하는 방법을 이해할 수 있습니다.

📢 수강 전 안내사항

본 강의는 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 1부 강의에 이어지는 두 번째 강의입니다. 원활한 이해를 위해 첫 번째 강의부터 순차적으로 수강하시는 걸 추천드립니다

<공지>

1. 2024년 최신 강의 리뉴얼  

최신 Arm 아키텍처의 기능과 실전 프로젝트에 바로 적용할 수 있는 유익한 콘텐츠를 발굴해 아래 강의를 추가했습니다. (3시간 30분 추가)

  • TRACE32 프로그램 디버깅 콘텐츠: 교육용 TRACE32 시뮬레이터 프로그램을 '인프런 강의 강의 자료'에서 내려 받을 수 있습니다. 직접 TRACE32 시뮬레이터 프로그램을 활용해 강의에서 설명드리는 디버깅 과정(어셈블리 명령어포함)를 직접 따라서 디버깅할 수 있습니다.

  • 디버깅 실습 강의: Armv7-A 익셉션(35분), Armv8-A 익셉션(2시간), AAPCS(60분)

  • 메모리 덤프: 익셉션 디버깅용 3건 제공

지속적으로 수강생분들께 도움이 되는 콘텐츠를 발굴해 커리큐럼을 업데이트할 예정입니다.

2. Arm 아키텍처 전체 저자 직강 강의 로드맵 

이번 강의 <시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강>는 로드맵 '시스템 소프트웨어 개발자를 위한 Arm - basic course' 에 포함된 강의입니다.


체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다. 참고로 Arm 아키텍처 로드맵(저자 직강 전체)은 Basic Course Advanced Course 2가지로 구성되어 있습니다.


최신 시스템 소프트웨어에서
가장 중요한 Arm 아키텍처

스마트폰은 물론 AI용 SoC 시스템 반도체, 전기자동차 Automotive(자율주행, 인포테인먼트) 그리고 클라우드 서버 및 맥북에서 사용되는 Arm 프로세서는 모두 Armv8-A 기반 64비트 Cortex-A 프로세서 (Cortex-A53, Cortex-A57, Cortex-A72 등...) 입니다. 현재 시스템 소프트웨어 업계에서 가장 많이 필요한 기반 지식이 요구되는 내용이 Armv8-A 아키텍처라고 볼 수 있어요.

그런데, 최신 Arm architecture인 Armv8-A와 Armv7-A 아키텍처가 너무 어렵게만 느껴지셨나요?


시스템 소프트웨어 개발자, 임베디드 시스템(BSP) 프로그래머 주목! 🙋‍♂

시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 주니어 개발자   

시스템 반도체, 전기 자동차 분야와 같은 시스템 소프트웨어 개발 분야에서 일하고 싶은 취업 준비생 

시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학 희망자

시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자 

많은 리눅스 임베디드 개발자를 희망하는 분들이라면 컴퓨터 구조나 운영체제를 배웁니다. 그리고 CS 이론도 어느 정도 공부합니다. 최근에 떠오르고 있는 시스템 반도체와 전기 자동차 시스템 소프트웨어 개발자는 리눅스 디바이스 드라이버, RTOS 혹은 부트로더를 분석합니다. 하지만 그것만으로는 무엇인가 부족하다는 것을 스스로 느낍니다. 전문 시스템 소프트웨어 개발자가 되기 위해 반드시 Arm 아키텍처를 알아야 한다는 사실을 알고 있지만, 막상 Arm 스펙 문서를 펼치는 순간 쉽지 않은 길이며 독학은 어렵겠다는 판단을 하게 됩니다.  

Arm 아키텍처의 핵심을 
이해하기 쉽게 설명해드립니다!

  • 1⃣ Arm 아키텍처의 핵심 중 핵심인 익셉션과 함수 호출 규약인 AAPCS에 대한 핵심 이론을 이해할 수 있습니다.  

  • 2⃣ Arm 아키텍처를 이루는 주요 내용을 코드 수준에서 다시 경험하며 Arm 아키텍처에 대한 이해 수준이 훨씬 더 높아집니다.

  • 3⃣ Arm 아키텍처가 지원하는 다양한 기능을 적극 활용함으로써 높은 안정성과 성능을 보장받는 시스템 프로그램(드라이버, 부트로더)을 개발할 수 있습니다. 

  • 4⃣ 실전 프로젝트 개발에 필요한 각종 이론 및 사례를 스스로 이해할 수 있습니다. 

시스템 소프트웨어 개발의 핵심은 CPU 및 컴퓨터 구조라 해도 과언이 아닙니다. IT 업계에서 가장 필요로 하는 CPU 프로세서인, 최신 Arm 아키텍처(Armv8-A, Armv7-A)에 관한 핵심 이론을 쉽게 설명했습니다!

Arm 아키텍처가 어려운 이유는 Arm 아키텍처를 하드웨어 프로세서 관점으로만 배우기 때문입니다. 이 강의는 코드 분석과 구체적인 사례 소개로 Arm 아키텍처를 구성하는 내용이 실제 어떻게 사용되는지 설명합니다. 이 강의가 실력있는 시스템 소프트웨어 개발자가 될 수 있는 중추적인 역할을 해드릴 것입니다.

저자 직강! 책에 없는 내용까지 
구체적으로 설명합니다.

『Arm 아키텍처의 구조와 원리』(2024년 대한민국 학술원 우수도서상 선정)의 내용뿐만 아니라 책에서 다루지 않는 Arm 아키텍처에 대한 디버깅 실습 및 다양한 사례를 구체적으로 설명합니다. 

  • 40%: 책의 핵심 내용

  • 40%: Arm 아키텍처 관련 주요 케이스 스터디, 코드 리뷰 

  • 20%: 디버깅 실습 - TRACE32 

강의내용 📕

CPU 아키텍처에서 익셉션이 무엇인지 소개하고, Arm 스펙을 리뷰하면서 익셉션의 기본 동작 방식을 설명합니다.

실전 프로젝트에서 Arm 아키텍처의 익셉션을 알아야 하는 이유를 상세히 설명합니다.

Armv7 아키텍처의 익셉션 실행 흐름을 단계 별로 설명하고 익셉션을 소프트웨어로 처리하는 방식까지 상세히 분석합니다.

Armv7 아키텍처의 메모리 어보트 - Prefetch 혹은 Data Abort가 처리되는 동작을 상세히 설명합니다. IRQ 인터럽트 익셉션을 처리하는 실행 흐름을 설명합니다.

Armv7 아키텍처에서 SVC 명령어를 실행하면 유발되는 슈퍼바이저 콜(소프트웨어 인터럽트) 익셉션의 실행 흐름을 설명합니다. 익셉션의 전체 실행 흐름을 정리합니다.

실제 Data Abort와 Undefined Instruction 익셉션이 유발되는 동작을 큰 그림으로 상세하게 설명합니다.

Armv8 아키텍처에서 정의된 익셉션의 특징을 소개합니다. Armv8 아키텍처 익셉션의 종류와 분류 체계를 설명합니다.

Armv8 아키텍처에서 Synchronous 익셉션이 처리되는 흐름을 설명합니다.

Armv8 아키텍처에서 각 단계별로 인터럽트가 처리되는 실행 흐름을 큰 그림으로 설명합니다.이 과정에서 업데이트되는 레지스터와 익셉션 핸들러를 설명합니다.

인터럽트 콘트롤러를 소개하고 GIC의 전체 구조를 설명합니다.

GIC의 전체 구조를 큰 그림으로 설명하고 GIC의 버전 별 주요 기능을 설명합니다.

GIC에서 정의된 인터럽트 소스와 타입을 설명하고 SMP(멀티 코어 시스템)에서 인터럽트의 처리 방식을 설명합니다.

소프트웨어 개발 관점에서 설계된 GIC의 프로그래머 모델을 설명하고, 물리적인 GIC의 구조에 대해서 설명합니다.

디스트리뷰터의 구조와 디스트리뷰터를 제어할 때 사용되는 시스템 레지스터를 설명합니다. CPU interface의 구조와 CPU interface 를 제어할 때 사용되는 시스템 레지스터를 설명합니다.

IRQ와 FIQ의 핵심 개념을 설명하고 실행 흐름까지 상세하게 설명합니다.

GIC를 소프트웨어로 제어하는 GIC 핸들러 루틴 (리눅스 커널, XEN 하이퍼바이저)에 대해서 설명합니다.

CPU 아키텍처에서 함수 호출 규약과 AAPCS를 구성하는 주요 기능을 소개합니다.

Armv7-A 아키텍처: AAPCS의 핵심인 PUSH 명령어와 POP 명령어의 동작 방식을 상세하게 설명합니다.

Armv7-A 아키텍처: AAPCS의 핵심인 BL 명령어의 실행 흐름과 관련 어셈블리 명령어를 상세하게 설명합니다.

Armv8-A 아키텍처: AAPCS의 핵심인 STP 명령어의 동작 방식과 BL 어셈블리의 동작 방식을 상세하게 설명합니다.

Armv8-A: AAPCS와 관련된 지식을 활용해 실전 프로젝트에서 문제를 해결하는 방법을 소개합니다. 스택 오버플로와 스택 오염을 방지할 수 있는 스킬을 상세하게 설명합니다.



Arm의 원리를 이해하는 지름길은
스펙문서를 직접 읽고 이해하는 것!

입문자에게 Arm은 결코 쉽지 않습니다. 아무리 유익한 내용이라도 이해하기 어렵기 때문입니다. 이 강의는 어려운 Arm 아키텍처 이론에 보다 쉽게 다가갈 수 있도록 길을 열어 드리기 위해 기획되었습니다. 


책 집필/강의경력을 바탕으로
누구보다 깊고 상세하게!

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자입니다. (2권 모두 대한민국 학술원 우수도서상 선정) 또한 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자이자, 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' (2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~2024) 


국내에서 어느 누구보다 Arm 아키텍처(Armv8-A, Armv7-A)를 이루는 주요 기능을 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

학습자들이 남긴 생생한 수강평

<시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1/2부 저자 직강>


Q&A 💬

Q. 시스템 소프트웨어 개발자가 되려면 Arm 아키텍처를 반드시 배워야 하나요?

네, 반드시 배워야 합니다. IT 업계에서 가장 많이 사용되는 CPU가 Arm 프로세서입니다. 하드웨어를 제어하는 프로그래밍을 하는 시스템 소프트웨어 개발자는 Arm 아키텍처와 관련된 내용을 제대로 알고 있어야 문제 해결이 가능한 경우가 많기 때문입니다. Arm 아키텍처를 잘 모르면 단순한 시스템 설정 작업만 할 확률이 있습니다. 

Q. 비전공자인데 Arm 아키텍처를 배울 수 있을까요? 

비전공자도 이 강의의 내용을 잘 들으시면 Arm 아키텍처의 기본 원리를 충분히 이해할 수 있습니다. '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 책의 베타 리더 중에 비전공자들도 다수 있었습니다. 처음에 Arm 아키텍처의 내용을 읽고 바로 이해하기는 힘들었지만, 책을 2~3번 읽고 대부분 Arm 아키텍처를 이해했습니다. 이 강의는 책의 내용을 더 자세하고 구체적으로 설명하므로 이 강의를 들으시면 비전공자도 Arm 아키텍처를 잘 이해할 수 있을 것입니다.

Q. 보안 소프트웨어 개발자가 되려면 이 강의를 들어야 하나요?

만일 V3같은 소프트웨어를 개발하고 싶다면 cpu-architecture에 대한 이론은 필수입니다. 커널 드라이버 개발자로 넘어간 다음에 Arm 아키텍처와 같은 CPU 아키텍처는 반드시 알아야 합니다. 리버싱을 비롯해 각종 공격/방어 기법의 핵심을 배우려면 Arm 아키텍처의 이론을 모르고는 시도조차 하기 어렵습니다. 

Q. C언어, 자료구조 정도만 공부했습니다. 그래도 이 강의를 들을 수 있나요?

네, 들을 수 있습니다. 이 외에 운영체제나 RTOS에 대한 내용을 알고 있으면 강의를 빠르게 학습하는데 도움이 될 수 있습니다. 다만 본 강의는 선수지식이 없더라도 수강에 어려움이 없도록 차근차근 안내합니다.

선수지식보다는 다음과 같은 태도가 더 중요합니다.

  • 꾸준히 강의를 듣는 노력

  • 잘 모르는 내용을 들으면 고민하고 생각하는 훈련

  • 꾸준히 복습하는 습관

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 시스템 반도체(펩리스), 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자

  • 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자

  • 시스템 반도체(펩리스), 전기 자동차 분야에서 시스템 소프트웨어 개발을 하고 싶은 취준생

  • 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생

  • Arm 아키텍처의 기능을 활용해 실무에서 어떻게 디버깅하는지 알고 싶은 시스템 소프트웨어 개발자(시스템 반도체, 전기 자동차)

선수 지식,
필요할까요?

  • 컴퓨터구조

  • 운영체제

  • c언어

  • 임베디드

  • CPU

  • 마이크로프로세서

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

 

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)와 리눅스 커널을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

커리큘럼

전체

126개 ∙ (20시간 19분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 2023년 12월 13일
마지막 업데이트일: 2024년 10월 22일

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!