시스템 소프트웨어의 기본 중의 기본, 최신 Arm 아키텍처(Armv8-A, Armv7-A)의 핵심을 "시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리"의 저자가 제대로 잡아드립니다!
이런 걸
배워요!
Arm 프로세서 소개
Arm 아키텍처 학습 방법
레지스터
어셈블리 명령어
Armv7: 동작 모드
Armv8: 익셉션 레벨
시스템 소프트웨어 기본 중의 기본,
최신 Arm 아키텍처의 핵심!
최신 Arm 아키텍처의 기능과 실전 프로젝트에 바로 적용할 수 있는 유익한 콘텐츠를 발굴해 아래 강의를 추가했습니다.
계속 강의는 리뉴얼될 예정입니다.
이번 강의 <시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강>는 로드맵 '시스템 소프트웨어 개발자를 위한 Arm - basic course' 에 포함된 강의입니다.
체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다. 참고로 Arm 아키텍처 로드맵(저자 직강 전체)은 Basic Course와 Advanced Course 2가지로 구성되어 있습니다.
스마트폰은 물론 AI용 SoC 시스템 반도체, 전기자동차 Automotive(자율주행, 인포테인먼트) 그리고 클라우드 서버 및 맥북에서 사용되는 Arm 프로세서는 모두 Armv8-A 기반 64비트 Cortex-A 프로세서 (Cortex-A53, Cortex-A57, Cortex-A72 등...) 입니다. 현재 시스템 소프트웨어 업계에서 가장 많이 필요한 기반 지식이 요구되는 내용이 Armv8-A 아키텍처라고 볼 수 있어요.
그런데, 최신 Arm 아키텍처인 Armv8-A와 Armv7-A 아키텍처가 너무 어렵게만 느껴지셨나요?.
시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자
시스템 반도체, 전기 자동차 분야와 같은 시스템 소프트웨어 개발을 하고 싶은 취업 준비생
시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생
시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자
많은 리눅스 임베디드 개발자를 희망하는 분들이라면 컴퓨터 구조나 운영체제를 배웁니다. 그리고 CS 이론도 어느 정도 공부합니다. 최근에 떠오르고 있는 시스템 반도체와 전기 자동차 시스템 소프트웨어 개발자는 리눅스 디바이스 드라이버, RTOS 혹은 부트로더를 분석합니다. 하지만 그것만으로는 무엇인가 부족하다는 것을 스스로 느낍니다. 전문 시스템 소프트웨어 개발자가 되기 위해 반드시 Arm 아키텍처를 알아야 한다는 사실을 알고 있지만, 막상 Arm 스펙 문서를 펼치는 순간 쉽지 않은 길이며 독학은 어렵겠다는 판단을 하게 됩니다.
시스템 소프트웨어 개발의 핵심은 CPU 및 컴퓨터 구조라 해도 과언이 아닙니다. IT 업계에서 가장 필요로 하는 CPU 프로세서인, 최신 Arm 아키텍처(Armv8-A, Armv7-A)에 관한 핵심 이론을 쉽게 설명했습니다!
Arm 아키텍처가 어려운 이유는 Arm 아키텍처를 하드웨어 프로세서 관점으로만 배우기 때문입니다. 이 강의는 코드 분석과 구체적인 사례 소개로 Arm 아키텍처를 구성하는 내용이 실제 어떻게 사용되는지 설명합니다. 이 강의가 실력있는 시스템 소프트웨어 개발자가 될 수 있는 중추적인 역할을 해드릴 것입니다.
Arm 아키텍처를 배우는 지름길은 무엇일까요? 직접 디버깅을 하면서 실습해 보는 것입니다.
이 강의를 수강하시면 교육용 TRACE32 시뮬레이터 프로그램을 '인프런 강의 강의 자료'에서 내려 받아 직접 TRACE32 시뮬레이터 프로그램을 활용해 강의에서 설명드리는 디버깅 과정(어셈블리 명령어포함)를 직접 따라서 디버깅할 수 있습니다. 커리큐럼에 있는 관련 디버깅 강의는 아래와 같습니다:
또한 동작 모드, 익셉션 레벨과 관련된 디버깅도 함께 따라서 하실 수 있습니다.
책 『Arm 아키텍처의 구조와 원리』의 내용뿐만 아니라 책에서 다루지 않는 Arm 아키텍처에 대한 디버깅 실습 및 다양한 사례를 구체적으로 설명합니다.
시스템 반도체를 개발하는 과정과 함께 Arm 프로세서와 Arm 아키텍처를 소개합니다. Arm 프로세서의 프로파일과 패밀리에 대해 설명합니다.
Armv7-A 아키텍처의 레지스터를 소개하고 각각의 특징을 설명합니다.
범용 레지스터(Armv7-A) 중 뱅크드 레지스터에 대해서 상세하세 다룹니다. 프로세스의 상태 정보를 담고 있는 CPSR 레지스터를 구성하는 주요 필드를 상세하게 설명합니다.
Armv8-A 아키텍처에서 정의된 레지스터를 알기 쉽고 상세하게 설명합니다.
TRACE32 프로그램으로 레지스터를 디버깅합니다. Armv7-A와 Armv8-A 아키텍처에서 정의된 레지스터의 값을 직접 바꾸면서 레지스터의 동작 원리를 상세하게 설명합니다. 물론 수강생분들이 직접 따라서 디버깅할 수 있게 설명합니다.
어셈블리 명령어의 기본 구조를 설명하고 각각 어셈블리 명령어를 상세하게 설명합니다.
어셈블리 명령어의 문법 설명에 그치지 않고 어셈블리 명령어가 실제 프로젝트에서 어떻게 활용되는지 상세하게 설명합니다.
TRACE32 프로그램으로 어셈블리 명령어를 직접 디버깅하면서 설명합니다. 산술 명령어(예시: MOV, ADD, SUB)에서 브랜치 명령어, 비트 연산 명령어 그리고 로지컬 명령어(AND, ORR, EOR)까지 수강생 분들이 따라서 디버깅할 수 있게 설명합니다.
Armv7-A의 기반인 동작 모드를 소개하고 각각의 특징에 대해 상세하게 설명합니다. 동작 모드 별로 어떤 소프트웨어가 실행되는지 설명합니다.
동작 모드와 관련된 Privilege 레벨에 대해 설명하고 동작 모드를 알 수 있는 CPSR 레지스터의 비트 필드에 대해 상세히 분석합니다.
TRACE32 프로그램으로 동작 모드를 변경하는 명령어를 직접 디버깅합니다. 또한 익셉션을 유발하는 명령어를 직접 실행해 익셉션이 유발되는 과정을 직접 디버깅 과정으로 설명합니다. 수강생 분들이 함께 따라서 디버깅할 수 있게 설명합니다.
Armv8-A 아키텍처의 핵심 기능 중 하나인 익셉션 레벨의 개념을 쉽고 상세하게 설명합니다.
스펙 문서 분석을 통해 익셉션 레벨을 상세하게 리뷰하고 익셉션 레벨 별로 실행되는 소프트웨어 스택에 대해 설명합니다.
TRACE32 프로그램으로 익셉션 레벨을 읽는 실습을 진행합니다. 또한 SVC, HVC 명령어를 직접 실행해서 익셉션 레벨이 바뀌는 과정을 직접 디버깅을 하면서 설명합니다. 수강생분들은 TRAC32 프로그램을 내려받아 따라하면서 디버깅할 수 있습니다.
Arm 프로세서의 동작 원리를 파악하는 지름길은 Arm 스펙 문서를 직접 읽고 이해하는 것입니다.
입문자에게는 결코 쉽지 않습니다. 아무리 유익한 내용이라 하더라도 이해하기가 어렵기 때문입니다. 이 강의는 어려운 Arm 아키텍처의 이론들에 보다 쉽게 다가갈 수 있도록 길을 열어 드리고자 기획되었습니다.
국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자입니다. 또한 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자이자, 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다.
국내에서 어느 누구보다 Arm 아키텍처(Armv8-A, Armv7-A)를 이루는 주요 기능을 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.
Q. 시스템 소프트웨어 개발자가 되려면 Arm 아키텍처를 반드시 배워야 하나요?
네, 반드시 배워야 합니다. IT 업계에서 가장 많이 사용되는 CPU가 Arm 프로세서입니다. 하드웨어를 제어하는 프로그래밍을 하는 시스템 소프트웨어 개발자는 Arm 아키텍처와 관련된 내용을 제대로 알고 있어야 문제 해결이 가능한 경우가 많기 때문입니다. Arm 아키텍처를 잘 모르면 단순한 시스템 설정 작업만 할 확률이 있습니다.
Q. 비전공자인데 Arm 아키텍처를 배울 수 있을까요?
비전공자도 이 강의의 내용을 잘 들으시면 Arm 아키텍처의 기본 원리를 충분히 이해할 수 있습니다. '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 책의 베타 리더 중에 비전공자들도 다수 있었습니다. 처음에 Arm 아키텍처의 내용을 읽고 바로 이해하기는 힘들었지만, 책을 2~3번 읽고 대부분 Arm 아키텍처를 이해했습니다. 이 강의는 책의 내용을 더 자세하고 구체적으로 설명하므로 이 강의를 들으시면 비전공자도 Arm 아키텍처를 잘 이해할 수 있을 것입니다.
Q. 보안 소프트웨어 개발자가 되려면 이 강의를 들어야 하나요?
만일 V3같은 소프트웨어를 개발하고 싶다면 CPU 아키텍처에 대한 이론은 필수적입니다. 커널 드라이버 개발자로 넘어간 다음에 Arm 아키텍처와 같은 CPU 아키텍처는 반드시 알아야 합니다. 리버싱을 비롯해 각종 공격/방어 기법의 핵심을 배우려면 Arm 아키텍처의 이론을 모르고는 시도조차 하기 어렵습니다.
Q. C언어, 자료구조 정도만 공부했습니다. 그래도 이 강의를 들을 수 있나요?
네, 들을 수 있습니다. 이 강의를 듣는데 특별한 선수 지식이 필요하지 않습니다. 선수 지식보다 다음과 같은 태도가 더 중요할 수 있습니다.
다만, 운영체제나 RTOS에 대한 내용을 이미 알고 있으면 본 강의를 이해하는데 도움이 될 수 있습니다.
학습 대상은
누구일까요?
시스템 반도체(펩리스), 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자
시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자
시스템 반도체(펩리스), 전기 자동차 분야에서 시스템 소프트웨어 개발을 하고 싶은 취준생
시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생
Arm 아키텍처의 기능을 활용해 실무에서 어떻게 디버깅하는지 알고 싶은 시스템 소프트웨어 개발자(시스템 반도체, 전기 자동차)
시스템 반도체에서 Armv8-A 기반 Arm 프로세서가 어떻게 동작하는지 알고 싶은 시스템 소프트웨어 개발자
Arm 기반의 시스템에서 졸업 과제를 준비 중인 졸업반 학생
연구실의 프로젝트를 Arm 프로세서 환경에서 진행 중인 대학원생
선수 지식,
필요할까요?
컴퓨터구조
운영체제
국내 시스템 소프트웨어 분야에서 전무후무한! '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% 할인)을 활용하시면 좋습니다.
전체
164개 ∙ (22시간 3분)
가 제공되는 강의입니다.
1.0 시스템 반도체와 Arm
07:42
1.1 Arm 프로세서의 역사
10:48
1.1.1 에이콘의 설립
02:59
1.1.2 Arm사의 설립
05:00
1.2 Arm 프로세서 시리즈
04:40
1.3.1 Arm 프로세서의 출하량
05:15
1.3.2 Arm의 생태계
07:05
1.4 Arm의 라이선스 모델
06:45
1.5.3 Arm 코어란
01:18
1.6 이 책의 구성
12:41
2장 Arm 아키텍처 학습 방법
01:13