채널톡 아이콘
Challenge
모집 중

[기업용 챌린지] 디버깅을 통해 배우는 Arm 아키텍처(Armv8-A) 핵심 완전 정복

디버깅을 통해 Armv8-A 아키텍처의 핵심 기능을 100% 이해해 시스템 소프트웨어 개발의 기반을 다집니다. 이 강의를 통해서 바로 실무 업무를 시작할 수 있습니다.

31개 수업 학습

지식공유자와 멘토링 혜택!

무제한 복습, 내 것으로 만들어요.

김동현 (Austin Kim)님과 함께해요!

6,338

수강생

242

수강평

96

답변

4.9

강의 평점

23

강의

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

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

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

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

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

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

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

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

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

강의문의 : austindh.kim@gmail.com

주요 로드맵 🎯

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

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

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

더보기

강사 소개

안녕하세요. 시스템 소프트웨어와 임베디드 리눅스 실무를 디버깅 관점에서 풀어내는 엔지니어이자, 지식 공유자인 김동현(Austin Kim)입니다.

저는 15년 이상 Arm, RISC-V 시스템에서 리눅스 커널과 다양한 디바이스 드라이버를 개발하며, 부팅 실패, 커널 크래시(Exception, 와치독 리셋) 문제를 현장에서 직접 분석해 온 시스템 소프트웨어 엔지니어입니다.  다양한 활동을 통해서 유익한 지식을 개발자 분들께 공유하는 활동을 꾸준히 해 왔습니다.  

이번 강의를 통해 복잡하게 느껴지는 Armv8-A 아키텍처의 기능 중에서, 실무에서 꼭 필요한 내용을 엄선해서 전해드립니다. Arm 아키텍처를 실전 디버깅 실습을 하면서 스스로 이해할 수 있도록 진행합니다.

저서 및 출강 이력

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

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

  • Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis (Packt Publishing, 2025) — 글로벌 출판사 영어 도서

  • 텔레칩스(Telechips) 대상 Armv8-A 크래시 디버깅 (초정 세미나): 2025년 1월

  • 프로그래머스 데브코스 : 리눅스 시스템 및 커널 전문가 과정 메인 강사 (2023~2024년) (1~2차수)

컨퍼런스 발표 이력

강사 약력

  • 현) LG전자 오픈 소스 팀 근무

  • 개발 도메인: Automotive(전기 자동차), 스마트 폰, Chipset BSP


[대표 커리큘럼] 디버깅으로 배우는 Armv8-A 아키텍처의 구조 

강의 목표

Armv8-A 아키텍처의 핵심 기능을 100% 이해하고, 이를 기반으로 실무 업무를 시작하는 것이 강의의 목표입니다:

  • 실제 현업에서 사용하는 Armv8-A 아키텍처 핵심 기능을 실행 흐름 기준으로 이해한다.

  • TRACE32 디버거를 활용해 어셈블리 명령어 단위로 코드를 추적하고 분석할 수 있다.

  • Exception / Interrupt 발생 시의 실행 흐름을 명확히 이해하고, 동작 원인을 설명할 수 있다

  • 레지스터·어셈블리 관점에서 Linux 커널 동작을 분석할 수 있다.

  • 브링업 이슈 및 커널 크래시 발생 시, 원인을 추적하기 위한 1차 분석을 할 수 있다.

강의 대상

아래와 같은 리눅스 시스템 소프트웨어 개발자(신입 및 주니어 개발자)입니다:

  • Armv8-A 기반 시스템에서 Linux 드라이버를 개발하는 엔지니어

  • 커널 크래시, 부팅 이슈, Fault 문제를 분석하고 해결해야 하는 개발자

  • 펌웨어–커널–드라이버 간 흐름 이해가 필요한 시스템 엔지니어

  • Armv8-A 아키텍처를 이론이 아닌 실행 관점으로 이해하고 싶은 실무 개발자

강의의 핵심 차별점

  • TRACE32를 활용해서 현업에서 반드시 활용되는Armv8-A 아키텍처의 주요 기능(어셈블리 명령어, 익셉션)을 실습으로 진행합니다.

  • Arm 기반 칩셋의 부팅 시퀀스와 실전 프로젝트에서 발생하는 케이스 스터디를 소개합니다.

  • 실제 메모리 덤프와 커널 로그를 디버깅하면서 Armv8-A 아키텍처를 실습(익셉션)합니다.

강의 커리큘럼

(1일차)

TRACE32 실습 환경(시뮬레이터 모드) 체크

  • 기본 명령어, 실습 환경

Armv8-A 아키텍처 핵심 피쳐 및 실행 모델

  • 어셈블리 명령어, 레지스터, 익셉션 모델

  • AAPCS, 하이퍼바이저, 트러스트존, MMU

Exception Level (EL0~EL3) 구조와 실행 흐름

  • Boot Sequence와 익셉션 레벨

  • 익셉션 레벨 별 소프트웨어 스택

  • TRACE32로 익셉션 레벨 실습

레지스터 구조 및 주요 시스템 레지스터

  • 디버깅 과정에서 주로 사용되는 레지스터

  • 스타트업 코드에서 설정되는 시스템 레지스터 분석

  • TRACE32로 주요 레지스터 분석

어셈블리 명령어와 주요 구조 분석

  • 주요 어셈블리 명령어 분석

  • 어셈블리 명령어를 C 코드로 리버싱해보기

  • TRACE32로 어셈블리 명령어 디버깅 실습

Calling convention 분석

  • 주요 레지스터와 명령어 분석

  • TRACE32로 Calling convention 디버깅 실습

(2일차)

익셉션과 인터럽트의 실행 흐름

  • 주요 실행 흐름과 관련 시스템 레지스터 분석

  • 메모리 덤프를 활용한 익셉션 실습 (TRACE32)

TrustZone

  • 시큐어 월드와 논시큐어 월드의 개념

  • Secure OS의 디버깅 방법 (익셉션, 와치독 리셋)

  • Arm Trusted Firmware 주요 스택 분석

Arm Virtualization(하이퍼바이저)

  • Virtualization 주요 명령어와 하이퍼바이저 스택 분석

  • XEN 하이퍼바이저의 익셉션 핸들러 분석

  • TRACE32로 주요 시스템 레지스터 분석

가상 메모리 시스템

  • 멀티 레벨 페이지 변환 과정 분석 (VA39, VA48)

  • 주요 시스템 레지스터 (TCR_EL1, TTBR1_EL0)

  • TRACE32로 가상 주소 변환 디버깅 실습

Armv9-A 확장 기능 소개

  • Memory Tag Extensions (MTE )

  • PAC, BTI feature

[추가 커리큘럼1] 디버깅으로 배우는 리눅스 커널과 디바이스 드라이버의 구조  

강의 목표

실무 개발에서 활용되는 리눅스 커널의 주요 기능을 이해해, 빠른 시간에 리눅스 디바이스 드라이버(칩셋 개발자, 제품 개발자)를 개발하는 것이 주된 목표입니다. 또한 실무에서 발생하는 다양한 문제를 스스로 해결할 수 있는 역량 확보도 주요 목표입니다:

  • 리눅스 커널의 부팅 흐름과 디바이스 드라이버의 초기화 과정을 단계별로 이해한다.

  • 리눅스에서 제공하는 다양한 디버깅 기능을 잘 활용(debugfs, ftrace)해서 다양한 디바이스 드라이버의 이슈를 해결할 수 있다.

  • 리눅스 커널의 핵심인 프로세스, 인터럽트, 커널 동기화 기법, 가상 메모리에 대한 개념을 익혀서 커널 API에 익숙해진다.

  • 바이너리 덤프를 분석해서 커널의 주요 자료 구조를 분석할 수 있다.

  • 커널 로그, 메모리 덤프를 기반으로 크래시 및 브링업 이슈에 대한 1차 분석을 스스로 수행할 수 있다.

강의 대상

아래와 같은 리눅스 시스템 소프트웨어 개발자(신입 및 주니어 개발자)입니다:

  • Arm 기반 SoC에서 Linux 커널 및 디바이스 드라이버를 개발하는 엔지니어

  • 리눅스 디바이스(커널 빌드, 디바이스 트리 분석, 부트로더 최적화)를 단기간에 개발해야 하는 엔지니어

  • 빠른 시간 내에 디바이스 드라이버를 customize하려는 엔지니어

  • 리눅스 커널의 디버깅 기능을 파악해, 부팅 실패, 커널 패닉, 커널 크래시, 워치독 리셋 등의 이슈를 분석해야 하는 개발자

  • 펌웨어 부트로더와 커널 드라이버 간 전체 실행 흐름을 이해해야 하는 시스템 엔지니어

강의의 핵심 차별점

  • 디바이스 드라이버를 개발하는데 필요한 다양한 기능을 디버깅하는 (디바이스 트리, 커널 컨피그, 디바이스 드라이버)를 패치를 직접 제작합니다.

  • 실습에서는 현업에서 직접 사용(빅 테크 업체 사용: 퀄컴, 엔비디아)하는 Crash utility와 TRACE32를 활용합니다.

  • 리눅스 커널의 주요 자료 구조(프로세스, 인터럽트, 태스크 스케줄링, 가상 메모리 시스템)를 메모리 덤프 실습으로 분석합니다.

  • Arm 기반 칩셋(혹은 RISC-V)의 부팅 시퀀스와 실전 프로젝트에서 발생하는 케이스 스터디를 소개합니다.

강의 커리큘럼

(1일차)

TRACE32 실습 환경(시뮬레이터 모드) 체크 + 보드 환경

  • 기본 명령어, 실습 환경

리눅스 커널을 배워야 하는 이유

  • 디바이스 드라이버를 효율적으로 개발

  • 프로젝트의 다양한 이슈를 해결

  • 안정된 코드 작성하는 기반

리눅스 커널을 이해하는데 필요한 Arm 아키텍처(Armv8, AArch64 기준)

  • 익셉션 레벨, 익셉션 벡터 테이블, 레지스터(General Purpose)

  • (필요 시) RISC-V 까지 설명: Privilege mode과 트랩 핸들러

커널 주요 디버그 피쳐

  • printk, debugfs, ftrace, kdump

  • 메모리 덤프와 커널 로그 분석 방법

  • 디버깅 패치 작성 방법

  • Crash utility 사용 방법

디바이스 드라이버의 핵심 피쳐

  • sysfs와 플렛폼 디바이스의 구조

  • 디바이스 트리의 구조와 관련 커널 핵심 API 분석

  • 디바이스 트리 디버깅 방법

  • 주요 디바이스 드라이버의 핵심 구조 설명

프로세스

  • 프로세스의 기본 개념, 프로세스의 생성과 종료 과정 분석

  • struct task_struct, thread_info 자료 구조 분석

  • 프로세스와 스택의 구조 분석

  • 프로세스 생성과 종료 과정에서 도출되는 주요 이슈 분석

  • 메모리 덤프 분석으로 주요 자료 구조 분석

(2일차)

IRQ와 bottom Half

  • 인터럽트 벡터(Armv8 관점) 핸들러 분석

  • 인터럽트 컨텍스트와 in_interrupt() 소개

  • 인터럽트 디스크립터(struct irq_desc) 자료 구조 분석

  • 메모리 덤프 분석으로 주요 자료 구조 분석

Bottom half

  • 주요 Bottom half 기법(threaded irq, 워크큐, soft irq) 소개

  • 인터럽트 관련 주요 이슈 디버깅 방법 (IRQ Storm, 디바이스 드라이버 주요 이슈)

  • 디바이스 드라이버 주요 bottom half 이슈

동적 타이머

  • jiffies와 HZ의 기본 개념

  • 동적 타이머 핸들러 작성 방법

  • 실행 시간의 흐름을 디버깅하는 방법

시스템 콜과 시그널

  • 시스템 콜의 기본 개념과 실행 흐름

  • 시스템 콜과 디바이스 드라이버의 실행 흐름

  • 시그널의 기본 동작

  • 실전 프로젝트에서 알아야 하는 주요 시그널

  • 메모리 덤프 분석으로 주요 자료 구조 분석

Task Scheduling

  • 스케줄링과 컨텍스트 스위칭의 개념 이해

  • 우선 순위와 프로세스 상태 파악

  • 자료구조: 런큐, 스케줄러 클래스

  • preemption의 시점과 preemption enable/disable

  • sched_switch, sched_wake_up: ftrace 분석

  • Task scheduling 연관된 주요 성능 이슈 소개

  • 메모리 덤프 분석으로 주요 자료 구조 분석

(3일차)

Synchronization

  • race와 critical section 소개

  • spinlock: 큐드 스핀락, 티겟 스핀락

  • 뮤텍스의 동작 원리와 주요 자료 구조 소개

  • atomic operation

  • 실전 프로젝트 주요 race 이슈 소개

  • 메모리 덤프 분석으로 주요 자료 구조 분석

VFS(Virtual File System)

  • VFS의 전체 구조와 실행 흐름 소개

  • VFS 관련 자료 구조

  • 핵심 파일 시스템 소개 - ext4, fat

  • 파일 시스템 관련 주요 실전 이슈

  • 메모리 덤프 분석으로 주요 자료 구조 분석

Memory Management

  • 가상 메모리 맵과 가상 메모리 시스템의 구조 설명

  • struct zone와 node 분석

  • 주요 메모리 할당자 (SLUB allocator)

  • kmalloc와 gfp_flags

  • Memory 관련 주요 이슈와 디버그 피쳐

  • 메모리 덤프 분석으로 주요 자료 구조 분석

주요 디바이스 드라이버 이슈 케이스 스터디

  • 디바이스 노드 등록 안됨

  • 인터럽트 등록이 안되는 이슈 및 인터럽트 Storm 이슈

  • 펌웨어 이미지 로딩 실패 이슈

  • i2C와 spi 전송 실패

수강생 Q/A

  • 디버깅, 문제 해결, 커널 코드 분석 방법

  • 하드웨어 관련된 이슈 디버깅 방법

  • 오픈 소스 커뮤니티

[추가 커리큘럼2] 디버깅으로 배우는 RISC-V 아키텍처의 구조

강의 목표

RISC-V 아키텍처의 핵심 기능을 100% 이해하고, 이를 기반으로 실무 업무를 시작하는 것이 강의의 목표입니다:

  • 실무에 활용되는 RISC-V 아키텍처의 핵심 기능을 이해한다.

  • TRACE32 디버거로 어셈블리 명령어를 디버깅할 수 있다.

  • Trap(Exception)과 Interrupt 발생 시 실행 흐름을 정확히 이해하고 설명할 수 있다.

  • 레지스터·어셈블리 관점에서 커널 동작을 분석할 수 있다.

  • 브링업 이슈 및 크래시 이슈에 대한 1차 분석을 할 수 있다.

강의 대상

아래와 같은 리눅스 시스템 소프트웨어 개발자(신입 및 주니어 개발자)입니다:

  • RISC-V 기반 시스템에서 Linux 드라이버를 개발하는 엔지니어

  • RISC-V 기반 시스템에서 시스템 브링업(부트로더, 리눅스 드라이버)하려는 엔지니어

  • 커널 크래시, 부팅 이슈, Fault 문제를 분석하고 해결해야 하는 개발자

  • 펌웨어–커널–드라이버 간 흐름 이해가 필요한 시스템 엔지니어

  • RISC-V 아키텍처를 이론이 아닌 실행 관점으로 이해하고 싶은 실무 개발자

강의의 핵심 차별점

  • Arm 아키텍처와 RISC-V의 차이점을 비교하면서 설명합니다.

  • TRACE32를 활용(시뮬레이터 모드)해서 현업에서 반드시 활용되는RISC-V 아키텍처의 주요 기능(어셈블리 명령어, 익셉션)을 실습으로 진행합니다.

  • RISC-V 기반 칩셋의 부팅 시퀀스와 실전 프로젝트에서 발생하는 케이스 스터디를 소개합니다.

  • 실제 메모리 덤프와 커널 로그를 디버깅하면서 RISC-V 아키텍처를 실습(익셉션)합니다.

강의 커리큘럼

(1일차)

TRACE32 실습 환경(시뮬레이터 모드) 체크

  • 기본 명령어, 실습 환경

RISC-V 아키텍처 핵심 피쳐 및 실행 모델 소개

  • 어셈블리 명령어, 레지스터, 익셉션 모델

  • Opensbi, Calling convention, MMU

Privilege mode 구조와 실행 흐름

  • Boot Sequence와 머신 모드(Machine mode)

  • Privilege mode별 소프트웨어 스택

  • TRACE32로 Privilege mode 실습

레지스터 구조 및 주요 CSR 레지스터

  • 디버깅 과정에서 주로 사용되는 레지스터

  • 스타트업 코드에서 설정되는 CSR 레지스터 분석

  • TRACE32로 주요 레지스터 분석

어셈블리 명령어와 주요 구조 분석

  • 주요 어셈블리 명령어 분석

  • 어셈블리 명령어를 C 코드로 리버싱해보기

  • TRACE32로 어셈블리 명령어 디버깅 실습

Calling convention 분석

  • 주요 레지스터와 명령어 분석

  • TRACE32로 Calling convention 디버깅 실습

(2일차)

익셉션과 인터럽트의 실행 흐름

  • 주요 실행 흐름과 관련 CSRs 분석

  • 메모리 덤프를 활용한 익셉션 실습 (TRACE32)

메모리 synchronization

  • 주요 어셈블리 명령어

  • 주요 케이스 스터디 소개

가상 메모리 시스템

  • 멀티 레벨 페이지 변환 과정 분석 (SA39, SA48)

  • 주요 CSR 레지스터 (satp)

  • TRACE32로 가상 주소 변환 디버깅 실습

메모리 덤프 분석 실습

  • 스택 Corruption 디버깅, 콜 스택 복원 (TRACE32 사용)

  • 주요 크래시 시그니처 분석

실습 환경 및 적용되는 Arm 아키텍처와 리눅스 커널

  • 실습 강의에서 활용되는 TRACE32는 시뮬레이터 모드이며, 인프런 '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1/2부 저자 직강'에서 내려 받을 수 있습니다. (강의 수강 필요)

  • 따로 실습 보드가 필요하지 않으며, 노트북만 필요합니다.

  • 실습 강의에서 사용되는 메모리 덤프는 따로 제공하며 메모리 덤프 디버깅 실습은 TRACE32 시뮬레이터 모드를 기반으로 진행합니다.

  • 주로 Armv8-A 주요 기능(Cortex-A53, CortexA78) 을 설명하며, 필요 시 Armv9-A(Cortex-X2)와 Armv7-A (Cortex-A9, A15)에 대한 내용까지 설명 가능합니다.

  • 리눅스 커널 버전은 v6.1~v6.6 사이로 진행합니다. 이전 커널 버전(v5.4~v5.15)도 진행 가능하며, 협의될 수 있습니다.


3월

31일

챌린지 시작일

2026년 3월 31일 오후 03:00

챌린지 종료일

2026년 4월 22일 오후 02:30

챌린지 커리큘럼

전체

31개

챌린지에서 배워요

  • 실제 현업에서 사용하는 Armv8-A 아키텍처 핵심을 실행 흐름 기준으로 이해합니다.

  • TRACE32 디버거를 활용해 어셈블리 명령어 단위로 코드를 추적하고 분석할 수 있습니다.

  • Exception / Interrupt 발생 시의 실행 흐름을 명확히 이해하고, 동작 원인을 설명할 수 있습니다.

  • 레지스터·어셈블리 관점에서 Linux 커널 동작을 분석할 수 있습니다.

  • 브링업 이슈 및 커널 크래시 발생 시, 원인을 추적하기 위한 1차 분석 역량을 확보합니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • Armv8-A 기반 Linux 드라이버 개발을 시작했거나 1~3년 차 엔지니어

  • Armv8-A 아키텍처를 ‘이론’이 아니라 ‘디버깅 관점’으로 배우고 싶은 실무 개발자

  • 커널 크래시, 부팅 실패, Fault 이슈를 분석해야 하지만 접근 방법이 막막한 개발자

  • 펌웨어–커널–드라이버 간의 연결 구조를 명확히 이해해야 하는 시스템 엔지니어

  • 로그만 보던 단계에서 실행 흐름 분석 단계로 도약하고 싶은 분

선수 지식,
필요할까요?

  • 운영체제

수강평

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

취소 및 환불 규정
챌린지는 지식공유자가 설정한 수업 최소 정원이 충족되지 않을 경우, 폐강 안내가 고지되며 결제 내역이 자동취소됩니다.

김동현 (Austin Kim)님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

모집 인원 25명

₩550,000