강의

멘토링

로드맵

Inflearn brand logo image
BEST
Hardware

/

Embedded IoT

Lập trình FreeRTOS

Bạn có nghĩ chỉ cần dùng RTOS là xử lý được thời gian thực? Hãy xem bài giảng này để kiểm chứng. Sẽ mang đến cái nhìn sâu sắc về interrupt, ưu tiên, loại trừ lẫn nhau, porting phức tạp.

(4.7) 65 đánh giá

823 học viên

  • guileschool
Operating System
FreeRTOS
Embedded

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

Dịch cái này sang tiếng Việt

  • Cách triển khai thời gian thực cứng

  • Cách vận hành ngắt ổn định và hiệu quả

  • Cách khắc phục suy giảm hiệu suất hệ thống do loại trừ tương hỗ thường xuyên

  • Cách đảm bảo xác định ưu tiên nhiệm vụ

  • Kiểm tra xem tác vụ tôi đã tạo có hoạt động theo thời gian thực không.

  • Cách porting

Tóm tắt FreeRTOS trong một bài giảng!
Kiểm tra mọi thứ từ khái niệm đến kiến thức thực tế.

Chủ đề bài giảng 📖

RTOS là gì?

Hệ điều hành thời gian thực?

RTOS là viết tắt của hệ điều hành thời gian thực .
Để bạn có thể hoàn thành công việc trong thời gian giới hạn.
Đây là hệ điều hành đã được tạo ra.

RTOS là một hệ điều hành được phát triển cho các ứng dụng thời gian thực. Nó được sử dụng trong các sản phẩm nhúng thuộc nhiều lĩnh vực khác nhau, bao gồm ô tô, thiết bị gia dụng, y tế, hàng không vũ trụ, quốc phòng, điều khiển công nghiệp và tự động hóa, cũng như trong các môi trường đòi hỏi hiệu suất và độ tin cậy cao .

Ngay cả các tác vụ đòi hỏi mức độ cao (Hard-Realtime) cũng có thể xử lý kết quả trong thời gian giới hạn thông qua hệ điều hành thời gian thực.

FreeRTOS là gì?

Vì được ứng dụng trong nhiều lĩnh vực, RTOS cũng có nhiều loại và hình thức cấp phép khác nhau. FreeRTOS là hệ điều hành thời gian thực (RTOS) tốt nhất cho vi điều khiển và vi xử lý cỡ nhỏ. Mã nguồn FreeRTOS được phân phối miễn phí, vì vậy bạn có thể tải xuống FreeRTOS và bắt đầu phát triển.

FreeRTOS thường được ghi vào bộ nhớ dưới dạng một hình ảnh duy nhất được biên dịch với tất cả các thành phần cần thiết cho một ứng dụng nhúng.
Bất kể sử dụng bộ vi xử lý nào, các nhà phát triển ứng dụng nhúng đều có thể sử dụng cùng một giao diện chuẩn hóa cho hạt nhân FreeRTOS và tất cả các thư viện phần mềm FreeRTOS.

Nhân FreeRTOS được thiết kế nhỏ gọn, đơn giản và dễ sử dụng. Kích thước ảnh nhị phân của nhân RTOS thông thường là 4-9K byte .

Các bo mạch vi điều khiển tương thích với FreeRTOS hiện có giá dưới 100 đô la .

Nhìn chung, các ứng dụng dựa trên FreeRTOS có ưu điểm là đơn giản hơn nhiều so với các hệ thống dựa trên Linux.

Nguồn: Nghiên cứu VDC (nhấp chuột)

Freeertos.org cung cấp một loạt hướng dẫn chi tiết về cách sử dụng hạt nhân FreeRTOS, bao gồm hướng dẫn bắt đầu nhanh (nhấp vào) . Bằng cách hỗ trợ ngắt không cần kích hoạt, vi điều khiển có thể duy trì trạng thái ngủ DEEP SLEEP cho đến khi xảy ra ngắt hoặc hạt nhân RTOS chuyển tác vụ sang trạng thái sẵn sàng.

Amazon đã triển khai một số thư viện phần mềm dựa trên nhân FreeRTOS, cho phép các thiết bị IoT kết nối an toàn với đám mây của mình. Khi Amazon FreeRTOS được triển khai trên các thiết bị IoT, chúng có thể kết nối an toàn với các dịch vụ đám mây như AWS IoT Core và được cập nhật từ xa bằng tính năng cập nhật OTA.


Bạn sẽ học được: 📚

Một sự thật hiển nhiên là FreeRTOS có một kernel miễn phí và dựa trên mã nguồn .
Vậy lợi ích thực sự của việc truy cập vào mã nguồn của hạt nhân là gì?

Việc kernel tôi sử dụng cung cấp mã nguồn đồng nghĩa với việc người dùng có thể xem nội dung của nó bất cứ khi nào họ muốn. Tuy nhiên, nếu mục tiêu cuối cùng của chúng ta là lái tốt một chiếc xe có tên RTOS, liệu việc dành nhiều thời gian và công sức hơn cho những việc như tuân thủ tín hiệu đèn giao thông, tuân thủ quy định an toàn khi qua đường, quan sát gương chiếu hậu và không tăng tốc quá nhanh có hữu ích hơn không, thay vì tập trung vào việc tìm hiểu cấu trúc hoặc nguyên lý của xe động cơ đốt trong?

Bạn cũng có thể phân tích mã nguồn kernel để cải thiện hiệu suất kernel, nhưng tôi không khuyến khích điều này vì mọi sửa đổi mã đều đi kèm trách nhiệm. Thay vào đó, tôi nghĩ việc tìm và khắc phục sự cố trong ứng dụng của mình bằng cách sử dụng mã nguồn kernel, hoặc để hiểu rõ hơn về cách thức hoạt động của kernel, là rất hữu ích.

Từ bây giờ, chúng tôi sẽ tóm tắt những thông tin cần thiết mà chúng ta cần biết để vận hành đúng cách một chiếc xe có tên là FreeRTOS.

6 chủ đề nóng trong RTOS ✅

  1. Làm thế nào để triển khai thời gian thực cứng
  2. Làm thế nào để vận hành ngắt một cách đáng tin cậy và hiệu quả
  3. Làm thế nào để khắc phục sự suy giảm hiệu suất hệ thống do loại trừ lẫn nhau thường xuyên
  4. Làm thế nào để đảm bảo nhiệm vụ của bạn được ưu tiên
  5. Kiểm tra xem tác vụ tôi tạo có hoạt động theo thời gian thực không
  6. Kiến thức chuyên môn về chuyển giao

Tất cả những điều trên là những chủ đề cốt lõi của bài giảng này. Bây giờ, chúng ta hãy đi sâu vào chi tiết.

Đầu tiên, bạn có nhầm không khi nghĩ rằng việc xử lý thời gian thực sẽ được thực hiện tự động chỉ bằng cách sử dụng RTOS?

Ngay cả khi bạn xây một ngôi nhà với cùng vật liệu, một ngôi nhà do một thợ mộc nào đó xây dựng sẽ an toàn và không bị rung lắc bởi gió mạnh hay rò rỉ nước, trong khi một ngôi nhà do một thợ mộc khác xây dựng sẽ bị nhỏ giọt từ trần nhà ngay cả khi trời mưa nhỏ. Vào mùa đông, ngôi nhà sẽ không được cách nhiệt tốt và dẫn đến chi phí sưởi ấm cao. Sự khác biệt là gì? Việc bạn sử dụng RTOS không tự động đảm bảo hiệu suất thời gian thực của chương trình hoặc sản phẩm bạn tạo ra. Điều này không chỉ áp dụng cho FreeRTOS mà còn cho tất cả các RTOS. Bài giảng này sẽ hướng dẫn bạn những nỗ lực cần thiết để đảm bảo hoặc đạt được hiệu suất thời gian thực cứng.

Thứ hai, bạn không cho rằng đây là một nhiệm vụ đòi hỏi phải xử lý nhanh các gián đoạn sao?

Chúng ta sẽ xem xét các ví dụ về cách định kiến có thể tác động tiêu cực đến các sản phẩm hoặc chương trình mà chúng ta tạo ra và khám phá các giải pháp để giải quyết chúng.

Thứ ba, nếu bạn thấy một phần quan trọng trong hàm mã nguồn mà bạn đang viết, tại sao bạn không thử sử dụng mutex ngay lập tức?

Đợi đã. Bạn biết Mutex làm giảm hiệu năng hệ thống phải không? Hãy cùng tìm hiểu cách khắc phục hoặc tìm giải pháp thay thế.

Thứ tư, bạn có đang ưu tiên những nhiệm vụ quan trọng không?

Bất kỳ ai đã từng cố gắng sắp xếp thứ tự ưu tiên công việc đều biết rằng việc này có thể rất khó khăn. Tôi sẽ nói về những cạm bẫy của việc ưu tiên quá mức cho các nhiệm vụ quan trọng và đề xuất các giải pháp thay thế.

Thứ năm, điều quan trọng không kém việc triển khai chương trình là xác minh rằng nhiệm vụ hoạt động theo thời gian thực như tôi dự định.

Nếu cần, bạn có thể cần thêm thiết bị đo lường hoặc thiết bị tương đương ngoài trình gỡ lỗi. Tất nhiên, bạn có thể phát triển và thử nghiệm mà không cần những thiết bị này, nhưng việc xác định vấn đề và chuẩn bị biện pháp ứng phó sẽ dễ dàng hơn. Tôi sẽ hướng dẫn bạn cách kiểm tra xem tác vụ tôi đã tạo có đang chạy trong thời gian thực cứng hay không.

Thứ sáu, tôi không thể mong đợi rằng các chương trình tôi viết sẽ luôn chạy trên cùng một phần cứng.

Khi hiệu năng phần cứng của sản phẩm tôi tạo ra được nâng cấp, tất nhiên sẽ cần phải porting. Tôi sẽ chia sẻ kinh nghiệm và bí quyết lâu năm của mình để có thể tự port kernel mà không cần sự trợ giúp của người khác.

Kiến thức giảng dạy RTOS với hơn 13 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.

Sau 13 năm giảng dạy RTOS tại chỗ, tôi quyết định tạo ra các bài giảng trực tuyến để gặp gỡ nhiều học viên hơn. Tôi sẽ giới thiệu đến các bạn một bài giảng trực tuyến tối ưu hóa nội dung của 4 ngày giảng dạy tại chỗ thành 8 giờ .


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

Lần đầu tiên với RTOS
Học tập cho người mới bắt đầu

Dành cho các sản phẩm dựa trên FreeRTOS
Dành cho những ai đang nghĩ đến việc tối ưu hóa

Hệ điều hành nhẹ cho sản phẩm
Những người muốn nộp đơn

IoT (Internet vạn vật)
nhà phát triển

Ngoài ra, việc học hỏi của những người như thế này cũng rất có ích!

👉 Dành cho những ai muốn giết hai con chim bằng một hòn đá: thời gian thực cứng và tính ổn định của sản phẩm
👉 Dành cho những ai muốn so sánh và đánh giá với hệ điều hành Linux
👉 Bất kỳ ai muốn nâng cao hiểu biết về hệ điều hành
👉 Dành cho những bạn không có thời gian tham gia lớp học offline

Hãy kiểm tra kiến thức chơi game của bạn!

  • Bạn nên biết ngôn ngữ C như kiến thức tiên quyết để học.

Khóa học này có gì đặc biệt ✨

  • Tính năng 1. Video được chia thành 180 tiểu chương, giúp bạn dễ dàng tìm lại 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.
  • Tính năng 3. Tất cả các ví dụ thực tế đều đi kèm với TO-DO . Đây là bài giảng mà sinh viên có thể trực tiếp tham gia vào các bài tập thực hành.
  • 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 nhiều 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 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.


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 của STmicro (Nucleo, Discovery)
  • Ví dụ thực hành và tệp hướng dẫn: freeRTOS_tutorials.zip (các tệp nằm trong Phần 0. Bắt đầu với FreeRTOS)
  • Bo mạch được sử dụng trong bài giảng là Nucleo-64 F103RB. Tuy nhiên, các ví dụ thực hành cũng hỗ trợ các bo mạch sau: DISCO_F429I, DISCO_F469I, NUCLEO_F401RE, NUCLEO_F767ZI, NUCLEO_L010RB (các tệp này nằm ở phần cuối).
  • Nếu bo mạch STM32 bạn muốn không có trong danh sách trên, bạn có thể xem video '(Phụ lục) Thực hiện theo bài giảng với bo mạch nucleo của tôi' rồi sửa đổi mã nguồn của tệp ví dụ thực hành (freeRTOS_tutorials) để phù hợp với bo mạch bạn mong muốn và sử dụng trong bài giảng này hoặc yêu cầu giảng viên sửa đổi mã nguồn để phù hợp với bo mạch bạn mong muốn (miễn phí. Thường mất 1-2 ngày. Nộp đơn tại góc Hỏi & Đáp.)

Đã tạo một bài giảng
Giới thiệu người chia sẻ kiến thức
✒️

Hong Young-gi (Trường Gail)

Lịch sử chính

  • 1995: VRTXsa RTOS (hộp giải mã tín hiệu dựa trên MCU 68K)
  • 1999: VXWorks RTOS (VoIP dựa trên MCU MPC860)
  • 2003: NucleusPlus RTOS (ARM MP3)
  • 2004: uC/OS-II RTOS(ARM MP3)
  • 2008~: Bài giảng thực hành về Phân tích và Sử dụng Nhân RTOS
  • 2019~: Bài giảng thực hành lập trình FreeRTOS

vân vân

  • Phát triển trình quản lý bộ nhớ động tương thích với malloc/free dựa trên uC/OS-II
  • Chuyển miniGUI dựa trên uC/OS-II
  • Chuyển TCP/IP sang Ethernet (DM9000A) dựa trên uC/OS-II
  • Chuyển đổi FatFs + thẻ SD dựa trên uC/OS-II
  • Chuyển YAFFS + NANDFLASH sang uC/OS-II
  • Chuyển nhiều kernel RTOS
  • Kênh YouTube , GitHub

Câu hỏi dự kiến Hỏi & Đáp 💬

H. Người không biết ngôn ngữ C có thể tham gia khóa học này không?

Khóa học này phù hợp cho cả kỹ sư lẫn sinh viên không chuyên ngành và những người quan tâm đến các sản phẩm nhúng RTOS. Tuy nhiên, nếu bạn không biết ngôn ngữ C, bạn có thể gặp khó khăn trong việc hiểu các phần liên quan đến đào tạo thực hành trên lớp.

H. Học viên trình độ trung cấp có thể tham gia khóa học này không?

Khóa học được thiết kế không chỉ dành cho người mới bắt đầu làm quen với RTOS mà còn dành cho cả người dùng trung cấp đã sử dụng RTOS. Với 15 năm kinh nghiệm giảng dạy lập trình RTOS tại Đại học Quốc gia Seoul, Samsung Electronics, LG Electronics, Hyundai Mobis, LS Industrial Systems và Cơ quan Phát triển Quốc phòng, tôi đã trình bày chi tiết những phần khó và các chủ đề quan trọng của lập trình RTOS.

H. Bạn có dạy về Internet vạn vật (IoT) trong lớp không?

FreeRTOS được sử dụng trong nhiều thiết bị IoT, nhưng khóa học này tập trung vào một chủ đề: hạt nhân RTOS.

H. Có nhiều loại bo mạch STM32 để thực hành. Có loại nào phù hợp không?

Trong video, lớp học hiện đang được tiến hành dựa trên bo mạch STM32 Nucleo64 f103rb.

Nếu bạn muốn thực hành trên một bo mạch STM32 khác, hãy xem video '(Phụ lục) Thực hiện theo bài giảng với bo mạch Nucleo của tôi', sau đó sửa đổi mã nguồn của tệp ví dụ thực hành (freeRTOS_tutorials) để phù hợp với bo mạch mong muốn của bạn và sử dụng bài giảng này hoặc yêu cầu người hướng dẫn sửa đổi mã nguồn để phù hợp với bo mạch mong muốn của bạn (miễn phí. Thường mất 1-2 ngày. Nộp đơn tại góc Hỏi & Đáp.)

H. FreeRTOS có tốt không?

Đó là một câu hỏi rất hay. Và cũng là một câu hỏi khó. Tôi có 12 năm kinh nghiệm phát triển hệ thống nhúng, và kinh nghiệm của tôi trải rộng trên nhiều lĩnh vực như firmware, RTOS và Linux nhúng.

Đối với câu hỏi hệ điều hành nào tốt hơn, tôi đã chuẩn bị câu trả lời chính thức sau:
(1) Miễn phí/Trả phí (2) Mã nguồn/Nhị phân (3) Có nhiều người dùng (4) Hỗ trợ môi trường phát triển
Đây là những yếu tố quan trọng cần cân nhắc khi lựa chọn RTOS.

FreeRTOS đạt gần như tuyệt đối điểm cho các mục 1, 2 và 3 ở trên. Tôi không cho rằng FreeRTOS là hệ điều hành tốt nhất, nhưng ít nhất tôi vẫn khuyên dùng.

H. Tôi đang sử dụng VxWorks. Khóa học này có giúp ích gì cho tôi không?

Mặc dù tên khóa học là Lập trình FreeRTOS, nhưng khóa học này được thiết kế tập trung vào bản chất (cốt lõi) của RTOS. Hơn nữa, như bạn có thể thấy trong sơ yếu lý lịch của tôi, tôi đã sử dụng nhiều RTOS khác nhau.

Bài giảng này bao gồm những kiến thức phổ biến bạn cần biết, các kỹ năng thường dùng, cũng như những hiểu lầm và định kiến mà người dùng thường gặp, bất kể bạn sử dụng RTOS nào. Tôi tin rằng bạn sẽ thấy bài giảng này hữu ích.

Vui lòng kiểm tra trước khi tham gia lớp học! (Giấy phép)

  • Tài liệu thuyết trình được sử dụng trong bài giảng được cung cấp miễn phí cho sinh viên dưới dạng tài liệu PDF .
  • Tài liệu kèm theo chỉ được sử dụng cho mục đích cá nhân như tài liệu bổ sung cho các video bài giảng trong Inflearn. Khi sao chép một phần hoặc toàn bộ nội dung sách (bao gồm cả việc in lại trên trang web hoặc ấn phẩm in, hoặc sao chép dưới dạng tệp điện tử), cần phải có sự cho phép của chủ sở hữu bản quyền, Hong Young-ki, một người chia sẻ kiến thức, theo Điều 42 của Luật Bản quyền Hàn Quốc, bất kể mục đích sử dụng có mang tính thương mại hay không, ngoại trừ trường hợp sử dụng cá nhân theo quy định tại Điều 27 của Luật Bản quyền Hàn Quốc.

Cùng xem các bài giảng khác nhé 🔍

Bậc thầy về tập lệnh Shell Linux
Mã hóa Shell Linux
Trải nghiệm những tính năng mạnh mẽ.

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

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

  • Người nhập môn RTOS

  • Người muốn tích hợp OS nhẹ vào sản phẩm.

  • Người cần học về hệ điều hành

  • Người đang tìm cách tối ưu sản phẩm FreeRTOS.

  • Những ai muốn sản phẩm có cả thời gian thực cứng và độ ổn định.

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

  • Ngôn ngữ C

Xin chào
Đây là

3,192

Học viên

215

Đánh giá

262

Trả lời

4.7

Xếp hạng

5

Các khóa học

인하대학교 공과대학에서 전자공학 학사 학위를 받았으며 임베디드 시스템용 소프트웨어 개발자로써 수년간의 경력을 쌓았습니다. 임베디드 시스템 및 프로그래밍을 위한 전문 강사로도 활동 중입니다. 아이폰 3GS 등장과 같은 시기에 맥(북)에 입문하였고, 그때부터 맥(북) 자동화에 관심을 갖게 되었습니다. '맥(북)에서 사용할 수 있는 시리 리모트', '키보드마에스트로를 이용한 구글번역기' 같은 오픈 소스를 깃허브(https://github.com/guileschool) 에 두고 개발 및 유지보수하고 있습니다. 오픈 소스 하드웨어 '비글본블랙' 에도 많은 관심을 가지고 있습니다. 맥(북) 자동화를 이용하여 생산성을 높일 수 있는 컴퓨터를 사용하는 모든 분야에 관심을 가지고 있고, 이를 필요로 하는 사람들을 돕고 있습니다.

강의 요청 및 기타 문의사항은 guileschool@gmail.com으로 보내주세요 :)

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

Tất cả

206 bài giảng ∙ (9giờ 21phú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ả

65 đánh giá

4.7

65 đánh giá

  • trueangel5님의 프로필 이미지
    trueangel5

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    91% đã tham gia

    잘보았습니다. FreeRTOS를 이용한 실무 적용 가능 프로젝트(mp3 플레이어, 주행 로봇, 드론 같은...)도 강의로 만들어서 해주시면 어떨까요? 좋은 강의 잘 보았습니다.

    • Embedded June님의 프로필 이미지
      Embedded June

      Đánh giá 4

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      FreeRTOS의 주요 기능을 아주 쉽게 실습할 수 있도록 실습 파일과 강의 영상에 엄청난 정성이 들어가 있습니다. 일반인이 시중에서 접할 수 있는 최고의 FreeRTOS 강의가 아닐까 싶습니다. 집중해서 들어야 하는 부분과 그렇지 않은 부분을 명확하게 구분해주시고, 다양한 사례를 들어서 설명해주셔서 이해하기 정말 쉬운 강의입니다. 졸업 프로젝트에서 FreeRTOS를 활용할 때 레퍼런스 문서를 n회독 하며 얼마나 고생했는지 생각납니다. 이 강의를 좀 더 빠르게 만났더라면 좋았을 걸 이라고 생각했습니다. 좋은 강의 제공해주셔서 정말 감사합니다.

      • 홍영기
        Giảng viên

        Embedded June님! 프로그래밍 언어에서 반복되는 부분은 루프문이나 함수로 만들듯이, 10여개 정도되는 실습 예제에서 반복적으로 사용되는 소스파일, 그리고 내가 보고싶은 소스(eg. task.c, FreeRTOSConfig.h)를 빠르게 확인할 수 있도록 주의를 기울였습니다. 그 부분이 도움이 되셨다니 오히려 제가 감사합니다. 더욱 알찬강의로 다시 뵙기를 원합니다 ㅎㅎㅎ~~

    • 꿈꾸는소년님의 프로필 이미지
      꿈꾸는소년

      Đánh giá 3

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      좋은 강의 감사합니다.

      • 김태헌님의 프로필 이미지
        김태헌

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        30% đã tham gia

        • taegyu224님의 프로필 이미지
          taegyu224

          Đánh giá 1

          Đánh giá trung bình 5.0

          5

          31% đã tham gia

          3.916.141 ₫

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

          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!