Ở các bài trước, chúng ta đã khám phá kiến trúc phân lớp của AUTOSAR và cách RTE (Runtime Environment) đóng vai trò là ranh giới rõ ràng giữa Application Software (ASW) và Basic Software (BSW). Trong bài này, chúng ta sẽ đi sâu hơn vào Application Software Layer và trả lời câu hỏi: Layer này thực sự chứa gì, và chúng ta thiết kế nó như thế nào?

Câu trả lời nằm ở Software Component (SW-C) — những khối xây dựng cơ bản của bất kỳ ứng dụng AUTOSAR nào.

I. Software Component Là Gì?

ASW layer trong AUTOSAR được tổ chức thành các đơn vị độc lập gọi là Atomic Software Component Types. Mỗi atomic software component type đại diện cho một phần chức năng cụ thể trong ứng dụng.

Hãy tưởng tượng các software component như những mảnh LEGO: mỗi mảnh làm một việc riêng, và khi ghép lại, chúng tạo thành một hệ thống hoàn chỉnh.

Các software component được chia thành ba nhóm chính:

  • Atomic Software Component Types (7 loại cụ thể — trọng tâm của bài này).
  • Parameter Component.
  • Composition Software Component Type.

II. 7 Loại Atomic Software Component.

2.1 Application Software Component (AppSWC).

Đây là loại component được sử dụng phổ biến nhất. Nó là component tổng quát, dùng để chứa logic chức năng cốt lõi của ứng dụng — như tính toán, ra quyết định, và các thuật toán điều khiển.

Ví dụ thực tế: Hệ thống start/stop tự động. Thuật toán quyết định khi nào tắt máy và khởi động lại động cơ tự động sẽ nằm trong một Application Software Component.

2.2 NV Block Software Component.

Component này được sử dụng khi bạn cần lưu dữ liệu quan trọng vào non-volatile memory (NVM) — bộ nhớ giữ nguyên dữ liệu sau khi mất điện.

Nó hoạt động như một cầu nối giữa application layer và NVM Manager trong BSW.

Ví dụ thực tế: Đồng hồ đo quãng đường (odometer). Tổng số km đã đi phải được lưu vào NVM khi tắt nguồn và phục hồi ở lần khởi động tiếp theo. NV Block SW-C quản lý việc truyền dữ liệu này giữa ứng dụng và NVM Manager.

2.3 Complex Device Driver (CDD)

CDD là component chuyên biệt dành cho các trường hợp truy cập phần cứng yêu cầu thời gian thực — khi việc truyền tín hiệu qua nhiều lớp BSW sẽ gây ra độ trễ không thể chấp nhận được.

Nó cung cấp một đường tắt: ứng dụng có thể gửi lệnh qua RTE trực tiếp đến phần cứng mà không cần đi qua toàn bộ BSW stack.

⚠️ Lưu ý quan trọng: RTE không bao giờ bị bypass. Mọi giao tiếp vẫn phải đi qua RTE, kể cả khi dùng CDD.

Ví dụ thực tế: Kích hoạt túi khí (airbag) hoặc ngắt kim phun nhiên liệu (fuel injector) — những thao tác mà chỉ một mili-giây trễ cũng không thể chấp nhận được.

2.4 Service Component.

Service Component được BSW layer sử dụng để cung cấp các dịch vụ (service) lên application layer. Nó tuân theo các quy tắc đặc biệt — có thể là một phần của system composition và gắn chặt với ECU level.

Ví dụ thực tế: ECU State Manager hoặc Diagnostics Event Manager là các module BSW được mô hình hóa dưới dạng Service Software Component để cung cấp chức năng cho application.

2.5 Service Proxy Component.

Component này phát huy tác dụng trong kiến trúc nhiều ECU. AUTOSAR cho phép các software component được phân bổ động lên các ECU khác nhau trong quá trình cấu hình hệ thống. Nếu một service cần thiết lại nằm trên một ECU khác, Service Proxy Component sẽ xử lý việc truy cập từ xa mà không làm thay đổi cách application sử dụng service đó.

2.6 ECU Abstraction Software Component.

Component này nằm ở giao diện giữa MCAL layer và application layer. Nó được dùng để viết driver cho các ngoại vi (peripheral) bên ngoài kết nối với vi điều khiển — ví dụ H-Bridge IC, power stage IC, và các thiết bị trên bo mạch tương tự.

Bạn có thể có nhiều ECU Abstraction component, mỗi cái cho một ngoại vi bên ngoài.

Ví dụ thực tế: Đọc dữ liệu xung thô từ cảm biến tốc độ kết nối với chân digital I/O.

2.7 Sensor Actuator Software Component.

Component này là Software Component trong AUTOSAR chịu trách nhiệm xử lý giao tiếp với các cảm biến hoặc cơ cấu chấp hành.

Nhiệm vụ của nó:

  • Với sensor: chuyển đổi dữ liệu thô (ví dụ: số xung) thành giá trị kỹ thuật có ý nghĩa (ví dụ: tốc độ km/h).
  • Với actuator: điều phối và điều khiển các cơ cấu chấp hành bên ngoài dựa trên lệnh từ application

III. Parameter Software Component.

Đây là loại component không có chức năng thực thi — không có file C implementation và không đóng góp logic runtime. Mục đích duy nhất của nó là cung cấp các tham số hiệu chỉnh (calibration parameters) cho các software component khác trong dự án.

Các quy tắc đặc biệt:

  • Không có file C — chỉ là cấu hình.
  • Không có Receiver Port — chỉ có Provider Port.
  • Không thể thực hiện bất kỳ chức năng runtime nào.

Ví dụ thực tế: Ngưỡng cường độ ánh sáng để tự động bật đèn pha. Giá trị ngưỡng này được lưu trong Parameter SW-C và có thể tinh chỉnh trong quá trình sản xuất xe mà không cần thay đổi code application.

IV. Composition Software Component.

Hãy nghĩ về đây như một container. Một Composition SW-C nhóm các software component khác (và cả các composition khác) vào một cụm logic theo chức năng.

Đặc điểm chính:

  • Không có file C implementation riêng.
  • Chứa cấu hình của các component bên trong và các kết nối nội bộ (Connector) giữa chúng.
  • Có thể lồng nhau — một composition có thể chứa các composition khác.

V. Software Component Exammple.

Bây giờ hãy áp dụng những gì chúng ta đã học. Giả sử có chúng ta đang cần thiết kế 1 ECU có chức năng như sau:

  • Đọc tốc độ xe từ một cảm biến tốc độ bên ngoài. Nếu tốc độ vượt quá ngưỡng hiệu chỉnh:
    • Ngắt kim phun nhiên liệu (fuel injector) ngay lập tức.
    • Ghi lỗi qua module Diagnostics.
    • Tính toán và lưu tốc độ tối đa đạt được trong chu kỳ lái xe. Khôi phục giá trị này khi ECU được cấp nguồn lần tiếp theo.

Cùng thiết kế kiến trúc software component AUTOSAR cho yêu cầu này, chúng ta sẽ liệt kê các công việc cần làm, với mỗi công việc chúng ta sẽ chọn 1 software component type phù hợp.

Công việc Software Component Type Lý do
Đọc xung thô từ cảm biến tốc độ qua chân digital I/O ECU Abstraction SW-C Giao tiếp với MCAL để đọc xung qua GPIO pin
đổi xung thô thành tốc độ (km/h) Sensor Actuator SW-C Biến dữ liệu sensor thành giá trị sử dụng được cho application
Logic cốt lõi: so sánh tốc độ với ngưỡng Application SW-C Thực hiện quá trình kiểm tra giá trị quy đổi từ sensor và ra quyết định
Giá trị ngưỡng tốc độ cắt — có thể hiệu chỉnh Parameter SW-C Cung cấp calibration có thể tinh chỉnh trong sản xuất
Ngắt injector — yêu cầu thời gian thực Complex Device Driver (CDD) Bỏ qua độ trễ của BSW layering để truy cập phần cứng ngay lập tức
Ghi lỗi diagnostic Service SW-C (Diagnostics Event Manager) Cung cấp dịch vụ diagnostic cho application
Lưu/phục hồi tốc độ tối đa vào/từ NVM NV Block SW-C Kết nối application với NVM Manager trong BSW

VI. Tổng kết.

Mô hình software component của AUTOSAR cung cấp cho các kỹ sư một bộ từ vựng rõ ràng, có cấu trúc để phân tách chức năng ứng dụng. Việc chọn đúng loại component không chỉ là về kiến trúc tốt — nó còn trực tiếp ảnh hưởng đến khả năng tái sử dụng, tính đúng đắn về thời gian, và mức độ tách biệt giữa các vấn đề phần cứng và logic ứng dụng.

Loại Component Mục Đích Chính
Application SW-C Xử lý logic chính của application
NV Block SW-C Lưu trữ dữ liệu non-volatile
Complex Device Driver Truy cập phần cứng trực tiếp cho tình huống time-critical
Service SW-C Cung cấp BSW service cho application
Service Proxy SW-C Truy cập các service giữa các ECU
ECU Abstraction SW-C Driver cho peripheral bên ngoài
Sensor Actuator SW-C Chuyển đổi dữ liệu sensor & điều khiển actuator
Parameter SW-C Tham số hiệu chỉnh
Composition SW-C Nhóm/container logic của các component

Trong bài tiếp theo, chúng ta sẽ đi sâu hơn vào Port và Connector — các cơ chế giao tiếp kết nối tất cả các component này lại với nhau.