AUTOSAR RTE Runtime Environment

Kiến trúc AUTOSAR được phân chia thành ba phần chính
Tầng ứng dụng
Bao gồm các phần mềm ứng dụng cụ thể được phát triển nhằm thực hiện một số chức năng hoặc nhiệm vụ nhất định.
Môi trường Thực thi AUTOSAR (RTE) – RTE đóng vai trò như một lớp trung gian kết nối tầng ứng dụng với tầng phần mềm cơ bản (BSW). RTE đảm nhận việc truyền thông giữa các phần mềm trong tầng ứng dụng (cả giao tiếp nội bộ và giữa các ECU) cũng như giữa tầng ứng dụng và BSW.
Phần mềm Cơ bản (BSW)
Module phần mềm cơ bản (BSW) là một phần mềm đã được chuẩn hóa và cung cấp các dịch vụ đa dạng hỗ trợ cho hoạt động của tầng phần mềm phía trên.
Các module của tầng ứng dụng tương tác với nhau thông qua Bus Chức năng Ảo (VFB). Nói chung, VFB có thể được hiểu là khái niệm về mô hình hệ thống và cách thức truyền thông. Đây là một thực thể logic xác định phương tiện giao tiếp giữa các module ứng dụng trong kiến trúc AUTOSAR.
Môi trường Thực thi AUTOSAR (RTE)

Là phần kết nối quan trọng trong cấu trúc ECU của AUTOSAR. Nó thực thi các giao diện được VFB cung cấp (thực tế nó đảm bảo việc phân bổ bộ nhớ, xác định cổng, v.v.) để tạo điều kiện thuận lợi cho sự tương tác giữa các thành phần phần mềm.
Để dễ hiểu, VFB được triển khai ở cấp ECU nhờ vào RTE. Chúng ta sẽ khám phá vai trò của RTE trong kiến trúc AUTOSAR thông qua một ví dụ về quản lý cửa bên. Tình huống đề xuất là: “nếu cửa bên mở thì cần thông báo cho tài xế rằng cửa bên đang mở.”
Chúng ta có thể giải quyết vấn đề này bằng cách tạo ra hai thành phần phần mềm trên hai ECU khác nhau. Thành phần phần mềm ‘A’ trong ECU 1 sẽ lấy tín hiệu từ cảm biến cửa qua PORT A. Dựa trên tín hiệu thu được từ cảm biến, nó sẽ xác định trạng thái cửa và gửi thông tin này đến thành phần phần mềm ‘B’ qua PORT B. Thành phần phần mềm ‘B’ ở ECU 2 sẽ nhận tín hiệu qua PORT A. Tiếp đó, thành phần phần mềm ‘B’ sẽ Bật (ghi) đèn LED để cảnh báo tài xế nếu cần thông qua PORT B

Giao diện Virtual Function Bus (VFB)
Thiết kế hệ thống cấp cao này được tạo ra bằng cách sử dụng Virtual Function Bus (VFB), và một file XML sẽ được tạo ra bởi một công cụ của nhà sản xuất (OEM). File XML này sẽ chứa tất cả các chi tiết cấu hình và được sử dụng như một tài liệu tham chiếu. Nhà sản xuất (OEM) sẽ chia sẻ file XML (file hệ thống) và cũng xác định phiên bản tiêu chuẩn AUTOSAR (ví dụ, AUTOSAR 4.2) mà phần mềm cần được phát triển theo. Công ty Tier 1 sẽ tải file XML này vào công cụ của họ và trích xuất tất cả thông tin ở cấp độ hệ thống. Sau đó, Tier 1 sẽ hiện thực hóa file hệ thống này vào một ECU thực tế.
Bắt đầu thảo luận về cách thiết kế RTE và trách nhiệm của nó

– Công việc chính đầu tiên của RTE là đọc dữ liệu từ chân đọc (read pin). Để làm điều này, thiết kế của RTE phải bao gồm thông tin về số byte sẽ được truyền và nhận từ chân (PIN), API nào cần được gọi, v.v.
– Phần mềm ứng dụng được phát triển bằng các **runnable**. Runnable là các hàm nhỏ. Giả sử thành phần phần mềm ứng dụng ‘A’ có ba runnable. RTE chịu trách nhiệm thực thi các runnable này theo một thứ tự cụ thể. RTE sẽ xác định thứ tự, cấp phát bộ nhớ và đảm bảo rằng các runnable được thực thi đúng trình tự.
– Hai thành phần phần mềm khác nhau có thể chia sẻ cùng bộ nhớ để tiết kiệm dung lượng bộ nhớ. Điều này cũng được quản lý bởi RTE.
– Hệ điều hành (OS) sẽ chạy độc lập. OS sẽ kích hoạt RTE khi cần thực hiện một tác vụ nào đó. RTE chịu trách nhiệm thực thi tác vụ khi nhận được yêu cầu từ OS.
– RTE cũng có trách nhiệm ước tính thời gian cần thiết để hoàn thành một tác vụ. Nó sẽ lưu trữ thời gian này trong bộ nhớ và tạo một bản sao ở một vị trí bộ nhớ khác. Khi cần, nó sẽ chia sẻ giá trị từ bộ nhớ sao chép mà không làm gián đoạn quá trình thực thi hiện tại. Việc tạo bộ nhớ có thể chia sẻ là một nhiệm vụ quan trọng của RTE.
– RTE cũng đảm bảo rằng dữ liệu được nhận theo đúng thứ tự. Thứ tự byte sẽ được giữ nguyên để đảm bảo tính đáng tin cậy của dữ liệu.
– Phần mềm ứng dụng sẽ chỉ giao tiếp với BSW thông qua RTE. Tuy nhiên, trong những trường hợp đặc biệt khi tốc độ thực thi là rất quan trọng, phần mềm ứng dụng có thể truy cập trực tiếp dữ liệu từ BSW.
Tình huống ví dụ
Khi API **READ** được gọi bởi thành phần phần mềm ứng dụng, RTE sẽ đọc giá trị của cảm biến từ chân I/O của vi điều khiển thông qua BSW. Giá trị của cảm biến sẽ được truyền lại cho phần mềm ứng dụng qua một hàm callback. Logic trong phần mềm ứng dụng A có thể được viết với hai runnable (chúng ta giả định một logic đơn giản để dễ hiểu). **Runnable đầu tiên** sẽ đọc giá trị của cảm biến từ RTE và có thể tính toán thời gian cửa mở. **Runnable thứ hai** trong thành phần phần mềm A sẽ lấy giá trị này từ runnable đầu tiên; nó cũng sẽ truy xuất giá trị cảm biến đã được hiệu chỉnh được lưu trữ trong RTE và so sánh với giá trị nhận được từ runnable đầu tiên. Nếu giá trị này vượt quá một ngưỡng nhất định (giả sử là 3 giây), runnable thứ hai sẽ gửi tín hiệu đến thành phần phần mềm B ở ECU khác để cảnh báo người lái rằng cửa xe đang mở. Tín hiệu này sẽ được gửi qua **cổng B của ECU 1**.
RTE lúc này sẽ đọc cổng B và gọi ngăn xếp giao tiếp (communication stack). Nếu dữ liệu là một tín hiệu định kỳ, ngăn xếp giao tiếp sẽ đọc dữ liệu từ bộ đệm theo chu kỳ. Nếu là dữ liệu kích hoạt theo yêu cầu, RTE sẽ thông báo cho ngăn xếp giao tiếp khi có kích hoạt. Dữ liệu trong bộ đệm sẽ tồn tại dưới dạng **Programmable Data Units (PDU)**. Ngăn xếp giao tiếp sẽ chuyển đổi thành khung CAN hoặc khung FLEXRAY tùy theo cấu hình và gửi dữ liệu đến ECU thứ hai qua giao diện/bus.
**Logic ngược lại** sẽ được áp dụng ở ECU thứ hai để giải mã dữ liệu và kích hoạt đèn LED.
Cần lưu ý rằng tất cả các thành phần đang chạy độc lập. RTE chịu trách nhiệm quản lý bộ nhớ và căn chỉnh, phân phối dữ liệu, và đồng bộ hóa thời gian thực.
Xem thêm :
Lớp RTE trong AUTOSAR (VFB, Môi trường Thời gian chạy, Giao diện Truyền thông)





