Khóa Học Lập trình bộ xử lý ARM Cortex-M
Hoàn Thành Khóa Học, Sẵn Sàng Chinh Phục Mọi Thử Thách Phỏng Vấn Từ Các Doanh Nghiệp!
Khóa Học Lập trình bộ xử lý ARM Cortex-M
Vai trò quan trọng của ngôn ngữ Assembly
Ngôn ngữ Assembly đóng vai trò quan trọng trong việc lập trình các hệ thống nhúng, đặc biệt là khi cần tối ưu hóa hiệu suất và kiểm soát tài nguyên hệ thống ở mức thấp. Với Assembly, lập trình viên có thể trực tiếp điều khiển phần cứng, tối ưu hóa mã và giảm thiểu độ trễ, điều này cực kỳ quan trọng trong các ứng dụng yêu cầu tốc độ xử lý nhanh.
Nguyên lý hoạt động của đường ống
Đường ống (pipeline) trong bộ xử lý ARM Cortex-M cho phép các lệnh được xử lý song song, giảm thiểu thời gian chờ đợi giữa các chu kỳ xử lý. Điều này giúp tăng hiệu suất của bộ xử lý, đặc biệt là trong các ứng dụng đòi hỏi tính toán liên tục.
Bộ lắp ráp trực tuyến
Bộ lắp ráp trực tuyến giúp biên dịch mã Assembly thành mã máy mà bộ vi xử lý có thể thực thi ngay lập tức. Điều này cho phép lập trình viên thử nghiệm mã nhanh chóng và tối ưu hóa các phần mềm nhúng cho các hệ thống có yêu cầu khắt khe về tài nguyên.
Tập lệnh liên kết
Tập lệnh liên kết (linker scripts) được sử dụng trong quá trình biên dịch để kết nối mã nguồn với các thư viện và tài nguyên hệ thống. Chúng định nghĩa cách thức các thành phần của chương trình sẽ được lưu trữ trong bộ nhớ của hệ thống nhúng.
Nguyên lý hoạt động của thiết bị NVIC
NVIC (Nested Vectored Interrupt Controller) là một thành phần quan trọng trong bộ vi xử lý ARM Cortex-M. NVIC cung cấp khả năng xử lý ngắt nhanh chóng và hiệu quả. Nó cho phép các ngắt được phân cấp, giúp giảm thiểu độ trễ và cải thiện khả năng phản hồi của hệ thống. NVIC hỗ trợ “tail chaining” và “late arriving interrupts”, hai tính năng quan trọng để tối ưu hóa thời gian xử lý ngắt.
Phân tích đầy đủ các thủ tục xử lý ngoại lệ từ đầu đến cuối
Bộ vi xử lý ARM Cortex-M có khả năng xử lý ngoại lệ rất mạnh mẽ. Các thủ tục xử lý ngoại lệ (Exception Handlers) được thực thi khi hệ thống gặp phải các tình huống bất thường, như ngắt hoặc lỗi phần cứng. Việc phân tích các thủ tục này giúp hiểu rõ cách mà hệ thống phản hồi với các sự kiện ngoại lệ và tối ưu hóa chúng để đạt hiệu suất cao nhất.
Bộ điều khiển đồng hồ
Bộ điều khiển đồng hồ (Clock Controller) trong ARM Cortex-M quản lý thời gian và tần số hoạt động của bộ vi xử lý và các thành phần hệ thống. Điều này giúp tiết kiệm năng lượng và tối ưu hóa hiệu suất của hệ thống nhúng trong các ứng dụng yêu cầu tiết kiệm điện năng.
Phân tích mã khởi động
Mã khởi động (Boot Code) trong ARM Cortex-M là mã đầu tiên được thực thi khi bộ vi xử lý được bật. Mã này có nhiệm vụ cấu hình các thành phần phần cứng và khởi tạo hệ thống trước khi chuyển giao điều khiển cho ứng dụng chính. Phân tích mã khởi động giúp tối ưu hóa quá trình khởi động và đảm bảo hệ thống hoạt động ổn định ngay từ khi bật nguồn.
Bộ xử lý ARM Cortex-M trong một bài giảng
Trong bài giảng này, bạn sẽ được kiểm tra mọi khía cạnh của ARM Cortex-M, từ các khái niệm cơ bản đến các bí quyết thực tế giúp phát triển ứng dụng nhúng hiệu quả.
Chủ đề khóa học 📖

ARM Cortex-M
ARM Cortex-M là bộ vi xử lý 32 bit phổ biến nhất cho các hệ thống nhúng. Các dòng vi xử lý tiêu biểu bao gồm CORTEX-M3, CORTEX-M4, CORTEX-M0 và CORTEX-M33. Với mức tiêu thụ điện năng thấp và giá cả cạnh tranh, ARM Cortex-M được sử dụng trong nhiều sản phẩm trong các lĩnh vực như:
- Máy bay không người lái
- Nhà máy thông minh
- Xe tự hành
- Hàng không vũ trụ
- Thiết bị chẩn đoán y tế
- Thiết bị gia dụng
- Internet Vạn Vật (IoT)
- Năng lượng môi trường

ARM Cortex-M phù hợp với các ứng dụng yêu cầu chi phí thấp và hiệu quả sử dụng điện năng. Bộ vi xử lý này có số lượng cổng ít, độ trễ ngắt thấp và khả năng gỡ lỗi cao. Hỗ trợ lệnh THUMB2 làm bộ lệnh cơ bản, cho phép mã hóa hiệu quả và tiết kiệm bộ nhớ. NVIC được tích hợp chặt chẽ với lõi bộ xử lý, cung cấp khả năng xử lý ngắt với độ trễ thấp. Hỗ trợ các tính năng như “tail chaining” và “late arriving interrupts” để tối ưu hóa thời gian phản hồi ngắt và giúp cải thiện hiệu suất hệ thống.
Nhà phát triển: Thời kỳ hoàng kim của các kỹ sư phần mềm
Tôi không nghĩ có thời điểm nào trong vài thập kỷ qua mà các nhà phát triển lại được coi trọng như hiện tại. Khi bạn hỏi những người trẻ rằng họ muốn trở thành người như thế nào khi lớn lên, bạn có thể nghe những câu trả lời như bác sĩ, công tố viên hoặc thậm chí là “nhà phát triển”.
Khi các nhà phát triển trở nên có giá trị hơn và mức lương của họ tăng lên, khoa học máy tính và kỹ thuật điện tử được xếp hạng cao trong bảng xếp hạng phổ biến của các trường đại học. Giống như tiêu đề bộ phim “It Can’t Get Any Better”, có vẻ như mọi người sẽ đến El Dorado trong tìm kiếm vàng ở miền Tây nước Mỹ vào thế kỷ 19. Các ngành nghề này chồng chéo lên nhau. Có thể coi đây là thời kỳ hoàng kim của các nhà phát triển.
Nhà phát triển có kỹ năng giải quyết vấn đề
Bình luận này xuất phát từ một công ty trong nước M vào năm 2016, thậm chí còn được đưa tin trên báo và lan truyền trong một thời gian. Và, thậm chí nếu điều này chưa xảy ra thì đây cũng là từ mà mọi người đều đã từng nghe ít nhất một lần trong đời. Nhưng còn những nhà phát triển có kỹ năng giải quyết vấn đề thì sao? Tại sao đây lại là vấn đề?
Theo tôi hiểu, ý nghĩa của câu này nói một cách đơn giản là như thế này. Để tôi cho bạn một ví dụ. Mã này rõ ràng là của tôi. Chắc chắn là có lỗi trong chương trình này. Tôi cũng biết điều đó. Nhưng điều này không giải quyết được vấn đề. Quá trình này có thể ngắn chỉ vài giờ, dài nhất là vài ngày, hoặc dài nhất là vài tháng.
Viết mã là việc mà bất kỳ ai cũng có thể làm được chỉ cần một chút kiến thức. Nhưng giải quyết vấn đề lại là một trò chơi khác.
Nhà phát triển hệ thống nhúng
Việc tạo ra phần mềm hoạt động trên các hệ thống nhúng đã khó, nhưng việc giải quyết các vấn đề hiếm gặp và khó khăn còn khó hơn. Bởi vì, tùy từng trường hợp, việc thu hẹp phạm vi vấn đề xuống chỉ còn phần mềm có thể không giải quyết được vấn đề. Cần phải xem xét rằng các thành phần của hệ thống nhúng bao gồm “phần cứng + phần mềm”.
Ngay cả bây giờ, nhiều loại silicone mới vẫn liên tục được tung ra thị trường thế giới mỗi năm. Ngoài ra, còn có nhiều loại phần cứng khác được tạo ra sử dụng những con chip này. Chúng ta có thực sự tin rằng tất cả những điều này đều hoàn hảo về mặt phần cứng không?
Khi khắc phục sự cố, khả năng xảy ra lỗi phần cứng cũng phải được xem xét. Khi một vấn đề không dễ giải quyết, các nhà phát triển phần mềm cần cân nhắc xem đó là vấn đề về phần cứng hay phần mềm.
Nhưng vấn đề là đây là điều cần phải được đào tạo thường xuyên. Việc tuyên bố “đó là vấn đề về phần cứng” hoặc “đó là vấn đề về phần mềm” mà không có cơ sở nào có lẽ sẽ không thuyết phục được bất kỳ ai.
Sự thay đổi mô hình: Cần hiểu phần cứng
Kết luận đã được đưa ra rồi. Bạn phải cố gắng hiểu phần cứng. Hiểu biết về phần cứng không nhất thiết có nghĩa là hàn các linh kiện điện tử vào bảng mạch in. Điều này không có nghĩa là bạn có thể kiểm soát hoàn toàn đèn LED hoặc phím bấm.
Thay vào đó, bạn nên nghiên cứu trình biên dịch và hiểu các nguyên tắc cơ bản về cách thức hoạt động của hệ thống nhúng. Hai từ khóa mà tôi tin tưởng và hiểu rõ khi phát triển phần mềm nhúng là trình biên dịch và ngắt.
Assembler có nhiệm vụ hiểu phần cứng, còn ngắt là cơ chế phần mềm chạy không đồng bộ, khiến chúng có khả năng làm giảm tính ổn định của hệ thống. Do đó, để tạo ra phần mềm có độ tin cậy cao, bạn phải học thật tốt.
Tại sao phải lắp ráp?
Có nhiều quan điểm khác nhau về ngôn ngữ lắp ráp giữa các nhà phát triển. Đầu tiên, hãy đọc bài đăng này từ một diễn đàn cộng đồng nhà phát triển trong nước nổi tiếng.
Trình biên dịch hiện đại thông minh hơn nhiều so với trước đây. Nó tạo ra mã được tối ưu hóa tốt. Việc mã hóa bằng trình biên dịch để cải thiện hiệu suất hệ thống đã là chuyện của quá khứ. Vậy thì tại sao tôi lại nhấn mạnh nhiều đến trình biên dịch?
Lý do chúng ta học trình biên dịch là để hiểu rõ hơn cách thức hoạt động của các hệ thống nhúng. Assembler giúp các nhà phát triển nhìn thấy hoạt động bên trong của các hệ thống nhúng.
Giống như câu nói “Đừng nhìn cây, hãy nhìn rừng”, bất kể bạn học ngành gì, bạn cũng nên liên tục cố gắng hiểu cấu trúc (hệ thống) của môn học mà bạn đang học. Chúng ta cần phải suy nghĩ lại về hệ thống nhúng như là “phần cứng + phần mềm”.
Nếu bạn đã phát triển trong hơn hai năm và không thấy bất kỳ cải thiện đáng kể nào trong kỹ năng phát triển hệ thống nhúng của mình, đã đến lúc bạn cần thay đổi căn bản phương pháp học tập.
Có câu nói rằng nếu bạn đầu tư 10.000 giờ vào bất kỳ lĩnh vực nào, bạn sẽ trở thành chuyên gia trong lĩnh vực đó. Tôi đồng ý với bạn, nhưng tôi muốn thay đổi câu này một chút. Giống như thế này: “Nếu bạn đầu tư 10.000 giờ vào bất kỳ lĩnh vực nào một cách hiệu quả, bạn sẽ trở thành chuyên gia trong lĩnh vực đó”.
Lợi ích của việc học assembler
Ngoài những lợi ích đã nêu ở trên, việc học lập trình assembler còn có một số lợi ích bổ sung khác.
- Kiểm soát mã phần mềm hoàn toàn: Bất kỳ phần mềm nào cũng bao gồm 1-5% mã lắp ráp (nếu bạn học về trình biên dịch, bạn sẽ hiểu tại sao). Hiểu được mã lệnh lắp ráp cơ bản giúp bạn kiểm soát 100% phần mềm.
- Hiểu mã khởi động: Việc học assembler tạo nền tảng để hiểu mã khởi động (không phải bộ nạp khởi động) được viết bằng trình biên dịch và có khả năng tự mình mã hóa mã đó.
- Mở rộng khả năng gỡ lỗi: Khả năng sử dụng công cụ gỡ lỗi (khắc phục sự cố) được mở rộng và đào sâu hơn, giúp bạn giải quyết các vấn đề khó khăn hơn trong phần mềm.
- Cải thiện chất lượng phần mềm: Bạn có thể cải thiện chất lượng phần mềm để nâng cao hiệu suất hệ thống và sử dụng bộ nhớ một cách hiệu quả.
- Chuyển đổi phần mềm giữa phần cứng khác nhau: Việc tạo ra phần mềm chạy trên phần cứng này có thể chạy trên phần cứng khác được gọi là chuyển đổi. Trong trường hợp này, khả năng sử dụng trình biên dịch là điều cần thiết.
- Hiểu con trỏ trong ngôn ngữ C: Bạn có thể dễ dàng hiểu được con trỏ trong ngôn ngữ C. Khái niệm địa chỉ rất cần thiết khi điều khiển bộ nhớ hoặc thiết bị I/O trong ngôn ngữ lắp ráp.
Phần kết luận
Khóa đào tạo này (Lập trình bộ xử lý ARM Cortex-M) chắc chắn sẽ bao gồm cả hai nội dung này (trình biên dịch, ngắt).
Nếu bạn nghĩ mình không hứng thú với ngôn ngữ lập trình hợp ngữ, vui lòng bỏ qua bài giảng này. Tôi chỉ muốn đi với những người hiểu được giá trị thực sự.
Trong khóa đào tạo bộ xử lý ARM ngoại tuyến, tôi đã nhấn mạnh điều này với học viên của mình như một niềm tin cá nhân. Thông qua khóa học này, tôi hy vọng có thể cung cấp cho bạn góc nhìn khác về hệ thống nhúng.
Bạn sẽ học được gì 📚
- Có thể sử dụng quyền truy cập không căn chỉnh được không?
- Tầm quan trọng của Assembler
- Đường ống hoạt động như thế nào
- Trình lắp ráp nội tuyến
- Tập lệnh liên kết
- Nguyên lý hoạt động của thiết bị NVIC
- Phân tích đầy đủ các thủ tục xử lý ngoại lệ từ đầu đến cuối
- Bộ điều khiển đồng hồ
- Tái tạo chuỗi đuôi và làm tổ ngắt quãng trong thực tế
- Phân tích mã khởi động
Tất cả những nội dung trên là chủ đề cốt lõi của bài giảng này. Được rồi, chúng ta hãy đi vào chi tiết.
Đầu tiên, có được phép sử dụng quyền truy cập không căn chỉnh không?
Không giống như các bộ xử lý ARM trước đây không cho phép truy cập không liên kết, bộ xử lý CORTEX-M hỗ trợ truy cập không liên kết theo mặc định. Cân nhắc ưu và nhược điểm của việc sử dụng quyền truy cập không liên kết.

Thứ hai, tầm quan trọng của trình biên dịch
Khi phát triển phần mềm nhúng, người ta dễ cho rằng sẽ không có vấn đề gì về phần cứng, nhưng khi phát triển phần mềm, bất kỳ ai cũng có thể rơi vào những cái bẫy bất ngờ bất cứ lúc nào. Việc tìm kiếm và giải quyết những vấn đề như thế này đòi hỏi phải có trình độ hiểu biết nhất định về phần cứng. Mỗi thiết bị phần cứng riêng lẻ, bao gồm cả bộ nhớ, đều có đặc điểm vận hành riêng và việc hiểu chúng là điều quan trọng. Việc đầu tiên dễ dàng bạn có thể làm để tăng hiểu biết về phần cứng là học trình biên dịch. Tôi muốn nhắc lại rằng việc trải nghiệm gián tiếp phần cứng thông qua ngôn ngữ lắp ráp là điểm khởi đầu để các kỹ sư phần mềm hiểu được phần cứng.

Thứ ba, nguyên lý hoạt động của đường ống
Bộ xử lý theo đường ống hiệu quả hơn bộ xử lý không theo đường ống. Thật khó để tưởng tượng một bộ xử lý ARM không sử dụng công nghệ đường ống. Nghiên cứu nguyên lý hoạt động của đường ống và ý nghĩa của nó đối với bộ xử lý CORTEX-M.

Thứ tư, trình biên dịch nội tuyến
Lắp ráp trực tuyến có nghĩa là gì? Nói một cách đơn giản, điều này có nghĩa là viết mã lệnh dưới dạng hàm C. Hình thức bên ngoài của lệnh lắp ráp nội tuyến giống như một hàm ngôn ngữ C, nhưng nội dung thực tế của nó là một lệnh lắp ráp. Hướng dẫn lắp ráp cũng liên kết chặt chẽ với các biến cục bộ trong các hàm C. Trong trường hợp các lệnh MSR và MRS không thể thay thế bằng ngôn ngữ C, giá trị của trình biên dịch nội tuyến sẽ phát huy khi được triển khai và sử dụng trong trình biên dịch nội tuyến.

Thứ năm, tập lệnh liên kết
Trình biên dịch STM32CubeIDE tự động tạo ra nhiều nguồn và nhiều tệp khác nhau, bao gồm các tệp makefile cần thiết cho quá trình biên dịch, thông qua một quy trình tự động. Một tệp được gọi là tập lệnh liên kết cũng là một trong những tệp được tạo tự động và trình liên kết luôn tham chiếu đến tệp này để tạo tệp thực thi cuối cùng theo mong muốn của người dùng. Tìm hiểu về vai trò của trình liên kết và cú pháp tập lệnh trình liên kết.

Thứ sáu, nguyên lý hoạt động của thiết bị NVIC
Không giống như bộ xử lý ARM7, ARM9 và ARM11, bộ xử lý CORTEX-M được thiết kế để có kết nối chặt chẽ hơn bằng cách đưa NVIC, một thiết bị điều khiển ngắt, vào bên trong bộ xử lý CORTEX-M. Hiểu được cách NVIC hoạt động cũng là điểm khởi đầu để hiểu về ngắt, đóng vai trò quan trọng trong các hệ thống nhúng.

Thứ bảy, phân tích đầy đủ các thủ tục xử lý ngoại lệ từ đầu đến cuối
Quá trình cho đến khi trình xử lý ngoại lệ được thực thi khi xảy ra ngoại lệ, bao gồm cả ngắt phần cứng. Mô tả toàn bộ quá trình từ khi thực thi mã xử lý ngoại lệ đến khôi phục mã chương trình ngay trước khi ngoại lệ xảy ra.

Thứ tám, bộ điều khiển đồng hồ
Tìm hiểu nguyên lý hoạt động của hệ thống đồng hồ, cung cấp đồng hồ cho nhiều thiết bị phần cứng giao tiếp với AHB và APB, bao gồm lõi CORTEX-M, bên trong bộ xử lý STM32 CORTEX và thay đổi tần số đồng hồ hệ thống trực tiếp thông qua khóa học thực hành để kiểm soát đồng hồ. Tăng cường sự tự tin của bạn vào bản thân.

Thứ chín, tái tạo chuỗi đuôi và làm gián đoạn quá trình làm tổ
Bộ xử lý CORTEX-M hỗ trợ công nghệ ‘chuỗi đuôi’ để cải thiện hiệu quả xử lý ngoại lệ. Tìm hiểu cách thức hoạt động của công nghệ này và xem nó có thể giúp cải thiện khả năng phản hồi khi bị ngắt như thế nào. Chúng ta cũng sẽ xem xét lồng nhau ngắt.

Thứ mười, phân tích mã khởi động
Cố gắng hiểu mã khởi động của một số phần mềm cũng có thể giúp ích rất nhiều trong việc hiểu cấu trúc tổng thể của phần mềm hệ thống nhúng. Bằng cách diễn giải ý nghĩa chứa trong mã khởi động thay vì chỉ sử dụng nó, chúng ta có thể đưa ra hướng phát triển phần mềm tiên tiến hơn. Tất nhiên, điều này cũng đòi hỏi kiến thức tiên quyết quan trọng cho các tác vụ như chuyển bộ nạp khởi động hoặc RTOS.

Bài giảng về bộ xử lý ARM với hơn 14 năm kinh nghiệm 💡
Tôi tạo ra khóa học này với thời gian quý báu của bạn cũng như của tôi.
Dựa trên kinh nghiệm giảng dạy bộ xử lý ARM tại chỗ cho hơn 1.000 sinh viên trong hơn 14 năm, tôi quyết định tạo khóa học trực tuyến này để gặp gỡ nhiều sinh viên hơn. Chúng tôi sẽ cung cấp cho bạn bài giảng trực tuyến giúp tối ưu hóa nội dung của 5 ngày giảng dạy tại chỗ thành 15 giờ.
Tôi giới thiệu điều này tới những người này! 🔑
Khóa học dành cho ai?
- Hệ thống nhúng
- Người mới bắt đầu
- Đã sử dụng CORTEX-M nhưng muốn hiểu sâu hơn
- Tổ chức có hệ thống
- Bất cứ ai cần hiểu về phần mềm nhúng
- Nhà phát triển phần cứng
- Những người muốn chuyển RTOS thành công và vận hành hệ thống
- Kiến thức về máy vi tính
Bên cạnh đó, sẽ rất tốt nếu những người như thế này cũng được học!
- Dành cho những ai muốn phát triển sản phẩm có độ ổn định và độ tin cậy cao của hệ thống
- Dành cho những ai muốn học ngôn ngữ lắp ráp ARM
- Những người cần học inline assembly, linker script và boot code
- Dành cho những bạn không có thời gian tham gia lớp học offline
📢 Kiểm tra kiến thức của bạn!
Trước khi tham gia khóa học, bạn nên có kiến thức cơ bản về ngôn ngữ C như là kiến thức tiên quyết.
Khóa học này có gì đặc biệt ✨
- Tính năng 1: Video được chia thành khoảng 110 chương nhỏ, giúp bạn dễ tìm kiếm và tiếp cận lại các phần sau này.
- Tính năng 2: Hoạt hình 2D được sử dụng tích cực để hỗ trợ việc hiểu biết, giúp bạn dễ dàng tiếp thu nội dung.
- Tính năng 3: Chúng tôi tạo điều kiện cho sinh viên có được trải nghiệm tương tự như khi tham gia buổi đào tạo thực tế trực tiếp tại chỗ.
- Tính năng 4: Giúp bạn mạnh dạn loại bỏ nội dung không cần thiết và tập trung hơn vào nội dung cốt lõi.
- Tính năng 5: Chúng tôi đã nỗ lực hết sức để đảm bảo rằng bạn có thể học thông qua video mà không cần phải xem hướng dẫn dành cho nhà phát triển như sổ dữ liệu.

Hãy xem các công cụ chúng tôi sử dụng 🧰
Trình biên dịch: STM32CubeIDE
Bảng thực hành: Bảng chính thức STmicro STM32F429I-DISC1

Các ví dụ thực tế và tệp sách giáo khoa: CMPro_tutorials.zip (nằm trong s102_Practical Environment Construction Getting Started with STM32CubeIDE )
Bo mạch được sử dụng trong bài giảng là STM32F429I-DISC1.
- 7 Phần
- 111 Bài Học
- Không Giới Hạn Thời Gian
- Phần 1. Giới thiệu Bộ xử lý CORTEX-M2
- Phần 2. Kiến trúc bộ xử lý CORTEX-M16
- 2.13. Đặc điểm của bộ xử lý s201_CORTEX-M4
- 2.24. s202_Thử nhấp nháy LED
- 2.35. Giới thiệu bo mạch Discovery s203_STM32F429I
- 2.46. Cấu trúc bộ xử lý s204_STM32F42x
- 2.57. s205_THUMB2 lệnh
- 2.68. s206_ Thanh ghi bộ xử lý và Bộ nhớ ngăn xếp
- 2.79. s207_Chế độ Handler và chế độ Thread
- 2.810. s208_thanh ghi bộ đếm chương trình
- 2.911. s209_Pipeline và Bộ nhớ flash
- 2.1012. Thanh ghi s210_LR và lời gọi hàm
- 2.1113. s211_AAPCS
- 2.1214. s212_Kiểu dữ liệu và lệnh ADD
- 2.1315. s213_Cấu trúc cơ bản thanh ghi
- 2.1416. s214_xPSR register
- 2.1517. s215_thanh ghi đặc biệt
- 2.1618. s216_Big-endian và Little-endian
- Phần 3. Lập trình Assembly37
- 3.119. s301_CORTEX-M Lệnh
- 3.220. s302_Lệnh so sánh và rẽ nhánh
- 3.321. s303_MÃ ĐIỀU KIỆN
- 3.422. s304_IT lệnh
- 3.523. s305_Shifter và lệnh thao tác bit
- 3.624. s306_Tạo vòng lặp
- 3.725. s307_Lệnh load store đa dạng
- 3.826. s308_Sao chép bộ nhớ (LDR, STR) ví dụ
- 3.927. s309_Lý do cần biết ngôn ngữ Assembly
- 3.1028. s310 Lệnh PUSH POP và Ngữ cảnh
- 3.1129. s311_ Lý do lưu trữ địa chỉ trả về của hàm trên stack
- 3.1230. s312_Lệnh truyền khối
- 3.1331. s313_Ví dụ sao chép bộ nhớ (LDM, STM)
- 3.1432. s314_Hiểu về phần cứng
- 3.1533. Lệnh s315_CBZ và vòng lặp
- 3.1634. s316_Lệnh hoán đổi byte hữu ích
- 3.1735. Lệnh s317_REV
- 3.1836. Lệnh s318_CLZ
- 3.1937. s319_Nhược điểm của bộ xử lý RISC (liên quan Nhánh)
- 3.2038. s320_ nhãn cục bộ và nhãn toàn cục
- 3.2139. s321 Lệnh xử lý dữ liệu
- 3.2240. s322_ADR và nhãn
- 3.2341. s323_Lệnh thao tác bit
- 3.2442. s324_lệnh so sánh
- 3.2543. s325_BRANCH lệnh
- 3.2644. s326_lệnh dịch bit
- 3.2745. s327_lệnh nhân
- 3.2846. s328_Lệnh toán tử bão hòa
- 3.2947. s329_PACK, UNPACK
- 3.3048. s330_lệnh chia
- 3.3149. s331_Lệnh tính toán song song
- 3.3250. s332_Các lệnh xử lý dữ liệu đa dạng
- 3.3351. s333_lệnh đặc biệt
- 3.3452. s334_LDR, STR lệnh
- 3.3553. Cách phân giải địa chỉ lệnh s335_LDR
- 3.3654. s336_Lợi và hại của truy cập không căn chỉnh
- 3.3755. s337_Hợp ngữ nội tuyến
- Phần 4. Bản đồ bộ nhớ4
- Phần 5. Xử lý ngoại lệ và ngắt phần cứng37
- 5.160. s501_Nút nhấn dựa trên ngắt
- 5.261. s502_NVIC
- 5.362. s503_bảng vector ngoại lệ
- 5.463. s504_Mặt nạ ngắt
- 5.564. s505_ngắt đang chờ
- 5.665. s506_EXTI và ngắt ngoài
- 5.766. s507_Ngắt kích hoạt bằng phần mềm
- 5.867. s508_Ngắt mức vs Ngắt xung
- 5.968. s509_độ trễ ngắt
- 5.1069. Các ngoại lệ đa dạng của s510_CORTEX
- 5.1170. s511_bộ xử lý ngoại lệ
- 5.1271. Bật/tắt s512_exception
- 5.1372. s513_SYSTICK TIMER
- 5.1473. s514_Đặt lại phần mềm
- 5.1574. s515_Bộ nhớ REMAP
- 5.1675. Chân s516_BOOT và hoạt động khởi động
- 5.1776. s517_Tái bố trí bảng véc-tơ
- 5.1877. s518_ Ưu tiên chiếm quyền và ưu tiên phụ
- 5.1978. s519_ngoại lệ và độ ưu tiên
- 5.2079. Phân tích ngắt SYSTICK s520
- 5.2180. s521_ khối điều khiển hệ thống SCB
- 5.2281. Phân tích trường hợp ngoại lệ s522
- 5.2382. s523_chuỗi đuôi
- 5.2483. s524_ Ghép đuôi Phân tích trường hợp (feat. Nút bấm)
- 5.2584. s525_Đến muộn
- 5.2685. s526_ngắt chiếm quyền
- 5.2786. s527_Ngắt lồng nhau
- 5.2887. s528_ Phân tích trường hợp chồng lấn ngắt (feat. nút bấm)
- 5.2988. s530 Sử dụng printf trong phần mềm nhúng
- 5.3089. s531_Trả về ngoại lệ và Khung ngăn xếp
- 5.3190. s532_Phân tích trường hợp trả về ngoại lệ (feat. phím nút)
- 5.3291. Gọi hệ thống s533_SVC
- 5.3392. Triển khai thực tế cuộc gọi hệ thống s534_SVC
- 5.3493. Lưu ý chế độ s535_THUMB
- 5.3594. s536_Chế độ THUMB và các trường hợp lỗi I
- 5.3695. s537_THUMB chế độ và các trường hợp lỗi II
- 5.3796. s538_THUMB Chế độ và các trường hợp lỗi III
- Phần 6. Xung nhịp và reset6
- Phần 7. Phần mềm trên bộ xử lý CORTEX-M9
- 7.1103. s701_bit banding
- 7.2104. Nhiều phương pháp điều khiển s702_LED
- 7.3105. s703_Nguy cơ truy cập không nguyên tử GPIO_ODR
- 7.4106. s704_Tính cần thiết của truy cập nguyên tử GPIO_BSRR
- 7.5107. Tìm hiểu truy cập nguyên tử qua điều khiển s705_LED
- 7.6108. s706_Cấu trúc bộ nhớ logic của phần mềm
- 7.7109. Phân tích tệp script linker s707
- 7.8110. Chạy phần mềm s708 trên RAM
- 7.9111. s709_Phân tích quá trình khởi động của phần mềm nhúng

Tôi tốt nghiệp Đại học Inha, và đã tích lũy nhiều năm kinh nghiệm với tư cách là nhà phát triển phần mềm cho hệ thống nhúng. Đồng thời cũng hoạt động như một giảng viên chuyên môn về hệ thống nhúng và lập trình. Tôi hy vọng mọi người sẽ nhận được thật nhiều giá trị từ những kiến thức mà tôi truyền đạt
Hoàn Thành Khóa Học, Sẵn Sàng Chinh Phục Mọi Thử Thách Phỏng Vấn Từ Các Doanh Nghiệp!
Khóa học cung cấp kiến thức vững chắc về ARM Cortex-M, giúp tôi tự tin phát triển ứng dụng nhúng và tối ưu hóa hiệu suất hệ thống thực tế.
Khóa Học Tương Tự
-
Các Trình Độ
-
313 Sinh viên
-
149 bài học
-
Các Trình Độ
-
313 Sinh viên
-
149 bài học
-
Các Trình Độ
-
88 Sinh viên
-
206 bài học
-
Các Trình Độ
-
88 Sinh viên
-
206 bài học
Đăng Ký Nhận Khuyến Mãi
Liên Hệ
Điện Thoại?
Địa Chỉ
VN : Keangnam, Nam Tu Liem, Ha noi, Viet Nam