Learning RISC-V Architecture with Debugging - Part 3
austinkim
Core concepts and practical tips of RISC-V, the latest open-source based CPU architecture, explained easily and in detail.
Basic
cpu, cpu-architecture, riscv
The author of "Learning Linux Kernel Structure and Principles Through Debugging" clearly explains the basic debugging features and methods of the latest Linux kernel (v6.1), most widely used in system software.
373 learners


Why debugging is important in real-world projects and the actual debugging process
Methods to improve debugging skills and issue types in real-world projects
printk and dump_stack() for kernel debugging
How to design a device driver and create a debugging patch using printk
How to use and set up Ftrace
Linux kernel's main workings via Ftrace messages of various events
To commemorate reaching 500 students (Linux Kernel Structure and Principles), we are issuing a 30% discount coupon. Thank you. Limited to the first 100 people.
30% discount coupon link: https://inf.run/pWjae
This lecture

If you want to learn the major functions that make up the Linux kernel systematically, it would be good to utilize the roadmap (30% discount on all courses).
What is the most widely used operating system in IT devices? It's the Linux operating system. It is used in smartphones, digital TVs, aviation entertainment systems, and servers. System semiconductor companies use Linux (Linux device drivers) to control the hardware they design. Additionally, Linux is widely utilized in various components of electric vehicles (Automotive) such as infotainment, autonomous driving, and telematics.
The core of the Linux operating system is the Linux kernel. Along with the Armv8-A architecture, Linux kernel knowledge can be considered the most essential foundational knowledge required in the current system software industry.
✅ Linux system software field including system semiconductors and electric vehicle sectors (autonomous driving, infotainment) for junior developers
✅ Job seekers who want to work in Linux system software development fields such as system semiconductors and electric vehicles
✅ Linux system software field (memory, file system, operating system) graduate school applicants
✅ Developers from other fields looking to transition their career to Linux system software
However, the Linux kernel is like a massive barrier for beginners in the field of system software. Beginners likely have experienced giving up on learning the Linux kernel multiple times. That difficult Linux kernel is becoming increasingly complex as it evolves with version upgrades.After 2024, the Linux kernel version will be upgraded to v6.6 or higherHowever, the barriers to entry are becoming higher.
Linux system software developers positioned in various fields including system semiconductors and electric vehicles know that they need to understand the Linux kernel well to develop their capabilities. However, it's difficult to grasp how to learn the Linux kernel and, more importantly, what content they need to know well in practical work.
New or junior embedded Linux system developers struggle the most during the problem-solving process. What could be the reason for this?
1. Lack of debugging-related materials
In various software fields including web development, development environments for debugging are relatively well-established. Additionally, there are many lectures and books for beginners, so you don't experience many trial and error when learning debugging methods. However, in Linux system software development, while there are debugging-related materials, most are development documents that are difficult for beginners to digest.
2. Difficulty getting help with debugging
How do you debug Linux system software-related projects? Most of the time, you analyze kernel logs or memory dumps. What abilities are required to properly analyze logs or dumps? You need the ability to read and understand Linux kernel source code or grasp the operating principles of processes and interrupts. However, in real projects, senior developers with these abilities are rare, and even if you're lucky enough to have a developer who is good at debugging, most are too busy to provide detailed and kind explanations.
3. It's difficult to understand why debugging is done
Regardless of the field, most people know that debugging is a core competency for developing problem-solving skills. However, many job seekers as well as junior Linux system software developers often don't understand why debugging is necessary in real-world projects. They also feel frustrated because it's difficult to know what they need to prepare to become good at debugging. Moreover, when they are assigned bugs or issues during real-world projects, they are likely to repeat trial and error because they don't even know how to start analyzing. This eventually leads to endless overtime work, and they end up blaming themselves for lacking aptitude in the Linux system software field.
So what is the practical skill that Linux system software developers want to learn most? It's debugging skills. Since debugging is proportional to problem-solving ability, they want to improve their debugging capabilities. While there are many blogs and materials about the Linux kernel, they rarely cover how to systematically solve problems using the latest debugging techniques.
So in Chapter 3 of my book 'Learning Linux Kernel Structure and Principles through Debugging', in the 'Debugging and Code Learning' section, I cover content about debugging.This lecture is a direct lecture by the author of 'Linux Kernel Structure and Principles Learned Through Debugging' and covers the content of Chapter 3 of the book.Additionally, it explains practical debugging methods not covered in books.
This explains in detail why debugging is important in real-world projects and the actual debugging process.

This introduces various methods to improve debugging skills and types of issues that can arise in real-world projects.

It provides a detailed explanation of the kernel debugging process by referencing cases most similar to real-world projects.

This provides a detailed explanation of how to debug the kernel using printk and dump_stack(). It also includes explanations of related reference code.

We will conduct hands-on practice analyzing kernel logs on an actual Raspberry Pi. We will also load memory dumps using the Crash Utility program to open and analyze kernel logs in detail.

This explains in detail how to design device drivers using printk and create debugging patches.

This explains Ftrace, a core debugging feature provided by the Linux kernel. It provides detailed explanations of how to utilize Ftrace and how to configure it.

This provides a detailed explanation of Ftrace messages. In particular, it conducts a detailed analysis of stack traces that can help identify the call flow of functions.

This explains how to analyze kernel source code through Ftrace messages and describes various Ftrace events.

This explains how to configure Ftrace directly on a Raspberry Pi and describes the Ftrace configuration methods. It also covers extracting Ftrace logs and analyzing Ftrace messages from various events.

In the domestic system software field, I am the author who wrote the unprecedented! 'Linux Kernel' book and 'Arm Architecture (Armv8-A, Armv7-A)' book. I am also a current developer who knows the latest system software trends (electric vehicles, system semiconductors - system software) best, and an educator who is most actively engaged in knowledge dissemination activities in the system software field.
'Learning Linux Kernel Structure and Principles Through Debugging' (2021 Korea Academy Outstanding Book Award) Author
Author of 'Structure and Principles of Arm Architecture for System Software Development' (2024 Korea Academy Outstanding Book Award)
'Programmers Dev Course: Linux System and Kernel Expert' Main Instructor
June 2022, Korea Computer Congress (KCC2022) - Tutorial Presentation [Conquering the Linux Kernel Using ftrace]
LG Electronics 'Linux Kernel' and 'Armv8 Architecture' In-house Instructor (including domestic and overseas developers) - (2020~2024)

I can confidently say that I am an educator who can explain 'Linux kernel debugging features' and 'troubleshooting methods' better than anyone else in Korea.
Operating System and Version (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1
It would be good if you have a rough understanding of how Linux works.
Having knowledge of operating systems or computer architecture will make it easier to follow the class.
You don't need deep prerequisite knowledge about the Linux kernel.
Who is this course right for?
Junior developer seeking to grow capabilities in system software, including system semiconductors and EV (autonomous driving, infotainment).
Aspiring system software developer for system semiconductor and electric vehicle fields.
Undergraduate student aiming to pursue graduate studies in system software (memory, file systems, operating systems)
Developer from another field transitioning to system software
A developer who wants to enhance debugging skills as a Linux system software developer
Developer seeking Linux system software troubleshooting process
Need to know before starting?
C language
Computer Architecture
Operating System
6,062
Learners
209
Reviews
89
Answers
4.9
Rating
22
Courses
글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (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'
All
34 lectures ∙ (4hr 35min)
Course Materials:
All
14 reviews
4.6
14 reviews
Reviews 2
∙
Average Rating 5.0
Reviews 4
∙
Average Rating 5.0
Reviews 2
∙
Average Rating 5.0
Reviews 3
∙
Average Rating 5.0
Reviews 13
∙
Average Rating 5.0
$26.40
Check out other courses by the instructor!
Explore other courses in the same field!