Vi điều khiển (MCU) chính là trung tâm của hệ thống nhúng và sức mạnh của hệ thống này sẽ được tiêm thêm liều "doping" với một hệ điều hành thời gian thực RTOS (Real Time Operating System). Vậy RTOS là gì?

RTOS là một hệ điều hành đa nhiệm trong đó các tác vụ được thực thi một cách song song đối với người dùng. Ở đây ta không đi sâu vào kiến trúc bên trong của Kernel, cách thức chuyển tác vụ,... mà tập trung vào giới thiệu cách thức triển khai một RTOS trên một platform của vi điều khiển.

Hệ điều hành nói chung cho phép quản lý dễ dàng một thiết kế phần mềm của hệ thống, qua đó rút ngắn thời gian xây dựng, phát triển, cập nhật và gỡ lỗi.

Có rất nhiều luồng thông tin cho rằng Windows được xây dựng bằng ngôn ngữ C. Và cũng như vậy, thông thường một hệ điều hành thời gian thực được phát triển trên một ngôn ngữ lập trình bậc cao (phần lớn là C) và được cung cấp cho người dùng dưới dạng đóng gói hoặc mã nguồn nguyên bản. Nhưng một RTOS được ứng dụng thành công vào một nền vi điều khiển thường phải bao gồm 3 nhóm sau:

  • RTOS Kernel: nhân của hệ điều hành, trong đó thực thi các nhiệm vụ cơ bản của một RTOS: quản lý các tác vụ (khởi tạo, xóa, thay đổi mức ưu tiên, tạm dừng... ), Kernel dùng chung cho tất cả các platform và được cập nhật theo version.
  • Port: thường được phát triển bởi nhà sản xuất MCU, nó khác nhau đối với từng họ MCU.
  • BSP (Board Support Package): chứa các hàm chức năng truy xuất đến các ngoại vi, thực chất đây chính là driver cho các ngoại vi của MCU.

Vậy khi muốn phát triển một RTOS trên một platform MCU, ta cần phải làm gì và như thế nào?

RTOS kernel và Port cho dù có được cung cấp dưới dạng source code nhưng cũng không dễ dàng gì cho chúng ta thay đổi mà vẫn giữ cho RTOS hoạt động trơn tru như vốn có. Tất cả những gì ta có thể làm được là thay đổi các thông số của RTOS ví dụ như số tác vụ, kích thước stack cho các tác vụ, thứ tự ưu tiên...

Thông thường, Port của một RTOS là dành cho một họ MCU, trong đó chỉ có core vi xử lý của MCU là giống nhau, còn lại thì các ngoại vi là khác nhau. Ví dụ một họ ARM9TDMI của Atmel sẽ có chung một port, nhưng ngoại vi trên các dòng MCU của họ này có thể khác nhau. Và do đó BSP sẽ do chúng ta thực hiện để truy cập vào các ngoại vi có sẵn trên MCU.

Công việc cuối cùng là lập trình hàm main() thực hiện hệ thống của bạn dựa trên các tác vụ thời gian thực.

Các RTOS thông dụng gồm có: VxWork, uCLinux, RTOS, Nucleus...

Hùng Mạnh



Bình luận

  • TTCN (3)
Hùng Mạnh  312

Sắp tới Google công bố source code của Android thì cũng gồm 3 phần thôi: Kernel thì do Google phát triển, port cho các platform khác nhau, còn driver cho các ngoại vi như touchscreen, keyboard, wifi thì chắc để cho người dùng tự do thi triển võ công trên đó. Google chắc tập trung phát triển port cho con Mcu trên GPhone thôi ;D

Nemo Nguyen  21665

Hệ điều hành dành cho smartphone hay PDA... hình như ko phải là HDH thời gian thực thì phải.

Hùng Mạnh  312

Chính vì thế chỉ dám đề cập Android trong phần comment, chứ có dám đưa lên bài viết đâu.