inflearn logo

Tổng quan về Kiến trúc Armv7-A dành cho lập trình viên mới (Giảng viên trực tiếp là tác giả)

Kiến thức cơ bản nhất của phần mềm hệ thống, những điểm cốt lõi của kiến trúc Arm mới nhất (Armv7-A) sẽ được 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" truyền tải một cách bài bản!

(5.0) 1 đánh giá

47 học viên

Độ khó Nhập môn

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

ARM Architecture
ARM Architecture
armv7
armv7
cpu-architecture
cpu-architecture
ARM Architecture
ARM Architecture
armv7
armv7
cpu-architecture
cpu-architecture

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

  • Đặc điểm của kiến trúc Arm và bộ vi xử lý Arm

  • Cách xử lý của thanh ghi và lệnh hợp ngữ

  • Ngăn xếp phần mềm (software stack) thực thi theo từng cấp độ ngoại lệ (Exception Level) và chế độ bộ xử lý (Processor Mode)

  • Các loại ngoại lệ (Exception) và cơ chế hoạt động

  • AAPCS (Quy ước gọi Arm), một quy ước dành cho việc gọi chương trình con

  • Khái niệm về Non-secure World và Secure World cấu thành nên TrustZone

  • Nguyên lý hoạt động của Barrier, Cache và hệ thống bộ nhớ ảo

<Thông báo>

Lộ trình các bài giảng về kiến trúc Arm do chính tác giả trực tiếp giảng dạy

Khóa học lần này <Armv7-A Architecture dành cho nhà phát triển mới (Tác giả trực tiếp giảng dạy)> là khóa học nằm trong lộ trình 'Arm - basic course dành cho nhà phát triển phần mềm hệ thống' .

Những ai muốn học kiến trúc Arm (Armv8-A, Armv7-A) một cách hệ thống 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). Để tham khảo, lộ trình kiến trúc Arm (toàn bộ do tác giả trực tiếp giảng dạy) bao gồm hai phần là Basic Course Advanced Course .

Trong phần mềm hệ thống hiện đại,
kiến trúc Arm là quan trọng nhất

Ngoại trừ máy tính để bàn, hầu hết các thiết bị hiện nay đều chạy trên bộ vi xử lý Arm. Từ trước đến nay, kiến trúc Arm luôn là chủ đề bắt buộc phải học đối với các nhà phát triển hệ thống nhúng. Các kiến trúc Arm phổ biến có thể được chia thành hai loại chính là Armv7-A và Armv8-A. Trong số đó, bộ vi xử lý Arm dựa trên 32-bit (Armv7-A) như Cortex-A9, Cortex-A15 vẫn đang được sử dụng trong rất nhiều dòng sản phẩm đa dạng (TV kỹ thuật số, thiết bị IoT, xe điện - tự lái, viễn thông tin học).

Nếu bạn lần đầu học kiến trúc Armv7?

Nếu bạn là người mới bắt đầu học kiến trúc Arm, bạn có thể cảm thấy choáng ngợp trước khối lượng kiến thức khổng lồ. Ngoài ra, những người đang chuẩn bị xin việc hoặc các nhà phát triển trẻ thường cần chuẩn bị cho các buổi phỏng vấn kỹ thuật một cách nhanh chóng trong vòng 1-2 tuần. Bài giảng lần này đã được thiết kế với lộ trình tối ưu để những người mới bắt đầu học kiến trúc Arm có thể nắm vững các khái niệm cốt lõi trong thời gian ngắn.

Tất nhiên, để học Arm kiến trúc một cách hệ thống thì quá trình học tập chuyên sâu là rất quan trọng. Thực tế, cuốn sách <Cấu trúc và Nguyên lý của Kiến trúc Arm> do tôi biên soạn và khóa học đầy đủ (tổng thời lượng 60 giờ) dưới đây đã được rất nhiều học viên lựa chọn.

🔹 Nếu bạn là người muốn học tập một cách hệ thống, hãy chú ý đến các bài giảng dưới đây!

Đối tượng học viên 💁‍♂

Tôi đã thực hiện bài giảng này - Bài giảng Tổng quan về kiến trúc Armv7-A dành cho những học viên dự kiến như sau.

Những người đang tìm việc trong lĩnh vực phần mềm hệ thống cần chuẩn bị cho các buổi phỏng vấn kỹ thuật liên quan đến kiến trúc Armv7-A trong thời gian ngắn

Các nhà phát triển mới vào nghề và cấp độ Junior muốn nắm bắt nội dung cốt lõi của Armv7-A để nhanh chóng làm quen với công việc thực tế

Người quản lý phần mềm hệ thống muốn hiểu các tính năng cốt lõi của Armv7-A và quản lý dự án

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

1⃣ Tóm tắt các tính năng cốt lõi của kiến trúc Armv7-A có thể xuất hiện trong các buổi phỏng vấn kỹ thuật

Khả năng các câu hỏi về kiến trúc Armv7-A xuất hiện trong buổi phỏng vấn kỹ thuật dành cho nhà phát triển phần mềm hệ thống là rất cao. Hầu hết các yêu cầu tuyển dụng nhà phát triển phần mềm hệ thống Linux tại Hàn Quốc (Fabless, phát triển nhúng) đều nêu rõ yêu cầu về kiến trúc Arm. Thời gian chuẩn bị phỏng vấn thường ngắn, trong khi việc phân tích tài liệu đặc tả Arm đồ sộ lại là một gánh nặng lớn. Thông qua bài giảng này, bạn có thể nắm bắt các khái niệm cốt lõi cấu thành nên kiến trúc Armv7-A trong thời gian ngắn.

2⃣ Tổng hợp những nội dung nhất định phải biết trong phát triển thực tế

Khi thực hiện các dự án thực tế, bạn cần phải hiểu rõ về kiến trúc Arm. Nếu không biết về kiến trúc Arm, bạn sẽ gặp khó khăn trong việc triển khai phát triển khi thực hiện bring-up hoặc debugging.

Các tính năng cấu thành nên kiến trúc Armv7-A rất đồ sộ. Tài liệu tham khảo liên quan dài hơn 1000 trang, và rất khó để biết nội dung nào thực sự được ứng dụng trong các dự án thực tế. Chúng tôi đã tổng hợp kỹ lưỡng các tính năng thực tiễn của kiến trúc Armv7-A mà một nhà phát triển mới bắt đầu nhất định phải biết.

3⃣ Giới thiệu các nghiên cứu điển hình đa dạng

Khóa học giải thích các nội dung cốt lõi của kiến trúc Arm, đồng thời đề cập đến cách thức tiến hành công việc phát triển trong các dự án thực tế. Ngoài ra, khóa học cũng giải thích nhiều trường hợp nghiên cứu điển hình (các vấn đề trong dự án thực tế) về việc những nội dung đã học được ứng dụng vào các dự án thực tế như thế nào. Bên cạnh đó, khóa học còn đề cập đến nhân Linux (Linux kernel) hoặc bộ nạp khởi động (bootloader), nơi các chức năng chính của kiến trúc Arm được triển khai.


Nếu nắm vững nội dung bài giảng này, bạn có thể phát triển thành một nhà phát triển phần mềm hệ thống cao cấp.

Chúc bạn nâng tầm sự nghiệp với mức lương và vị trí cao hơn.

Bạn sẽ học được những nội dung sau 📕

Giới thiệu về bộ vi xử lý Arm thông qua việc giải thích quá trình phát triển bán dẫn hệ thống. Ngoài ra, nội dung cũng giới thiệu về các chức năng cơ bản cấu thành nên kiến trúc Armv7-A.

Giải thích cấu trúc của thanh ghi và trình bày một cách cụ thể, dễ hiểu về cách các thanh ghi được cấu tạo trong kiến trúc Armv7-A.

Trong số các thanh ghi cấu thành nên kiến trúc Armv7-A, chúng ta sẽ đi sâu vào các thanh ghi cốt lõi là CPSR và SPSRs. Các trường (field) cấu thành nên từng thanh ghi sẽ được giải thích một cách cụ thể và dễ hiểu.

Giải thích cấu trúc cơ bản của các thanh ghi đa năng một cách dễ hiểu thông qua việc thực hành với chương trình TRACE32.

Giải thích cụ thể mối quan hệ giữa giá trị của thanh ghi CPSR và chế độ bộ vi xử lý thông qua việc gỡ lỗi bằng TRACE32.

Giải thích lý do tại sao cần phải hiểu rõ ngôn ngữ hợp ngữ (assembly) cùng với nhiều ví dụ đa dạng (bootloader). Ngoài ra, cũng giải thích cách ngôn ngữ hợp ngữ được ứng dụng như thế nào trong các dự án thực tế.

Phân tích định dạng cơ bản của các câu lệnh hợp ngữ (assembly) được định nghĩa trong kiến trúc Armv7-A và các đoạn mã lệnh ví dụ.

Phân tích chi tiết các lệnh hợp ngữ theo nhiều cách khác nhau và giải thích cách thức hoạt động của từng lệnh hợp ngữ một cách dễ hiểu.

Giải thích chi tiết cách thức hoạt động của các lệnh hợp ngữ thông qua việc trực tiếp gỡ lỗi bằng chương trình TRACE32.

Giới thiệu về chế độ xử lý (Processor Mode), một trong những nội dung cốt lõi nhất của kiến trúc Armv7-A. Giải thích cụ thể và dễ hiểu về khái niệm Cấp độ đặc quyền (Privilege Level) liên quan đến các chế độ xử lý.

Giải thích đặc điểm của từng chế độ xử lý (processor mode) được hỗ trợ trong Armv7-A và đề cập đến chế độ User (User mode). Giải thích cụ thể những phần mềm nào thực sự chạy trong chế độ User.

Giải thích chi tiết về chế độ Supervisor, nơi RTOS hoặc nhân Linux thực thi. Giải thích cụ thể cách Supervisor được sử dụng trong các dự án thực tế.

Giải thích nguyên lý hoạt động cơ bản của Exception và xem xét bảng vector exception (exception vector table) được định nghĩa trong Armv7-A.

Giải thích chi tiết theo từng bước về phương thức xử lý Exception được thực hiện trong Armv7-A.

Phân tích chi tiết cách thức các exception thực tế được xử lý về mặt phần mềm. Giải thích chi tiết các lệnh assembly liên quan và bảng vector exception (exception vector table).

Giải thích dưới góc độ phần mềm về cách xử lý ngoại lệ ngắt IRQ trong cấu trúc Armv7-A.

Thông qua thực hành gỡ lỗi với chương trình TRACE32, tôi sẽ giải thích một cách dễ hiểu về cách thức kích hoạt exception khi thực thi lệnh SVC.

Giải thích cụ thể nguyên lý hoạt động của exception thông qua việc thực hành trực tiếp exception Undefined Instruction bằng chương trình TRACE32.

Giới thiệu lý do tại sao cần phải học AAPCS (Arm Procedure Call Standard), một quy ước để rẽ nhánh sang các chương trình con như hàm. Ngoài ra, tài liệu cũng giải thích các nguyên lý hoạt động cơ bản một cách dễ hiểu.

Giới thiệu các thanh ghi liên quan đến AAPCS. Giải thích các đối số truyền vào hàm và giá trị trả về được lưu trữ bằng những thanh ghi nào.

Thông qua việc thực hành trực tiếp các lệnh BL, B, BLX bằng chương trình TRACE32, tôi sẽ giải thích nguyên lý hoạt động của AAPCS một cách dễ hiểu.

Giải thích một cách dễ hiểu về các khái niệm cốt lõi của TrustZone (Thế giới không bảo mật, Thế giới bảo mật) và luồng thực thi.

Giải thích chi tiết cách thức hoạt động của lệnh SMC, vốn là cốt lõi của TrustZone.

Giải thích một cách dễ hiểu về khái niệm cơ bản của mô hình bộ nhớ và bộ nhớ bình thường (Normal Memory) là gì.


Giải thích chi tiết về khái niệm Memory Reordering và các rào cản bộ nhớ (Memory Barrier) được cung cấp trong Armv7-A.

Giải thích các yếu tố cấu thành hệ thống bộ nhớ ảo và luồng thực thi xử lý địa chỉ ảo.

Dựa trên kinh nghiệm viết sách và giảng dạy,
tôi sẽ giải thích 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ả duy nhất và chưa từng có tiền lệ đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel'. Ngoài ra, tôi còn là một nhà phát triển đang làm việc thực tế, nắm bắt 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), đồng thời 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ả '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' (Năm 2024, 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)

  • Tác giả cuốn 'Cấu trúc và nguyên lý của Linux Kernel học qua Debugging' (Năm 2021, 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)

  • Giảng viên chính (khóa 1~2) của 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'


  • Giảng viên nội bộ về 'Linux Kernel' và 'Armv8 Architecture' tại LG Electronics (bao gồm 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 các tính năng chính của kiến trúc Armv7-A tốt hơn bất kỳ ai khác tại Hàn Quốc.

Những đánh giá chân thực từ người học

<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 - Phần 1/2 Bài giảng trực tiếp từ tác giả>

Lưu ý trước khi học

Kiến thức tiên quyết và lưu ý

  • Khóa học lần này là khóa học mà bạn có thể dễ dàng theo kịp ngay cả khi không có kiến thức tiên quyết.

  • Nếu bạn đã có kiến thức về cấu trúc hệ điều hành hoặc máy tính thì sẽ giúp ích cho việc hiểu bài giảng.

  • Trong bài giảng, tôi giả định rằng bạn đã biết các cú pháp cơ bản của ngôn ngữ C để giới thiệu và giải thích các mã ví dụ.

  • Chương trình TRACE32 được sử dụng trong bài giảng này (thực hành gỡ lỗi) không được cung cấp.

    Để tải xuống chương trình thực hành đào tạo TRACE32 và thực hiện gỡ lỗi chi tiết các lệnh assembly, vui lòng tham khảo khóa học do chính tác giả giảng dạy: "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 - Phần 1/Phần 2" đã được phát hành.

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í).

  • 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

  • Các 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 tận dụng các tính năng của kiến trúc Arm để thực hiện debug trong thực tế.

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

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

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

  • Bộ vi xử lý

  • CPU

  • Nhúng

  • Ngôn ngữ C

  • Hệ điều hành

  • Cấu trúc máy tính

Xin chào
Đây là austinkim

6,316

Học viên

241

Đá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ả

75 bài giảng ∙ (9giờ 17phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

1 đánh giá

5.0

1 đánh giá

  • heecheolsong님의 프로필 이미지
    heecheolsong

    Đánh giá 21

    Đá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!

    1.161.013 ₫