inflearn logo
Challenge
Recruitment Upcoming

[Enterprise Challenge] Mastering the Core of Arm Architecture (Armv8-A) Through Debugging

Build a solid foundation for system software development by gaining a 100% understanding of the core features of the Armv8-A architecture through debugging. This course will enable you to start practical work immediately.

debugging
linux-kernel
armv8
trace32
B2B Only Challenge

31개 수업 학습

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

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

austinkim님과 함께해요!

Career Verified

6,575

Learners

265

Reviews

102

Answers

4.9

Rating

23

Courses

Global Author & Linux System Software Developer (Arm, RISC-V Architecture)

An unprecedented author in the domestic system software field who wrote books on 'Arm Architecture (Armv8-A, Armv7-A)' and 'Linux Kernel' (both books were selected as Excellent Academic Books by the National Academy of Sciences, Republic of Korea), and a global author who authored the book "Reverse Engineering Armv8-A Systems" (in English) through an overseas publisher (Packt) for the first time in Korea. Above all, he is an active developer who is most well-versed in the latest system software trends (electric vehicles, system semiconductors - system software). He is also an educator who is most actively engaged in spreading knowledge within the system software field.

  • Professional Knowledge Sharer and Consultant

  • Worked at LG Electronics Linux Kernel Open Source Team (~May 2026)

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' Author (English), (Packt Publishing)

  • Author of 'Structure and Principles of Arm Architecture for System Software Development' (2024 National Academy of Sciences Outstanding Scholarly Book Award)

  • 'Structure and Principles of the Linux Kernel Learned Through Debugging' (2021, National Academy of Sciences Outstanding Scholarly Book Award) Author

  • 'Programmers Dev Course: Linux System and Kernel Expert' Main Instructor

     

 

I can confidently say that I am an educator who can explain the Linux kernel and Arm architecture (Armv8-A, Armv7-A) better than anyone else in Korea.

Lecture Inquiry: austindh.kim@gmail.com

 

Main Roadmap 🎯

'Arm for System Software Developers - basic course'

'Arm for System Software Developers - advanced course'

Linux kernel for system software developers - basic course

 

More

Instructor Introduction

Hello. I am Austin Kim, an engineer and knowledge sharer who explains system software and embedded Linux practice from a debugging perspective.

I am a system software engineer with over 15 years of experience developing Linux kernels and various device drivers on Arm and RISC-V systems, directly analyzing boot failures and kernel crashes (Exceptions, Watchdog Resets) in the field. I have consistently shared beneficial knowledge with developers through various activities.

In this lecture, I will carefully select and deliver the essential features of the complex Armv8-A architecture that are most needed in practice. The course is designed so that you can understand the Arm architecture on your own through hands-on practical debugging exercises.

Publications and Teaching Experience

  • Structure and Principles of the Arm Architecture for System Software Development — National Academy of Sciences Outstanding Book Award (2024)

  • Structure and Principles of the Linux Kernel Learned Through Debugging — National Academy of Sciences Outstanding Scholarly Book Award (2021)

  • Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis (Packt Publishing, 2025) — English book by a global publisher

  • Telechips Armv8-A Crash Debugging (Invited Seminar): January 2025

  • Programmers DevCourse: Main Instructor for Linux System and Kernel Specialist Course (2023–2024) (1st–2nd Cohorts)

Conference Presentation History

Instructor Biography

  • Current) Working at LG Electronics Open Source Team

  • Development Domains: Automotive (Electric Vehicles), Smartphones, Chipset BSP


[Representative Curriculum] Structure of Armv8-A Architecture Learned Through Debugging

Course Objectives

The goal of this lecture is to understand 100% of the core features of the Armv8-A architecture and to start practical work based on this understanding:

  • Understand the core features of the Armv8-A architecture used in actual industry practice based on the execution flow.

  • You can trace and analyze code at the assembly instruction level using the TRACE32 debugger.

  • You can clearly understand the execution flow when an Exception or Interrupt occurs and explain the principles of operation.

  • You can analyze Linux kernel behavior from the perspective of registers and assembly.

  • You can perform primary analysis to trace the causes of bring-up issues and kernel crashes.

Target Audience

Linux system software developers (entry-level and junior developers) such as the following:

  • Engineers developing Linux drivers on Armv8-A based systems

  • Developers who need to analyze and resolve kernel crashes, booting issues, and fault problems

  • System engineers who need to understand the flow between firmware, kernel, and drivers

  • Working developers who want to understand the Armv8-A architecture from an execution perspective rather than just theory.

Key Differentiators of the Lecture

  • Using TRACE32, we will conduct hands-on practice with key features of the Armv8-A architecture (assembly instructions, exceptions) that are essential in the field.

  • We introduce the booting sequence of Arm-based chipsets and case studies from real-world projects.

  • Practice the Armv8-A architecture (exceptions) while debugging actual memory dumps and kernel logs.

Lecture Curriculum

(Day 1)

Check TRACE32 practice environment (simulator mode)

  • Basic Instructions, Practice Environment

Armv8-A Architecture Core Features and Execution Model

  • Assembly instructions, registers, and exception models

  • AAPCS, Hypervisor, TrustZone, MMU

Exception Level (EL0~EL3) structure and execution flow

  • Boot Sequence and Exception Levels

  • Software stack by Exception Level

  • Exception Level Practice with TRACE32

Register Structure and Key System Registers

  • Registers primarily used in the debugging process

  • Analysis of system registers configured in startup code

  • Analyzing key registers with TRACE32

Analysis of Assembly Instructions and Key Structures

  • Analysis of Key Assembly Instructions

  • Try reversing assembly instructions into C code

  • Assembly instruction debugging practice with TRACE32

Calling convention analysis

  • Analysis of Key Registers and Instructions

  • Calling convention debugging practice with TRACE32

(Day 2)

Execution flow of exceptions and interrupts

  • Analysis of key execution flows and related system registers

  • Exception practice using memory dumps (TRACE32)

TrustZone

  • Concepts of Secure World and Non-secure World

  • Debugging methods for Secure OS (Exception, Watchdog Reset)

  • Analysis of Key Stacks in Arm Trusted Firmware

Arm Virtualization (Hypervisor)

  • Analysis of key Virtualization instructions and hypervisor stack

  • Analysis of XEN Hypervisor Exception Handlers

  • Analysis of major system registers with TRACE32

Virtual Memory System

  • Analysis of multi-level page translation process (VA39, VA48)

  • Major system registers (TCR_EL1, TTBR1_EL0)

  • Virtual address translation debugging practice with TRACE32

Introduction to Armv9-A Extension Features

  • Memory Tag Extensions (MTE )

  • PAC, BTI feature

[Additional Curriculum 1] Structure of Linux Kernel and Device Drivers Learned Through Debugging

Course Objectives

The primary goal is to understand the key features of the Linux kernel used in practical development to quickly develop Linux device drivers (for chipset and product developers). Another major objective is to secure the capability to independently resolve various issues that arise in real-world practice:

  • Understand the Linux kernel's booting flow and the initialization process of device drivers step by step.

  • You can resolve various device driver issues by effectively utilizing the various debugging features provided by Linux (debugfs, ftrace).

  • Become familiar with kernel APIs by learning the core concepts of the Linux kernel, such as processes, interrupts, kernel synchronization mechanisms, and virtual memory.

  • You can analyze binary dumps to examine the kernel's major data structures.

  • You can independently perform primary analysis on crashes and bring-up issues based on kernel logs and memory dumps.

Target Audience

Linux system software developers (new and junior developers) as follows:

  • Engineers developing Linux kernels and device drivers on Arm-based SoCs

  • Engineers who need to develop Linux devices (kernel builds, device tree analysis, bootloader optimization) within a short period of time

  • Engineers who want to customize device drivers within a short period of time

  • Developers who need to identify Linux kernel debugging features and analyze issues such as boot failures, kernel panics, kernel crashes, and watchdog resets.

  • System engineers who need to understand the entire execution flow between the firmware bootloader and kernel drivers

Key Differentiators of the Lecture

  • You will directly create patches for various functions (Device Tree, Kernel Config, Device Driver) required for debugging device driver development.

  • In the practice sessions, we utilize the Crash utility and TRACE32, which are directly used in the industry (by big tech companies such as Qualcomm and NVIDIA).

  • Analyze the major data structures of the Linux kernel (processes, interrupts, task scheduling, virtual memory systems) through memory dump practice.

  • We introduce the booting sequence of Arm-based chipsets (or RISC-V) and case studies occurring in real-world projects.

Lecture Curriculum

(Day 1)

TRACE32 practice environment (simulator mode) check + board environment

  • Basic commands, practice environment

Why you should learn the Linux kernel

  • Efficiently developing device drivers

  • Solving various project issues

  • The foundation for writing stable code

Arm architecture (based on Armv8, AArch64) required to understand the Linux kernel

  • Exception Level, Exception Vector Table, Registers (General Purpose)

  • (If necessary) Explanation up to RISC-V: Privilege mode and trap handlers

Key Kernel Debug Features

  • printk, debugfs, ftrace, kdump

  • Memory dump and kernel log analysis methods

  • How to write debugging patches

  • How to use the Crash utility

Core features of device drivers

  • Structure of sysfs and platform devices

  • Analysis of device tree structure and related core kernel APIs

  • Device tree debugging methods

  • Explanation of the core structures of major device drivers

Process

  • Analysis of basic process concepts and the process of creation and termination

  • Analysis of struct task_struct and thread_info data structures

  • Analysis of process and stack structures

  • Analysis of key issues derived from the process creation and termination stages

  • Analysis of key data structures through memory dump analysis

(Day 2)

IRQ and Bottom Half

  • Interrupt vector (Armv8 perspective) handler analysis

  • Introduction to interrupt context and in_interrupt()

  • Analysis of the interrupt descriptor (struct irq_desc) data structure

  • Analysis of key data structures through memory dump analysis

Bottom half

  • Introduction to key bottom half mechanisms (threaded irq, workqueue, soft irq)

  • Debugging methods for major interrupt-related issues (IRQ Storm, major device driver issues)

  • Major bottom half issues in device drivers

Dynamic Timer

  • Basic concepts of jiffies and HZ

  • How to write a dynamic timer handler

  • How to debug the flow of execution time

System Calls and Signals

  • Basic concepts and execution flow of system calls

  • Execution flow of system calls and device drivers

  • Basic behavior of signals

  • Key signals you need to know in real-world projects

  • Analyzing major data structures through memory dump analysis

Task Scheduling

  • Understanding the concepts of scheduling and context switching

  • Identifying priority and process status

  • Data structures: runqueue, scheduler classes

  • Timing of preemption and preemption enable/disable

  • sched_switch, sched_wake_up: ftrace analysis

  • Introduction to major performance issues related to task scheduling

  • Analysis of key data structures through memory dump analysis

(Day 3)

Synchronization

  • Introduction to race conditions and critical sections

  • spinlock: Queued spinlock, Ticket spinlock

  • Introduction to the operating principles and key data structures of mutexes

  • atomic operation

  • Introduction to major race issues in real-world projects

  • Analyzing key data structures through memory dump analysis

VFS(Virtual File System)

  • Introduction to the overall structure and execution flow of VFS

  • VFS-related data structures

  • Introduction to core file systems - ext4, fat

  • Key practical issues related to file systems

  • Analysis of key data structures through memory dump analysis

Memory Management

  • Explanation of the virtual memory map and the structure of the virtual memory system

  • Analysis of struct zone and node

  • Main Memory Allocator (SLUB allocator)

  • kmalloc and gfp_flags

  • Key memory issues and debug features

  • Analysis of major data structures through memory dump analysis

Case Studies of Major Device Driver Issues

  • Device node not registered

  • Issues with interrupt registration and interrupt storm issues

  • Firmware image loading failure issue

  • i2C and spi transfer failure

Student Q&A

  • Debugging, problem solving, and kernel code analysis methods

  • Debugging methods for hardware-related issues

  • Open source community

[Additional Curriculum 2] The Structure of RISC-V Architecture Learned Through Debugging

Course Objectives

The goal of this lecture is to understand 100% of the core features of the RISC-V architecture and to start practical work based on this understanding:

  • Understand the core features of the RISC-V architecture used in practical applications.

  • You can debug assembly instructions using the TRACE32 debugger.

  • You can accurately understand and explain the execution flow when a Trap (Exception) or Interrupt occurs.

  • Can analyze kernel behavior from the perspective of registers and assembly.

  • Capable of performing primary analysis on bring-up and crash issues.

Target Audience

Linux system software developers (new and junior developers) as follows:

  • Engineers developing Linux drivers on RISC-V based systems

  • Engineers aiming to perform system bring-up (bootloader, Linux driver) on RISC-V based systems

  • Developers who need to analyze and resolve kernel crashes, booting issues, and fault problems

  • System engineers who need to understand the flow between firmware, kernel, and drivers

  • Working developers who want to understand the RISC-V architecture from an execution perspective rather than just theory

Key Differentiators of the Lecture

  • It explains the differences between the Arm architecture and RISC-V by comparing them.

  • We will conduct hands-on practice using TRACE32 (simulator mode) to cover key features of the RISC-V architecture (assembly instructions, exceptions) that are essential in the industry.

  • We introduce the booting sequence of RISC-V-based chipsets and case studies from real-world projects.

  • We will practice the RISC-V architecture (exceptions) by debugging actual memory dumps and kernel logs.

Lecture Curriculum

(Day 1)

Checking the TRACE32 practice environment (simulator mode)

  • Basic instructions, practice environment

Introduction to Core Features and Execution Model of RISC-V Architecture

  • Assembly instructions, registers, exception model

  • Opensbi, Calling convention, MMU

Privilege mode structure and execution flow

  • Boot Sequence and Machine Mode

  • Software stack by privilege mode

  • Privilege mode practice with TRACE32

Register Structure and Key CSR Registers

  • Registers primarily used during the debugging process

  • Analysis of CSR registers configured in the startup code

  • Analysis of major registers with TRACE32

Analysis of assembly instructions and key structures

  • Analysis of key assembly instructions

  • Practice reversing assembly instructions into C code

  • Hands-on assembly instruction debugging with TRACE32

Calling convention analysis

  • Analysis of Key Registers and Instructions

  • Debugging practice of calling conventions with TRACE32

(Day 2)

Execution flow of exceptions and interrupts

  • Analysis of main execution flows and related CSRs

  • Exception practice using memory dumps (TRACE32)

Memory synchronization

  • Key assembly instructions

  • Introduction to Key Case Studies

Virtual Memory System

  • Analysis of multi-level page translation processes (SA39, SA48)

  • Key CSR Registers (satp)

  • Debugging practice for virtual address translation using TRACE32

Memory Dump Analysis Practice

  • Stack Corruption Debugging, Call Stack Restoration (Using TRACE32)

  • Analysis of major crash signatures

Hands-on Environment and Applied Arm Architecture and Linux Kernel

  • The TRACE32 used in the practice lecture is in simulator mode and can be downloaded from the Inflearn course 'Structure and Principles of Arm Architecture for System Software Development - Part 1/2 Author's Lecture'. (Course enrollment required)

  • No separate practice board is required; you only need a laptop.

  • The memory dumps used in the practical lectures are provided separately, and the memory dump debugging practice is conducted based on the TRACE32 simulator mode.

  • The course primarily covers key features of Armv8-A (Cortex-A53, Cortex-A78), and if necessary, can also include content on Armv9-A (Cortex-X2) and Armv7-A (Cortex-A9, A15).

  • The Linux kernel version will be between v6.1 and v6.6. Previous kernel versions (v5.4 to v5.15) are also possible and can be discussed.


6월

21일

챌린지 시작일

2028년 6월 21일 오후 03:00

챌린지 종료일

2028년 6월 29일 오후 02:30

챌린지 커리큘럼

All

31 lectures

챌린지에서 배워요

  • Understand the core of the Armv8-A architecture used in actual industry practice based on the execution flow.

  • You can trace and analyze code at the assembly instruction level using the TRACE32 debugger.

  • I can clearly understand the execution flow when an exception or interrupt occurs and explain the cause of the operation.

  • I can analyze Linux kernel operations from the perspective of registers and assembly.

  • Secure primary analysis capabilities to track causes when bring-up issues or kernel crashes occur.

Recommended for
these people

Who is this course right for?

  • Engineers who have just started Armv8-A-based Linux driver development or are in their 1st to 3rd year.

  • Working developers who want to learn the Armv8-A architecture from a 'debugging perspective' rather than just 'theory'.

  • Developers who need to analyze kernel crashes, boot failures, and fault issues but feel overwhelmed by where to start.

  • System engineers who need to clearly understand the connection structure between firmware, kernel, and drivers.

  • Those who want to take the leap from simply viewing logs to analyzing execution flow.

Need to know before starting?

  • Operating System

Reviews

Not enough reviews.
Please write a valuable review that helps everyone!

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

austinkim's other courses

Check out other courses by the instructor!

$423.50