RTOS – Lắp thêm cánh cho vi điều khiển

RTOS

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.

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 thành phần 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…

RTOS Components

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…

 

Từ Thongtincongnghe

Leave a Reply

2 Comments on "RTOS – Lắp thêm cánh cho vi điều khiển"

Notify of
avatar
Sort by:   newest | oldest | most voted
Thanh Tùng
Guest

Anh có tài liệu gì để học FreeRTOS chỉ giúp em với ạ. Em cũng là sinh viên BKHN !!!

wpDiscuz