Learning RISC-V Architecture Through Debugging - Part 2
austinkim
Explains the core concepts and practical tips of RISC-V, the latest open-source based CPU architecture, simply and in detail.
Basic
cpu-architecture, cpu, riscv
Tác giả "디버깅을 통해 배우는 리눅스 커널의 구조와 원리" giải thích đúng đắn khái niệm cốt lõi về interrupt của kernel Linux (v6.1) mới nhất, được dùng nhiều nhất trong phần mềm hệ thống.
228 học viên


Ngắt: Khái niệm cơ bản và cách hoạt động
Xử lý ngắt theo góc nhìn của driver thiết bị
Xử lý ngắt nhìn từ kiến trúc Arm
Cấu trúc dữ liệu quản lý ngắt
Để kỷ niệm việc vượt qua 500 học viên đăng ký khóa học 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/i3zsz
Bài giảng 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 nhân Linux thì nên sử dụng lộ trình học (giảm giá 30% toàn bộ khóa học).
Hệ điều hành được sử dụng nhiều nhất trên tất cả 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 ứng 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í (infotainment), lái xe tự động, và telematics.
Cốt lõi của hệ điều hành Linux là Linux kernel. Cùng với kiến trúc Armv8-A, có thể nói rằng Linux kernel 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) là nhà phát triển junior
✅ Những 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
✅ 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, kernel 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ỏ việc học kernel Linux nhiều lần. Kernel Linux vốn đã khó khăn 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 nhân 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 cả bán dẫn hệ thống và 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 của mình. Tuy nhiên, họ đang gặp khó khăn trong việc nắm bắt cách thức học Linux kernel và quan trọng hơn là những nội dung nào cần nắm vững trong công việc thực tế.
Khi mới bắt đầu làm nhà phát triển phần mềm hệ thống Linux, bạn sẽ làm những công việc gì? Tùy thuộc vào tính chất và nhiệm vụ của dự án, nhưng phần lớn sẽ phát triển Linux device driver. Khi phát triển Linux device driver, một trong những yếu tố bắt buộc phải triển khai và tối ưu hóa là interrupt. Ngoài ra, interrupt có liên quan mật thiết với nhiều chức năng chính tạo nên Linux kernel. Nó có mối liên hệ sâu sắc với kỹ thuật interrupt bottom half, dynamic timer, Preemptive scheduling và hoạt động của signal.
Vì vậy, tôi đã giải thích về interrupt trong chương 5 của cuốn sách 'Cấu trúc và Nguyên lý của Linux Kernel' mà tôi viết. Tôi đã cấu trúc để các độc giả có thể học về interrupt thông qua thực hành debug ftrace bằng nhiều cách khác nhau.
Khóa học này được cấu thành từ nội dung chưa từng được đề cập trên YouTube hay bất kỳ nền tảng giảng dạy nào khác! Chúng ta sẽ debug cách thức hoạt động của interrupt và các cấu trúc dữ liệu liên quan thông qua memory dump của Linux kernel. Những ai tham gia khóa học này có thể tải xuống chương trình giáo dục (TRACE32) để thực hành trực tiếp.
1. Cung cấp chương trình mô phỏng TRACE32 (dành cho giáo dục) và 6 bản dump kernel Linux
Trình gỡ lỗi và chương trình TRACE32 được sử dụng rộng rãi trong toàn bộ quá trình phát triển phần mềm hệ thống Linux. Chương trình TRACE32 cần có giấy phép mới có thể chạy được. Khi bạn tham gia khóa học nàyChương trình mô phỏng TRACE32 giáo dục từ 'Tài liệu bài giảng Inflearn'có thể tải xuống để sử dụng trực tiếp chương trình mô phỏng TRACE32 để debug memory dump. Ngoài ra, bạn có thể tải xuống 6 kernel memory dump để thực hành debug các hoạt động đa dạng của interrupt (gọi interrupt handler, Preemption).
2. Giải thích khái niệm cơ bản về interrupt một cách dễ hiểu và chi tiết
Khi học về nhân Linux, chúng ta phân tích mã nguồn nhân. Tuy nhiên, trong quá trình phân tích mã nguồn nhân, chúng ta gặp phải nhiều trở ngại. Khó có thể xác định hàm đó được gọi theo luồng nào, cấu trúc dữ liệu của routine đang phân tích thực sự có giá trị gì. Bài giảng này sẽ phá bỏ tất cả những trở ngại đó.
Phân tích mã nguồn kernel Linux liên quan đến interrupt cùng với call stack của chương trình TRACE32 và các cấu trúc dữ liệu chi tiết. Có thể học interrupt hiệu quả hơn nhiều so với việc tự học kernel Linux một mình. Ngoài ra, còn phân tích cả các thông điệp ftrace được trích xuất từ memory dump nên có thể nắm bắt chi tiết nguyên lý hoạt động của interrupt một cách lập thể.
3. Giới thiệu phương pháp debug của các nhà phát triển BSP kernel Linux tại các công ty bán dẫn hệ thống toàn cầu
Gần đây ngành công nghiệp bán dẫn hệ thống đang nổi lên. Các nhà phát triển BSP kernel Linux của Qualcomm - công ty có công nghệ hàng đầu trong số các công ty bán dẫn hệ thống toàn cầu - sẽ debug driver kernel Linux theo cách nào?
Trong bài giảng này, chúng ta sẽ đề cập đến nội dung sau. Sử dụng TRACE32 simulator để debug memory dump của Linux kernel, phân tích cấu trúc dữ liệu của kernel liên quan đến interrupt, đồng thời load memory dump bằng crash-utility để phân tích các hoạt động chính của kernel.
Đầu tiên sẽ giải thích cách thức xử lý interrupt và mô tả luồng xử lý interrupt từ nhiều góc độ khác nhau.

Giải thích chi tiết toàn bộ luồng thực thi khi interrupt được kích hoạt từ kernel Linux và ứng dụng người dùng theo quan điểm kiến trúc Armv8.

Phân tích bảng vector exception của Armv8 khi interrupt được kích hoạt trong kernel Linux. Tiếp theo, phân tích chi tiết routine xử lý exception handler được thực hiện.

Phân tích bảng vector exception của Armv8 khi interrupt được kích hoạt từ ứng dụng người dùng. Tiếp theo, phân tích chi tiết routine xử lý exception được thực hiện đến cấp độ lệnh assembly.

Phân tích luồng xử lý interrupt theo bức tranh tổng thể và mô tả chi tiết các hàm được thực thi trong hệ thống con IRQ (không phụ thuộc vào kiến trúc Arm).

Sử dụng các chương trình gỡ lỗi TRACE32 và Crash-utility để phân tích cấu trúc dữ liệu liên quan đến ngắt.

Sử dụng TRACE32 để debug hàm xử lý ngắt bcm2835_mmc_irq(). Phân tích chi tiết mã nguồn của trình xử lý ngắt cùng với call stack và các cấu trúc dữ liệu liên quan.

Giới thiệu ngữ cảnh ngắt (interrupt context) và giải thích mã ví dụ có thể kiểm tra ngữ cảnh ngắt.

Phân tích mã nguồn kernel kích hoạt ngữ cảnh ngắt. Giải thích lý do tại sao không nên gọi các hàm kernel có thể chuyển vào trạng thái sleep trong ngữ cảnh ngắt, và giới thiệu mã xử lý ngoại lệ khi thu được mutex làm ví dụ.

Giải thích chi tiết cách thức hoạt động của Preemption được xử lý sau khi hoàn thành việc thực thi Interrupt Service Routine. Đồng thời, tiến hành debug chi tiết hoạt động khi xảy ra Preemption bằng chương trình debugging TRACE32.

Giới thiệu cách thiết lập sự kiện ftrace để tracing hoạt động của interrupt. Sẽ giải thích về luồng thực thi của interrupt handler và điều kiện của interrupt context thông qua việc phân tích chi tiết ftrace message.

Phân tích chi tiết mã nguồn kernel xuất ra thông điệp ftrace để tracing hoạt động của interrupt.

Trong bài gi강 này, chúng ta sẽ tìm hiểu về phương pháp debug tiên tiến (Advanced) nhất trong ngành phần mềm hệ thống Linux -Các nhà phát triển kernel Linux của Qualcomm, công ty bán dẫn hệ thống hàng đầu thế giới, đang debug- Phương pháp debug memory dump của Linux kernel được giới thiệu. Có thể debug các cấu trúc dữ liệu chính của interrupt bằng cách sử dụng các chương trình debugging như TRACE32 và Crash utility.
✅ Bạn có thể tải xuống chương trình TRACE32 giáo dục (phiên bản mô phỏng) từ chương trình giảng dạy của khóa học.Học viên có thể sử dụng chương trình TRACE32 để tải kernel memory dump được cung cấp trong bài giảng này và thực hành debug cùng với giảng viên.
✅ Được vận hành như một dự án mã nguồn mở, bạn có thể tải xuống trực tiếp Crash Utility để tải kernel memory dump và thực hiện debug. Sử dụng các tính năng đa dạng mà Crash Utility hỗ trợ để phân tích cấu trúc dữ liệu của kernel hoặc call stackGỡ lỗi trực tiếpCó thể làm được.
Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, tác giả duy nhất viết sách về 'Linux Kernel' và 'Kiến trúc Arm (Armv8-A, Armv7-A)'. Đồng thời 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, 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' (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 Tutorial [Chinh phục Linux Kernel bằng ftrace]
LG Electronics gi강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à nước ngoài) - (2020~2024)

Tôi có thể tự tin nói rằng tôi là một giáo육자 có thể giải thích các chức năng chính cấu thành nhân Linux tốt hơn bất kỳ ai khác trong nước.
Chương trình giáo dục TRACE32 chỉ có thể thực hành trong môi trường Windows.
Chương trình giáo dục TRACE32 chỉ có thể được sử dụng cho mục đích 'giáo dục' và không được phép chỉnh sửa hoặc phân phối cho mục đích thương mại.
Nếu có thắc mắc khi sử dụng chương trình giáo dục TRACE32 trong bài giảng này thìNhất định dành cho các nhà giáo dụcHãy đặt câu hỏi.
Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux kernel v6.1
Tài liệu hướng dẫn cài đặt và chương trình giáo dục TRACE32 (bài giảng)
6 bản dump bộ nhớ kernel Linux (vmcore)
Sẽ tốt nếu bạn biết đại khái Linux hoạt động như thế nào.
Tốt nhất là bạn nên nghe trước khóa học '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]'.
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ề nhân Linux 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 phát triển 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 xe điện (tự lái, thông tin giải trí).
Người tìm việc 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, xe điện.
Sinh viên đại học với 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ừ lĩnh vực khác muốn chuyển đổi sang phần mềm hệ thống
Cần biết trước khi bắt đầu?
Ngôn ngữ C
Cấu trúc máy tính
Hệ điều hành
5,836
Học viên
183
Đá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ả
56 bài giảng ∙ (6giờ 13phút)
Tài liệu khóa học:
Tất cả
5 đánh giá
5.0
5 đánh giá
Đánh giá 9
∙
Đánh giá trung bình 4.9
Đánh giá 19
∙
Đánh giá trung bình 4.9
Đánh giá 2
∙
Đánh giá trung bình 5.0
Đánh giá 109
∙
Đánh giá trung bình 5.0
Đánh giá 1
∙
Đánh giá trung bình 5.0
1.163.444 ₫
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!