Học kiến trúc RISC-V qua Debugging - Phần 2

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ở.

(5.0) 9 đánh giá

76 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

cpu-architecture
cpu-architecture
cpu
cpu
riscv
riscv
cpu-architecture
cpu-architecture
cpu
cpu
riscv
riscv

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

5.0

5.0

mikeseohyungjin

31% đã tham gia

Là một lập trình viên đang làm việc, đây là một khóa học hữu ích và tốt chỉ tập trung vào những điều cốt lõi. Quá trình có thể thực hành thông qua trace32 những nội dung cần thiết phải biết để đạt đến trình độ chuyên gia là rất khó tìm trên toàn thế giới, và nó đã giúp ích rất nhiều cho tôi.

5.0

김준

100% đã tham gia

Đây là một bài giảng tuyệt vời, tôi có thể cảm nhận được sự trưởng thành đến từ kinh nghiệm thực tế tại hiện trường.

5.0

박정모

100% đã tham gia

Rất hữu ích.

Bạn sẽ nhận được điều này sau khi học.

  • Tôi có thể trả lời tốt và giải thích các câu hỏi liên quan đến RISC-V trong các buổi phỏng vấn kỹ thuật.

  • Bạn có thể tìm hiểu về nguyên lý hoạt động của các tính năng cốt lõi tạo nên RISC-V như Ngoại lệ (Exception), Bộ điều khiển ngắt (Interrupt Controller) và Quy ước gọi hàm (Calling Convention).

  • Bạn có thể thực hành gỡ lỗi các tính năng như ngoại lệ (Exception), bộ điều khiển ngắt (Interrupt Controller) và quy ước gọi (Calling Convention) bằng cách sử dụng chương trình mô phỏng TRACE32.

  • Bạn có thể tìm hiểu cách kiến trúc RISC-V được sử dụng trong các nhân hệ điều hành như nhân Linux.

  • Có thể phân tích mã khởi động (startup code) của bootloader hoặc nhân Linux chạy trên nền tảng RISC-V.

<Thông báo>

1. Phát hành phiếu giảm giá 30% nhằm kỷ niệm việc ra mắt khóa học RISC-V đầu tiên tại Hàn Quốc (dành cho 100 người đầu tiên).

Link coupon: https://inf.run/C7qRb

2. Làm mới bài giảng mới nhất năm 2025

Tôi đã bổ sung các bài giảng dưới đây bằng cách tìm tòi những nội dung hữu ích, có thể áp dụng ngay vào các dự án thực tế và các tính năng của kiến trúc RISC-V mới nhất.

  • Thêm phiên bản 'Cách thức hoạt động của Synchronous Exception' (4 bài giảng) - 07/23 (2025)

Trong ngành phần mềm hệ thống mới nhất,
kiến trúc RISC-V đang nổi lên

Gần đây, kiến trúc RISC-V, một kiến trúc CPU dựa trên mã nguồn mở, đang trở nên nổi bật. Nếu theo dõi các bài báo hoặc tin tức liên quan đến IT, bạn có thể dễ dàng bắt gặp những nội dung như sau:

  • Các công ty công nghệ lớn như nVidia, Intel và Qualcomm đang phát triển các sản phẩm (chipset) dựa trên RISC-V.

  • Số lượng các công ty khởi nghiệp thiết kế nhiều loại chip sử dụng RISC-V tại Hàn Quốc đang ngày càng tăng, và tỷ trọng phát triển các sản phẩm dựa trên thiết bị RISC-V cũng đang trở nên cao hơn.

  • Khi thiết kế chip bán dẫn AI, kiến trúc CPU dựa trên RISC-V được sử dụng rất nhiều.

  • Dự kiến đến năm 2026, sẽ có 15 tỷ thiết bị dựa trên RISC-V được ra mắt.

  • Tại các trường cao học (thiết kế bộ vi xử lý), nhiều nghiên cứu đa dạng đang được tiến hành bằng cách sử dụng bộ công cụ có thể thiết kế CPU RISC-V.

Các công ty phần mềm hệ thống và nhúng đang ngày càng tăng cường việc sử dụng kiến trúc CPU RISC-V để phát triển sản phẩm. Do đó, những người đang tìm việc cũng cần phải chuẩn bị kiến thức về RISC-V cho các buổi phỏng vấn kỹ thuật.

Bối cảnh tạo ra bài giảng

Đối với người mới bắt đầu, kiến trúc RISC-V rất khó học. Lý do là như sau:

  • Trong số nội dung đồ sộ cấu thành nên RISC-V, tôi không biết điều gì là quan trọng

  • Trong số các nội dung cấu thành RISC-V, tôi không biết tính năng nào được ứng dụng vào dự án thực tế.

  • Dù có chăm chỉ đọc tài liệu đặc tả RISC-V đến mức nào thì cũng rất khó để hiểu ngay lập tức.


  • Bản thân các thuật ngữ giải thích về RISC-V cũng rất khó hiểu ý nghĩa là gì.


Thực tế là so với kiến trúc Arm, các tài liệu liên quan đến kiến trúc RISC-V vẫn chưa đầy đủ và thiếu những nguồn tài liệu giải thích cụ thể, dễ hiểu về RISC-V. Tôi thực hiện bài giảng này nhằm giúp các nhà phát triển phần mềm hệ thống, bao gồm cả những nhà phát triển mới vào nghề, tháo gỡ những khó khăn gặp phải trong quá trình học hỏi về RISC-V.

Cấu trúc bài giảng và lộ trình bài giảng phần 1, phần 3

Khóa học lần này nằm trong danh sách toàn bộ các bài giảng về RISC-V, nội dung sẽ tập trung vào phần 2 - các tính năng cốt lõi của RISC-V.

Toàn bộ bài giảng về kiến trúc RISC-V có thể được tìm thấy tại lộ trình - bài giảng 'Kiến trúc RISC-V dành cho nhà phát triển phần mềm hệ thống'.

Điểm khác biệt cốt lõi của bài giảng

1. Gỡ lỗi kiến trúc RISC-V bằng chương trình mô phỏng TRACE32 (phiên bản giáo dục)

Đâu là con đường tắt để học kiến trúc RISC-V (thanh ghi, lệnh assembly, chế độ Privilege)? Đó chính là phương pháp trực tiếp thực hành gỡ lỗi (debugging).

Nếu tham gia khóa học này, bạn có thể tải chương trình mô phỏng TRACE32 dành cho giáo dục từ 'Tài liệu bài giảng trên Inflearn' và trực tiếp thực hành về các thanh ghi, lệnh hợp ngữ (assembly), và chế độ đặc quyền (Privilege mode) của kiến trúc RISC-V bằng cách sử dụng chương trình mô phỏng TRACE32.

Để tham khảo, trình gỡ lỗi TRACE32 và các chương trình liên quan đượ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. Chương trình TRACE32 chỉ có thể chạy khi có giấy phép (license).

2. Cung cấp 5 bản memory dump của kernel được trích xuất từ bo mạch RISC-V

Kỹ năng quan trọng nhất được yêu cầu trong quá trình phát triển phần mềm hệ thống là khả năng giải quyết vấn đề. Trong đó, khả năng phân tích và khắc phục các sự cố crash là cần thiết nhất. Trong bài giảng này, chúng ta sẽ thực hành gỡ lỗi về Exception và Calling convention bằng cách gỡ lỗi 5 bản ghi nhớ bộ nhớ (memory dump) khi kernel bị crash được trích xuất từ Vision-Five 2, một trong những bo mạch RISC-V phổ biến nhất. Những người tham gia khóa học có thể tải xuống 5 bản memory dump cùng với chương trình TRACE32 để trực tiếp thực hành gỡ lỗi Exception và Calling convention.

3. Tuyển chọn nội dung cốt lõi và giải thích một cách dễ hiểu

Những người mới bắt đầu thường tìm kiếm và phân tích các tài liệu tham khảo khi học RISC-V, nhưng từ góc độ của người mới, thật khó để biết nên học nội dung nào của RISC-V trước tiên. Đó là bởi vì rất khó để xác định cái gì cần phải học tốt ngay từ đầu. Trong bài giảng này, tôi sẽ tuyển chọn và giải thích những nội dung nhất thiết phải biết rõ để có thể áp dụng vào thực tế. Ví dụ, tôi sẽ mở các bản ghi nhớ (memory dump) và nhật ký hạt nhân (kernel log) nhận được từ các thiết bị dựa trên RISC-V để giải thích về các thanh ghi và lệnh hợp ngữ một cách dễ hiểu và chi tiết.

4. Giải thích bằng các ví dụ cụ thể cùng với phần mềm và ngăn xếp (stack)

Hầu hết mọi người học RISC-V vì muốn phát triển tốt phần mềm hệ thống hoặc muốn tiến chân vào lĩnh vực này. Trong bài giảng này, tôi sẽ giải thích thông qua nhiều ví dụ đa dạng về cách RISC-V được ứng dụng trong các dự án thực tế.

  • Phần mềm thực thi như thế nào trong hệ thống RISC-V

  • Quá trình khởi động diễn ra như thế nào trong hệ thống RISC-V

  • Cách thực hiện debugging và reversing trên hệ thống RISC-V như thế nào

Sau khi nghe bài giảng này, bạn sẽ có thể nhanh chóng nắm bắt được các cảm nhận thực tế cùng với nội dung về kiến trúc RISC-V một cách tự nhiên.

5. Giải thích về RISC-V so với kiến trúc Arm

Nhìn vào hệ sinh thái của ngành phần mềm hệ thống, cho đến năm 2025, hệ sinh thái của ngành công nghiệp nhúng và chipset vẫn được cấu trúc xoay quanh kiến trúc Arm. Nhiều nhà phát triển phần mềm hệ thống đã quen thuộc với bộ vi xử lý Arm hoặc kiến trúc Arm. Trong bài giảng này, các khái niệm cốt lõi của RISC-V sẽ được giải thích song song với kiến trúc Arm.

  • Các loại Exception và phương thức xử lý

  • Cấu trúc và phương thức xử lý của bộ điều khiển ngắt (Interrupt Controller)

  • Cách xử lý Calling Convention (Các thanh ghi được sử dụng và các lệnh Assembly liên quan)

Vì người hướng dẫn là tác giả của cuốn sách về kiến trúc Arm, nên họ có thể giải thích về RISC-V một cách tốt hơn bất kỳ ai bằng cách so sánh nó với kiến trúc Arm.

Nội dung bạn sẽ học 📕

Giải thích chi tiết khái niệm cơ bản về Exception (ngoại lệ), đồng thời giải thích một cách dễ hiểu các tính năng cốt lõi của Exception được định nghĩa trong kiến trúc RISC-V.

Giải thích luồng thực thi của exception, một tính năng cốt lõi của kiến trúc RISC-V. Ngoài ra, giải thích chi tiết cách xử lý exception trong hệ thống cấu thành từ Machine mode và User mode.

Giải thích mã ngoại lệ (Exception code) được định nghĩa trong kiến trúc RISC-V nhằm chỉ ra nguyên nhân gây ra ngoại lệ, đồng thời giải thích luồng xử lý ngoại lệ do lỗi truy cập bộ nhớ (memory abort).

Giải thích chi tiết luồng thực thi khi xảy ra ngoại lệ (exception) và crash dưới góc độ phát triển phần mềm.

Phân tích từng dòng lệnh assembly để giải thích luồng phát sinh của exception. Ngoài ra, giải thích cách thức xử lý exception trên stack khi nó được kích hoạt.

Thực hành về exception bằng cách thực thi các câu lệnh assembly với chương trình thực hành debug T32. Giải thích chi tiết các thanh ghi CSR (scause, mcause) nào sẽ bị thay đổi khi exception xảy ra.

Trong khi thực hành gây ra exception bằng chương trình TRACE32, tôi sẽ giải thích chi tiết về các trình xử lý exception (exception handler) được xử lý trong nhân Linux.

Trong khi phân tích bản sao lưu bộ nhớ (memory dump) nhận được từ bo mạch dựa trên cấu trúc RISC-V, tôi sẽ giải thích cách thức hoạt động của exception trong kiến trúc RISC-V: phân tích nhật ký (log) của kernel và phân tích ngăn xếp cuộc gọi (call stack).

Thực hành gỡ lỗi bảng trang (page table) bằng chương trình TRACE32. Thông qua đó, tìm hiểu cụ thể về nguyên nhân gây ra exception.

Giải thích về phương thức hoạt động cơ bản của bộ điều khiển ngắt (interrupt controller) được định nghĩa trong kiến trúc RISC-V. Giải thích một cách dễ hiểu về cấu trúc của PLIC và CLIC.

Xem lại các mã ngoại lệ (exception code) liên quan đến ngắt và giải thích cấu trúc của PLIC (Platform Level Interrupt Controller).

Giải thích về các thành phần phần cứng cốt lõi cấu tạo nên PLIC và giải thích một cách dễ hiểu về các thanh ghi CSR điều khiển PLIC.

Giải thích về Calling Convention (Quy ước gọi hàm) được giới thiệu trong kiến trúc RISC-V và xem xét các thanh ghi hỗ trợ Calling Convention.

Giải thích bức tranh tổng thể về cách xử lý các đối số được truyền vào hàm.

Phân tích các lệnh hợp ngữ hỗ trợ Calling convention (quy ước gọi hàm) của kiến trúc RISC-V. Ngoài ra, cũng phân tích ví dụ về lệnh hợp ngữ - phân tích lệnh c.sdsp

Phân tích các lệnh hợp ngữ hỗ trợ Calling convention (quy ước gọi hàm) của kiến trúc RISC-V. Ngoài ra, cũng phân tích các lệnh hợp ngữ ví dụ - Phân tích lệnh c.ldsp

Phân tích các lệnh hợp ngữ hỗ trợ Calling convention (quy ước gọi hàm) của kiến trúc RISC-V. Ngoài ra, cũng phân tích các lệnh hợp ngữ ví dụ - Phân tích lệnh c.ldsp


Thực hành khôi phục call stack bị lỗi thông qua bài tập thực hành debugging TRACE32.


Thông qua thực hành gỡ lỗi TRACE32, chúng tôi thực hiện phân tích kết xuất bộ nhớ (memory dump) gây ra bởi lỗi tràn ngăn xếp (stack overflow).


Dựa trên kinh nghiệm viết sách và giảng dạy,
sâu sắc và chi tiết hơn bất kỳ ai!

Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, tôi là tác giả độc nhất vô nhị! Người đã viết các cuốn 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 xuất sắc), và là người đầu tiên tại Hàn Quốc trở thành tác giả toàn cầu khi 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, tôi 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). Tôi cũng 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 sách (tiếng Anh) 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis', (Nhà xuất bản Packt)

  • Tác giả cuốn sách '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 '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 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'

  • Tháng 6 năm 2022, Hội nghị 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)

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển trẻ 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 (fabless) và lĩnh vực xe điện (tự lái, thông tin giải trí).

  • Sinh viên mới tốt nghiệp đang tìm việc, mong muốn phát triển phần mềm hệ thống trong lĩnh vực bán dẫn hệ thống (fabless) và xe điện.

  • Nhà phát triển phần mềm hệ thống (bán dẫn hệ thống, xe điện) muốn biết cách gỡ lỗi trong thực tế bằng cách tận dụng các tính năng của kiến trúc RISC-V.

  • Các 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.

  • 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)

Cần biết trước khi bắt đầu?

  • Kiến trúc máy tính

  • Ngôn ngữ C

  • Hệ điều hành

Xin chào
Đây là austinkim

6,335

Học viên

242

Đánh giá

96

Trả lời

4.9

Xếp hạng

22

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ả 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ười đã viết các cuốn 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 bình 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 tiếng Anh "Reverse Engineering Armv8-A Systems" 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.

  • Tác giả cuốn sách (tiếng Anh) 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis', (Nhà xuất bản Packt), (Packt Publishing)

  • 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 '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à 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong và ngoài nước) - (2020~Hiện tại)

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ề Linux Kernel 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ệ giảng dạy: austindh.kim@gmail.com

Lộ trình chính 🎯

'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

Thêm

Chương trình giảng dạy

Tất cả

91 bài giảng ∙ (11giờ 33phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

9 đánh giá

5.0

9 đánh giá

  • chungwoopark1091님의 프로필 이미지
    chungwoopark1091

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    31% đã tham gia

    • dlee8103님의 프로필 이미지
      dlee8103

      Đánh giá 2

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • mikeseohyungjin5975님의 프로필 이미지
        mikeseohyungjin5975

        Đánh giá 4

        Đánh giá trung bình 5.0

        Đã chỉnh sửa

        5

        31% đã tham gia

        Là một lập trình viên đang làm việc, đây là một khóa học hữu ích và tốt chỉ tập trung vào những điều cốt lõi. Quá trình có thể thực hành thông qua trace32 những nội dung cần thiết phải biết để đạt đến trình độ chuyên gia là rất khó tìm trên toàn thế giới, và nó đã giúp ích rất nhiều cho tôi.

        • heecheolsong님의 프로필 이미지
          heecheolsong

          Đánh giá 21

          Đánh giá trung bình 5.0

          5

          31% đã tham gia

          • mist14093016님의 프로필 이미지
            mist14093016

            Đánh giá 5

            Đánh giá trung bình 5.0

            5

            31% đã tham gia

            Khóa học khác của austinkim

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!

            2.532.822 ₫