AUTOSAR COM STACK TRONG AUTOMOTIVE SYSTEM
Giới thiệu

Dựa vào hình 1,sẽ có hai flow cho việc quản lý dữ liệu và tác vụ truyền nhận cho ECU trên vehicledựa trên tiêu chuẩn AUTOSAR với hướng 1 đi từ Driver -> If lên Autosar COM và hướng thứ 2 đi từ Driver -> If lên Communication manager.Trong phần này chúng ta sẽ tập trung vào hướng 1 với việc nhận và truyền dữ liệu qua các lớp comstack.
Qúa trình truyền:
1.Trigger từ lớp application, lớp application sẽ cung cấp các giá trị cho các signal và group signal.
2. Lớp Autosar COM tiếp tục đóng gói các signal và group signal vào 1 payload của I-PDU.
3. Lớp Autosar COM chuyển I-PDU này đến PDU Router.
4. Lớp TP sau đó sẽ chuyển xuống cho các lớp thấp hơn (CanIf, FrIf) để tạo thành 1 L-PDU và gửi đi trên lớp vật lý.
Qúa trình nhận:
1.
Gía trị được nhận từ Can Bus.
2. Qua các lớp filter từ hardware từ lớp Can IF và Can driver để lấy Can ID mong muốn.
3. Sau đó được phân đoạn và sẽ được quản lý truyền nhận theo frame trên thời gian ở CanTP.
4. Từ lớp TP, I-PDU sẽ được nhận vào PDU Router và truyền lên cho Autosar COM.
5. Rất nhiều hoạt động sẽ được xảy ra ở lớp Autosar COM và sau đó giá trị đưa về lớp nhận được về application.
Như vậy việc truyền nhận message/signal sẽ dựa vào hướng thứ 1. Mặt khác hướng thứ 2 sẽ quản lý các message liện quan đến quá trình sleep mode của ECU. Nó sẽ quản lý và điều khiển các cụm network liên kết tới các signal hay group signal, cho phép ECU giao tiếp với network với một số các điều kiện cụ thể trong cơ chế tiết kiệm năng lượng. Đồng thời hướng thứ 2 cũng sẽ quản lý cấu hình NM message.
I. Các thành phần cấu tạo nên I-PDU

1. Signal
Một signal (trong tài liệu autosar thường hay gọi là message) là 1 đơn vị nhỏ nhất. Nó đại diện cho một mẩu dữ liệu cụ thể như nhiệt độ động cơ, tốc độ xe, hoặc trạng thái của 1 công tắc. Trong tài liệu Autosar thuật ngữ message được thay thế bằng signal [1], nên khi thấy message trong bài này là thực chất đang đề cập đến 1 signal.
2.Group signal
Một signal group là 1 tập hợp các signal có liên quan và phải luôn được giữ cùng nhau để đảm bảo tính nhất quán của dữ liệu. Ví dụ có 3 signal về Day, Month, Year. Nếu các signal này được gửi riêng lẻ bạn có thể nhận được giá trị không đồng nhất-Day với giá trị mới,nhưng Month and Year với giá trị cũ dẫn đến dữ liệu ko hợp lệ. Bằng cách nhóm chúng vào một signal group, AUTOSAR đảm bảo rằng tất cả các thành phần của Day, Month, Year được truyền đi như một đơn vị nguyên tử.
Để làm được điều này Autosar COM sử dụng một cơ chế gọi là “shadow buffer”. Khi application cập nhât các signal riêng lẻ trong một nhóm, chúng chỉ ghi vào bộ đệm tạm thời (shodow buffer). Chỉ khi có lện gửi toàn bộ signal group, dữ liệu từ shadow buffer mới được sao chép một cách nguyên tử vào I-PDU để truyền đi.
3.Vai trò của I-PDU trong quá trình truyền và nhận
I-PDU là một khối dữ liệu được module COM lắp ráp (để gửi) hoặc thóa dỡ (để nhận). Nó bao gồm 1 hoặc nhiều signal (hoặc group signal). I-PDU là 1 container hay “phong bì” để chứa các signal. I-PDU định nghĩa cách các signal được sắp xếp và đóng gói lại với nhau để chuẩn bị cho việc truyền đi hay nhận lại.
- Signal / Group signal là nội dụng bạn viết trên tờ giấy.
- I-PDU chính là cái phong bì bạn bỏ tờ giấy đó vào hoặc nhận được.
Khi module COM nhận được các giá trị signal từ lớp application, nó sẽ đặt các signal hay signal group này vào các vị trí đã được cấu hình sẵn bên trong phong bì I-PDU.
II. Phân tích với Truyền dữ liệu (Tx)
Như vậy chúng ta sẽ có câu hỏi rằng “Các chu kỳ của signal khác nhau thì làm sao có thể đóng gói chung 1 signal group”?
Trong Autosar, nó sẽ tách biệt việc cập nhật giá trị của 1 signal với việc truyền đi I-PDU chứa nó. Điều đó dẫn đến các signal riêng lẻ ko có chu kỳ riêng thay vào đó, toàn bộ I-PDU mới là thừ có chu kỳ truyền
ComTxMode: Chế độ truyền của PDU
- PERIODIC: I-PDU được gửi theo 1 chu kỳ cố định, bất kể giá trị của các signal bên trong co thay đổi hay không?
- DIRECT: I-PDU được gửi ngay lăp tức (event-triggered) khi có một sự kiện nhất định xảy ra traong lớp Autosar COM
- MIXED: Kết hợp cả hai. Gửi theo chu kỳ hoặc gửi đi khi có sự kiện
ComTransferProperty :Đối với signal thuộc tính truyền là
- PENDING: Khi giá trị của một signal có thuộc tính này được cập nhật, nó chỉ được ghi vào bộ đệm (I-PDU buffer hoặc shadow buffer). Việc cập nhật này không tự động kích hoạt việc truyền I-PDU. I-PDU sẽ chỉ được gửi đi khi đến chu kỳ PERIODIC của nó, hoặc khi một signal khác có thuộc tính TRIGGERED được cập nhật.
- TRIGGERED: Khi giá trị của một signal có thuộc tính này được cập nhật, nó sẽ kích hoạt việc truyền I-PDU ngay lập tức (nếu I-PDU có chế độ DIRECT hoặc MIXED).
- TRIGGERED_ON_CHANGE: Tương tự như TRIGGERED, nhưng chỉ kích hoạt truyền nếu giá trị mới của signal khác với giá trị cũ.
VD1 VD2 VD3 (Signal pending onc hange)
So sánh Pending và Triggered
III. Phân tích với Nhận dữ liệu (Rx)
Quy trình nhận 1 bản tin từ phần cứng lên tới Apllication đi qua các tầng trình tự như sau:
- Hardware và Driver (CanDrv): Khi CAN controller nhận được tín hiệu điện áp, nó tạo ra 1 ngắt hoặc được polling bởi driver. CanDriver đọc dữ liệu thô và gọi hàm CanIf_RxIndication.
- Interface (CanIf): CanIf trừu tượng hóa phần cứng, xác định PDU ID và gọi PduR_RxIndication.
- PDU Router (PduR): Đóng vai trò định tuyến. Dựa trên Routing Table, nó chuyển tiếp PDU tới module đích (thường là COM cho tín hiệu ứng dụng) bằng cách gọi Com_RxIndication(như mô tả trong Specification of PDU Router, Figure 9.1).
- COM Module: Tại đây, Com_RxIndication sẽ xử lý PDU:
o Giải nén (unpack) các Signal hoặc Signal Group từ PDU.
o Thực hiện lọc (Filtering), kiểm tra Update-bit.
o Chuyển đổi Endianness.
o Lưu dữ liệu vào bộ đệm nội bộ (Internal Buffer) của COM.
o Nếu được cấu hình, COM sẽ thông báo cho RTE (ví dụ kích hoạt sự kiện) (theo Specification of Communication, Chapter 7.12). - RTE & Application: RTE cung cấp API để Application đọc dữ liệu từ bộ đệm của COM hoặc bộ đệm riêng của RTE.
Khi Application gọi hàm Receive data thì điều gì xảy ra?
Khi Application gọi hàm (ví dụ Rte_Read_
_<Element>), dữ liệu KHÔNG được truyền trực tiếp từ bus ngay tại thời điểm đó.
- Cơ chế: Application đọc dữ liệu từ bộ đệm (Buffer).
o Dữ liệu trên bus là không đồng bộ (Asynchronous) với chu kỳ chạy của Application.
o Khi Rte_Readđược gọi, nó chỉ đơn giản là truy cập vào vùng nhớ (biến) nơi mà module COM (hoặc RTE) đã lưu giá trị mới nhất nhận được trước đó. - Tại sao: Việc này đảm bảo tính toàn vẹn dữ liệu (Data Consistency) và tách biệt thời gian thực (Decoupling) giữa tốc độ truyền thông (Bus timing) và tốc độ xử lý của chip (CPU timing).
Time out của Rx message và quy trình Callback
Trong AUTOSAR, việc giám sát Timeout được thực hiện bởi module COM, gọi là Reception Deadline Monitoring.
-
Cơ chế: COM sử dụng một bộ đếm thời gian (Timer) cho mỗi Signal/Signal Group hoặc I-PDU. Timer này được reset mỗi khi nhận được Com_RxIndicationthành công
-
Khi bị Timeout (Timer hết hạn):
-
- Xử lý dữ liệu: COM sẽ thực hiện hành động dựa trên cấu hình ComRxDataTimeoutAction:
REPLACE: Thay thế giá trị hiện tại bằng giá trị khởi tạo (ComSignalInitValue).
SUBSTITUTE: Thay thế bằng giá trị thay thế (ComTimeoutSubstitutionValue).
NONE: Giữ nguyên giá trị cũ cuối cùng nhận được
- Xử lý dữ liệu: COM sẽ thực hiện hành động dựa trên cấu hình ComRxDataTimeoutAction:
-
- Gọi Callback: COM sẽ gọi hàm callback thông báo lỗi tới lớp trên (RTE). Hàm này thường có tên dạng <ComUser_CbkRxTOut>(được cấu hình trong ComUserCallback).
-
Phía Application
o Khi nhận được thông báo từ COM (qua ComUser_CbkRxTOut), RTE có thể kích hoạt một sự kiện "Data Element Outdated" tới Software Component.
o Application có thể nhận biết Timeout thông qua việc kiểm tra trạng thái trả về của API (nếu dùng Rte_Receive) hoặc cờ trạng thái (Status Flag) nếu được thiết kế, hoặc đơn giản là nhận được giá trị Init/Substitute mà không hay biết đó là do Timeout (nếu dùng Rte_Readthông thường)
SW ARCHITECT
Dưới đây là sơ đồ mô tả mối quan hệ giữa 3 sự kiện: Nhận PDU (Com_RxIndication), Xử lý Timeout (ComTimeout), và Application đọc dữ liệu (Com_ReceiveSignal/Rte_Read).
Ba quá trình này chạy không đồng bộ (Asynchronous). Application chỉ đọc kết quả cuối cùng nằm trong bộ đệm (Buffer).
Sơ đồ 1: Architect xử lý khi PDU đến nhưng Update Bit = 0 (Dẫn đến Timeout)

Sơ đồ 2: Architect khi Application gọi hàm đọc (Com_ReceiveSignal)

Cơ chế hoạt động của Update bit tương tác với một ECU trong network

All rights reserved