- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc để đời ngành Automotive - Phần 2

0 0 1

Người đăng: Hoang Nguyen Tan Dung

Theo Viblo Asia

Updating

Trong bài viết này, ta cùng tìm hiểu kỹ hơn về lớp trên cùng của kiến trúc, chính là lớp Application Layer (ASW).

Ví dụ, ta có một bài toán thực tế như sau:

Requirement

Đọc tốc độ từ cảm biến. Nếu tốc độ vượt quá ngưỡng cho phép vì một lý do không mong muốn:

  • Lập tức ngắt đầu phun.
  • Log lại lỗi để analyze.
  • Log lại tốc độ không mong muốn vừa đạt được vào bộ nhớ NvM (Non-volatile memory).

Design

  • cần 1 ecu abstract sw-c để đọc xung từ encoder.
  • Nối ngược lên trên ASW, nối với cục sensor actuator sw-c, đổi physical value sang software value (pulse -> km/h -> compumethod).
  • nối với 1 cục SW-C (SpdCtl) để tính toán.thông tin
  • nối với 1 biến calib để chặn lại nếu vượt max của biến đó.
  • nếu vượt max, nối với CDD (mấy vụ vượt mất kiểm soát như này sẽ được CDD chặn đầu ngay vì tính nhanh gọn của nó do được bỏ qua một mớ macro của AUTOSAR), từ đó ngắt đầu phun (injector) nhanh chóng.
  • từ cục sw-c nối với DEM để log lỗi, log vào trong NvM, NvM lưu vào flash.

Bên trong file .c của một SW-C:

#include "Rte_<SWC>.h" void Runnable() { int Speed; Speed = Distance/Time; Std_ReturnType _ASCET_RteStatus; // Rte_shortname_of_port_shortname_of_interface(Speed);  Rte_Write_P_Speed_Speed(Speed); // hoặc Rte_Read_R_Speed_Speed(&Speed); // đọc thẳng vào tham chiếu của biến mà không tạo ra bản copy // vừa tiết kiệm thời gian, vừa tiết kiệm bộ nhớ Rte_Call_<RPort>_<CSOperation>();
} Std_ReturnType Rte_Call_P_shortname_of_interface(x, y, &sum) { sum(x, y, &sum); return(RTE_E_OK);
}

Gọi là SW-C như thế, nhưng thực chất, các cháu này ngồi tụ lại với nhau theo từng cụm chức năng cụ thể, chứ không phải mỗi thằng lang thang một nơi.

Ở vai vế cao nhất, được coi là ông nội của các SW-C, ta có TopLvlComposition (Top level composition). Có thể nhìn thấy như một trong các chức năng general nhất trên xe, ví dụ như Combustion Engine (CmbEng).

Tiếp theo sẽ là bố của các SW-C, ta có Subcompo (Sub composition), tương tự, vẫn bao bọc các SW-C có chức năng nhỏ hơn, cụ thể hơn.

Với các SW-C có level thấp nhất, được xếp vào hàng cháu chắt, không thể chia nhỏ hơn được nữa, sẽ được gọi là Atomic Component.

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)

Để ý sẽ thấy, các Atomic component có thể nằm cùng level với các Sub composition, không nhất thiết Subcompo mới phải nằm cùng với Subcompo,

Vậy, bên trong một SW-C có gì ? Vậy, các SW-C trò chuyện với nhau như thế nào ?

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc tiêu chuẩn ngành Automotive

Giới thiệu. AUTOSAR có vẻ khá xa lạ đối với người làm về công nghệ thông tin, nhưng đối với những bạn làm về Embedded System, đặc biệt là trong lĩnh vực Automotive, thì cũng.

0 0 7

- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc tiêu chuẩn ngành Automotive

Giới thiệu. AUTOSAR có vẻ khá xa lạ đối với người làm về công nghệ thông tin, nhưng đối với những bạn làm về Embedded System, đặc biệt là trong lĩnh vực Automotive, thì cũng.

0 0 7

- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc tiêu chuẩn ngành Automotive

Giới thiệu. AUTOSAR có vẻ khá xa lạ đối với người làm về công nghệ thông tin, nhưng đối với những bạn làm về Embedded System, đặc biệt là trong lĩnh vực Automotive, thì cũng.

0 0 7

- vừa được xem lúc

Từ khoá volatile trong lập trình C

Trong lập trình nhúng chắc hẵn bạn đã từng gặp phải tình huống khi chương trình C của bạn cho ra kết quả không đúng, mặc dù mã code có vẻ đúng? Một nguyên nhân có thể gây ra vấn đề này là việc tối ưu

0 0 9

- vừa được xem lúc

Lợi ích templates .gitignore trong dự án

Mở đầu. Gitignore là một file trong các dự án Git, nó chứa danh sách các tệp và thư mục mà bạn muốn Git bỏ qua (không theo dõi) khi bạn thực hiện các thao tác như git add hoặc git commit.

0 0 5

- vừa được xem lúc

Deploy ELK Stack với Docker

Hello các bạn lại là mình đây Chúc các bạn có kì nghỉ 30/4-1/5 vui vẻ và an toàn . Tiếp tục series học Docker và CICD của mình, hôm nay ta sẽ cùng nhau làm một bài "tàu nhanh" setup ELK Stack bao gồm

0 0 3