Lab 4
Learning Environment the Development –
The Next Step
Nguyễn Phương Nam
Đặng Công Sơn
1. Yêu cầu
Giới thiệu về hệ điều hành thời gian thực
Chỉnh sửa Task startup hoạt động trên hệ điều hành FreeRTOS
Sử dụng Bộ lập lịch (Scheduler) theo thuật toán Preemptive
Làm việc với Interupt, ISR, Hardware Timing Function trên hệ điều hành FreeRTOS
Hệ điều hành FreeRTOS
Khái niệm:
“A real-time system is one in which the correctness of the system depends not only on the logical
results, but also on the time at which the results are produced”
Một số chức năng cơ bản:
•
•
•
•
Lập lịch theo mức độ ưu tiên
Quản lý truyền thông và đồng bộ giữa các Tác vụ hoặc giữa Task và Interrupt
Phân phối bộ nhớ động.
Quản lý các thiết bị vào ra.
Hệ điều hành FreeRTOS
Các loại hệ điều hành thời gian thực:
1.
Hard Real Time Operating Systems
Các tác vụ không chỉ đúng về thực thi mà còn phải đúng về thời gian, không cho phép sai lệch về thời gian
Ví dụ: hệ thống điều khiển năng lượng của ô tô, máy đo nhịp tim…
2.
Soft Real Time Operating Systems
Cho phép sai lệch về thời gian và dung sai lỗi ở một mức độ nào đó
Ví dụ:phần mềm duy trì và cập nhậtkế hoạch bay cho hãng hàng không thương mại, hệ thống truyền hình và nghe
nhạc trực tuyến, điều khiển máy giặt,...
Task trên FreeRTOS
Task gồm có: tên, chức năng, giá trị ưu tiên, độ sâu stack, task handle (như kiểu cái móc để tác động), biến đầu
vào
FreeRTOS cung cấp các API có sẵn để quản lý tác vụ như là tạo tác vụ (vTaskCreate()), hủy tác vụ
(vTaskDelete())
Task trên FreeRTOS
xTaskCreate
void * TaskCreate (void(taskCode)(void *),
char *name,
int stackDepth,
void *parameters,
int priority,
taskHandle *createdtaskPtr )
•
•
TaskCode :
Name
Pointer to đến hàm hiện thưc cho Task
: Tên mô tả cho Task đó ( chỉ dùng cho mục đích debug
hệ thống).Chiều dài tối đa của tên được định nghĩa bằng
configMAX_TASK_NAME_LEN.
•
•
•
•
stackDepth: Là kích thước của Stack đặc trưng cho số lượng biến mà Task có thể quản lý được.
Parameters: Pointer dử liệu sử dụng như là tham số của việc tạo Task.
Priority
: Độ ưu tiên của Task : 0…5, thấp -cao
CreatedTask: Pointer trỏ đến Task được tạo.
Task Queue
Sau khi Task Startup thực hiện xong,các task còn lại sẽ được đưa vào Queue theo thứ tự:
Measure
Compute
Status
Schedule
Keypad Console
Local Coms
OLED display
WarningAlarm
Scheduling
Đối với FreeRTOS,các Task sẽ có 2 trạng thái:
Running & Not running.
Scheduling
Task priorities
Các task sẽ được quy định mức độ ưu tiên khác nhau.FreeRTOS dưa trên mức độ ưu tiên
đó để quyết định task nào thực hiện,được quyền sử dụng tài nguyên.
Khi có nhiều task cùng độ ưu tiên thì hệ điều hành sẽ thực hiện từng task luân phiên sau
mỗi tick
Task priorities
Task priorities
Task priorities
Khi có nhiều task thì việc task nào thực hiện trước trên FreeRTOS dựa theo preemtive
DEMO