You are on page 1of 5

Introduction of Real-Time OS

1. Giới thiệu về RTOS


Trong thời đại kỹ thuật phát triển mạnh mẽ, việc ứng dụng vi điều khiển vào các lĩnh vực học tập, y tế,
phương tiện di chuyển, sản xuất…đã làm tăng chất lượng cuộc sống.
Không chỉ dừng lại ở các bài toán đơn giản, hiện nay, các bài toán ứng dụng phức tạp, yêu cầu các chỉ
tiêu ngặt nghèo cũng được tích hợp trên vi điều khiển. Từ đó đã sinh ra các vấn đề với vi điều khiển:

• Các ứng dụng có kích thước lớn, độ phức tạp cao.


• Cần phản hồi từ ngoại vi với tốc độ nhanh chóng.
• Việc phát triển các thành phần của ứng dụng (giữa các nhóm) khó khăn.
Với các vấn đề phát sinh cơ bản ở trên, một khái niệm mới là Real Time Operation System (RTOS) được
tạo ra để khắc phục. Có rất nhiều các hệ điều hành thời gian thực được phát triển như: FreeRTOS, OSEK,
TI RTOS,....

Hình 1. Cấu trúc chung của một RTOS

Vậy Real time OS là gì? Để hiểu được thì cần phải phân tích các khái niệm dưới đây.

• Operation System (hệ điều hành)


Các ứng dụng phức tạp sẽ luôn có nhiều process. Việc của OS là quản lý các process 1 cách hợp lý để
tránh xung đột giữa các process, lập lịch để khi nào một process được chạy, khi nào không được chạy,…
Thử đối chiếu với hệ điều hành Windows mà chúng ta sử dụng hằng ngày. Khi bật máy tính, chúng ta sẽ
mở rất nhiều chương trình 1 lúc (game, trình duyệt web, trình phát nhạc, word…). Làm sao để các ứng
dụng đều có thể chạy cùng 1 lúc mà không xung đột (thật ra thỉnh thoảng vẫn bị not responding đó) thì
phải nhờ OS.

• Real time
Real time không phải là chạy đúng với thời gian trên đồng hồ của bạn, mà là thời gian giữa việc nhận tín
hiệu và phản hồi lại gần như không có delay, thực hiện “ngay lập tức”.
Các ứng dụng trên vi điều khiển được phân ra thành các mức độ phản hồi như sau

Hình 2. Các mức độ phản hồi của một ứng dụng

• Non-real time:
Là mức độ thấp nhất. Các ứng dụng ở mức độ này, bạn sẽ không cần quan tâm/ yêu cầu về thời gian thực
thi của vi điều khiển.
Ví dụ: Bạn mô phỏng 1 chương trình trên proteus. Do máy cấu hình yếu hoặc 1 lý do nào đó, bạn ngồi
uống hết cốc cafe thì chương trình mới thực hiện xong. Việc đó không có vấn đề gì cả.

• Soft real time:


Các ứng dụng ở mức độ này yêu cầu hệ thống phải phản hồi trong một khoảng thời gian từ khi nhận 1 tín
hiệu. Nhưng nếu quá khoảng thời gian đó thì cũng không ảnh hưởng lớn
Ví dụ: Bạn gõ bàn phím. Đáng lẽ khi gõ 1 phím thì chữ cần hiển thị luôn lên màn hình. Nhưng do lý do
nào đó, phải tầm 1-2 giây sau chữ mới hiển thị lên màn hình. Việc đó ảnh hưởng không quá lớn, chỉ khiến
bạn cảm thấy khó chịu thêm chút.

• Hard real time:


Các ứng dụng ở mức độ này yêu cầu khắt khe về thời gian phản hồi của hệ thống từ khi nhận 1 tín hiệu.
Nếu quá khoảng thời gian cho phép mà hệ thống vẫn chưa đáp ứng thì ảnh hưởng rất lớn.
Ví dụ: Bạn đang lái xe ô tô nhưng không may đâm vào 1 xe khác. Khi đó, túi khí phải được bật ra ngay
lập tức để bảo vệ bạn. Nếu túi khí bật ra muộn 0.5 giây thôi cũng đã có vấn đề lớn rồi.
Trong các hệ điều hành thời gian thực hiện có, việc bắt đầu tìm hiểu với FreeRTOS là dễ tiếp cận nhất.
Do đó, series hướng dẫn về RTOS sẽ thực hiện với FreeRTOS.

2. FreeRTOS

FreeRTOS là 1 real-time kernel (real-time scheduler) được sử dụng trên các dòng vi điều khiển. Nó giúp
các ứng dụng có thể đáp ứng các yêu cầu về thời gian thực.
Hiểu đơn giản, FreeRTOS sẽ cung cấp các API (Application Programming Interface) giúp các vi điều
khiển điều hành được các process, các mức độ ưu tiên, lập lịch xem process nào cần chạy trước, cái nào
phải chờ để chạy,…
Các ưu điểm mà FreeRTOS mang lại:

• Khả năng kiểm soát hoạt động ứng dụng, giúp phát triển ứng dụng dễ dàng hơn
• Khả năng kiểm soát thời gian của từng process
• Dễ dàng test, debug giữa các thành viên trong 1 nhóm hoặc 1 dự án
• Khả năng kiểm soát tài nguyên của MCU
Và có 1 ưu điểm lớn nhất là giúp cho vi điều khiển chỉ có 1 core có thể chạy cùng lúc nhiều process như
với vi xử lý có nhiều core.

Hình 3. Chạy đa nhiệm trên vi điều khiển 1 core (single core)

3. So sánh giữa các hệ điều hành thông thường và RTOS


Tuy đều là OS nhưng RTOS có những điểm khác biệt cơ bản khi so sánh với các OS phổ biến như
Windows, Ubuntu,…

• Giống nhau
Cả 2 đều cung cấp các cơ chế như: scheduler, task (thread), mutex, semaphore,…

• Khác nhau

Real-time OS (RTOS) General purpose OS (GPOS)


Được sử dụng trên các vi điều khiển có số lượng Được sử dụng trên các vi xử lý có số lượng tài
tài nguyên có sẵn hạn hẹp (RAM, ROM, Flash nguyên lớn hoặc khá lớn
ít,…)
Cung cấp các cơ chế giúp đáp ứng hard real time Hầu như chỉ phục vụ các ứng dụng từ non real
cho các ứng dụng time tới soft real time
Không yêu cầu giao diện người dùng (GUI) để có Yêu cầu giao diện người dùng mới có thể tương
thể tương tác giữa người và ứng dụng tác giữa người và ứng dụng
4. Sử dụng với STM32F4 Discovery

Hình 4. RTOS trong cấu trúc của STM32


Nhìn vào hình trên, việc sử dụng FreeRTOS với STM32 có thể được triển khai theo 2 cách:

• Cách 1: Sử dụng STM32CubeMx


Khi sử dụng STM32CubeMx, như trong hình, RTOS Kernel (ví dụ FreeRTOS được hỗ trợ sẵn trong
STM32CubeMx) sẽ cung cấp các chức năng cho CMSIS-RTOS. Sau đó, CMSIS-RTOS sẽ cung cấp các
API cho ứng dụng sử dụng.
Lợi ích của việc sử dụng CMSIS-RTOS là sẽ tận dụng được sự tiện lợi của phần mềm STM32CubeMx từ
việc cấu hình task, semaphore,…đến sinh code. Ngoài FreeRTOS, nếu CubeMx còn hỗ trợ RTOS Kernel
nào nữa thì việc sử dụng cũng tương đối dễ dàng.
Nhược điểm của việc sử dụng phần mềm CubeMx là các bạn mới bắt đầu chưa có kinh nghiệm tự viết
code khi chuyển sang dòng chip mới sẽ rất khó khăn (tại vì các hãng như NXP, TI,…làm gì có phần mềm
STM32CubeMx).

• Cách 2: Sử dụng thư viện Std


Sử dụng các API được nhà sản xuất FreeRTOS cung cấp và kết hợp với thư viện Std để viết ứng dụng
Lợi ích là khi tự viết code, tự cấu hình các hàm thì các bạn có sẽ có kinh nghiệm hơn khi làm các các
dòng chip của hãng khác. Chẳng hạn, nếu bạn muốn viết 1 ứng dụng sử dụng FreeRTOS cho Arduino
Uno thì gần như bê nguyên ứng dụng sang là chạy được (chỉ cần phải sửa các khai báo liên quan trực tiếp
tới board như GPIO, I2C,…)
Nhược điểm là không tận dụng được sự tiện ích của STM32CubeMx. Phải tự cấu hình các thông số trong
các file.
Hình 4. Sự khác nhau API giữa CMSIS-RTOS và FreeRTOS
Khi đi làm bên ngoài, các project thực tế không chỉ sử dụng mỗi chip của STMicroelectronics. Vậy nên
trong series này, việc triển khai FreeRTOS sẽ theo cách 2 như đã nêu ở trên.

You might also like