🌱 AUTOSAR ECU Configuration Class
Như ở những bài viết trước, mình đã bàn luận khá nhiều về khái niệm Configuration - Cấu hình các tham số cho project ECU trong AUTOSAR. Mình tóm tắt lại một chút, việc cấu hình các tham số có thể được user triển khai thông qua các phần mềm chuyên dụng - sau đó generate từ giao diện ra các đoạn code (.c).
Một ví dụ về việc định cấu hình bằng giao diện ➤ MPU GUI APP
Các phần code sau khi generate ra, có thể được sử dụng ở nhiều thời điểm khác nhau, từ đó sinh ra nhiều kiểu cấu hình khác nhau. Theo AUTOSAR, chúng ta có 3 loại:
- Pre-Compile Time
- Link Time
- Post-Build Time
👉 Pre-Compile Time
Loại cấu hình này là một cấu hình độc lập được thực hiện trước khi biên dịch mã nguồn. Điều này có nghĩa là giá trị của các yếu tố có thể cấu hình được được chọn trước khi biên dịch và sẽ có hiệu lực sau thời gian biên dịch.
Quá trình Pre-Compile sẽ có đầu vào là file config (định dạng .xml như đã giới thiệu ở bài viết trước, và thường được user cấu hình bằng các giao diện), đầu ra sẽ là các file source code (với định dạng tên file <module>_Cfg.c / <module>_Cfg.h), ở phase này, các thành phần cấu hình sẽ được thay thế bằng các macro.
- Ưu điểm: Rút ngắn thời gian Runtime.
- Nhược điểm: Dễ thấy mỗi khi user thay đổi cấu hình, họ sẽ cần generate lại source code và sau đó là compile lại phần mềm.
🔻 Ví dụ về Pre-Compile,
Config trên giao diện user |
Ví dụ trên đây là một giao diện cấu hình cho MPU module mà mình đã giới thiệu tại bài viết và video này. User có thể cấu hình trên giao diện như trên để cấu hình cho MPU, ví dụ node checkbox "Enable MemManage Handler" dùng để bật tắt việc sử dụng MemManage Handler ISR.
Đoạn code được generate trong quá trình Pre-Compile,
👉 Link Time
Linking Time đã quá quen thuộc với các bạn học lập trình C, nó là một phần của quá trình Build Process.
👉 Post-Build Time
- Dữ liệu cấu hình của ECU cần được thống nhất, chẳng hạn như các thông số hiệu chuẩn và hiệu chỉnh sau khi dây chuyền sản xuất hoàn thành (Các thông số này không được biến trước trong giai đoạn phát triển, do các máy có khác biệt về phần cứng, và thông số kỹ thuật), hoặc số seri, cấu hình phiên bản của từng máy khác nhau.
- Khả năng tái sử dụng của ECU trên các phiên bản ô tô khác nhau. Ví dụ so với ô tô hạng sang thì ECU của ô tô cấp thấp sẽ truyền dữ liệu trên các đường bus ít hơn, các cấu hình khác thì đều giống nhau.
Ngay cả khi không có Compiler, một số tham số cấu hình cho BSW có thể được sửa đổi. Dưới đây là Post-Build Flow được cung cấp bởi hãng Vector, Post-Build Time được chỉnh sửa sau khi binary được tạo ra ở quá trình Linking.
Post-Build Flow |
- OEM (Original Equipment Manufacturer): OEM là một công ty sản xuất thiết bị hoặc linh kiện gốc, được sử dụng bởi các nhà sản xuất lớn để lắp ráp và tạo ra sản phẩm cuối cùng. Trong ngành ô tô, OEM thường là các nhà sản xuất xe hơi hàng đầu như Toyota, Ford, Honda, v.v. Các OEM thiết kế và phát triển xe hơi, sau đó họ mua các linh kiện từ các nhà cung cấp khác (bao gồm TIER1) để lắp ráp thành sản phẩm cuối cùng.
- TIER1: TIER1 là các nhà cung cấp hàng đầu cho các nhà sản xuất ô tô (OEM). Chúng cung cấp các linh kiện, hệ thống và giải pháp công nghệ cho OEM để sử dụng trong việc sản xuất và lắp ráp xe hơi. Các TIER1 thường là các công ty lớn và có khả năng sản xuất hàng loạt linh kiện và hệ thống phức tạp như động cơ, hộp số, hệ thống lái, hệ thống điều khiển, v.v. Các TIER1 thường có quan hệ chặt chẽ với các OEM và thường được liên kết với việc phát triển và thiết kế các sản phẩm mới.
➜ TIER 1 cấu hình thông qua 2 tools của Vector, Davinci Developer và Davinci Configurator Pro. Sau khi phát triển, họ sử dụng compiler để build và tạo ra HEX file.
➜ OEM có thể sử dụng Davinci Configurator để thay đổi một phần của cấu hình phần mềm, sau đó generate ra file binary thông qua Post-Build Tool, và update cấu hình của ECU một các độc lập.
➜ Sự khác nhau giữa TIER1 và OEM là ở chỗ OEM không yêu cầu một Compiler, và có thể chỉ cần cấu hình một số tham số.
Post-Build được chia thành 2 loại:
- Post-Build Loadable: Chỉ có một bản sao của các tham số cấu hình, được lưu trữ riêng biệt trong một vùng nhớ cố định trên FLASH. Các tham số cấu hình có thể được chỉnh sửa và cập nhật độc lập bằng cách nạp lại Binary.
- Post-Build Selectable: Một số bản sao của các tham số cấu hình được định cấu hình trước và được đặt trong một vùng nhớ cố định trên FLASH. Không thể thay đổi cấu hình các tham số (const) và chỉ có thể chọn một cấu hình từ tập các cấu hình có sẵn để sử dụng.
🔻 Ví dụ sử dụng Post-Build Selectable, từ giao diện cấu hình ta có thể tạo ra 3 bộ config VS_0/1/2, và sau đó có thể sử dụng cho hàm MPU_Init tại từng thời điểm runtime khác nhau. Các bộ config này đều được đặt const để đảm bảo không thể bị thay đổi.
👉 Sự khác nhau giữa các Configuration Class
🔻 Khác biệt về mặt thời gian
- Pre-Compile được thực hiện cấu hình trước quá trình Compile, tác động vào quá trình Pre-Processing.
- Link Time được cấu hình trong thời gian Linking
- Post-Build yêu cầu chỉnh sửa các tham số sau khi quá trình build process (compile và linking) đã hoàn tất.
Khác biệt về thời gian thực hiện các Configuration Time |
🔻 Ảnh hưởng sau khi user muốn thay đổi cấu hình
- Đối với Pre-Compile Time, mỗi khi user thay đổi cấu hình, họ sẽ cần generate lại source code và sau đó là compile lại phần mềm.
- Tương tự, sau quá trình Link Time hoàn tất, việc sửa đổi các tham số riêng lẻ không được hỗ trợ. Để chỉnh sửa các tham số cấu hình, chúng ta cần sửa source code ⟶ Compile và Link lại.
- Trong khi đó, Post-Build hỗ trợ khả năng chỉnh sửa tham số một cách độc lập, khi muốn thay đổi các tham số, chương trình sẽ không cần compile lại toàn bộ, mà chỉ cần compile lại bộ tham số, và nạp xuống độc lập bằng các tool hỗ trợ.
➤ Trên đây là một số chia sẻ / tìm hiểu của mình về Configuration Class trong AUTOSAR, các bạn nên tìm hiểu chi tiết hơn trong các Requirement của AUTOSAR tại đây!
>>>= Follow ngay =<<<
Anh giới thiệu các phần mềm Free để thực hành làm AUTOSAR đi anh
Trả lờiXóaAnh sẽ làm video giới thiệu trên youtube nhé
Xóa