Cấu trúc và nguyên lý của kiến trúc Arm cho phát triển phần mềm hệ thống - Phần 1 Tác giả trực tiếp giảng dạy (Phiên bản 2024)
Yếu tố chủ chốt của phần mềm hệ thống, cốt lõi kiến trúc Arm mới nhất (Armv8-A, Armv7-A), sẽ được tác giả của "시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리" giải thích rõ!
Cơ bản trong những cơ bản của phần mềm hệ thống, Cốt lõi của kiến trúc Arm mới nhất!
0. Phát hành coupon giảm giá 30% khi vượt qua 300 học viên
Để kỷ niệm việc vượt qua 300 học viên (phần 1,2), 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 : https://inf.run/NspbX
1. Cập nhật khóa học mới nhất năm 2024
Chúng tôi đã phát hiện và bổ sung các khóa học dưới đây với nội dung hữu ích về các tính năng của kiến trúc Arm mới nhất và có thể áp dụng ngay vào các dự án thực tế.
Nội dung debug chương trình TRACE32: Bạn có thể tải xuống chương trình mô phỏng TRACE32 dành cho giáo dục từ 'Tài liệu bài giảng Inflearn'. Bạn có thể trực tiếp sử dụng chương trình mô phỏng TRACE32 để thực hành theo quá trình debug (bao gồm cả lệnh assembly) được giải thích trong bài giảng.
Bài gi강 thực hành debug được thêm vào: Thực hành thanh ghi (50 phút), Lệnh assembly (60 phút), Chế độ hoạt động và mức exception (60 phút)
Khóa học sẽ tiếp tục được cập nhật.
2. Lộ trình khóa học trực tiếp từ tác giả về toàn bộ kiến trúc Arm
Những người muốn học kiến trúc Arm (Armv8-A, Armv7-A) một cách có hệ thống nên sử dụng lộ trình học (giảm giá 30% toàn bộ khóa học). Để tham khảo, lộ trình kiến trúc Arm (toàn bộ khóa học trực tiếp của tác giả) bao gồm 2 phần: Basic Course và Advanced Course.
Lĩnh vực bán dẫn hệ thống, ô tô, v.v. Kiến trúc Arm mà các nhà phát triển phần mềm hệ thống nhất định phải biết.
Không chỉ smartphone mà cả SoC hệ thống bán dẫn cho AI, ô tô điện Automotive (tự lái, infotainment) và bộ xử lý Arm được sử dụng trong máy chủ cloud cũng như MacBook đều là bộ xử lý Cortex-A 64-bit dựa trên Armv8-A (Cortex-A53, Cortex-A57, Cortex-A72, v.v...). Có thể nói rằng kiến thức nền tảng được yêu cầu nhiều nhất trong ngành phần mềm hệ thống hiện tại chính là kiến trúc Armv8-A.
Tuy nhiên, bạn có cảm thấy kiến trúc Arm mới nhất Armv8-A và kiến trúc Armv7-A quá khó hiểu không?.
Các nhà phát triển phần mềm hệ thống, lập trình viên hệ thống nhúng (BSP) chú ý!
Dành cho nhà phát triển junior 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 chíp bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment)
Sinh viên chuẩn bị việc làm muốn phát triển phần mềm hệ thống trong các lĩnh vực như chíp bán dẫn hệ thống, xe điện
Sinh viên đại học có mục tiêu theo học cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tập tin, hệ điều hành)
Các lập trình viên từ 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
Nhiều người mong muốn trở thành nhà phát triển Linux embedded đều học về kiến trúc máy tính và hệ điều hành. Và họ cũng học lý thuyết CS ở một mức độ nhất định. Các nhà phát triển phần mềm hệ thống bán dẫn và xe điện đang nổi lên gần đây phân tích Linux device driver, RTOS hoặc bootloader. Nhưng chỉ riêng điều đó thôi thì vẫn thiếu sót gì đó, họ tự cảm nhận được điều này. Họ biết rằng để trở thành nhà phát triển phần mềm hệ thống chuyên nghiệp thì nhất định phải hiểu về kiến trúc Arm, nhưng ngay khi mở tài liệu đặc tả Arm ra thì họ nhận ra đây không phải con đường dễ dàng và việc tự học sẽ rất khó khăn.
Giải thích dễ hiểu về cốt lõi của kiến trúc Arm!
1️⃣ Có thể hiểu các lý thuyết cốt lõi như thanh ghi và lệnh assembly của kiến trúc Arm, chế độ hoạt động và mức độ ngoại lệ.
2️⃣ Trải nghiệm lại các nội dung chính tạo nên kiến trúc Arm ở cấp độ mã nguồn, giúp nâng cao đáng kể mức độ hiểu biết về kiến trúc Arm.
3️⃣ Bằng cách tích cực tận dụng các tính năng đa dạng mà kiến trúc Arm hỗ trợ, bạn có thể phát triển các chương trình hệ thống (driver, bootloader) đảm bảo độ ổn định và hiệu suất cao.
4️⃣Thực hành trực tiếp với chương trình debug TRACE32, bạn có thể debug trực tiếp các lệnh assembly và các chức năng liên quan. Bạn có thể tự hiểu các lý thuyết và trường hợp cần thiết cho việc phát triển dự án thực tế.
Có thể nói rằng cốt lõi của phát triển phần mềm hệ thống chính là CPU và kiến trúc máy tính. Chúng tôi đã giải thích một cách dễ hiểu về lý thuyết cốt lõi của kiến trúc Arm mới nhất (Armv8-A, Armv7-A), bộ xử lý CPU được ngành IT cần nhất!
Lý do kiến trúc Arm khó hiểu là vì chúng ta chỉ học kiến trúc Arm từ góc độ bộ xử lý phần cứng. Khóa học này sẽ giải thích cách các thành phần cấu thành kiến trúc Arm thực sự được sử dụng trong thực tế thông qua phân tích mã nguồn và giới thiệu các trường hợp cụ thể. Khóa học này sẽ đóng vai trò then chốt giúp bạn trở thành một nhà phát triển phần mềm hệ thống có năng lực.
Cung cấp chương trình mô phỏng TRACE32 (dành cho giáo dục)
Con đường tắt để học kiến trúc Arm là gì? Đó là thực hành bằng cách debug trực tiếp.
Khi bạn tham gia khóa học này, bạn có thể tải xuống chương trình mô phỏng TRACE32 dành cho giáo dục từ 'Tài liệu bài giảng Inflearn' và sử dụng trực tiếp chương trình mô phỏng TRACE32 để thực hành debug theo đúng quy trình debug (bao gồm cả lệnh assembly) được giải thích trong bài giảng. Các bài giảng debug liên quan trong chương trình học như sau:
TRACE32 - Thực hành thanh ghi (phiên bản 2024)
TRACE32 - Thực hành gỡ lỗi chế độ hoạt động (phiên bản 2024)
TRACE32 - Thực hành debug lệnh assembly (phiên bản 2024)
TRACE32 - Thực hành Debug Exception Level (phiên bản 2024)
Ngoài ra, bạn cũng có thể thực hiện debug liên quan đến chế độ hoạt động và mức exception cùng lúc.
Tác giả trực tiếp giảng dạy! Giải thích chi tiết cả những nội dung không có trong sách.
Sách 『Cấu trúc và Nguyên lý của Kiến trúc Arm』 không chỉ trình bày nội dung mà còn giải thích cụ thể các bài thực hành debug và nhiều trường hợp khác nhau về kiến trúc Arm mà sách không đề cập đến.
✅ 40%: Nội dung cốt lõi của cuốn sách
✅ 40%: Nghiên cứu tình huống chính liên quan đến kiến trúc Arm, đánh giá mã nguồn
✅ 20%: Thực hành debug - TRACE32
Nội dung chính của khóa học
Giới thiệu về bộ xử lý Arm và kiến trúc Arm cùng với quá trình phát triển chip bán dẫn hệ thống. Giải thích về profile và family của bộ xử lý Arm.
Giới thiệu các thanh ghi của kiến trúc Armv7-A và giải thích đặc điểm của từng loại.
Xử lý chi tiết về các thanh ghi được phân nhóm (banked register) trong số các thanh ghi đa năng (Armv7-A). Giải thích chi tiết các trường chính cấu thành thanh ghi CPSR chứa thông tin trạng thái của tiến trình.
Giải thích các thanh ghi được định nghĩa trong kiến trúc Armv8-A một cách dễ hiểu và chi tiết.
Chúng ta sẽ debug các thanh ghi bằng chương trình TRACE32. Tôi sẽ giải thích chi tiết nguyên lý hoạt động của các thanh ghi bằng cách thay đổi trực tiếp giá trị của các thanh ghi được định nghĩa trong kiến trúc Armv7-A và Armv8-A. Tất nhiên tôi sẽ giải thích để các học viên có thể tự thực hành debug theo.
Giải thích cấu trúc cơ bản của lệnh assembly và mô tả chi tiết từng lệnh assembly.
Không chỉ dừng lại ở việc giải thích cú pháp của các lệnh assembly mà còn mô tả chi tiết cách các lệnh assembly được sử dụng trong các dự án thực tế.
Chương trình TRACE32 được sử dụng để giải thích trực tiếp trong khi debug các lệnh assembly. Từ các lệnh số học (ví dụ: MOV, ADD, SUB) đến các lệnh branch, lệnh thao tác bit và các lệnh logic (AND, ORR, EOR), tất cả đều được giải thích để các học viên có thể theo dõi và debug cùng.
Giới thiệu các chế độ hoạt động làm nền tảng cho Armv7-A và giải thích chi tiết về đặc điểm của từng chế độ. Giải thích phần mềm nào được thực thi trong từng chế độ hoạt động.
Giải thích về mức Privilege liên quan đến chế độ hoạt động và phân tích chi tiết về trường bit của thanh ghi CPSR để có thể biết được chế độ hoạt động.
Chúng ta sẽ trực tiếp debug các lệnh thay đổi chế độ hoạt động bằng chương trình TRACE32. Đồng thời, chúng ta sẽ trực tiếp thực thi các lệnh gây ra exception để debug và giải thích quá trình exception được kích hoạt thông qua quá trình debugging trực tiếp. Tôi sẽ giải thích để các học viên có thể cùng theo dõi và thực hành debugging.
Giải thích khái niệm về Exception Level - một trong những tính năng cốt lõi của kiến trúc Armv8-A một cách dễ hiểu và chi tiết.
Phân tích tài liệu đặc tả để xem xét chi tiết các cấp độ exception và giải thích về software stack được thực thi theo từng cấp độ exception.
Chúng ta sẽ tiến hành thực hành đọc exception level bằng chương trình TRACE32. Ngoài ra, chúng ta sẽ thực thi trực tiếp các lệnh SVC, HVC và giải thích quá trình thay đổi exception level thông qua việc debugging trực tiếp. Các học viên có thể tải chương trình TRACE32 về và thực hành debugging cùng theo.
Con đường tắt để hiểu nguyên lý hoạt động của bộ xử lý Arm là đọc và hiểu trực tiếp tài liệu đặc tả Arm. Điều này không hề dễ dàng đối với người mới bắt đầu. Dù nội dung có hữu ích đến đâu thì cũng khó hiểu. Khóa học này được lên kế hoạch nhằm mở ra con đường giúp bạn tiếp cận dễ dàng hơn với những lý thuyết khó hiểu về kiến trúc Arm.
Dựa trên kinh nghiệm viết sách/giảng dạy Sâu sắc và chi tiết hơn ai hết!
Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, đây là tác giả độc nhất vô nhị! Đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả 2 cuốn sách đều được chọn là Sách Xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc), và là người đầu tiên tại Hàn Quốc viết sách "Reverse Engineering Armv8-A Systems" (tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt), là một tác giả toàn cầu. Trên hết, đây là một lập trình viên thực tế hiểu rõ nhất về 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). Đồng thời cũng là một 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.
Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis (Nhà xuất bản Packt: tiếng Anh) - Xuất bản năm 2025
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'(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 năm 2024)
'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ả
'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ả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à nước ngoài) - (2020~2024)
Tôi có thể tự tin nói rằng mình là một giảng viên có thể giải thích tốt nhất các tính năng chính tạo nên kiến trúc Arm (Armv8-A, Armv7-A) hơn bất kỳ ai khác trong nước.
Đánh giá khóa học chân thực từ học viên
Q&A 💬
Q. Để trở thành nhà phát triển phần mềm hệ thống, có nhất thiết phải học kiến trúc Arm không?
Vâng, nhất định phải học. Trong ngành IT, CPU được sử dụng nhiều nhất là bộ xử lý Arm. Các nhà phát triển phần mềm hệ thống làm việc với lập trình điều khiển phần cứng cần phải hiểu rõ về kiến trúc Arm để có thể giải quyết vấn đề trong nhiều trường hợp. Nếu không nắm vững kiến trúc Arm, có khả năng bạn sẽ chỉ có thể thực hiện những công việc cấu hình hệ thống đơn giản.
Q. Tôi không phải chuyên ngành, liệu có thể học kiến trúc Arm không?
Ngay cả những người không chuyên ngành cũng có thể hiểu đầy đủ các nguyên lý cơ bản của kiến trúc Arm nếu nghe kỹ nội dung của khóa học này. Trong số các beta reader của cuốn sách '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' cũng có nhiều người không chuyên ngành. Ban đầu, việc đọc và hiểu ngay nội dung về kiến trúc Arm là khó khăn, nhưng sau khi đọc sách 2~3 lần, hầu hết đều hiểu được kiến trúc Arm. Khóa học này giải thích nội dung của sách một cách chi tiết và cụ thể hơn, do đó nếu nghe khóa học này thì ngay cả những người không chuyên ngành cũng có thể hiểu rõ kiến trúc Arm.
Q. Để trở thành nhà phát triển phần mềm bảo mật thì có cần phải học khóa học này không?
Nếu bạn muốn phát triển phần mềm như V3, thì kiến thức lý thuyết về kiến trúc CPU là điều cần thiết. Sau khi chuyển sang làm nhà phát triển kernel driver, bạn nhất định phải biết về kiến trúc CPU như kiến trúc Arm. Để học được cốt lõi của các kỹ thuật tấn công/phòng thủ khác nhau bao gồm cả reverse engineering, thì việc không biết lý thuyết về kiến trúc Arm sẽ khiến bạn khó có thể thử nghiệm.
Q. Tôi chỉ học C và cấu trúc dữ liệu thôi. Vậy tôi có thể nghe được khóa học này không?
Vâng, bạn có thể nghe được. Để nghe khóa học này không cần kiến thức tiên quyết đặc biệt nào. Thái độ sau đây có thể quan trọng hơn kiến thức tiên quyết.
Nỗ lực nghe giảng một cách kiên trì
Khi nghe những nội dung không rõ, hãy luyện tập suy nghĩ và cân nhắc
Thói quen ôn tập thường xuyên
Tuy nhiên, nếu bạn đã có kiến thức về hệ điều hành hoặc RTOS thì sẽ giúp ích cho việc hiểu bài giảng này.
Khuyến nghị cho những người này
Khóa học này dành cho ai?
Lập trình viên junior 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í).
Lập trình viên từ lĩnh vực khác muốn chuyển sang phần mềm hệ thống
Ứng viên muốn phát triển phần mềm hệ thống trong mảng bán dẫn hệ thống (fabless) và xe điện.
Sinh viên đại học đặt mục tiêu theo học cao học về lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tập tin, hệ điều hành).
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 công việc thực tế bằng cách tận dụng các tính năng của kiến trúc Arm.
Nhà phát triển phần mềm hệ thống muốn biết cách bộ xử lý Arm dựa trên Armv8-A hoạt động trong bán dẫn hệ thống.
Sinh viên năm cuối đang chuẩn bị đề tài tốt nghiệp trên hệ thống dựa trên Arm.
Sinh viên cao học đang thực hiện dự án của phòng thí nghiệm trong môi trường bộ xử lý Arm.
Cần biết trước khi bắt đầu?
Kiến trúc máy tính
Hệ điều hành
Xin chào Đây là
6,034
Học viên
204
Đá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)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.
Sau khi nghe bài giảng, đầu óc tôi trở nên sáng suốt hơn và tôi cảm thấy như có điều gì đó biến mất. Điều đáng ngạc nhiên là những khái niệm chính của ARM vốn còn mơ hồ cho đến nay đã được sắp xếp rõ ràng. Tôi hơi ngạc nhiên về việc mình đã thay đổi nhiều như thế nào sau khi tham gia bài giảng. Mỗi lần tôi đọc thông số ARM, tôi có cảm giác mới mẻ, nhưng bây giờ tôi có thể đọc tài liệu thông số ARM một cách nhanh chóng. Tôi cũng rất ấn tượng với nội dung có thể áp dụng trực tiếp vào dự án của mình, vì vậy tôi đã giới thiệu nó cho các nhà phát triển đồng nghiệp xung quanh mình. Tôi rất vui khi được nghe những bài giảng về cuộc sống và tôi mong có thêm nhiều bài giảng được tải lên. Cảm ơn bạn rất nhiều vì bài giảng tuyệt vời và nhiều thông tin.
Cảm ơn bạn đã đánh giá tốt và khuyến khích của bạn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại Q/A bất cứ lúc nào. Từ giờ trở đi, tôi sẽ tiếp tục cố gắng hết sức để đảm bảo rằng các bạn “thực sự thích” bài giảng của tôi.
Cảm ơn bạn đã cung cấp giải thích rất chi tiết và sâu sắc về những điều cơ bản cần thiết để hiểu cấu trúc ARM, bắt đầu với lịch sử ARM, hướng dẫn ARM, sổ đăng ký và mức độ ngoại lệ! Tôi chưa bao giờ thấy một cuốn sách nào có nội dung như thế này, ít nhất là ở Hàn Quốc. Tôi chắc chắn sẽ giới thiệu nó cho bất kỳ ai làm việc trên nhân Linux hoặc quan tâm đến ARM!
Cảm ơn bạn đã đánh giá tốt và khuyến khích của bạn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại Q/A bất cứ lúc nào.
Từ giờ trở đi, tôi sẽ tiếp tục cố gắng hết sức để đảm bảo rằng các bạn “thực sự thích” bài giảng của tôi.
Tìm hiểu kiến trúc ARM thông qua các ví dụ ứng dụng thực tế như TRACE32, nguồn nhân Linux và Tôi muốn xem phần thứ ba của bài giảng và tôi hy vọng rằng sẽ có những bài giảng thực tế về lập trình thực tế cũng như lý thuyết. Cảm ơn bạn vì bài giảng tuyệt vời.
Cảm ơn bạn đã đánh giá tốt. Đặc biệt, nó được kỳ vọng sẽ giúp ích rất nhiều trong thực tế vì nó chứa nhiều ví dụ thực tế có thể được sử dụng trong nhiều lĩnh vực khác nhau của phần mềm hệ thống. Chúng tôi dự định sẽ tạo ra các bài giảng có đào tạo thực tế trong tương lai. Xin lưu ý Phần 3 của bài giảng sẽ được xuất bản vào đầu tháng 1. Cảm ơn ^^