Giới thiệu Hệ điều hành thời gian thực RTOS - Pdf 13

Chương 2: GVHD: ThS. Huỳnh Văn Kiểm
Giới thiệu về Hệ điều hành thời gian thực FreeRTOS SVTH: Lê Văn Mùi
CHƯƠNG 2: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH THỜI GIAN THỰC
FreeRTOS
2.1 KHÁI QUÁT CHUNG :
Hiện nay có rất nhiều hệ điều hành thời gian thực ( RTOS) dành cho phát triển hệ
thống nhúng, việc sử dụng còn phụ thuộc vào khả năng đáp ứng của vi của Vi điều khiển
đặc biệt là RAM và tốc độ xung clock. Những hệ điều hành này được phát triển trên các
nền ngôn ngữ lập trình khác nhau, phổ biến nhất là ngôn ngữ C, và cũng có thế là
JAVA….Trong khuông khổ luận văn này chỉ xin được giới thiệu những hệ điệu hành thời
gian thực dành cho những hệ thống nhỏ.
Hiện tại có nhiều hệ điều hành thời gian thực dành cho các dòng vi điều khiển
thông thường, từ Open Source đến có bản quyền.
Open source phổ biến như FreeRTOS hay CooCox CoOS, ở đây có xin được giới
thiệu về FreeRTOS vì tính phổ biến của nó cũng như đơn giản, dễ sử dụng nhưng vẫn đầy
đủ các tính năng của một RTOS.
FreeRTOS được nghiên cứu bởi Richard Barry với tên ban đầu là FRTOS07. Mục
đích của FreeRTOS là portable( khả năng linh động) , open source ( mã nguồn mở) , mini
kernel (là một hệ điều hành thời gian thực nhỏ) mà có thể được thao tác trong chế độ ưu
tiên (Pre-emptive) cũng như phối hợp (Cooperative).
FreeRTOS hiệ tại hỗ trợ lên đến 27 kiến trúc vi điều khiển khác nhau khác nhau :
 Altera Nios II
 ARM7, ARM9, Cortex M3
 AVR, PIC, 8051
 SH, H8S, PowerPC, x86
Các chức năng chính của FreeRTOS được giới thiệu như sau :
2.1 .1 Thời gian thực
 Thời gian thực hoặc hoạt động đồng bộ
 Trong chế độ đồng bộ thì việc đặt lịch không được thực hiện bởi 1 điểm xác
định của timer mà được xử lý qua việc điều khiển từ task này đến task khác
bởi cơ chế yielding.

2.1.7 Treo bộ đặt lịch
Khi dành riêng việc truy nhập tới MCU mà việc MCU bị yêu cầu là không
gây nguy hiểm cho thao tác của ISR, bộ đặt lịch có thể bị treo. Việc treo này đảm bảo
răng tiến trình hiện tại sẽ không được ưu tiên bởi 1 đặt lịch (scheduler)
2.1.8 Cấp phát bộ nhớ
FreeRTOS cung cấp 3 mô hình heap. Mô hình đơn giản nhất là việc cấp phát
cố định, phức tạp hơn là mô hình cho phép cấp phát và giải phóng bằng việc sử dụng
giải thuật “best fit” và phức tạp nhất là heap_3 cho phép sử dụng malloc và calloc()
2.1.9 Đảo ngược độ ưu tiên
FreeRTOS không thực hiện bất kỳ kỹ thuật nâng cao nào với độ ưu tiên tiến
trình như kế thừa độ ưu tiên hay xoay vòng độ ưu tiên để thực hiện đảo ngược độ ưu
tiên
Page 2
Chương 2: GVHD: ThS. Huỳnh Văn Kiểm
Giới thiệu về Hệ điều hành thời gian thực FreeRTOS SVTH: Lê Văn Mùi
Hình 2.1 Cấu trúc của FreeRTOS
2.2 GIỚI THIỆU CÁC HÀM APIs (SERVICE FUNCTIONS):
2.2.1 Các hàm API liên quan đến Task.
2.2.1.1 Tạo và xóa Task:
 xTaskCreate
portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask
);
 Mô tả: Tạo một Task và thêm vào danh sách các task sẵn sàng để thực
thi.

portTickType xTimeIncrement );
 Mô tả: Block Task trong một chu kì xác định .
 Tham số:
pxPreviousWakeTime Pointer đến biến lưu giá trị lần cuối cùng Task
được unclocked . Biến này phải được khởi tạo giá trị với giá trị hiện
tại cho lần dùng đầu tiên.
xTimeIncrement : Là chu kì thời gian . Task sẽ đươck uncloked sau
mỗi thời (*pxPreviousWakeTime + xTimeIncrement). Gọi hàm naỳ
với mục đích thực thi một Task theo một chu kì nhất định.
 Trị trả về: Không trị.
 uxTaskPriorityGet
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );
Page 4
Chương 2: GVHD: ThS. Huỳnh Văn Kiểm
Giới thiệu về Hệ điều hành thời gian thực FreeRTOS SVTH: Lê Văn Mùi
 Mô tả:Đọc giá trị độ ưu tiên của Task
 Tham số: pxTask : biến Handle của Task cần đọc
 Trị trả về: Độ ưu tiên của Task cần gọi.
 vTaskPrioritySet
void vTaskPrioritySet( xTaskHandle pxTask, unsigned
portBASE_TYPE uxNewPriority );
 Mô tả: Cài đặt độ ưu tiên cho một Task.
 Tham số:
pxTask : Handle của Task sẽ được set độ ưu tiên. Nếu là NULL thì sẽ
set độ ưu tiên của Task đang được gọi ( Task hiện tại).
uxNewPriority : Độ ưu tiên mới cho Task.
 Trị trả vể: Không trị.
 vTaskSuspend
void vTaskSuspend( xTaskHandle pxTaskToSuspend );
 Mô tả: Suspend ( xem thêm chương 1) bất kì Task nào mà không


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status