Tải bản đầy đủ (.pptx) (16 trang)

Thuyết trình Lập Trình Hệ Thống Nhúng La4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (357.4 KB, 16 trang )

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




×