Kiến trúc RISC-V học qua gỡ lỗi - Phần 3
austinkim
Giải thích dễ hiểu và chi tiết khái niệm cốt lõi và mẹo thực tế của RISC-V, kiến trúc CPU mã nguồn mở mới nhất.
初級
cpu, cpu-architecture, riscv
Tác giả của "디버깅을 통해 배우는 리눅스 커널의 구조와 원리" giải thích rõ ràng các tính năng và phương pháp 디버깅 cơ bản của 리눅스 커널 (v6.1) mới nhất, vốn được sử dụng phổ biến nhất trong phần mềm hệ thống.
373 học viên


Lý do gỡ lỗi (debugging) quan trọng trong các dự án thực tế và quá trình thực hiện gỡ lỗi trên thực tế
Các cách khác nhau để nâng cao kỹ năng gỡ lỗi và các dạng vấn đề có thể gặp phải trong dự án thực chiến
Cách gỡ lỗi kernel bằng printk và dump_stack()
Cách thiết kế driver thiết bị và tạo patch gỡ lỗi bằng printk
Cách sử dụng Ftrace và cách thiết lập
Nguyên lý hoạt động chính của nhân Linux qua thông điệp Ftrace từ nhiều sự kiện.
Để kỷ niệm việc vượt qua 500 học viên (Cấu trúc và Nguyên lý của Linux Kernel), chúng tôi phát hành coupon giảm giá 30%. Cảm ơn các bạn. Chỉ dành cho 100 người đầu tiên.
Liên kết coupon giảm giá 30%: https://inf.run/pWjae
Khóa học này

Những ai muốn học có hệ thống các chức năng chính cấu thành nên Linux kernel thì nên sử dụng roadmap (giảm giá 30% toàn bộ khóa học).
Hệ điều hành được sử dụng nhiều nhất trong các thiết bị IT là gì? Đó chính là hệ điều hành Linux. Nó được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí hàng không và máy chủ. Các công ty bán dẫn hệ thống sử dụng Linux (Linux device driver) để điều khiển phần cứng mà họ thiết kế. Ngoài ra, Linux cũng được sử dụng rộng rãi trong các bộ phận khác nhau cấu thành xe điện (Automotive) như hệ thống thông tin giải trí, lái xe tự động và telematics.
Cốt lõi của hệ điều hành Linux là kernel Linux. Cùng với kiến trúc Armv8-A, có thể nói rằng kernel Linux là nội dung đòi hỏi kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện tại.
✅ Trong lĩnh vực phần mềm hệ thống Linux bao gồm bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment) dành cho nhà phát triển junior
✅ Người chuẩn bị việc làm muốn làm việc trong lĩnh vực phát triển phần mềm hệ thống Linux như bán dẫn hệ thống, xe điện
✅ Những người mong muốn học cao học trong lĩnh vực phần mềm hệ thống Linux (bộ nhớ, hệ thống tập tin, hệ điều hành)
✅ Các lập trình viên từ các lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux
Tuy nhiên, nhân Linux là một rào cản khổng lồ đối với những người mới bắt đầu trong lĩnh vực phần mềm hệ thống. Những người mới bắt đầu có lẽ đã có kinh nghiệm từ bỏ nhiều lần khi học về nhân Linux. Nhân Linux vốn đã khó hiểu này đang ngày càng phát triển phức tạp hơn khi các phiên bản được nâng cấp.Từ năm 2024 trở đi, phiên bản kernel Linux được nâng cấp lên v6.6 trở lên vànhưng rào cản gia nhập đang ngày càng cao hơn.
Các nhà phát triển phần mềm hệ thống Linux hoạt động trong nhiều lĩnh vực khác nhau bao gồm bán dẫn hệ thống, xe điện đều biết rằng họ cần hiểu rõ về Linux kernel để có thể nâng cao năng lực phát triển. Tuy nhiên, họ đang gặp khó khăn trong việc nắm bắt cách học Linux kernel như thế nào và quan trọng hơn là cần biết những nội dung gì trong công việc thực tế.
Các lập trình viên hệ thống embedded Linux mới vào nghề hoặc cấp độ junior thường gặp khó khăn nhất trong quá trình giải quyết vấn đề. Lý do là gì?
1. Thiếu tài liệu liên quan đến debugging
Trong các lĩnh vực phần mềm đa dạng bao gồm phát triển web, môi trường phát triển để debug đã được trang bị tương đối tốt. Ngoài ra, có nhiều khóa học và sách dành cho người mới bắt đầu nên khi học cách debug không phải trải qua quá nhiều thử nghiệm và sai lầm. Tuy nhiên, trong phát triển phần mềm hệ thống Linux, mặc dù có tài liệu liên quan đến debugging nhưng phần lớn là các tài liệu phát triển khó tiêu hóa đối với người mới bắt đầu.
2. Khó khăn trong việc nhận được hỗ trợ liên quan đến debug
Trong các dự án phần mềm hệ thống Linux, việc debug được thực hiện như thế nào? Hầu hết đều phân tích kernel log hoặc memory dump. Để phân tích log hoặc dump một cách đúng đắn thì cần những khả năng gì? Cần có khả năng đọc và hiểu source code của Linux kernel hoặc nắm bắt nguyên lý hoạt động như process hay interrupt. Nhưng trong các dự án thực tế, những developer senior có khả năng này rất hiếm, và ngay cả khi may mắn có developer giỏi debug thì hầu hết đều quá bận rộn nên khó có thể giải thích chi tiết và Kind.
3. Khó hiểu tại sao phải thực hiện debugging
Bất kể lĩnh vực nào, hầu hết mọi người đều biết rằng debugging là năng lực cốt lõi để phát triển khả năng giải quyết vấn đề. Tuy nhiên, không chỉ những người chuẩn bị việc làm mà ngay cả các junior trong lĩnh vực phần mềm hệ thống Linux cũng thường không hiểu tại sao phải debugging trong các dự án thực tế. Họ cũng cảm thấy bối rối vì khó biết cần chuẩn bị gì để debugging hiệu quả. Nhưng khi tiến hành dự án thực tế và được phân công xử lý bug hoặc issue, họ thậm chí không biết bắt đầu phân tích như thế nào, dẫn đến khả năng cao phải lặp đi lặp lại những sai lầm. Cuối cùng, điều này dẫn đến việc làm thêm giờ liên tục và họ tự trách mình rằng bản thân thiếu năng khiếu trong lĩnh vực phần mềm hệ thống Linux.
Cuối cùng, kỹ năng thực tế mà các nhà phát triển phần mềm hệ thống Linux muốn học nhất là gì? Chính là kỹ năng debug. Debug tỷ lệ thuận với khả năng giải quyết vấn đề, vì vậy họ muốn nâng cao khả năng debug. Mặc dù có nhiều blog và tài liệu về Linux kernel, nhưng hầu như không có tài liệu nào đề cập đến cách giải quyết vấn đề một cách có hệ thống bằng các kỹ thuật debug hiện đại.
Vì vậy, trong chương 3 "Debugging và học tập mã nguồn" của cuốn sách "Cấu trúc và nguyên lý của Linux kernel thông qua debugging" mà tôi đã viết, tôi đã đề cập đến nội dung về debugging.Khóa học này là bài giảng trực tiếp của tác giả cuốn sách 'Cấu trúc và Nguyên lý của Linux Kernel thông qua Debugging', bao gồm nội dung chương 3 của cuốn sách.Ngoài ra, tôi sẽ giải thích các phương pháp debug thực tế mà sách không đề cập đến.
Giải thích chi tiết lý do tại sao việc debug rất quan trọng trong các dự án thực tế và quá trình thực hiện debug thực tế.

Giới thiệu các phương pháp đa dạng để phát triển khả năng debug và các loại vấn đề có thể xuất hiện trong dự án thực tế.

Giải thích chi tiết quá trình debug kernel bằng cách tham khảo các trường hợp tương tự nhất với dự án thực tế.

Giải thích chi tiết cách debug kernel bằng cách sử dụng printk và dump_stack(). Cũng sẽ giải thích kèm theo các reference code liên quan.

Chúng ta sẽ tiến hành thực hành kiểm tra và phân tích kernel log trên Raspberry Pi thực tế. Ngoài ra, chúng ta sẽ tải memory dump bằng chương trình Crash Utility để mở kernel log và phân tích chi tiết.

Sử dụng printk để thiết kế device driver và tạo debugging patch một cách chi tiết.

Giải thích về Ftrace, một tính năng gỡ lỗi cốt lõi được cung cấp bởi kernel Linux. Đặc biệt, giải thích chi tiết về cách sử dụng và cách cấu hình Ftrace.

Giải thích chi tiết về thông điệp Ftrace. Đặc biệt là phân tích chi tiết stack trace có thể nắm bắt được luồng gọi hàm.

Giải thích về cách phân tích mã nguồn kernel thông qua thông điệp Ftrace và các loại Ftrace event khác nhau.

Thiết lập Ftrace trực tiếp trên Raspberry Pi để giải thích cách cấu hình Ftrace. Ngoài ra, sau khi trích xuất log Ftrace, sẽ phân tích các thông điệp Ftrace của các sự kiện khác nhau.

Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, đây là tác giả duy nhất! đã viết sách 'Linux Kernel' và sách 'Kiến trúc Arm (Armv8-A, Armv7-A)'. Đồng thời cũng là nhà phát triển thực tế hiểu rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, chất bán dẫn hệ thống - phần mềm hệ thống), và là nhà giáo dục tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.
'Học cấu trúc và nguyên lý của Linux kernel thông qua debugging' (2021, Giải thưởng sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc) tác giả
Tác giả của 'Cấu trúc và nguyên lý kiến trúc Arm cho phát triển phần mềm hệ thống' (năm 2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc)
'Programmers Dev Course: Chuyên gia hệ thống Linux và kernel' Giảng viên chính
Tháng 6 năm 2022, Hội nghị Khoa học Máy tính Tổng hợp Hàn Quốc (KCC2022) - Bài thuyết trình hướng dẫn [Chinh phục kernel Linux bằng ftrace]
LG Electronics giảng viên nội bộ về 'Linux Kernel' và 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong nước và nhà phát triển nước ngoài) - (2020~2024)

Tôi có thể tự tin nói rằng tôi là một giảng viên có thể giải thích 'chức năng debug của Linux kernel' và 'phương pháp khắc phục sự cố' tốt hơn bất kỳ ai khác trong nước.
Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux kernel v6.1
Sẽ tốt nếu bạn biết đại khái Linux hoạt động như thế nào.
Nếu bạn có kiến thức về hệ điều hành hoặc kiến trúc máy tính thì sẽ có thể học bài một cách thoải mái hơn.
Không cần có kiến thức sâu về Linux kernel làm điều kiện tiên quyết.
Khóa học này dành cho ai?
Lập trình viên junior mong muốn nâng cao năng lực trong lĩnh vực phần mềm hệ thống, bao gồm bán dẫn hệ thống và lĩnh vực ô tô điện (lái tự động, thông tin giải trí).
Ứng viên mong muốn phát triển phần mềm hệ thống trong các lĩnh vực như bán dẫn hệ thống, ô tô điện.
Sinh viên đại học hướng tới cao học ngành phần mềm hệ thống (bộ nhớ, hệ thống tệp, hệ điều hành)
Nhà phát triển ngoài ngành mong muốn chuyển đổi sang lĩnh vực phần mềm hệ thống
Lập trình viên phần mềm hệ thống Linux muốn nâng cao khả năng gỡ lỗi
Nhà phát triển tìm hiểu quy trình xử lý sự cố liên quan đến phần mềm hệ thống Linux
Cần biết trước khi bắt đầu?
Ngôn ngữ C
Kiến trúc máy tính
Hệ điều hành
6,061
Học viên
211
Đánh giá
89
Trả lời
4.9
Xếp hạng
22
Các khóa học
글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (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'
Tất cả
34 bài giảng ∙ (4giờ 35phút)
Tài liệu khóa học:
Tất cả
14 đánh giá
4.6
14 đánh giá
Đánh giá 2
∙
Đánh giá trung bình 5.0
Đánh giá 4
∙
Đánh giá trung bình 5.0
Đánh giá 2
∙
Đánh giá trung bình 5.0
Đánh giá 3
∙
Đánh giá trung bình 5.0
Đánh giá 13
∙
Đánh giá trung bình 5.0
716.101 ₫
Hãy khám phá các khóa học khác của giảng viên!
Khám phá các khóa học khác trong cùng lĩnh vực!