Học kiến trúc RISC-V qua việc gỡ lỗi - Phần 1
austinkim
Giải thích một cách dễ hiểu và chi tiết về các khái niệm cốt lõi cũng như các mẹo thực tế của RISC-V, kiến trúc CPU mới nhất dựa trên mã nguồn mở.
Cơ bản
cpu, cpu-architecture, riscv
Tác giả của cuốn sách "Cấu trúc và nguyên lý của nhân Linux học qua việc debug" sẽ giải thích một cách bài bản về các phương pháp và tính năng debug cơ bản của nhân Linux mới nhất (v6.1), vốn được sử dụng nhiều nhất trong phần mềm hệ thống.
428 học viên
Độ khó Cơ bản
Thời gian Không giới hạn


Đánh giá từ những học viên đầu tiên
5.0
anhae11
Nội dung khó nhưng thầy cô dạy rất dễ hiểu!
5.0
kech611961
Làm tốt lắm!
5.0
sunny75
2024/07/30/Thứ ba 15:35 Tôi rất thích bài giảng. Cảm ơn bạn đã giải thích tốt về việc gỡ lỗi. Thay vì nghe bài giảng gỡ lỗi, trước tiên tôi nghe các bài giảng khác và nghĩ xem nhật ký phân tích sẽ trông như thế nào, nhưng tôi nhận ra rằng tốt hơn là nên học các bài giảng theo thứ tự, giống như lộ trình mà bạn đưa ra. Trong khi nghe bài giảng, tôi biết được rằng tôi có thể phân tích tốt nhân Linux thông qua việc gỡ lỗi. Cảm ơn bạn luôn vì đã tạo ra những bài giảng tuyệt vời.
Tầm quan trọng của việc gỡ lỗi (debugging) trong các dự án thực tế và quy trình gỡ lỗi thực tế
Các phương pháp khác nhau để nâng cao khả năng gỡ lỗi và các loại vấn đề có thể phát sinh trong các dự án thực tế
Cách gỡ lỗi kernel bằng cách sử dụng printk và dump_stack()
Cách thiết kế driver thiết bị và tạo bản vá lỗi (debug patch) bằng cách sử dụng printk
Cách sử dụng và phương pháp thiết lập Ftrace
Nguyên lý hoạt động chính của nhân Linux thông qua các thông điệp Ftrace của các sự kiện khác nhau
Để kỷ niệm cột mố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 xin phát hành mã giảm giá 30%. Xin cảm ơn các bạn. Số lượng có hạn cho 100 người đầu tiên.
Link mã giảm giá 30% : https://inf.run/pWjae
Bài giảng lần này <Cấu trúc và nguyên lý của Linux Kernel: Debugging - Basic [Tác giả trực tiếp giảng dạy Phần 1-2]> là bài giảng nằm trong lộ trình'Linux kernel - basic course dành cho nhà phát triển phần mềm hệ thống'.

Nếu bạn muốn học các chức năng chính cấu thành nên nhân Linux một cách hệ thống, bạn nên tận dụng lộ trình học tập (giảm giá 30% cho toàn bộ khóa học).).
Hệ điều hành nào được sử dụng nhiều nhất trong các thiết bị IT? Đó chính là hệ điều hành Linux. Nó đang được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí trên máy bay 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 do chính họ thiết kế. Ngoài ra, Linux cũng đang được ứng dụng rộng rãi trong nhiều linh kiện khác nhau (hệ thống thông tin giải trí, tự lái, viễn thông) cấu thành nên xe điện (Automotive).
Cốt lõi của hệ điều hành Linux chính là nhân Linux (Linux Kernel). Cùng với kiến trúc Armv8-A, có thể xem nhân 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 nay.
✅ Nhà phát triển trẻ (Junior Developer) trong lĩnh vực phần mềm hệ thống Linux, bao gồm các lĩnh vực bán dẫn hệ thống và xe điện (tự lái, giải trí đa phương tiện)
✅ Người đang chuẩn bị xin việc 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 và xe điện.
✅ Những người có nguyện vọng 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, hệ điều hành) in the field of Linux system software (memory, file systems, operating systems)
✅ Các nhà phát triển từ các lĩnh vực khác đang muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux into the Linux system software field
Tuy nhiên, nhân Linux giống như một bức tường 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 chắc hẳn đã từng có kinh nghiệm bỏ cuộc nhiều lần khi đang học về nhân Linux. Phiên bản nhân Linux vốn đã khó nay lại càng trở nên phức tạp hơn khi được nâng cấp. Sau năm 2024, phiên bản nhân Linux đang được nâng cấp lên v6.6 trở lên, khiến rào cản gia nhập ngày càng cao hơn.
Các nhà phát triển phần mềm hệ thống Linux trong nhiều lĩnh vực khác nhau, bao gồm cả lĩnh vực bán dẫn hệ thống và xe điện, đều biết rằng việc hiểu rõ nhân (kernel) Linux là điều cần thiết để nâng cao năng lực phát triển. Tuy nhiên, họ đang gặp khó khăn trong việc xác định nên học nhân Linux như thế nào và quan trọng hơn hết là cần nắm vững những nội dung gì trong thực tế công việc.
Các lập trình viên hệ thống Linux nhúng mới vào nghề hoặc cấp độ junior thường gặp nhiều 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 gỡ lỗi
Trong các lĩnh vực phần mềm đa dạng bao gồm cả phát triển web, môi trường phát triển cho việc gỡ lỗi (debugging) được trang bị tương đối tốt. Ngoài ra, cũng có nhiều bài giảng và sách dành cho người mới bắt đầu nên không gặp phải quá nhiều sai sót khi học phương pháp gỡ lỗi. Tuy nhiên, trong phát triển phần mềm hệ thống Linux, mặc dù có các tài liệu liên quan đến gỡ lỗi nhưng hầu hết là các tài liệu phát triển khó tiếp thu đối với người mới bắt đầu.
2. Khó nhận được sự trợ giúp liên quan đến gỡ lỗi (debugging)
Trong các dự án liên quan đến phần mềm hệ thống Linux, việc gỡ lỗi (debugging) được thực hiện như thế nào? Hầu hết đều phân tích nhật ký hạt nhân (kernel log) hoặc bộ nhớ đệm (memory dump). Để phân tích log hoặc dump một cách chính xác, cần có những năng lực gì? Cần có khả năng đọc và hiểu mã nguồn của nhân Linux, hoặc nắm vững các nguyên lý hoạt động như tiến trình (process) hay ngắt (interrupt). Tuy nhiên, thực tế là trong các dự án thực chiến, hiếm có những nhà phát triển tiền bối nào sở hữu những năng lực này, và ngay cả khi may mắn có được một nhà phát triển giỏi gỡ lỗi, họ thường quá bận rộn nên khó có thể giải thích một cách chi tiết và tận tình.
3. Khó hiểu lý do tại sao phải debugging
Bất kể lĩnh vực nào, hầu hết mọi người đều biết rằng kỹ năng cốt lõi để nâng cao năng lực giải quyết vấn đề chính là gỡ lỗi (debugging). Tuy nhiên, không chỉ những người đang tìm việc mà ngay cả các lập trình viên phần mềm hệ thống Linux cấp độ Junior cũng thường không biết tại sao phải gỡ lỗi trong các dự án thực tế. Ngoài ra, họ còn cảm thấy bế tắc vì khó biết được cần chuẩn bị những gì để có thể gỡ lỗi tốt. Tuy nhiên, nếu được giao một lỗi hoặc vấn đề khi đang thực hiện dự án thực tế, họ rất dễ lặp đi lặp lại những sai sót do thậm chí không biết phải bắt đầu phân tích từ đâu. Kết quả là dẫn đến việc phải tăng ca liên tục, và họ tự trách bản thân rằng mình thiếu năng khiếu trong lĩnh vực phần mềm hệ thống Linux.
Rốt cuộc, 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 debugging. Vì debugging tỷ lệ thuận với khả năng giải quyết vấn đề, nên họ luôn muốn nâng cao năng lực này. Có rất nhiều blog và tài liệu về nhân Linux (Linux kernel), nhưng hầu như không có tài liệu nào đề cập đến phương pháp giải quyết vấn đề một cách hệ thống bằng các kỹ thuật debugging mới nhất.
Vì vậy, trong chương 3 'Gỡ lỗi và học mã nguồn' của cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua gỡ lỗi' do tôi viết, tôi có đề cập đến nội dung về gỡ lỗi. Khóa học này là bài giảng trực tiếp từ tác giả của cuốn 'Cấu trúc và nguyên lý của nhân Linux học qua gỡ lỗi', tập trung vào nội dung chương 3 của sách. Ngoài ra, tôi cũng sẽ giải thích thêm về các phương pháp gỡ lỗi thực tiễn không có trong sách.
Giải thích chi tiết lý do tại sao việc gỡ lỗi (debugging) lại quan trọng trong các dự án thực tế và quy trình thực hiện gỡ lỗi thực tế.

Giới thiệu các phương pháp đa dạng để nâng cao khả năng gỡ lỗi và các loại vấn đề có thể phát sinh trong các dự án thực tế.

Giải thích chi tiết quá trình gỡ lỗi (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 phương pháp debug kernel bằng cách sử dụng printk và dump_stack(). Đồng thời, giải thích cả các mã nguồn tham chiếu liên quan.

Chúng tôi sẽ tiến hành thực hành kiểm tra và phân tích nhật ký (log) nhân hệ điều hành (kernel) trên Raspberry Pi thực tế. Ngoài ra, chúng tôi cũng sẽ tải bản sao lưu bộ nhớ (memory dump) bằng chương trình Crash Utility để mở và phân tích chi tiết nhật ký nhân hệ điều hành.

Giải thích chi tiết cách thiết kế trình điều khiển thiết bị (device driver) và tạo bản vá lỗi (debugging patch) bằng cách sử dụng printk.

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 nhân Linux. Đặc biệt, giải thích chi tiết về cách sử dụng và cách thiết lập Ftrace.

Giải thích chi tiết về thông điệp Ftrace. Đặc biệt, 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 cách phân tích mã nguồn kernel thông qua thông điệp Ftrace và các sự kiện Ftrace đa dạng.

Giải thích cách thiết lập Ftrace bằng cách trực tiếp cấu hình trên Raspberry Pi. Ngoài ra, sau khi trích xuất log Ftrace, chúng tôi sẽ phân tích các thông báo Ftrace của nhiều sự kiện khác nhau.

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

Tôi có thể tự tin khẳng định rằng mình là một giảng viên có khả năng giải thích về 'tính năng gỡ lỗi của nhân Linux' và 'phương pháp khắc phục sự cố' tốt hơn bất kỳ ai tại Hàn Quốc.
Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1
Sẽ rất tốt nếu bạn biết sơ qua về cách thức hoạt động của Linux.
Nếu bạn có kiến thức về hệ điều hành hoặc cấu trúc máy tính, bạn sẽ có thể theo học khóa học một cách thoải mái hơn.
Không cần kiến thức chuyên sâu về nhân Linux (Linux kernel).
Khóa học này dành cho ai?
Nhà phát triển trẻ 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à xe điện (tự hành, thông tin giải trí).
Người đang chuẩn bị tìm việc 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 và xe điện.
Sinh viên đại học có mục tiêu học cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tệp, hệ điều hành)
Nhà phát triển từ các lĩnh vực khác đang muốn chuyển hướng sự nghiệp sang lĩnh vực phần mềm hệ thống
Nhà phát triển phần mềm hệ thống Linux muốn nâng cao khả năng gỡ lỗi (debugging)
Nhà phát triển muốn biết quy trình giải quyết các vấn đề 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
Xác minh sự nghiệp
6,588
Học viên
265
Đánh giá
102
Trả lời
4.9
Xếp hạng
23
Các khóa học
Tác giả toàn cầu & Nhà phát triển phần mềm hệ thống Linux (Kiến trúc Arm, RISC-V)
Là tác giả duy nhất và chưa từng có tiền lệ trong lĩnh vực phần mềm hệ thống tại Hàn Quốc đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả hai cuốn sách đều được Viện Hàn lâm Khoa học Quốc gia Hàn Quốc chọn là Sách ưu tú), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách "Reverse Engineering Armv8-A Systems" (bằng tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Ngoài ra, ông còn là một nhà giáo dục hoạt động 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.
Người chia sẻ kiến thức chuyên môn và Tư vấn viên
Làm việc tại nhóm Mã nguồn mở Linux Kernel của LG Electronics (~tháng 5 năm 2026)
'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' Tác giả sách (tiếng Anh), (Nhà xuất bản Packt)
Tác giả cuốn 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2024))
Tác giả cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2021)
Giảng viên chính của khóa học 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'
Tôi có thể tự tin khẳng định rằng mình là một nhà giáo dục có khả năng giải thích về nhân Linux và kiến trúc Arm (Armv8-A, Armv7-A) tốt hơn bất kỳ ai khác tại Hàn Quốc.
Liên hệ bài giảng: austindh.kim@gmail.com
'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'
'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'
Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản
Tất cả
34 bài giảng ∙ (4giờ 35phút)
Tài liệu khóa học:
Tất cả
21 đánh giá
4.7
21 đánh giá
Đánh giá 3
∙
Đánh giá trung bình 5.0
Đánh giá 128
∙
Đánh giá trung bình 5.0
5
2024/07/30/Thứ ba 15:35 Tôi rất thích bài giảng. Cảm ơn bạn đã giải thích tốt về việc gỡ lỗi. Thay vì nghe bài giảng gỡ lỗi, trước tiên tôi nghe các bài giảng khác và nghĩ xem nhật ký phân tích sẽ trông như thế nào, nhưng tôi nhận ra rằng tốt hơn là nên học các bài giảng theo thứ tự, giống như lộ trình mà bạn đưa ra. Trong khi nghe bài giảng, tôi biết được rằng tôi có thể phân tích tốt nhân Linux thông qua việc gỡ lỗi. Cảm ơn bạn luôn vì đã tạo ra những bài giảng tuyệt vời.
Đánh giá 1
∙
Đánh giá trung bình 5.0
Đánh giá 2
∙
Đánh giá trung bình 5.0
Đánh giá 2
∙
Đánh giá trung bình 5.0
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!
Ưu đãi có thời hạn, kết thúc sau 3 ngày ngày
506.324 ₫
29%
714.810 ₫