5/5 - (3 bình chọn)

Hệ điều hành AUTOSAR là tiêu chuẩn hệ điều hành quốc tế dành cho hệ thống điện tử ô tô, dựa trên phiên bản hệ điều hành OSEK/VDX 2.23. Đặc biệt, hệ điều hành này mở rộng các chức năng như bảo vệ hệ thống, lập lịch thời gian thực, xử lý bộ đếm thời gian    để trở thành tiêu chuẩn quốc tế cho hệ điều hành thời gian thực trong xe.
AUTOSAR OS được chia thành các chức năng từ SC1 đến SC4. Các tính năng Service Protection và Memory Protection trong SC3 và SC4 được lấy từ HIS Protected OS. Hệ điều hành này còn cải thiện chức năng Time-Triggered Operating System với Schedule Table.

AUTOSAR OS nằm trong System Service của lớp BSW Layer trong nền tảng AUTOSAR

AUTOSAR OS nằm trong System Service của lớp BSW Layer
AUTOSAR OS nằm trong System Service của lớp BSW Layer

TASK là đơn vị cơ bản của chương trình được hệ điều hành (OS) điều khiển.
TASK được phân loại thành hai loại: Basic TASK và Extended TASK, tùy thuộc vào trạng thái mà nó có thể có.

Basic TASK và Extended TASK
Basic TASK và Extended TASK

Đầu tiên, Basic TASK có ba trạng thái: Suspended, Ready, và Running.
Extended TASK có thêm trạng thái Waiting.
Thông thường, Basic TASK được sử dụng nhiều. Khi có yêu cầu thời gian như Time-Out, Extended TASK sẽ được sử dụng vì Extended TASK xử lý sự kiện bằng cách sử dụng hàm, do đó chậm hơn Basic TASK.
Khi có sự kiện kích hoạt Runnable bên trong, TASK ở trạng thái Suspended (trạng thái ban đầu) sẽ được kích hoạt, chuyển sang trạng thái Ready và sau đó chuyển sang trạng thái Running khi được hệ điều hành (OS) lập lịch. Sau khi hoàn thành, nó sẽ quay trở lại trạng thái Suspended.
Extended TASK là TASK có Runnable với điểm chờ (Waiting Point) và có thể chuyển sang trạng thái Waiting để chờ một sự kiện trong khi đang ở trạng thái Running. Khi sự kiện xảy ra và TASK được đánh thức, nó sẽ quay trở lại trạng thái Ready.
Một TASK có thể có nhiều Runnable được ánh xạ và trong trường hợp này, cần thiết lập thứ tự thực hiện. Các Runnable được ánh xạ vào một TASK sẽ được gọi tùy theo sự kiện xảy ra.

Autosar OS task
Autosar OS task

Mỗi TASK có một mức độ ưu tiên và theo chính sách của bộ lập lịch (scheduler), TASK có trạng thái Ready hoặc Running sẽ được kiểm tra mức độ ưu tiên, và TASK có mức độ ưu tiên cao nhất sẽ được thực thi.
Đối với các TASK có cùng mức độ ưu tiên, chúng sẽ được thực thi theo phương pháp FIFO (First In First Out).
Chính sách của bộ lập lịch TASK gồm có:
• Chế độ tiền nhiệm (Preemptive): Dù có TASK đang chạy, nếu có TASK khác ở trạng thái Ready với mức độ ưu tiên cao hơn, nó sẽ ngay lập tức chiếm quyền sử dụng lõi.
• Chế độ không tiền nhiệm (Non-Preemptive): TASK đang chạy sẽ tiếp tục cho đến khi hoàn thành. Sau đó, TASK với mức độ ưu tiên cao nhất trong trạng thái Ready sẽ được thực thi tiếp theo.
Môi trường lõi đơn và đa lõi:
• Trong môi trường lõi đơn (single-core), không thể thực thi TASK đồng thời. Để thực hiện đa tác vụ (multitasking), cần phải thực hiện chuyển đổi ngữ cảnh (context switching).
• Trong môi trường đa lõi (multi-core), mỗi lõi có thể thực thi một TASK song song cùng lúc.
Event

Event được sử dụng để đồng bộ hóa các TASK.
• Event quyết định thứ tự hoạt động của các TASK.
• Việc chờ (Wait) và xóa (Clear) Event chỉ khả thi trong Extended TASK.
Alarm
Alarm là chức năng dùng để xử lý các sự kiện xảy ra lặp đi lặp lại.
Trong AUTOSAR, ít nhất một Counter được cung cấp và liên kết với SW hoặc HW Timer.
• Alarm được ánh xạ với Counter và sẽ hết hạn (Expire) khi giá trị Tick của Counter đạt đến giá trị đã được chỉ định.

Schedule Table
Schedule Table

TASK trong AUTOSAR OS
Trong AUTOSAR OS, hoạt động của TASK chủ yếu được quyết định một cách tĩnh và Schedule Table được cung cấp để thực hiện chức năng lặp lại dựa trên chu kỳ cụ thể.
Schedule Table là một đối tượng kích hoạt TASK và tạo sự kiện tại thời điểm cụ thể.
• Schedule Table được cấu thành bởi các Expiry Point.
• Expiry Point chứa thông tin về các TASK sẽ được kích hoạt và thông tin về sự kiện.
• Offset chứa thông tin về chu kỳ hoạt động và thời điểm hoạt động của Expiry Point.
Alarm
• Một Alarm chỉ có thể kích hoạt một TASK.
• Nếu có nhiều Alarm trong một AUTOSAR OS, nhiều TASK có thể bị trùng thời gian thực thi.
• Schedule Table khắc phục nhược điểm này của Alarm bằng cách đảm bảo rằng nhiều TASK không bị thực thi chồng chéo.
Interrupt
Interrupt có thể chiếm quyền sử dụng TASK bất kể loại nhiệm vụ là tiền nhiệm (Preemptive) hay không tiền nhiệm (Non-Preemptive).
AUTOSAR Interrupt được chia thành Category 1 (CAT1) và Category 2 (CAT2).
• CAT 1 cung cấp ISR không sử dụng dịch vụ của hệ điều hành (OS).
o Vì vậy, nó có mức độ quá tải tối thiểu và không ảnh hưởng đến việc quản lý lịch trình của TASK.
o Chỉ chứa mã mà không gọi bất kỳ API nào.
• CAT 2 cung cấp ISR sử dụng dịch vụ của hệ điều hành (OS).
o AUTOSAR OS tự động gán mã nguồn ISR vào Interrupt tại thời điểm tạo hệ thống.
o Điều này yêu cầu kiến thức sâu về phần cứng của CPU tương ứng.
o Chứa mã với lệnh gọi API.
Resource
Điều chỉnh việc truy cập song song vào tài nguyên chia sẻ bởi nhiều TASK có mức độ ưu tiên khác nhau.
• Tài nguyên chia sẻ bao gồm các khu vực quan trọng như bộ lập lịch, TASK, bộ nhớ, v.v.
• Có hai kiểu: Standard và Internal.
Hook
Là hàm được hệ điều hành (OS) gọi trong các tình huống cụ thể, được sử dụng cho mục đích gỡ lỗi hoặc giám sát đơn giản.
• OSEK OS cung cấp cơ chế Hook để người dùng định nghĩa hành động trong hoạt động nội bộ của OS.
• Cơ chế này được người dùng định nghĩa và được OS gọi, không bị chiếm dụng bởi TASK hoặc CAT2 Interrupt.
• Trong Hook routine, hầu hết các dịch vụ của OS không thể được sử dụng do sự phức tạp của hệ thống.
Các hàm Hook:
• void StartupHook(void): Gọi trước khi lên lịch khi OS khởi động.
• void ShutdownHook(StatusType): Gọi khi OS tắt.
• void PreTaskHook(void): Gọi ngay trước khi TASK chuyển sang trạng thái Running.
• void PostTaskHook(void): Gọi ngay trước khi TASK thoát khỏi trạng thái Running.
• void ErrorHook(StatusType): Gọi khi API của OS không trả về giá trị E_OK.
OS-Application
Tập hợp các đối tượng của hệ điều hành (OS) như TASK, ISR, Alarm, Schedule Table, Counter.

OS-Application
OS-Application

Tất cả các đối tượng thuộc cùng một OS-Application đều có thể truy cập lẫn nhau.

Việc truy cập đối tượng của OS-Application khác yêu cầu phải có quyền và được thiết lập riêng.
OS-Application tương ứng 1:1 với Partition của RTE.
IOC
Được sử dụng để truyền thông giữa các lõi.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây