🌱 FreeRTOS là gì? Giới thiệu Hệ điều hành thời gian thực phổ biến nhất cho Vi điều khiển

🌱 FreeRTOS là gì? Giới thiệu Hệ điều hành thời gian thực phổ biến nhất cho Vi điều khiển

    Ở những bài viết trước về RTOS (Real-time Operating System), mình đã giới thiệu về các concept trong RTOS nói chung. Thực tế để có thể học và nắm vững những concept này, cách tốt nhất là đi vào thực hành với một loại RTOS cụ thể. Và một trong những cái tên nổi lên đầu tiên, cho những người mới tiếp cận RTOS với Vi điều khiển, đó là freeRTOS, một hệ điều hành thời gian thực mã nguồn mở, được thiết kế đặc biệt cho các hệ thống nhúng và vi điều khiển.


Mục Lục


freeRTOS là gì và tại sao bạn nên chọn freeRTOS

    Khi bắt đầu học một ngôn ngữ / framework nào đó thì đương nhiên hầu hết mọi người sẽ ưu tiên các lựa chọn dễ học, miễn phí, mã nguồn mở (vì nó đã được sử dụng nhiều và cộng đồng hỗ trợ thường lớn).

    Và đối với việc tiếp cận RTOS thì freeRTOS là một sự lựa chọn như vậy! FreeRTOS là một hệ điều hành thời gian thực mã nguồn mở được thiết kế để hoạt động trên nhiều loại vi điều khiển nhúng và nền tảng hệ thống nhúng khác nhau. Được phát triển bởi Richard Barry và được viết bằng ngôn ngữ C.

Mã nguồn mở

    Đúng với tên gọi "free", freeRTOS là một RTOS miễn phí, mã nguồn mở xứng đáng để thử. Vì lý do này nên cộng đồng hỗ trợ, học tập và sử dụng freeRTOS là rất đông đảo, các tài liệu về freeRTOS cũng rất đầy đủ tại freeRTOS tại trang chủ!


FreeRTOS (Free Real-Time Operating System) là một hệ điều hành thời gian thực mã nguồn mở, được thiết kế đặc biệt cho các hệ thống nhúng và vi điều khiển. Với hơn 15 năm phát triển, FreeRTOS đã trở thành lựa chọn hàng đầu cho các ứng dụng IoT, automotive, và consumer electronics.

40+
Kiến trúc hỗ trợ
175,000+
Downloads/tháng
MIT
License
2KB
RAM tối thiểu

Kích thước nhỏ gọn / đơn giản nhưng đầy đủ

    FreeRTOS chỉ triển khai rất ít các chức năng như: cơ chế quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ, ... Vì vậy, kích thước khá nhỏ gọn, và hỗ trợ hầu hết các kiến trúc vi điều khiển (yêu cầu tối thiểu 2KB RAM).

    Nó cung cấp một môi trường chạy cho việc thực hiện các tác vụ đồng thời và phân công tài nguyên hệ thống, phù hợp với các yêu cầu cơ bản của RTOS chung, nhưng không cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) như những hệ điều hành nhúng cao cấp khác.

Tính tương thích cao

    FreeRTOS được viết bằng C, hỗ trợ nhiều nền tảng khác nhau như GCC, OpenWatcom, Keil, IAR, Eclipse, … Ngoài ra, với các thiết kế đơn giản, freeRTOS cũng hỗ trợ rộng rãi các kiến trúc vi điều khiển phổ biến (40+): ARM Cortex-M/A/R RISC-V, ESP32 AVR, PIC, x86, ...

Những tính năng quan trọng của freeRTOS Kernel

    Thành phần quan trọng nhất trong OS nói chung và freeRTOS nói riêng đó chính là Kernel, đây là phần cốt lõi của FreeRTOS, bao gồm các module và hàm để quản lý tác vụ, lập lịch, và phân phối tài nguyên hệ thống. Dưới đây là một số tính năng chính của FreeRTOS Kernel:

  1. Task Management (Quản lý tác vụ)

    • Tạo, xóa, tạm dừng, và khởi chạy nhiều task song song.

    • Hỗ trợ priority-based scheduling (task quan trọng hơn sẽ được xử lý trước).

    • Task stack riêng biệt → tránh lỗi chồng lấn bộ nhớ.

  2. Scheduling (Lập lịch) - freeRTOS hỗ trợ các thuật toán lập lịch phổ biến:

    • Preemptive scheduling: task ưu tiên cao có thể ngắt task ưu tiên thấp.

    • Cooperative scheduling: task nhường CPU theo lập trình.

    • Time slicing cho các task có cùng mức ưu tiên.

  3. Inter-Task Communication (Giao tiếp giữa các task)

    • Queue: truyền dữ liệu giữa các task an toàn theo FIFO.

    • Semaphore (Counting, Binary): đồng bộ hóa giữa các task hoặc task với ISR (ngắt).

    • Mutex (Mutual Exclusion): tránh xung đột tài nguyên, có hỗ trợ priority inheritance để chống priority inversion.

    • Stream Buffer & Message Buffer: truyền dữ liệu dạng luồng hoặc message kích thước thay đổi.

  4. Memory Management (Quản lý bộ nhớ)

    • Nhiều scheme quản lý heap:

      • heap_1: đơn giản, không giải phóng bộ nhớ.

      • heap_2: có giải phóng, quản lý free block.

      • heap_3: wrapper malloc/free của C library.

      • heap_4: hợp nhất block free, chống phân mảnh.

      • heap_5: hỗ trợ nhiều vùng bộ nhớ.

  5. Software Timer

    • Hỗ trợ timer “ảo” chạy trong kernel, không cần dùng nhiều hardware timer.

    • Có callback khi timer hết hạn.

  6. Tickless Idle (Tiết kiệm năng lượng)

    • Hỗ trợ chế độ tickless idle để giảm tiêu thụ năng lượng, rất quan trọng với thiết bị IoT chạy pin.

  7. Hook Functions

    • Cho phép người lập trình cài đặt callback khi idle, khi xảy ra lỗi stack overflow, hoặc khi malloc thất bại.

  8. Portability (Khả năng porting)

    • Hỗ trợ hơn 40 kiến trúc vi xử lý (ARM Cortex-M, RISC-V, ESP32, PIC32, Renesas, NXP…).

    • Dễ porting giữa các platform và compiler khác nhau!

  9. Deterministic Behavior (Tính xác định)

    • Thời gian thực hiện các primitive như task switch, queue, semaphore có độ trễ xác định (bounded), đảm bảo tính real-time.

freeRTOS

Những đặc điểm nổi bật mà freeRTOS mang lại

    Ngoài FreeRTOS Kernel, hệ sinh thái FreeRTOS còn cung cấp nhiều thành phần bổ sung để hỗ trợ phát triển ứng dụng nhúng hiện đại, đặc biệt trong lĩnh vực IoT và thiết bị kết nối. Cụ thể:

🔹 1. FreeRTOS+ Middleware

Các thư viện mở rộng (add-on libraries) giúp xây dựng ứng dụng phức tạp nhanh hơn:

  • FreeRTOS+TCP → TCP/IP stack nhẹ cho MCU.

  • FreeRTOS+FAT → Hệ thống file FAT cho thẻ SD hoặc Flash.

  • FreeRTOS+CLI → Command Line Interface để debug và cấu hình runtime.

  • FreeRTOS+IO → Trừu tượng hóa driver I/O.

🔹 2. Amazon FreeRTOS (AWS FreeRTOS)

    Phiên bản mở rộng do Amazon Web Services (AWS) phát triển, tích hợp thêm các thư viện phục vụ IoT:

  • Secure Connectivity → TLS (Transport Layer Security) cho kết nối an toàn.

  • MQTT → Giao tiếp theo chuẩn IoT, dễ kết nối Cloud.

  • OTA Update → Cập nhật firmware từ xa.

  • Device Shadow → Đồng bộ trạng thái thiết bị với Cloud.

🔹 3. FreeRTOS Simulator

  • Cho phép chạy và debug ứng dụng FreeRTOS trên Windows/Linux mà không cần phần cứng thực tế.

  • Hữu ích để học tập, thử nghiệm, và kiểm thử logic ứng dụng.

🔹 4. FreeRTOS Trace Support

  • Tích hợp với công cụ như Percepio Tracealyzer hoặc SEGGER SystemView để theo dõi task, context switch, timing.

  • Giúp debug ứng dụng real-time dễ dàng và trực quan.

🔹 5. FreeRTOS Demo Projects

  • Kho demo phong phú cho nhiều vi điều khiển và board (STM32, ESP32, PIC32, RISC-V, Renesas, NXP…).

  • Giúp ae dev nhanh chóng bắt đầu với phần cứng thực tế.

freeRTOS Long-term Support

    Ngoài ra, trong bản freeRTOS LTS (Long-Term Support) còn có nhiều middlewareIoT libraries khác

📂 Các thành phần trong FreeRTOS-LTS

  • FreeRTOS-Kernel
    → Phần core của FreeRTOS, cung cấp RTOS (task, queue, semaphore, timer...).

  • FreeRTOS-Plus-TCP
    → TCP/IP stack nhẹ cho MCU, dùng để giao tiếp mạng.

  • FreeRTOS-Cellular-Interface
    → API chuẩn hóa để giao tiếp qua mạng di động (LTE, NB-IoT, GSM...).

📂 Các thư viện “core” (IoT protocol libraries)

Thư viện Mô tả Ứng dụng chính
coreHTTP Thư viện client HTTP/HTTPS Kết nối REST API, tải dữ liệu từ web service, giao tiếp cloud
coreMQTT Thư viện MQTT (Message Queuing Telemetry Transport) Gửi/nhận dữ liệu IoT qua broker MQTT (AWS IoT Core, Mosquitto...)
coreJSON Parser JSON nhẹ Xử lý payload JSON từ HTTP/MQTT (ví dụ: cấu hình, trạng thái sensor)
coreSNTP Đồng bộ thời gian qua SNTP Đồng bộ RTC với server thời gian (ví dụ: timestamp cho log, bảo mật)
corePKCS11 API bảo mật theo chuẩn PKCS#11 Quản lý khóa, chứng chỉ, hỗ trợ crypto và TLS an toàn

📂 Thư viện hỗ trợ khác

  • backoffAlgorithm
    → Thuật toán exponential backoff, thường dùng để retry kết nối mạng (ví dụ: khi MQTT/HTTP fail thì retry với thời gian tăng dần).

So sánh với các RTOS khác

    Nhìn chung, ngoài các đặc điểm ở trên, so với các RTOS khác, FreeRTOS nhẹ hơn, nhỏ gọn hơn, dễ tích hợp vào MCU có tài nguyên hạn chế. Tuy nhiên, một số RTOS khác có nhiều tính năng nâng cao hơn (ví dụ: Zephyr hỗ trợ thiết bị ngoại vi, driver phong phú hơn).

Đặc điểm FreeRTOS ThreadX µC/OS-III
License MIT (Free) Commercial Commercial
RAM Footprint 2-10KB 5-20KB 6-24KB
Learning Curve Dễ Trung bình Trung bình
Community Support Rất tốt Tốt Trung bình
Ecosystem Phong phú Azure RTOS Hạn chế

Kết luận

    FreeRTOS là lựa chọn lý tưởng cho các dự án embedded systems nhờ vào sự kết hợp hoàn hảo giữa hiệu suất, độ tin cậy và tính dễ sử dụng. Với license MIT miễn phí và cộng đồng hỗ trợ mạnh mẽ, FreeRTOS giúp các developer tập trung vào logic ứng dụng thay vì lo lắng về hạ tầng RTOS.

    Dù bạn là sinh viên mới bắt đầu hay engineer có kinh nghiệm, FreeRTOS cung cấp nền tảng vững chắc để xây dựng các hệ thống thời gian thực hiệu quả. Bài viết sau mình sẽ giới thiệu về cách porting freeRTOS Kernel cho các dòng vi điều khiển phổ biến!


>>>>>> Follow ngay <<<<<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn
//