0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Khám Phá AUTOSAR: Kiến Trúc Cơ Bản Trong Ngành Ô Tô - Phần 2.1

Đăng vào 3 tuần trước

• 2 phút đọc

Cập Nhật

!Bài viết đang được cập nhật

Trong phần này, chúng ta sẽ đi sâu vào lớp cao nhất trong kiến trúc AUTOSAR, được gọi là Application Layer (ASW).

Bài Toán Thực Tế

Giả sử ta có một bài toán cần giải quyết như sau:

Yêu Cầu

Đọc tốc độ từ cảm biến. Khi tốc độ vượt mức cho phép do một nguyên nhân không mong muốn:

  • Ngay lập tức ngắt quá trình phun nhiên liệu.
  • Ghi lại lỗi để phân tích.
  • Ghi lại tốc độ không mong muốn vừa đạt được vào bộ nhớ không biến thiên (NvM).

Thiết Kế

  • Cần một ECU (Electronic Control Unit) với phần mềm trừu tượng (abstract SW-C) để đọc tín hiệu từ encoder.
  • Nối kết giữa ASW và phần mềm cảm biến (sensor actuator SW-C) để chuyển đổi giá trị vật lý sang giá trị phần mềm (ví dụ: pulse -> km/h -> compumethod).
  • Kết nối với một SW-C (SpdCtl) để tính toán thông tin.
  • Liên kết với một biến calib để chặn lại nếu vượt quá giới hạn của biến đó.
  • Nếu vượt quá giới hạn, thông tin sẽ được chuyển tới CDD (Component Development Document) - phần mềm xử lý nhanh, từ đó ngắt phun nhanh chóng.
  • Cuối cùng, từ SW-C sẽ gửi thông tin lỗi đến DEM (Diagnostic Event Manager) để ghi lỗi và lưu vào NvM, lưu trữ vào bộ nhớ flash.

Mẫu Mã Của Một SW-C

c Copy
#include "Rte_<SWC>.h"

void Runnable() {
    int Speed;
    Speed = Distance / Time;
 
    Std_ReturnType _ASCET_RteStatus;

    Rte_Write_P_Speed_Speed(Speed);
    Rte_Read_R_Speed_Speed(&Speed); // Đọc thẳng vào tham chiếu mà không cần tạo bản sao
}

Std_ReturnType Rte_Call_P_shortname_of_interface(x, y, &sum) {
    sum(x, y, &sum);
    return(RTE_E_OK);
}

Mặc dù gọi là SW-C, nhưng thực tế, các thành phần này thường tập hợp lại theo các cụm chức năng cụ thể, không giống như mỗi thành phần đều hoạt động độc lập.

Cấu Trúc Các SW-C

Ở cấp cao nhất, được coi như nền tảng của các SW-C là TopLvlComposition (Cấu trúc cấp cao nhất). Đây có thể là một trong những chức năng tổng quát nhất trên xe, chẳng hạn như động cơ đốt trong (Combustion Engine - CmbEng).

Tiếp theo là lớp bố của các SW-C, được gọi là Subcompo (Cấu trúc phụ). lớp này vẫn bao bọc các SW-C có chức năng nhỏ hơn, cụ thể hơn.

Các SW-C ở cấp thấp nhất được gọi là Atomic Component (Thành phần nguyên tử), không thể chia nhỏ hơn nữa.

Ví Dụ Về Cấu Trúc

Copy
Veh (TopLvlComposition):  
├──DrAs, ElSS, ThS, VehC, VehM (Atom)  
├──ADAS (Subcompo):  
└─────ADASHR (Atom)  
└─────AdasPred (Atom)

CmbEng (TopLvlComposition):  
ETS (Subcompo):  
├──CoEng, EngStrt, EngM (Atom)  
├──EgSys (Subcompo):  
└─────LamCL (Atom)  
└─────PFlt (Atom)  
└─────ExhMod (Atom)  

Lưu ý: Các thành phần nguyên tử (Atomic component) có thể nằm ở cùng cấp với các cấu trúc phụ (Sub composition), không nhất thiết là chỉ có Subcompo mới có thể chứa các SW-C.

Vậy, bên trong một SW-C có gì? Làm thế nào các SW-C có thể giao tiếp với nhau? Chúng ta sẽ tiếp tục bàn luận trong các phần tiếp theo.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào