ThoNV

Chutsinivesoss15@gmail.com

Số điện thoại: 0338686180

Youtube: Link ở đây

Facebook: Link ở đây

Điều Kiện BAN ĐẦU


Người đọc đọc phần này và sử dụng AUTOSAR phải có kiến ​​thức về Hệ thống nhúng, lập trình C, Kiến trúc phân lớp, kiến ​​thức về các giao thức truyền thông như CAN, I2C, v.v. AUTOSAR là giai đoạn nâng cao của Hệ thống nhúng nên người đọc cần có kiến ​​thức về các thuật ngữ nêu trên.

AUTOSAR là viết tắt của AUT omotive O pen S ystem AR chitecture, là một kiến ​​trúc nhiều lớp với các thông số kỹ thuật tiêu chuẩn được thành lập bởi tập đoàn gồm các công ty như BMW Group, BOSCH , Continental , Daimler , Ford , General Motors , PSA Group , Toyota và VOLKSWAGEN . Đây là những thành viên cốt lõi của quan hệ đối tác AUTOSAR, người đã thành lập AUTOSAR. Có nhiều loại tư cách thành viên khác nhau mà một thực thể có thể đóng góp cho sự phát triển của AUTOSAR, đó là Thành viên cốt lõi, Thành viên cao cấp, Thành viên phát triển. Tôi đã liệt kê ở trên các thành viên Cốt lõi nhưng có nhiều thành viên cao cấp đang tham gia phát triển công cụ, nhà cung cấp dịch vụ, v.v. AUTOSAR nhằm tiêu chuẩn hóa việc phát triển phần mềm của ECU được sử dụng trong các ứng dụng ô tô.

AUTOSAR đã triển khai kiến ​​trúc phân lớp tương tự như mô hình OSI. Nó có các lớp khác nhau để xử lý và trừu tượng hóa các hoạt động khác nhau của code . AUTOSAR được sử dụng cho các bộ điều khiển vi mô hướng đến các ứng dụng chủ yếu trong không gian ô tô sử dụng CAN, Flex Ray, Ethernet, v.v. Được sử dụng trong các ứng dụng dựa trên micro controllers, nó được phát triển với mục đích sử dụng ít bộ nhớ nhất có thể do micro controllers có các hạn chế về tài nguyên.



Hình trên là một kiến ​​trúc phân lớp AUTOSAR được đơn giản hóa. Nó được gọi là đơn giản hóa vì cũng có các lớp sâu trong mỗi khối. Tôi sẽ nói ngắn gọn dưới đây về các lớp:

+ Application Layer: Lớp này có code ứng dụng nằm ở trên cùng. Nó có thể có các khối ứng dụng khác nhau được gọi là Software Components(SWC) cho từng tính năng mà ECU cần hỗ trợ tùy theo ứng dụng. Ví dụ, các chức năng như cửa sổ điện và đo nhiệt độ sẽ có SWC riêng biệt. Đây không phải là một tiêu chuẩn, mà nó phụ thuộc vào Nhà thiết kế.

+ AUTOSAR RTE: Đây là một trong những lớp quan trọng của AUTOSAR, nó cung cấp thông tin liên lạc giữa các SWC khác nhau và cả giữa các ECU. Lớp Application Layer sử dụng lớp này trong khi giao tiếp với các lớp khác bên dưới bằng các ports . Để biết thêm thông tin về RTE, bạn tham khảo ở link này

+ Services Layer: Lớp này cung cấp các dịch vụ khác nhau cho ứng dụng sử dụng. Các dịch vụ như: System Services, Memory Services, Crypto Services, Off board communication services, Communication services.

+ ECU Abstraction Layer: Lớp này cung cấp các tóm tắt liên quan đến ECU. Nó chứa các lớp trừu tượng khác nhau như lớp I/O Hardware Abstraction layer, On board device abstraction, Memory hardware Abstraction, Crypto hardware abstraction, v.v. để làm cho applications hardware trở nên độc lập.

Lý Do Có Autosar




Dưới đây là những vấn đề gặp phải trong cách viết phần mềm thông thường cho ECU:

+ Hệ thống nhúng là một lĩnh vực rộng lớn có vô số nhà sản xuất chất bán dẫn, nền tảng phần cứng và phần mềm có thể được lựa chọn dựa trên yêu cầu của ứng dụng. Do sự đa dạng như vậy, nỗ lực phát triển rất khó khăn và tính di động của code khó, điều này làm tăng thêm chi phí phát triển.
+ Ô tô là một cỗ máy phức tạp bao gồm n số hệ thống nhúng nhỏ được gọi là Bộ điều khiển điện tử (ECU) nên việc bảo trì và phát triển code cho các bộ điều khiển đó là không dễ dàng. Độ phức tạp hơn nữa sẽ tăng lên nếu các ECU khác nhau sử dụng các MCU khác nhau để đáp ứng các yêu cầu về chi phí, khi đó mỗi ECU sẽ có phần mềm khác nhau vì nền tảng phần cứng sẽ khác nhau.
+ Để chuẩn hóa một phần mọi thứ, đôi khi cũng cần phải phát triển và tuân theo tiêu chuẩn được tạo tùy chỉnh ( Tiêu chuẩn tùy chỉnh có nghĩa là phát triển một giao thức liên lạc được tất cả các ECU trong mạng đồng ý ) để liên lạc với các ECU khác. Đây là cách viết phần mềm thông thường rất khó bảo trì và rất ít khả năng chuyển code hoặc khả năng tái sử dụng.
+Một chiếc ô tô có n bộ phận được sản xuất bởi các công ty khác nhau được gọi là công ty cấp 1 cung cấp phụ tùng cho các OEM như BMW, Volkswagen, v.v. Ngày nay, hầu hết các bộ phận cơ khí đều trở nên thông minh hơn bằng cách thêm ECU vào để tăng khả năng kiểm soát và hiệu quả. Vì vậy, những ECU đó cũng cần phải có một cách giao tiếp chung để giao tiếp với ECU của OEM vì điều này một lần nữa, một tiêu chuẩn tùy chỉnh cần được triển khai và duy trì.

Do đó, cần có một cơ sở hạ tầng phát triển phần mềm được tiêu chuẩn hóa để giải quyết những vấn đề này và AUTOSAR giải quyết vấn đề này rất tốt.

AUTOSAR sử dụng kiến ​​trúc phân lớp có các lớp khác nhau dành riêng để thực hiện các hoạt động và trừu tượng hóa khác nhau. code ứng dụng hoàn toàn có thể di động vì AUTOSAR được thiết kế theo cách code ứng dụng được viết độc lập với phần cứng để cùng một code ứng dụng có thể chạy trên các nền tảng phần cứng khác nhau. AUTOSAR có một lớp dành riêng để hỗ trợ các chức năng phần cứng được gọi là lớp MCAL (Trừu tượng hóa bộ điều khiển vi mô) có trình điều khiển để truy cập các thiết bị ngoại vi phần cứng cơ bản của MCU. Vì AUTOSAR cung cấp cách tiêu chuẩn về giao tiếp, các ECU có thể giao tiếp với nhau bất kể nhà phát triển ECU (dù là OEM hay Cấp 1) và do đó không cần phải duy trì tiêu chuẩn giao tiếp tùy chỉnh. Các ECU sử dụng AUTOSAR có thể giao tiếp với nhau bất kể sự khác biệt cơ bản về phần cứng. Hầu hết các nhà sản xuất chip đều cung cấp lớp MCAL của AUTOSAR, nhưng nếu họ không cung cấp thì nhà phát triển cần phải viết lớp MCAL của riêng mình hoặc thuê ngoài các công ty cung cấp dịch vụ đó.

Đây không phải là một hạn chế vì AUTOSAR đã triển khai tất cả các trình điều khiển và lớp rồi sao?

Trên thực tế, đó không phải là một hạn chế bởi vì, trong thế giới có nhịp độ nhanh ngày nay, có những thời hạn nghiêm ngặt phải đáp ứng để hoàn thành dự án. Nhưng xem xét các vấn đề được chia sẻ ở trên trong thiết kế phần mềm thông thường, không thể phát triển phần mềm nhanh chóng để đáp ứng nhu cầu, vì vậy AUTOSAR rất hữu ích. Mặc dù AUTOSAR dường như đã triển khai mọi thứ, nhưng chúng tôi phải viết code theo cách thủ công cho chức năng của SWC trong Runnable của SWC.

Nếu minh đang sử dụng thiết bị ngoại vi bên ngoài mà AUTOSAR không hỗ trợ thì sao?

Nếu bạn đang sử dụng thiết bị không được AUTOSAR hỗ trợ thì bạn có thể sử dụng Complex Device Drivers SWC cho thiết bị đó. Lớp này cho phép bạn truy cập trực tiếp vào lớp MCAL từ ứng dụng và bạn có thể giao tiếp trực tiếp thiết bị với ECU, nhưng bạn cần tự phát triển phần mềm của nó và do phụ thuộc nhiều vào phần cứng nên nó không thể tái sử dụng hoặc di động như SWC.

Các Loại AUTOSAR
Có hai loại kiến ​​trúc AUTOSAR được đặt tên là Classic và Adaptive . Phiên bản cổ điển có tất cả các mô-đun thường cần cho một ứng dụng trong khi phiên bản Thích ứng có thể được định cấu hình và điều chỉnh theo ứng dụng bằng cách loại bỏ các mô-đun không cần thiết. Phiên bản phát hành Classic hiện tại là 4.4.0 và phiên bản Adaptive hiện tại là 19.03

Các Hình Ảnh Liên Quan











Quy Trình




AUTOSAR có vẻ khó khăn đối với các nhà phát triển mới, nên phần này sẽ là Bắt Đầu Với Dự Án Dựa Trên AUTOSAR

AUTOSAR đã phát triển một kiến ​​trúc phân lớp có các thông số kỹ thuật tiêu chuẩn và phần mềm cho ECU dựa trên AUTOSAR được phát triển bằng cách tuân thủ các thông số kỹ thuật đó. Phần mềm có thể được phát triển bởi các nhà phát triển phần mềm hoặc code có thể được tạo bằng cách sử dụng các phần mềm cấu hình ECU khác nhau như Vector's DaVinci Configurator and Developer , K-SAR , v.v. Phần mềm này dành cho các nhà phát triển rất cao cấp, bạn có thể tạo code bằng cách định cấu hình các yêu cầu ứng dụng trong phần mềm có GUI và sau đó code ứng dụng có thể được tích hợp trong code được tạo đó. Bài viết này sẽ giúp tìm hiểu quy trình cấu hình ECU dựa trên AUTOSAR.

Lưu ý rằng bài viết này sẽ không cung cấp các bước chi tiết, nhưng một cái nhìn trừu tượng về quy trình sẽ hữu ích cho người mới bắt đầu.
Nhóm tất cả các ECU và toàn bộ mạng trong ô tô được gọi là Hệ thống và trước tiên Hệ thống được định cấu hình, sau đó từng ECU của hệ thống đó được định cấu hình.




Hình trên cho thấy quy trình tạo mã ECU từ Cấu hình hệ thống đến ECU thực thi. Mặc dù hình trên hiển thị tệp thực thi dưới dạng .exe nhưng không nên nhầm lẫn với tệp .exe của PC Windows 😀. Ở đây, tệp .exe có nghĩa là một tệp thực thi chung có thể là .elf, .bin, v.v. AUTOSAR sử dụng một định dạng tệp cụ thể để trao đổi thông tin giữa các bước khác nhau trong quy trình. Định dạng tệp đó tương tự như XML nhưng trong ngữ cảnh AUTOSAR, nó được gọi là tệp .arxml ( Ngôn ngữ đánh dấu mở rộng AUTOSAR ) . Phần mềm cấu hình sẽ diễn giải tệp này và tạo mã theo thông tin có trong tệp này.

Một số bước trong cấu hình là:

1. System Configuration:Trong bước này, các ECU tổng thể được yêu cầu trong ô tô (Hệ thống) và phần cứng của chúng được định cấu hình cùng với SWC và Compostion SWC được ánh xạ tới các ECU tương ứng.
2. Generate System Configuration Description:Sau khi cấu hình từ bước đầu tiên, đầu ra của bước đầu tiên được gọi là tệp Mô tả Cấu hình Hệ thống ở định dạng tệp .arxml.
3. ECU Extract generation:Bằng cách sử dụng tệp arxml mô tả cấu hình hệ thống từ bước 2 làm đầu vào, một tệp mới được tạo có tên là tệp arxml trích xuất ECU. Nó chỉ có thông tin cho các ECU đơn lẻ không giống như tệp mô tả Cấu hình Hệ thống có thông tin của tất cả các ECU trong Ô tô.
4. ECU Configuration:Trong bước này, Trích xuất ECU được sử dụng làm đầu vào và ECU tương ứng được cấu hình theo yêu cầu của ứng dụng. Các cấu hình như cấu hình BSW , cấu hình hệ điều hành, v.v.
5. Generate ECU Configuration Description: Bước này sẽ được sử dụng để tạo đầu ra của bước 4, tức là tạo tệp arxml Mô tả cấu hình ECU, tệp này sẽ được sử dụng thêm để tạo Có thể thực thi.

Bạn có thể lưu ý file, các file có hậu tố “Description” là output of the output of the respective step or process. Ví dụ System Configuration Description arxml là output of System Configuration step.

File Information System Configuration Description Có Những Gì ?

The System Configuration Description file (generated after System Configuration) have all the system configuration information such as :
+ ECU có trong hệ thống
+ Các hệ thống liên lạc kết nối các ECU đó với nhau và cấu hình của chúng
+ Ma trận truyền thông sẽ chỉ ra dữ liệu sẽ được gửi và nhận cho các hệ thống truyền thông đó. Vì AUTOSAR nhằm mục đích tiêu chuẩn hóa toàn bộ quá trình phát triển nên tất cả dữ liệu, kích thước, v.v sẽ được truyền hoặc nhận cần phải được định cấu hình tại thời điểm định cấu hình.
+ Định nghĩa SWC với các ports and interfaces và kết nối của chúng.
+ Mapping of SWCs(Software Components) tới ECUs.
=> Tệp này đóng vai trò là đầu vào cho cấu hình ECU. Tệp trích xuất ECU giống như Mô tả cấu hình hệ thống nhưng chỉ có thông tin liên quan đến ECU có liên quan.

file Information ECU Configuration Description Có Gì ? File ECU Extract chỉ define các yếu tố cấu hình, nhưng điều này không đủ để tạo code có thể chạy trên phần cứng. Vì file này không có bất kỳ thông tin cấu hình cấp thấp nào có thể được sử dụng để định cấu hình các lớp thấp hơn của kiến ​​trúc AUTOSAR. Vì vậy, file ECU Configuration description có thông tin mà phần mềm cấu hình sử dụng và tạo các tệp .c và .h được biên dịch thêm và chạy trên phần cứng.

AUTOSAR Basic Software




Trong bài viết này, chúng ta sẽ thấy lớp AUTOSAR BSW ( Phần mềm cơ bản ) (lớp bên dưới RTE ). nó là một trong những lớp quan trọng giúp lớp ứng dụng sử dụng, giao tiếp với các thiết bị ngoại vi khác nhau của MCU. Cấu hình BSW mà tôi thực hiện trong phần mềm Trình cấu hình như Vector DaVinci Configurator thực chất là cấu hình của lớp này nằm bên dưới lớp RTE. Chúng ta đã thấy sơ lược về kiến ​​trúc phân lớp AUTOSAR, hôm nay chúng ta sẽ xem chi tiết về nó.

Kiến trúc phân lớp chi tiết của AUTOSAR


Hình trên cho thấy cấu trúc lớp AUTOSAR chi tiết:

+ Lớp màu đen nhạt là bộ vi điều khiển mà AUTOSAR sẽ hoạt động trên đó.

+ Các khối màu đỏ nằm dưới MCAL (Lớp trừu tượng vi điều khiển) có trình điều khiển để truy cập các thiết bị ngoại vi. MCAL là lớp thấp nhất của BSW, lớp này phụ thuộc nhiều vào MCU, điều đó có nghĩa là các khối này trong lớp này sẽ thay đổi khi có thay đổi trong MCU.

+ Các lớp có màu Xanh lục (ngoại trừ CDD) nằm dưới lớp ECU Abstraction. Trừu tượng hóa trong trường hợp này có nghĩa là ẩn các chi tiết cấp thấp hơn của mô-đun và chỉ hiển thị API cho các lớp trên để triển khai chức năng. Lớp này tóm tắt lớp MCAL từ lớp trên và cung cấp các API để truy cập các trình điều khiển bên ngoài cũng như bên trong. Lớp trừu tượng ECU rất hữu ích để làm cho phần cứng ECU của các lớp trên trở nên độc lập .

+ Lớp tiếp theo là CDD (Complex Device Drivers) kết nối trực tiếp SWC từ lớp ứng dụng với MCU thông qua RTE . Nó rất hữu ích để viết các chức năng/trình điều khiển của thiết bị ngoại vi/thiết bị bên ngoài không được xác định trong AUTOSAR hoặc các chức năng yêu cầu các ràng buộc về thời gian rất cao ngoài độ phân giải đánh dấu tối thiểu của bộ định thời hệ điều hành. Nhưng lớp này phụ thuộc nhiều vào phần cứng và do đó có rất ít khả năng tái sử dụng hoặc tính di động.

+ Lớp tiếp theo là Lớp Services Layer (tất cả các khối màu xanh lam), là lớp trên cùng của BSW. Lớp này cung cấp các dịch vụ cơ bản cho các mô-đun application, RTE, BSW. Các dịch vụ như: Chức năng hệ điều hành, Dịch vụ truyền thông , Dịch vụ bộ nhớ (cho NVRAM), quản lý trạng thái ECU, v.v.

Trình điều khiển bên trong và bên ngoài trong AUTOSAR:
Trong ngữ cảnh AUTOSAR, có hai loại trình điều khiển dựa trên thiết bị ngoại vi được sử dụng, đó là: trình điều khiển bên trong và bên ngoài . Trình điều khiển bên trong được sử dụng để truy cập các thiết bị ngoại vi bên trong nằm trong các thiết bị ngoại vi của vi điều khiển như Internal EEPROM, ADC, v.v. Trình điều khiển bên ngoài được sử dụng để truy cập các thiết bị ngoại vi bên ngoài nằm bên ngoài bộ vi điều khiển như Flash bên ngoài, EEPROM, Watchdog, v.v. Trình điều khiển bên trong nằm trong lớp MCAL trong khi trình điều khiển bên ngoài nằm trong lớp trừu tượng ECU . Có những ngoại lệ đối với một số thiết bị bên ngoài như bộ nhớ được ánh xạ bộ nhớ, có thể được truy cập trực tiếp bằng bộ vi điều khiển và do đó, trình điều khiển cho các thiết bị đó nằm trong MCAL.

Khái niệm về Giao diện, Trình xử lý và Trình quản lý:
AUTOSAR cũng triển khai khái niệm Giao diện, Trình xử lý và Trình quản lý. Xin đừng nhầm lẫn điều này với Port Interfaces 😀 ! Các giao diện nằm trong lớp ECU abstraction trong khi các trình quản lý nằm trong Services layer. Các giao diện cung cấp một chức năng để trừu tượng hóa các mô-đun cấp thấp hơn và hiển thị một API chungtruy cập có thể được sử dụng bởi các lớp trên. Giao diện cung cấp quyền truy cập vào loại thiết bị cụ thể bất kể số lượng thiết bị hiện có cùng loại và không phụ thuộc vào phần cứng. Trình xử lý kiểm soát quyền truy cập đồng thời, nhiều và không đồng bộ của một hoặc nhiều máy khách, trình xử lý cũng thực hiện lưu vào bộ đệm, xếp hàng, v.v. Chức năng của trình xử lý thường được triển khai trong trình điều khiển hoặc giao diện. Người quản lý cung cấp các dịch vụ cụ thể cho nhiều khách hàng. Nó được yêu cầu trong mọi trường hợp khi chỉ xử lý là không đủ. Ví dụ: trình quản lý NVRAM kiểm soát quyền truy cập vào bộ nhớ Flash bên trong/bên ngoài.

Hãy bắt đầu tìm hiểu chi tiết về tất cả các lớp.

1. MCAL (Lớp Trừu Tượng Của Vi Điều Khiển):

Lớp này bao gồm các mô-đun/khối sau:

+ Microcontroller Drivers:Mô-đun này có trình điều khiển bên trong để truy cập các thiết bị ngoại vi bên trong của MCU như Watchdog, Bộ hẹn giờ mục đích chung hoặc có chức năng truy cập trực tiếp vào MCU như CoreTest.
+ Memory Drivers: Mô-đun này có trình điều khiển để truy cập bộ nhớ trên chip như Flash bên trong, EEPROM bên trong hoặc thiết bị ánh xạ bộ nhớ như đèn flash bên ngoài.
+ Crypto Drivers:Mô-đun này có trình điều khiển cho các thiết bị tiền điện tử trên chip như SHE, HSM.
+ Wireless Communication Drivers:Mô-đun này có trình điều khiển cho các hệ thống mạng không dây (giao tiếp trong xe hoặc ngoài xe).
+ Communication Drivers:Mô-đun này có trình điều khiển cho giao tiếp trên bo mạch như SPI , I2C , v.v. và cũng có trình điều khiển cho giao tiếp Xe như CAN , FlexRay .
+ I/O Drivers:Mô-đun này có trình điều khiển để truy cập và sử dụng các chân I/O của MCU bao gồm kỹ thuật số và Analog, PWM.

2. Complex Device Drivers Or CDD:

Mô-đun này hữu ích trong việc triển khai chức năng không chuẩn trong ngăn xếp BSW. Có thể có nhiều trường hợp chúng ta cần triển khai một số chức năng mà AUTOSAR không hỗ trợ, vì vậy CDD được sử dụng cho những trường hợp như vậy. Hoặc nếu một chức năng yêu cầu các ràng buộc nghiêm ngặt về thời gian có thể thấp hơn thời gian tối thiểu của độ phân giải AUTOSAR OS thì mô-đun Trình điều khiển thiết bị phức hợp sẽ hữu ích vì nó trực tiếp giúp kết nối MCU với ứng dụng. Nhưng chức năng trình điều khiển phức tạp phụ thuộc nhiều vào MCU và ứng dụng và mã có thể không dễ chuyển.

3. ECU Abstraction Layer:

Lớp trừu tượng ECU giúp đạt được sự độc lập về phần cứng của ECU (sự độc lập về phần cứng không chỉ của chip MCU mà cả các thiết bị ngoại vi bên ngoài khác nhau của bo mạch ECU). Hãy nhìn vào các khối trong lớp này:

+ I/O Hardware Abstraction:Trong ECU ngoài đời thực, các thiết bị ngoại vi I/O có thể nằm trên chip hoặc trên bo mạch và cách bố trí phần cứng ECU như kết nối chân MCU hoặc đảo ngược chân có thể phức tạp. Trong cách viết phần mềm thông thường, chúng tôi cũng sẽ phải xem xét các chi tiết cấp thấp như vậy, nhưng trong AUTOSAR thì không. Mô-đun này tóm tắt các chi tiết cấp thấp như vậy từ Ứng dụng và chỉ cung cấp các API để sử dụng I/O. Đây là MCU độc lập (vì nó chỉ trỏ đến trình điều khiển cấp thấp hơn) nhưng phụ thuộc vào phần cứng ECU vì nó sử dụng trình điều khiển bên ngoài cho các thiết bị ngoại vi trên bo mạch, nếu thay đổi thì phần trừu tượng phần cứng I/O cho nó cũng sẽ thay đổi.

+ Crypto Hardware Abstraction:Mô-đun này trừu tượng hóa vị trí của các bộ điều khiển truyền thông và bố trí phần cứng ECU. Ứng dụng không biết bộ điều khiển giao tiếp nào (trong trường hợp CAN) được sử dụng hoặc chân nào được sử dụng hoặc thậm chí loại bus giao tiếp nào được sử dụng cho dù đó là CAN, FlexRay hay loại khác. Ứng dụng chỉ “hiểu” dữ liệu sẽ được truyền và nhận bất kể bộ điều khiển giao tiếp được chọn là trên chip hay trên bo mạch. Mô-đun này được sử dụng để đạt được mức độ độc lập phần cứng như vậy. Nó cung cấp các API sẽ được gọi bởi các mô-đun tương ứng và thực hiện truyền hoặc nhận dữ liệu.

+ Communication Hardware Abstraction:Mô-đun này trừu tượng hóa chức năng tiền điện tử bằng cách ẩn thông tin về Tiền điện tử được sử dụng (nội bộ, thiết bị bên ngoài hoặc dựa trên phần mềm). Một lần nữa, các lớp trên không xác định được loại Tiền điện tử được sử dụng hoặc thậm chí loại Tiền điện tử nào được sử dụng như trên chip hay trên bo mạch hay được mã hóa trong phần mềm. Mô-đun này cung cấp cơ chế để truy cập các thiết bị Crypto.

+ Memory Hardware Abstraction:Mô-đun này cũng trừu tượng hóa vị trí của thiết bị bộ nhớ được sử dụng. Bộ nhớ có thể là trên chip hoặc trên bo mạch và bộ nhớ trên bo mạch có thể có cách bố trí phần cứng ECU khác nhau (như sự khác biệt về chip bộ nhớ) nhưng tất cả thông tin này được trừu tượng hóa khỏi ứng dụng vì nó chỉ biết về dữ liệu và không có quyền kiểm soát đối với loại thiết bị bộ nhớ được chọn.

+ Onboard Device Abstraction:Mô-đun này cung cấp khả năng trừu tượng hóa từ ECU cụ thể trên các thiết bị trên bo mạch. Mô-đun này chứa trình điều khiển cho các thiết bị trên bo mạch không thể được gọi là cảm biến hoặc bộ truyền động hoặc bộ hẹn giờ như bộ hẹn giờ cơ quan giám sát bên trong hoặc bên ngoài.

4. Services:

+ Communication Services:Đây là một nhóm các mô-đun dành cho liên lạc mạng trên xe nhằm cung cấp các dịch vụ thống nhất để quản lý mạng, cung cấp giao diện thống nhất cho mạng trên xe để liên lạc và liên lạc chẩn đoán, đồng thời ẩn các thuộc tính giao thức và thông báo khỏi ứng dụng. Giao diện Dịch vụ Truyền thông với các trình điều khiển truyền thông (trong MCAL) với sự trợ giúp của Trừu tượng hóa Phần cứng Truyền thông (như đã thảo luận ở trên). Đây là phần cứng độc lập với MCU và ECU nhưng phụ thuộc vào loại bus. Vì vậy, một phần của các dịch vụ này có thể thay đổi nếu loại xe buýt (CAN, FlexRay, v.v.) bị thay đổi.

+ Off board Communication Services: Đây là một nhóm các mô-đun dành cho phương tiện liên lạc với khách hàng bên ngoài thông qua mạng không dây đặc biệt. Nó có ba khối được sử dụng để thực hiện các chức năng khác nhau. Mô-đun này cung cấp giao diện thống nhất cho mạng Ethernet không dây bằng cách ẩn các thuộc tính giao thức và thông báo.

+ Memory Services:Dịch vụ này bao gồm một mô-đun, trình quản lý NVRAM. Nó chịu trách nhiệm quản lý dữ liệu không dễ bay hơi (đọc/ghi từ các trình điều khiển bộ nhớ khác nhau). Nói chung, ứng dụng yêu cầu lưu trữ dữ liệu trong bộ nhớ để sử dụng trong tương lai, vì vậy mô-đun này được sử dụng để triển khai điều này theo cách thống nhất và cung cấp khả năng trừu tượng hóa từ các vị trí bộ nhớ và thuộc tính cấp thấp hơn. Dịch vụ bộ nhớ cung cấp cơ chế để lưu, tải, tổng kiểm tra, v.v. quản lý dữ liệu không dễ bay hơi. Đây là phần cứng MCU và ECU độc lập và có khả năng cấu hình cao.

+ System Services:Đây là một nhóm các mô-đun có thể được sử dụng bởi các mô-đun của tất cả các lớp. Ví dụ như Hệ điều hành thời gian thực, Trình nhắn tin lỗi. Các dịch vụ này có thể phụ thuộc vào một số MCU hoặc có thể hỗ trợ các khả năng đặc biệt của MCU (như Dịch vụ thời gian), một phần phụ thuộc vào Phần cứng ECU và ứng dụng.

Quy Trình




AUTOSAR có vẻ khó khăn đối với các nhà phát triển mới, nên phần này sẽ là Bắt Đầu Với Dự Án Dựa Trên AUTOSAR

AUTOSAR đã phát triển một kiến ​​trúc phân lớp có các thông số kỹ thuật tiêu chuẩn và phần mềm cho ECU dựa trên AUTOSAR được phát triển bằng cách tuân thủ các thông số kỹ thuật đó. Phần mềm có thể được phát triển bởi các nhà phát triển phần mềm hoặc code có thể được tạo bằng cách sử dụng các phần mềm cấu hình ECU khác nhau như Vector's DaVinci Configurator and Developer , K-SAR , v.v. Phần mềm này dành cho các nhà phát triển rất cao cấp, bạn có thể tạo code bằng cách định cấu hình các yêu cầu ứng dụng trong phần mềm có GUI và sau đó code ứng dụng có thể được tích hợp trong code được tạo đó. Bài viết này sẽ giúp tìm hiểu quy trình cấu hình ECU dựa trên AUTOSAR.

lưu ý rằng bài viết này sẽ không cung cấp các bước chi tiết, nhưng một cái nhìn trừu tượng về quy trình sẽ hữu ích cho người mới bắt đầu.
Nhóm tất cả các ECU và toàn bộ mạng trong ô tô được gọi là Hệ thống và trước tiên Hệ thống được định cấu hình, sau đó từng ECU của hệ thống đó được định cấu hình.




Hình trên cho thấy quy trình tạo mã ECU từ Cấu hình hệ thống đến ECU thực thi. Mặc dù hình trên hiển thị tệp thực thi dưới dạng .exe nhưng không nên nhầm lẫn với tệp .exe của PC Windows 😀. Ở đây, tệp .exe có nghĩa là một tệp thực thi chung có thể là .elf, .bin, v.v. AUTOSAR sử dụng một định dạng tệp cụ thể để trao đổi thông tin giữa các bước khác nhau trong quy trình. Định dạng tệp đó tương tự như XML nhưng trong ngữ cảnh AUTOSAR, nó được gọi là tệp .arxml ( Ngôn ngữ đánh dấu mở rộng AUTOSAR ) . Phần mềm cấu hình sẽ diễn giải tệp này và tạo mã theo thông tin có trong tệp này.

Một số bước trong cấu hình là:

1. System Configuration:Trong bước này, các ECU tổng thể được yêu cầu trong ô tô (Hệ thống) và phần cứng của chúng được định cấu hình cùng với SWC và Compostion SWC được ánh xạ tới các ECU tương ứng.
2. Generate System Configuration Description:Sau khi cấu hình từ bước đầu tiên, đầu ra của bước đầu tiên được gọi là tệp Mô tả Cấu hình Hệ thống ở định dạng tệp .arxml.
3. ECU Extract generation:Bằng cách sử dụng tệp arxml mô tả cấu hình hệ thống từ bước 2 làm đầu vào, một tệp mới được tạo có tên là tệp arxml trích xuất ECU. Nó chỉ có thông tin cho các ECU đơn lẻ không giống như tệp mô tả Cấu hình Hệ thống có thông tin của tất cả các ECU trong Ô tô.
4. ECU Configuration:Trong bước này, Trích xuất ECU được sử dụng làm đầu vào và ECU tương ứng được cấu hình theo yêu cầu của ứng dụng. Các cấu hình như cấu hình BSW , cấu hình hệ điều hành, v.v.
5. Generate ECU Configuration Description: Bước này sẽ được sử dụng để tạo đầu ra của bước 4, tức là tạo tệp arxml Mô tả cấu hình ECU, tệp này sẽ được sử dụng thêm để tạo Có thể thực thi.

Bạn có thể lưu ý file, các file có hậu tố “Description” là output of the output of the respective step or process. Ví dụ System Configuration Description arxml là output of System Configuration step.

File Information System Configuration Description Có Những Gì ?

The System Configuration Description file (generated after System Configuration) have all the system configuration information such as :
+ ECU có trong hệ thống
+ Các hệ thống liên lạc kết nối các ECU đó với nhau và cấu hình của chúng
+ Ma trận truyền thông sẽ chỉ ra dữ liệu sẽ được gửi và nhận cho các hệ thống truyền thông đó. Vì AUTOSAR nhằm mục đích tiêu chuẩn hóa toàn bộ quá trình phát triển nên tất cả dữ liệu, kích thước, v.v sẽ được truyền hoặc nhận cần phải được định cấu hình tại thời điểm định cấu hình.
+ Định nghĩa SWC với các ports and interfaces và kết nối của chúng.
+ Mapping of SWCs(Software Components) tới ECUs.
=> Tệp này đóng vai trò là đầu vào cho cấu hình ECU. Tệp trích xuất ECU giống như Mô tả cấu hình hệ thống nhưng chỉ có thông tin liên quan đến ECU có liên quan.

File Information ECU Configuration Description Có Những Gì ?

File ECU Extract chỉ define các yếu tố cấu hình, nhưng điều này không đủ để tạo code có thể chạy trên phần cứng. Vì file này không có bất kỳ thông tin cấu hình cấp thấp nào có thể được sử dụng để định cấu hình các lớp thấp hơn của kiến ​​trúc AUTOSAR. Vì vậy, file ECU Configuration description có thông tin mà phần mềm cấu hình sử dụng và tạo các tệp .c và .h được biên dịch thêm và chạy trên phần cứng.

Thuật Ngữ Phổ Biến Được Sử Dụng Trong AUTOSAR


AUTOSAR được xây dựng để chuẩn hóa việc phát triển phần mềm của ECU. Do đó nó có nhiều thuật ngữ mà chúng ta có thể chưa bao giờ nghe nói đến. Bài viết này thảo luận về một số thuật ngữ phổ biến được sử dụng trong AUTOSAR và giải thích chúng.

+ Integrator:

Trong bối cảnh AUTOSAR, nhà tích hợp là người định cấu hình và tạo dự án AUTOSAR bằng phần mềm GUI như Vector DaVinci. Chúng tôi thường tự gọi mình là nhà phát triển vì chúng tôi phát triển phần mềm, nhưng trong dự án AUTOSAR, nhà phát triển là người thực hiện hành vi của SWC bằng cách viết mã trong Runnable .

+ Signal:

AUTOSAR thực hiện giao tiếp dựa trên tín hiệu. Tín hiệu là lượng thông tin nhỏ nhất mà một bản tin CAN có thể có. Một tín hiệu có thể có kích thước bất kỳ từ 1 bit đến tất cả 64 bit của bản tin CAN (coi bản tin CAN là 8 Byte), nói cách khác, bản tin CAN được chia thành các bit được gọi là tín hiệu. Tín hiệu cũng có thể ở đó cho FlexRay hoặc xe buýt khác, thay đổi duy nhất là lượng tín hiệu tối đa mà nó có thể giữ.

Để liên hệ điều này, chúng ta hãy xem xét một ví dụ thực tế trong cuộc sống. Giả sử một ECU cần biết trạng thái của các cửa (đã khóa/mở khóa). Trong chương trình C bình thường, chúng tôi sẽ triển khai một cờ cho biết trạng thái của các cửa. Nhưng trong AUTOSAR, tín hiệu 1 bit được sử dụng để biểu thị điều này. Hình ảnh bên dưới hiển thị tín hiệu của chúng tôi trong trường Dữ liệu CAN của khung.



Từ hình trên, chúng ta có thể thấy rằng thông tin của chúng ta chỉ yêu cầu kích thước 1 bit. Một tín hiệu có thể có kích thước bất kỳ tùy thuộc vào yêu cầu. Giả sử ứng dụng của bạn cần truyền thông tin số trong phạm vi từ 0 – 7 , vì vậy tín hiệu 3 bit là đủ. Theo cách này, việc triển khai tín hiệu giúp tiết kiệm không gian theo yêu cầu của thông tin trong trường dữ liệu CAN bằng cách chỉ sử dụng không gian cần thiết cho thông tin.

SWC sử dụng tín hiệu để liên lạc với nhau bằng cách sử dụng VFB qua RTE . Tín hiệu được triển khai và chỉ được hiểu bởi các lớp từ COM đến Lớp ứng dụng.

Các tín hiệu có thể được nhóm khi các tín hiệu cần được giữ chặt chẽ với nhau hoặc các nhóm tín hiệu có thể được sử dụng để hỗ trợ cấu trúc dữ liệu phức tạp như cấu trúc . Trong mã, một cấu trúc sẽ được triển khai có các thành viên là tín hiệu không gì khác ngoài nhóm tín hiệu.

+ PDU Or Message:

Trong AUTOSAR, đại khái một thông báo được gọi là PDU (Đơn vị dữ liệu giao thức). Tôi đang nói đại khái là bởi vì, PDU chứa thông tin khác với dữ liệu của chúng tôi được sử dụng hoặc trích xuất bởi các lớp bên dưới hoặc bên trên trong quá trình truyền hoặc nhận tương ứng. Có thể có n số PDU với kích thước khác nhau. PDU về cơ bản là nhóm các tín hiệu được đóng gói cùng với thông tin lớp thấp hơn. AUTOSAR COM thực hiện đóng gói hoặc giải nén tín hiệu vào hoặc từ PDU trong khi truyền hoặc nhận tương ứng. Mỗi PDU có một mã định danh duy nhất được liên kết với nó.

PDU chứa SDU và PCI. SDU là chữ viết tắt của Service Data Unit và PCI là Protocol Control Information.

SDU là dữ liệu cần được truyền đi. Trong khi truyền, SDU được truyền từ các lớp trên xuống các lớp dưới cùng với PCI. Trong quá trình nhận, SDU là dữ liệu được trích xuất từ ​​​​các lớp bên dưới và được chuyển lên các lớp trên.

PCI chứa thông tin cho biết điểm đến tiếp theo của SDU. Về cơ bản, nó chứa nguồn và đích của SDU. Nguồn và đích trong trường hợp này là lớp tiếp theo mà PDU cần được chuyển đến.

Nói một cách đơn giản, PDU được chuyển từ các lớp trên xuống lớp dưới và ngược lại, nơi chứa SDU và PCI. Hình dưới đây sẽ giúp hiểu điều này.



Trong khi chuyển PDU từ lớp này sang lớp khác, nó được gọi bằng các tên có liên quan dựa trên lớp mà nó nằm trong đó. Các PDU được đặt tên là: I-PDU (PDU lớp tương tác), N-PDU (PDU lớp mạng), L-PDU (Lớp liên kết dữ liệu) PDU).

Bất cứ khi nào PDU ở các lớp trên lớp Trừu tượng phần cứng giao tiếp thì nó được gọi là I-PDU. Bất cứ khi nào PDU ở các lớp bên dưới PDUR và trên lớp Trình điều khiển giao tiếp thì nó được gọi là N-PDU . Bất cứ khi nào PDU ở bên dưới Trừu tượng hóa phần cứng giao tiếp thì nó được gọi là L-PDU.

+ Computation Method:

Phương pháp tính toán hay nói ngắn gọn là phương pháp tính toán được sử dụng để chuyển đổi các giá trị điểm cố định trong phần mềm thành các giá trị vật lý có thể là giá trị dấu phẩy động.

Phương thức tính toán xác định mối quan hệ chuyển đổi các giá trị bên trong của SWC thành giá trị thực/vật lý. Phương pháp tính toán được xác định cho một tín hiệu.

Chủ yếu có ba loại phương pháp tính toán:

+ Linear: Loại phương thức Compu này được sử dụng khi giá trị được chuyển đổi thuộc loại tuyến tính. Trong quá trình cấu hình, chúng tôi phải đưa ra phạm vi giá trị thô. Giống như giá trị tối thiểu này có thể là, giá trị tối đa này có thể đi, Hệ số (là hệ số nhân hay còn gọi là mức tăng), Giá trị bù.

+ Text Table: Đây là loại phương thức tính toán đơn giản nhất. Đó là một bảng các giá trị số đại diện cho một số văn bản có ý nghĩa nào đó.

+ Scale-Linear: Đây là một bảng các phương thức tính toán tuyến tính.

+ .Cdd File:

Tệp .cdd là tệp cụ thể của Vector chứa thông tin liên quan đến cấu hình Chẩn đoán. Mặc dù nó là véc tơ cụ thể nhưng nhiều công cụ đang sử dụng nó làm tiêu chuẩn . Tệp này được sử dụng trong ứng dụng CandelaStudio bằng Vector. Không nên nhầm lẫn điều này với Trình điều khiển thiết bị phức tạp ( CDD ) 😀, tôi đã bối rối khi nghe thuật ngữ này lần đầu tiên!

+ SIP:

SIP hoặc S oftware I n P package là một thuật ngữ được các kỹ sư AUTOSAR sử dụng Công cụ Vector DaVinci . Nó là một gói chứa tất cả các thư viện và tệp hữu ích để phát triển phần mềm AUTOSAR bằng các công cụ Vector.

+ OSEK/VDX:

Thuật ngữ này cũng thường được nghe từ các kỹ sư AUTOSAR. OSEK là chữ viết tắt của O flene S ysteme und deren Schnittstellen für die E lektronik in K bèfahrzeugen trong tiếng Đức nhưng trong tiếng Anh, nó là: Hệ thống mở và giao diện của chúng cho thiết bị điện tử trong xe cơ giới. Nó cũng là một đặc điểm kỹ thuật của hệ điều hành, ngăn xếp truyền thông và giao thức quản lý mạng được sử dụng trong các ứng dụng Ô tô được phát triển bởi một tập đoàn gồm các công ty ô tô Đức như BMW , Robert Bosch GmbH , DaimlerChrysler , Opel , Siemens và Tập đoàn Volkswagen và Tập đoàn Volkswagen.Đại học Karlsruhe . Dự án này sau đó được tham gia bởi các công ty ô tô của Pháp như Renault và PSA Peugeot Citroën , những công ty có dự án tương tự được gọi là VDX (Vehicle Distributed Executive). Do đó, tên OSEK/VDX được sử dụng kết hợp.

+ Composition SWC:

Thành phần không là gì ngoài một nhóm SWC được gán cho một ECU duy nhất trong Cấu hình hệ thống . Việc phân nhóm như vậy giúp trừu tượng hóa các SWC và tiêu chuẩn hóa quá trình phát triển phần mềm, đó là điều mà AUTOSAR hướng tới. Việc phân nhóm này là hợp lý, có nghĩa là không có bộ nhớ nào được sử dụng trong cách phân nhóm đó.

+ SWC:

Trong AUTOSAR, ứng dụng được phân phối trong các SWC khác nhau. SWC hoặc thành phần phần mềm là một thành phần có logic ứng dụng. Trong AUTOSAR, một chức năng được đóng gói bởi SWC. Ví dụ: hoạt động của cửa sổ điện trong ô tô, một SWC chuyên dụng sẽ thực hiện chức năng này. Các SWC giao tiếp với nhau hoặc sử dụng các lớp thấp hơn bằng cách sử dụng các cổng với sự trợ giúp của RTE .

AUTOSAR đã phân loại SWC dựa trên việc sử dụng nó thành các loại sau:

1. Ứng dụng SWC: Đây là SWC bình thường chỉ có ứng dụng hoặc một phần của nó.

2. Bộ truyền động cảm biến SWC: Đây là một loại SWC đặc biệt xử lý các cảm biến hoặc bộ truyền động.

3. Tham số SWC: SWC này được sử dụng để chia sẻ các tham số hiệu chuẩn của (ECU mà nó được đặt) với các thiết bị bên ngoài. Các SWC này không có bất kỳ hành vi nội bộ nào không giống như SWC ứng dụng hoặc SWC cảm biến.

4. Thành phần SWC: đã thảo luận ở trên .

5. Service Proxy SWC: Nó hoạt động như một proxy để cung cấp các dịch vụ nội bộ cho một hoặc nhiều ECU từ xa. Công dụng chính của nó là phân phối thông tin chế độ của xe trên toàn hệ thống.

6. Dịch vụ SWC: Nó cung cấp các dịch vụ được chỉ định bởi AUTOSAR của mô-đun BSW .

7. ECU trừu tượng SWC: Loại SWC này cung cấp quyền truy cập vào I/O bằng cách tương tác trực tiếp với các mô-đun BSW cụ thể. Không thể sử dụng các SWC khác để truy cập I/O, chỉ có thể sử dụng SWC này.

8. Trình điều khiển thiết bị phức tạp SWC: SWC này được sử dụng để phát triển trình điều khiển thiết bị phức hợp (CDD) cho các thiết bị bên ngoài mà AUTOSAR không hỗ trợ hoặc có một số hoạt động quan trọng.

9. Nvblock SWC: SWC này được sử dụng khi tương tác với NVRAM hoặc bộ nhớ.

+ Runnable Entity:

Thực thể có thể chạy được là một phần của SWC nơi logic hành vi của ứng dụng được viết. Runnable tương tự như các chức năng trong C. Trong AUTOSAR, chúng tôi tạo Runnable trong SWC trong khi định cấu hình và khung chức năng hoặc runnable đóđược tạo trong các tệp nguồn tương ứng của SWC. Tên của chức năng khung giống như tên mà chúng tôi đặt cho Runnable tại thời điểm cấu hình. Chúng ta cần viết mã của mình trong chức năng này/Runnable, sau đó sẽ được AUTOSAR OS thực thi, mã này là ứng dụng mà SWC sẽ thực hiện. Runnables cũng có các biến và một số Runnables cũng có các điểm kích hoạt “gọi” hoặc kích hoạt runnable của chúng ta khi một điều kiện cụ thể được đáp ứng. Các điều kiện như vậy có thể được xác định trong quá trình cấu hình, các điều kiện có thể là: Init Runnable sẽ được gọi khi khởi tạo, lệnh gọi định kỳ của runnable có thể được sử dụng để gửi một số dữ liệu định kỳ, kích hoạt dựa trên các sự kiện RTE khác nhau, v.v. Dưới đây là ví dụ về khung có thể chạy được được tạo sau khi cấu hình, có thể chạy được này là của Chỉ báo SWC có tênChạy được1. Các khung có thể chạy được như vậy được tạo ra trong các tệp .c SWC .



Hình trên cho thấy cách Runnables được gói gọn trong SWC và cách các SWC khác được gói gọn trong Composition . Bằng cách nhìn vào con số này, chúng ta có thể hiểu rằng AUTOSAR tóm tắt và nhóm các thứ để tiêu chuẩn hóa tốt như thế nào. Như chúng ta biết rằng đối với mọi chức năng trong ECU, SWC có thể được dành riêng, nhưng hoạt động hoặc triển khai chức năng của nó được thực hiện bằng Runnable. Nói chung có ba loại runnables:

1. Init Runnable: Runnable này được gọi trên init của ECU
2. Định kỳ Runnable: Runnable này được sử dụng khi chúng ta cần kích hoạt định kỳ runnable này để thực hiện một số hoạt động định kỳ.
3. Server Runnable: Runnable này được sử dụng để triển khai máy chủ của giao diện cổng Client/Server .

Runnables có thể được cấu hình để kích hoạt trong các sự kiện RTE như:

1. Timing Event: Như đã giải thích ở trên, bất cứ khi nào đạt đến thời gian đã đặt, sự kiện này sẽ kích hoạt/gọi chuyên dụng có thể chạy được và nó sẽ thực hiện logic được viết trong đó. Điều này có liên quan đến ngắt hẹn giờ mà chúng tôi sử dụng trong lập trình hệ thống nhúng nói chung, trong đó ISR được gọi trên mỗi lần tràn hẹn giờ.
2. Data received event: Như tên cho thấy, sự kiện như vậy sẽ kích hoạt một sự kiện có thể chạy được bất cứ khi nào các port nhận được dữ liệu .
3. Operation Invoked Event: Sự kiện này được gọi bởi máy khách khi gọi một máy chủ có thể chạy được bằng giao diện cổng Máy khách/máy chủ.
4. Mode Switch Event: Bất cứ khi nào chế độ ECU được thay đổi, có thể kích hoạt runnable để thực hiện một số công việc. Ví dụ: chế độ tắt ECU, nếu ECU cần thực hiện một số công việc trước khi tắt, thì sự kiện đó sẽ được nối với cái có thể chạy được sẽ thực hiện công việc trước khi tắt.
5. Data Received Error Event: Một lần nữa, đây là điều dễ hiểu, bất cứ khi nào có bất kỳ lỗi nào xảy ra trong quá trình nhận dữ liệu, một runnable có thể được gọi để thực hiện hành động đối với sự kiện đó.
6. Data Send Completed Event: Sự kiện này sẽ kích hoạt một runnable nếu dữ liệu được gửi thành công để thực hiện thêm hành động khi hoàn thành truyền dữ liệu.

+ MemMap File:

MemMap là tệp tiêu đề (MemMap.h) được sử dụng để ánh xạ các hàm hoặc biến tới các vị trí bộ nhớ cụ thể trong bộ nhớ Flash hoặc RAM để tránh lãng phí RAM và sắp xếp các biến hoặc khối chức năng theo ý muốn.

Lãng Phí Bộ Nhớ Và Cách Giải Quyết

Trong lập trình hệ thống nhúng nói chung, khi chúng ta không sử dụng bất kỳ cách nào để đặt các biến hoặc hàm vào các địa chỉ bộ nhớ mong muốn, thì trình biên dịch sẽ sử dụng logic mặc định để đặt các biến vào RAM. Nhưng logic mặc định như vậy có thể tạo ra các khoảng trống không cần thiết trong bộ nhớ khi các biến có kích thước khác nhau được đặt gần đó, gây lãng phí bộ nhớ RAM. Vì vậy, các nhà phát triển có kinh nghiệm sử dụng chỉ thị #pragma để đặt các biến hoặc khối mã của họ vào vị trí mong muốn trong bộ nhớ, giúp giảm lãng phí bộ nhớ cũng như tổ chức mã và biến. Dưới đây là đoạn mã nhỏ để chỉ ra các cách lưu trữ biến thông thường tới địa chỉ bộ nhớ cụ thể.



Phương pháp đặt các biến hoặc khối chức năng ở trên vào địa chỉ mong muốn là phương pháp phổ biến nhất nhưng không thể sử dụng phương pháp này trong AUTOSAR. Bởi vì AUTOSAR nhằm mục đích chuẩn hóa mã và do đó, những "sửa đổi" như vậy không được phép trong đó. Vì vậy, để duy trì tiêu chuẩn và cách triển khai phương pháp trên, AUTOSAR sử dụng Tệp MemMap . Nó có các macro tạo điều kiện thuận lợi cho việc đặt các biến hoặc khối mã ở những nơi mong muốn. Tệp này cũng sử dụng chỉ thị #pragma kèm theo macro #define . Dưới đây là ví dụ về tệp tiêu đề MemMap:



Đoạn mã trên kích hoạt phần được sử dụng cho một số biến 8 bit và được sử dụng cho mô-đun CAN. AUTOSAR triển khai và thực thi cách đặt tên tiêu chuẩn cho macro trong tệp MemMap. Bảng bên dưới hiển thị cú pháp cần tuân theo khi chỉnh sửa hoặc thêm macro vào tệp MemMap.



Bảng trên hiển thị cú pháp tệp MemMap, tất cả các cú pháp bắt đầu và kết thúc bằng “ [ ] ” là những phần giữ chỗ mà chúng tôi nên điền thông tin từ phía chúng tôi. Ví dụ: [MSN] cho biết tên mô-đun mà biến sẽ được sử dụng, như trong ví dụ về tệp MemMap ở trên, chúng tôi đã sử dụng mô-đun “CAN” và [SIZE ] cho biết kích thước của biến, một lần nữa có tên tiêu chuẩn cho kích thước biến tương ứng:

Biến 8 bit -> 8BIT
Biến 16 bit -> 16BIT
Biến 32 bit -> 32BIT
biến có kích thước không xác định -> KHÔNG XÁC ĐỊNH

Làm Cách Nào Để Sử Dụng Tệp MemMap?

Có cơ chế sử dụng tệp MemMap trong AUTOSAR. Dưới đây là ví dụ về việc sử dụng Tệp MemMap:



Đoạn mã trên mô tả cách sử dụng cơ bản của tệp MemMap. Lời giải thích cho nó là:

+ Bất cứ khi nào chiến lược đặt biến/mã được sử dụng, chúng tôi xác định macro có tên giống với tên của macro trong tệp MemMap (trong trường hợp này là CAN_START_SEC_VAR_8BIT) phù hợp với khối biến/mã (trong trường hợp này kích thước là tiêu chí), sau đó Phải bao gồm tệp MemMap.h để gọi lệnh #pragma từ tệp MemMap và kích hoạt lưu trữ biến theo macro được xác định trong tệp MemMap và mọi thứ sau đó sẽ được lưu trữ vào các địa chỉ liên tiếp từ địa chỉ đã cho trong tệp MemMap.

+ Để tránh lưu trữ những thứ khác với biến của chúng tôi vào các địa chỉ liên tiếp sau khi kích hoạt, chúng tôi sử dụng một macro khác để hủy kích hoạt chiến lược đặt này bằng cách sử dụng cùng một macro như trong tệp MemMap để dừng chiến lược (trong trường hợp này là CAN_STOP_SEC_VAR_8BIT) và chiến lược mặc định được sử dụng để lưu trữ các biến cho đến khi bộ tiền xử lý không gặp phải macro khác. Ưu điểm của điều này là mọi thứ được thực hiện trong giai đoạn tiền xử lý và do đó các lỗi cũng được thông báo trước khi biên dịch.

+ Implementation Data Type:

Đây lại là một thuật ngữ phổ biến mà bất kỳ kỹ sư AUTOSAR nào cũng có thể gặp phải. Điều này tương tự với typedef của C bằng cách sử dụng mà chúng ta có thể tạo một loại dữ liệu cụ thể để giả sử tín hiệu của PDU . Giả sử chúng ta muốn truyền tín hiệu có tên là Alive và phạm vi của tín hiệu dự kiến ​​sẽ nằm trong khoảng từ 0 đến 255, vì vậy chúng ta sẽ tạo kiểu dữ liệu Triển khai trong phần mềm Cấu hình như DaVinci Developer từ Vector. Triển khai Loại dữ liệu được sử dụng bởi các giao diện Cổng mà các cổng tuân theo trong khi giao tiếp với các thực thể khác. Cấu trúc của dữ liệu cũng như dung sai và giới hạn của dữ liệu đều được biết tại thời điểm cấu hình.

+ Ports And Port Interfaces:

Trong AUTOSAR, mọi giao tiếp giữa SWC và các lớp thấp hơn được thực hiện bằng cách sử dụng các cổng. Cổng là một kênh hoặc kết nối dùng để truyền dữ liệu giữa các SWC hoặc mô-đun BSW . Vì AUTOSAR nhằm mục đích tiêu chuẩn hóa nên dữ liệu sẽ được truyền giữa các thực thể cần phải được biết tại thời điểm cấu hình, do đó, các Cổng cũng không ngoại lệ.

Các cổng thuộc về chính xác một SWC tại một thời điểm. Cổng có thể hoặc không thể được kết nối với đầu kia. Có hai loại cổng:

+ Cổng bắt buộc: Loại cổng này được sử dụng khi dữ liệu được nhận hoặc yêu cầu hoặc được mong đợi từ các thực thể khác.
+ Cổng của nhà cung cấp: Loại cổng này được sử dụng khi dữ liệu được truyền đi hoặc SWC là nhà cung cấp một số dịch vụ cho các thực thể khác.

Giao diện cổng là giao diện xác định loại thông tin được truyền hoặc nhận giữa hai cổng. Giao diện cổng giống như các bản in màu xanh của các cổng xác định một “giao thức” được tuân theo bởi cổng của SWC. Giao diện cổng có thể tái sử dụng tức là chúng có thể được sử dụng bởi nhiều cổng. Cấu hình giao diện cổng được thực hiện tại thời điểm cấu hình hệ thống và các cổng sẽ tuân theo giao diện sẽ được gán cho các cổng đó.

AUTOSAR phân biệt giữa ba loại giao diện Cổng:
1. Giao diện AUTOSAR: Đây là giao diện chung mà chúng tôi sẽ tạo cho các cổng của SWC. Nó được sử dụng để tương tác với các SWC khác hoặc Lớp trừu tượng SWC và ECU.
2. Giao diện AUTOSAR được chuẩn hóa: Giao diện AUTOSAR được chuẩn hóa được AUTOSAR xác định trước, giao diện này được ứng dụng SWC sử dụng khi tương tác với các dịch vụ BSW như Trình quản lý ECU, v.v.
3. Standardized Interface: Đây cũng là một loại interface được định nghĩa sẵn theo chuẩn AUTOSAR là C API . Nó được sử dụng giữa các mô-đun BSW, giữa RTE và OS, v.v.

Nhìn chung có 2 loại Giao diện cổng:

1. SenderReceiverInterface: Đây là loại giao diện đơn giản nhất mà chúng ta có thể tạo. Loại giao diện này được sử dụng khi dữ liệu được truyền giữa các thực thể là loại không đồng bộ. Không đồng bộ ở đây có nghĩa là dữ liệu sẽ được nhận bởi các cổng Yêu cầu bất kỳ lúc nào sau khi bắt đầu yêu cầu.
2. ClientServerInterface: Loại giao diện này được sử dụng khi dữ liệu được nhận thuộc loại đồng bộ. Ở đây có nghĩa là đồng bộ, máy khách sẽ yêu cầu dữ liệu từ máy chủ sẽ cung cấp. Máy chủ thực hiện hoạt động của nó và cung cấp thông tin cần thiết cho máy khách. Trong trường hợp này, máy chủ chỉ “hoạt động” khi máy khách “kích hoạt” nó. Trong trường hợp này, khách hàng đợi cho đến khi thao tác hoàn tất. Nói một cách đơn giản, ClientServerInterface có một thao tác được thực thi và gọi lại sau khi hoàn thành trong khi SenderReceiverInterface có trao đổi dữ liệu

+ Hardware Objects:

Thuật ngữ Đối tượng phần cứng được sử dụng liên quan đến bus CAN. Đối tượng phần cứng là một khoảng trống trong RAM bộ điều khiển CAN nơi đặt PDU . Khi PDU nằm trong RAM của bộ điều khiển CAN, nó được gọi là Đối tượng phần cứng.

+ Hardware Object Handle:

Xử lý đối tượng phần cứng (HOH) đại diện cho một tham chiếu trừu tượng của hộp thư CAN có tất cả các tham số khung CAN như DLC, CANID và dữ liệu. Các lớp trên không thể trực tiếp “tạo” khung CAN bằng dữ liệu và điều đó sẽ mâu thuẫn với mục tiêu độc lập phần cứng của AUTOSAR, thay vào đó, một tham chiếu trừu tượng được sử dụng sẽ đảm bảo tính độc lập của phần cứng bằng cách trừu tượng hóa .

Có hai loại xử lý đối tượng Phần cứng:

1. Hardware Transmit Handle (HTH): HOH này được sử dụng trong quá trình truyền khung CAN.
2. Hardware Receive Handle (HRH): HOH này được sử dụng trong quá trình nhận khung CAN.

HOH được CanIf sử dụng và được tham chiếu trong đó dựa trên bố cục bộ đệm phần cứng CAN. HOH được sử dụng làm đối số trong khi gọi các dịch vụ giao diện trình điều khiển CAN lớp dưới.



Hình trên cho thấy cách các tham chiếu được đan xen trong các mô-đun như CanIf, CAN Driver và CAN Controller. Các đường mũi tên hiển thị trong hình là tham chiếu chứ không phải kết nối . Bây giờ tôi đoán đã rõ ràng hộp thư CAN là gì và Đối tượng phần cứng là gì và các tham chiếu ở đó như thế nào.

+ Container Concept In AUTOSAR:

AUTOSAR nhằm mục đích chuẩn hóa quy trình phát triển phần mềm của ECU, do đó nó thực hiện các tài liệu và bước khác nhau . Chuẩn bị các tài liệu đó theo cách thủ công và duy trì chúng theo tiêu chuẩn AUTOSAR là một công việc tẻ nhạt. Vì vậy, để giải quyết vấn đề này, phần mềm được sử dụng để chúng tôi có thể định cấu hình các khối AUTOSAR cũng như tạo tài liệu và mã. Trong cấu hình, các thùng chứa được sử dụng trong GUI chứa cài đặt/thông tin của một khối BSW cụ thể. Ví dụ: Com có ​​danh sách các PDU và tín hiệu để mỗi PDU có một vùng chứa bên dưới mô-đun Com. Vì vậy, vùng chứa không là gì ngoài nơi chúng tôi định cấu hình hoặc lưu trữ thông tin liên quan đến khối AUTOSAR trong trình cấu hình.

+ CAPL Script:

Tập lệnh CAPL hoặc C AN Ngôn ngữ lập trình P truy cập là một ngôn ngữ giống như tập lệnh C được sử dụng để giao tiếp với các đối tượng của bảng điều khiển trong CANOe . Ví dụ: một bảng điều khiển có mạng LED và LIN, sau đó bạn có thể viết tập lệnh CAPL để mô phỏng (cũng như giao diện với các thiết bị trong thế giới thực) các điều kiện như điều gì sẽ xảy ra khi nhận tín hiệu LIN cho dù đèn LED trên bảng điều khiển có sáng hay không.

+ Multiplicity:

Multiplicity có liên quan đến khái niệm vùng chứa đã giải thích ở trên. Nó cho biết số lượng vùng chứa phụ/tham số có thể được thêm vào bên dưới một vùng chứa cụ thể. Nó cũng cho biết vùng chứa phụ hoặc tham số nên là tùy chọn hay bắt buộc.

Các giá trị bội số có hai loại:

+ Upper Multiplicity: Giá trị bội số trên cho biết số lượng bộ chứa phụ cao nhất có thể được thêm vào.
+ Lower Multiplicity: Giá trị bội số thấp hơn cho biết số lượng vùng chứa phụ thấp nhất có thể được thêm vào trong một vùng chứa.

Chúng ta có thể hiểu liệu một vùng chứa con hoặc tham số nên là tùy chọn hay duy nhất bằng cách diễn giải các giá trị bội số trên và bội số dưới. Dưới đây là một số ví dụ về sự kết hợp bội số và ý nghĩa của chúng:



Từ bảng chúng ta có thể hiểu những điều sau đây:

+ Khi cả hai bội số bằng nhau, số của chúng biểu thị các vùng chứa phụ bắt buộc.
+ Và bất cứ khi nào cả hai bội số không bằng nhau, thì số lượng vùng chứa thấp nhất có thể được thêm vào phải khớp với bội số thấp hơn và số lượng vùng chứa cao nhất phải khớp với bội số cao hơn và điều đó cũng có nghĩa là cấu hình của vùng chứa này là tùy chọn.
+ Và bội số trên với *(dấu hoa thị) cho biết chúng ta có thể có các vùng chứa/vùng chứa phụ vô hạn. Ví dụ về điều này có thể là trong mô-đun Com, chúng ta có thể có n số PDU .

Bạn sẽ bắt gặp thuật ngữ multiplicity trong quá trình cấu hình BSW . Số multiplicity không được tạo trực tiếp trong mã thay vì cấu hình ảnh hưởng đến multiplicity được tạo trong code.

+ Assembly Connector:

Assembly Connector được sử dụng khi giao tiếp cần được thực hiện giữa các SWC trong SWC Thành phần. Các đầu nối này kết nối các cổng của SWC cần được kết nối. Các đầu nối này là bước tiếp theo của cấu hình cổng, tất cả các cổng của SWC cần kết nối đều được kết nối bằng đầu nối lắp ráp. Bạn sẽ sử dụng điều này trong khi Cấu hình Hệ thống .

+ Delegation Connector:

Trình Delegation Connector được sử dụng khi một số cổng của SWC cần được tiếp xúc với thế giới bên ngoài của Composition SWC , khả năng tiếp xúc này có thể được kết nối với các SWC khác bằng cách sử dụng trình kết nối Assembly hoặc kết nối với BSW. Điều này là do, AUTOSAR không cho phép các SWC giao tiếp trực tiếp với bên ngoài Thành phần, do đó, để giao tiếp bên ngoài Thành phần và ủy quyền dữ liệu của các SWC bên trong với thế giới bên ngoài, các trình kết nối ủy quyền được sử dụng. Một lần nữa, bạn sẽ sử dụng thuật ngữ này trong Cấu hình Hệ thống.

Tôi hy vọng tôi đã giải thích các điều trên bằng cách đưa ra lời giải thích đơn giản. Danh sách các thuật ngữ đưa ra ở đây không đầy đủ sẽ được bổ sung thêm và trang này sẽ được cập nhật thường xuyên. Vậy nên hãy chờ trong giây lát🙂

Virtual Function Bus (VFB)


Khái niệm này sẽ rất hữu ích khi tìm hiểu về lớp RTE .

AUTOSAR dựa trên kiến ​​trúc phân lớp trong đó SWC nằm trong lớp ứng dụng giao tiếp với nhau. Việc giao tiếp có thể thực hiện được không chỉ trong cùng một ECU mà còn cả SWC của các ECU khác trong một hệ thống (xe). Cơ chế giao tiếp để đạt được chức năng này về cơ bản được gọi là Bus chức năng ảo hoặc viết tắt là VFB, nó được triển khai trong lớp RTE của AUTOSAR. Nó được gọi là "ảo" vì không có kết nối vật lý giữa các SWC, thay vào đó, SWC của ECU giao tiếp với SWC của các ECU khác trong một hệ thống (phương tiện) sử dụng bus giao tiếp cấp thấp như CAN hoặc FlexRay. AUTOSAR xử lý tất cả các vấn đề cấp thấp để các ECU nói chuyện với nhau như thể có mộtliên kết ảo giữa chúng. Do SWC này độc lập với phần cứng cơ bản thực tế và do đó có thể di chuyển khả năng của SWC, tức là có thể sử dụng cùng một SWC trên bất kỳ ECU nào với bất kỳ nền tảng phần cứng nào.



Hình 1 mô tả khái niệm VFB theo cách đơn giản hóa. Như có thể thấy từ hình trên, các SWC trong cùng một ECU có thể giao tiếp với nhau và cả với các SWC trong các ECU khác của hệ thống. Về mặt kỹ thuật, giao tiếp giữa các SWC của cùng một ECU được gọi là Giao tiếp trong ECU trong khi giao tiếp giữa các SWC của các ECU khác nhau được gọi là Giao tiếp giữa các ECU . Giao tiếp nội bộ ECU được thực hiện hầu như bằng các lệnh gọi chức năng được xác định trong RTE, mặt khác, giao tiếp giữa các ECU được thực hiện bằng cách sử dụng bus giao tiếp cơ bản như CAN hoặc FlexRay thông qua COM Stack cùng với RTE. Nếu các ECU sử dụng các bus truyền thông khác nhau, thì cần có Cổng để dịch dữ liệu từ loại bus này sang loại bus khác.

Vì AUTOSAR cung cấp cách phát triển phần mềm ECU được tiêu chuẩn hóa, System Configuration Description có tất cả thông tin về SWC của tất cả các ECU trong hệ thống. Mỗi ECU có lớp RTE tùy chỉnh thực hiện VFB cho các SWC tương ứng của nó. VFB giúp tách SWC và cơ sở hạ tầng cơ bản, do đó làm cho SWC hoàn toàn độc lập với phần cứng.

VFB cung cấp các cơ chế cho các dịch vụ sau được SWC sử dụng:

1. Giao tiếp với các SWC khác trong hệ thống.
2. Giao tiếp với các Cảm biến hoặc cơ cấu chấp hành trong hệ thống.
3. Cung cấp quyền truy cập vào các dịch vụ tiêu chuẩn như đọc/ghi vào bộ nhớ.
4. Đáp ứng với thay đổi chế độ.
5. Giao tiếp với các thiết bị đo lường và hiệu chuẩn bên ngoài.

Run Time Environment (RTE)


Run Time Environment nói chung Là Gì ?

Run Time Environment (RTE) còn được gọi là hệ thống thời gian chạy là môi trường thực thi giúp một ngôn ngữ hoặc phần mềm cụ thể chạy và có quyền truy cập vào phần cứng. Ví dụ, ngôn ngữ JAVA sử dụng JVM (Máy ảo JAVA) hoặc Python sử dụng Trình thông dịch Python. RTE giúp chương trình chạy chính xác trên phần cứng bằng cách trừu tượng hóa các phân bổ cấp thấp khác nhau như chức năng, biến đối với ánh xạ bộ nhớ, v.v. RTE cũng có thư viện phần mềm, biến môi trường được sử dụng bởi các quy trình đang chạy. RTE chủ yếu được sử dụng bởi các ngôn ngữ cấp cao.

Tôi là lập trình viên hệ thống Nhúng, không làm việc với RTE và ngôn ngữ C không yêu cầu bất kỳ RTE nào để chạy trên phần cứng hệ thống nhúng nên chúng tôi không biết về điều đó, nhưng AUTOSAR sử dụng RTE không theo nghĩa RTE cho cấp độ cao ngôn ngữ nhưng theo một cách khác.

Run Time Environment trong AUTOSAR ?

Môi trường thời gian chạy là trung tâm của kiến ​​trúc AUTOSAR ECU. RTE cùng với AUTOSAR COM , OS và các mô-đun BSW khác là triển khai VFB Concept cho ECU. Tất cả các cổng và giao diện được triển khai trong RTE, qua đó nhận ra giao tiếp giữa các SWC và cũng hoạt động như một phương tiện để SWC có thể truy cập các mô-đun BSW như các dịch vụ Hệ điều hành và Giao tiếp . Như đã mô tả ở trên, RTE có các giao diện mà Runnabletrong SWC giao tiếp với mô-đun SWC hoặc BSW khác. RTE ánh xạ các Runnables tới các tác vụ OS như được định cấu hình trong quá trình cấu hình RTE và thực thi các runnables trong cùng một nhiệm vụ hoặc khác nhau, RTE cũng xử lý công việc kích hoạt các runnables (nếu đáp ứng các điều kiện) bằng cách sử dụng các sự kiện RTE như được định cấu hình trong cấu hình SWC. RTE được liên kết chặt chẽ với bộ lập lịch BSW do cùng một tác vụ HĐH có thể được sử dụng cho cả việc lập lịch SWC và các thực thể có thể lập lịch (còn gọi là các chức năng xử lý chính) của mô-đun BSW. Về mặt logic, RTE được chia thành hai phần:

+ giao tiếp giữa các SWC
+ lập kế hoạch SWC

Bộ lập lịch RTE và BSW được tạo cho mỗi ECU để đảm bảo hoạt động và tùy chỉnh tối ưu ở cấp độ ECU. Trong phần này, chúng tôi sẽ tập trung vào RTE cho SWC.



AUTOSAR được phát triển với tầm nhìn tạo ra một kiến ​​trúc có ứng dụng độc lập với phần cứng , có thể định vị lại và tái sử dụng, nếu không có RTE thì điều này không thể đạt được vì RTE đóng vai trò là lớp keo để kết nối các SWC trong lớp ứng dụng với các lớp BSW, để đạt được RTE này được tạo riêng cho mỗi ECU. RTE không thể tái sử dụng vì nó được tạo ra để phù hợp với các yêu cầu của ứng dụng và nếu ứng dụng bị thay đổi thì RTE cũng cần phải được thay đổi. Tất cả các SWC đều có thể di động và có thể tái sử dụng ngoại trừ cảm biến/bộ truyền độngloại SWC phụ thuộc nhiều vào phần cứng của ECU. RTE được tạo sau khi tích hợp SWC, vì vậy RTE chịu trách nhiệm đảm bảo rằng hệ thống hoạt động như mong đợi bằng cách đảm bảo việc liên lạc giữa các SWC (giữa các SWC cũng như với các mô-đun BSW) diễn ra suôn sẻ bất kể SWC được triển khai ở đâu. RTE hỗ trợ cả SWC có mã nguồn cũng như SWC chỉ có mã đối tượng. RTE không hỗ trợ bất kỳ cấu hình lại thời gian chạy nào, nghĩa là mọi giao tiếp giữa SWC và mô-đun BSW phải được cấu hình trước khi RTE được tạo.

Công Dụng Hoặc Ứng Dụng Của RTE

RTE là một trong những thành phần quan trọng nhất của AUTOSAR vì nó thực hiện các hoạt động quan trọng hữu ích cho ứng dụng.

Một số công dụng của RTE:

+ RTE Triển khai bus chức năng ảo giúp kết nối các SWC bên trong ECU và các SWC bên ngoài ECU (thông qua kết nối mạng vật lý giữa các ECU)
+ RTE Thực hiện các đường dẫn giao tiếp bằng cách sử dụng các cổng và giao diện được sử dụng để kết nối giữa các SWC và mô-đun BSW của các lớp thấp hơn theo cấu hình.
+ Gọi và hỗ trợ nhiều Runnables của SWC dựa trên các sự kiện RTE khác nhau theo cấu hình.
+ Bao gồm bất kỳ SWC nào từ bất kỳ dự án nào trong quá trình định cấu hình và thực hiện thao tác như dự kiến ​​để đạt được khả năng tái sử dụng SWC và tính năng di động của AUTOSAR
+ Cho phép khởi tạo SWC và hỗ trợ khởi tạo đơn lẻ cũng như nhiều khởi tạo SWC
+ Khi RTE xử lý việc thực thi các runnables trong tác vụ HĐH, nó thực hiện bù kích hoạt được sử dụng để tối ưu hóa tải CPU, bộ nhớ, v.v. trong trường hợp các runnables được kích hoạt theo thời gian được ánh xạ trong cùng một tác vụ HĐH. Vì các biến kích hoạt theo thời gian cần được thực thi vào thời gian đã định cấu hình và tránh xung đột giữa các tệp có thể chạy bằng cách chồng chéo, RTE sử dụng bù kích hoạt. RTE xử lý việc này bằng cách tính toán khoảng thời gian tối đa của tác vụ là Ước chung lớn nhất (GCD) của tất cả các lần chạy được và nó giả định rằng mọi khoảng thời gian thực hiện tối đa có thể chạy được sẽ thấp hơn GCD.
+ RTE cũng thông báo cho các runnable về bất kỳ sự gián đoạn nào (nếu được định cấu hình) xảy ra ở các lớp thấp hơn, nhưng điều này không có nghĩa là các runnable sẽ được thực thi trong ISR! 😀Runnables là tập hợp con của SWC và SWC hoàn toàn độc lập với các lớp thấp hơn.
+ RTE phải đảm bảo tính nhất quán của dữ liệu khi chia sẻ các biến giữa các khả năng chạy của cùng một SWC, hoặc SWC giữa các phân vùng hoặc SWC trong phân vùng hoặc thậm chí trong giao tiếp giữa các SWC của các ECU khác nhau.
+ Giao tiếp giữa các SWC (trong giao tiếp Người gửi-người nhận) không chỉ giới hạn ở giao tiếp ngang hàng mà còn ở dạng kết hợp 1:N (giao tiếp của một SWC với nhiều SWC) hoặc N:1 (giao tiếp của nhiều SWC với một SWC). RTE cẩn thận để ngăn chặn bất kỳ xung đột nào nếu người gửi truyền đồng thời đến một người nhận hoặc ngược lại.
+ RTE thông báo cho người gửi về việc truyền tín hiệu thành công nếu TransmissionAcknowledgementRequest được người gửi yêu cầu. Thông báo này không đảm bảo rằng người nhận đã nhận được tín hiệu thành công.

Thế Hệ RTE

Tạo RTE là bước quan trọng và phức tạp nhất trong bất kỳ dự án dựa trên AUTOSAR nào. Kết quả của việc tạo RTE là các tệp khác nhau nhưng chúng tôi sẽ chỉ xem xét hai tệp quan trọng: 1. Tệp Rte.c , 2. Tệp Rte.h. Đây là kết quả tạo RTE phổ biến nhất nhưng một số nhà tích hợp cũng muốn tạo các tệp RTE riêng biệt (.c và .h) cho mỗi SWC, tệp này còn bao gồm d trong các tệp RTE chính chỉ để dễ quản lý các tệp RTE của dự án, việc tạo như vậy các tùy chọn có thể khác nhau dựa trên các công cụ AUTOSAR GUI. Trình tạo RTE có thể là một công cụ riêng biệt hoặc một công cụ tích hợp hoàn toàn phụ thuộc vào nhà cung cấp công cụ mà bạn sử dụng. Ví dụ: trong trường hợp Vector DaVinci, nhà phát triển DaVinci được sử dụng cho SWC, Runnables,tạo IDT , v.v. trong khi trình cấu hình DaVinci được sử dụng để cấu hình BSW và tạo RTE. Trong bất kỳ hệ thống dựa trên AUTOSAR nào, RTE được tạo riêng cho từng ECU vì SWC của mỗi ECU có thể có các yêu cầu riêng và do đó RTE đượctùy chỉnhđể đáp ứng các yêu cầu đó.



Hình trên đưa ra các bước tạo RTE đối với SWC và phần mềm tạo RTE. Hãy xem chi tiết từng bước:

B1. Thu thập các triển khai SWC có sẵn: Bước này bao gồm thu thập các tệp mô tả SWC (nếu có ý định sử dụng lại các SWC cũ) và các SWC Thành phần tương ứng của chúng và sử dụng chúng sau này. Hoặc chúng ta cũng có thể tạo triển khai SWC mới và sử dụng nó cho bước tiếp theo.
B2. Định cấu hình Hệ thống: Bước này kết hợp các SWC từ bước cũ và Hệ thống (mạng ECU toàn bộ xe) được định cấu hình có các SWC Thành phần khác nhau của các ECU khác nhau và các ràng buộc hệ thống khác. Trong bước này, tất cả các SWC được ánh xạ tới các ECU tương ứng của chúng.
B3. Mô tả cấu hình hệ thống: Đây là tệp arxml chứa thông tin chi tiết về ECU của toàn bộ Hệ thống (Xe) được tạo sau khi Cấu hình hệ thống. Để biết thêm thông tin về mô tả Cấu hình Hệ thống,
B4. Trích xuất thông tin cụ thể của ECU: Bước này trích xuất mô tả SWC và các chi tiết khác của một ECU duy nhất không giống như tệp mô tả cấu hình Hệ thống chứa thông tin của tất cả các ECU trong xe. Đầu ra của bước này được gọi là ECU Extract arxml, đây là bước tiếp theo. Để biết thêm thông tin về Trích xuất ECU
B5. Tạo cấu hình ECU: Bước này bao gồm cấu hình các lớp thấp hơn của AUTOSAR (bên dưới RTE) của các mô-đun BSW như Dịch vụ Com , v.v. Đầu ra của bước này lại là một tệp arxml chứa toàn bộ thông tin của ECU như cấu hình BSW, cấu hình SWC, v.v., đây là bước tiếp theo của quy trình tạo RTE.
B6. Tạo RTE: Đây là bước quan trọng trong quá trình tạo RTE. Trong bước này, tất cả các runnable được ánh xạ tới các tác vụ của hệ điều hành, tất cả các trình kết nối ủy quyền được ánh xạ tới các tín hiệu thực tế, v.v. Đầu ra của bước này là các tệp Rte.c và Rte.h có thể tạm gọi là lớp RTE của AUTOSAR. Tôi đang gọi đại khái vì có một số tệp khác cũng được liên kết với lớp RTE. Bước này cũng tạo tệp BSWMD (Mô tả mô-đun phần mềm cơ bản) chứa thông tin về các tính năng khác nhau của RTE.
B7. Biên dịch RTE: Như tên gợi ý, trong bước này, các tệp RTE được biên dịch (xem xét mã Runnable được viết) và các tệp đối tượng được tạo, sau đó được liên kết với các tệp BSW và SWC đã biên dịch khác để tạo tệp thực thi có thể được đưa vào MCU.

Các bước trên được lặp lại cho từng ECU của hệ thống. Cùng với các tệp RTE, các tệp SWC (.h và .c ) cũng được tạo cho mỗi SWC, một số phần mềm cũng tạo bộ khung của tệp có thể chạy được trong tệp SWC .c và nguyên mẫu hàm trong tệp SWC .h . Các tệp SWC sẽ có #include d với các tệp tiêu đề cần thiết (nhưng điều này phụ thuộc vào phần mềm Trình cấu hình bạn đang sử dụng). Tất cả các tệp RTE được tạo tuân theo tiêu chuẩn MISRA -C , mặc dù một số vi phạm MISRA được cho phép😀nhưng những trường hợp như vậy được ghi lại trong các bình luận. Tệp nguồn RTE có các lệnh gọi RTE theo yêu cầu của ứng dụng và các lớp khác cũng như các tệp tiêu đề RTE có nguyên mẫu cho các lệnh gọi đó.

Vì mục đích chính của AUTOSAR là khả năng sử dụng lại của SWC, do đó RTE hỗ trợ khả năng tương thích của SWC cho các phiên bản AUTOSAR khác nhau, với điều kiện là SWC có sẵn trong tệp nguồn của chúng chứ không phải mã đối tượng. Khả năng tương thích và tái sử dụng của SWC không chỉ giới hạn ở phiên bản AUTOSAR mà còn độc lập với nhà cung cấp công cụ, tức là SWC từ các nhà cung cấp công cụ khác nhau có thể được sử dụng miễn là mã nguồn của họ có sẵn.

Một Số Thông Tin Về RTE API

RTE cung cấp nhiều API khác nhau bằng cách sử dụng SWC để có thể truy cập dữ liệu từ các SWC khác hoặc các lớp thấp hơn. API RTE dễ dàng được phân biệt trong nguồn bằng cách xem tiền tố Rte_ của bất kỳ lệnh gọi hàm nào. API RTE được phân thành hai loại:

1. API trực tiếp: Đây là một loại API RTE được sử dụng khi cần yêu cầu hiệu quả (không có chi phí thời gian chạy). Các API này được tạo cho mỗi cổng và ứng dụng có thể trực tiếp sử dụng nó bằng cách gọi tên API trong runnable. Các API như vậy có thể được tối ưu hóa cho SWC trong khi ánh xạ các API. Thông thường, các API trực tiếp được triển khai dưới dạng macro do đó không thể lấy địa chỉ của API RTE để sử dụng với con trỏ hàm trong C, tuy nhiên, có một số cách khó để chúng ta có thể sử dụng con trỏ hàm nếu muốn trong ứng dụng của mình.

2. API gián tiếp: Đây là một loại API RTE trong đó API được gọi gián tiếp bằng cách sử dụng bộ điều khiển cổng. Loại API như vậy rất hữu ích khi có nhiều cổng của giao diện một cổng để chúng tôi có thể có một loạt các bộ điều khiển cổng của giao diện đó và API RTE tương tự có thể được sử dụng để truy cập nhiều cổng bằng cách chỉ cần chuyển bộ điều khiển cổng tương ứng trong khi gọi.

Cả lệnh gọi API trực tiếp và gián tiếp sẽ tạo ra cùng một kết quả chỉ khác về cách gọi. Trong SWC, chúng tôi có thể triển khai API gián tiếp hoặc trực tiếp.

Mối Quan Hệ Giữa Các Tệp Sau Khi Tạo RTE

Sau khi tạo RTE, công cụ tạo RTE tạo ra nhiều tệp trong đó các tệp tiêu đề có mối quan hệ với các tệp khác, tức là các tệp đó # bao gồm d trong các tệp khác nhau. Hãy xem các tệp và mối quan hệ của chúng với các tệp khác. Tệp được tạo:

1. Rte.h: Tệp này xác định các phần tử cố định không cần tạo cho mỗi ECU, vì phần mềm tạo RTE này không tạo tệp này lặp đi lặp lại. Tuy nhiên, chúng tôi có thể điều chỉnh tệp này để đáp ứng ứng dụng của chúng tôi nếu cần. Tệp này bao gồm tệp Std_Types.h .
2. Std_Types.h: Tệp này là tệp AUTOSAR tiêu chuẩn xác định các loại dữ liệu cơ bản như triển khai nền tảng cụ thể của số nguyên không dấu và số nguyên đã ký, đồng thời cung cấp các cách để truy cập phần trừu tượng của trình biên dịch.
3. Rte_Main.h: Đây là tệp tiêu đề Vòng đời có các nguyên mẫu chức năng của API vòng đời RTE như Rte_Start và Rte_Stop . Một số phần mềm cũng bổ sung thêm nhiều API vòng đời để khởi tạo bộ nhớ RTE, v.v. Tệp này bao gồm tệp Rte.h.
4. Rte_ .h: Đây là tệp tiêu đề RTE dành riêng cho ứng dụng, vì tên giải thích tiền tố của tên tệp luôn là Rte_ và hậu tố là tên SWC mà tệp ứng dụng RTE này được liên kết. Tệp này chứa các nguyên mẫu chức năng của API RTE, cấu trúc dữ liệu và nguyên mẫu chức năng của Runnable được sử dụng trong SWC được liên kết với SWC. Tệp này bao gồm tệp Rte_Type.h và Rte_DataHandle.h .
5. Rte_Type.h: Tệp này chứa các khai báo loại cụ thể của RTE bắt nguồn từ Kiểu dữ liệu triển khai được định cấu hình trong quá trình cấu hình SWC. Tệp này cũng chứa các loại dữ liệu AUTOSAR hữu ích cho API RTE. Tệp này bao gồm tệp Rte.h.
6. Rte_DataHandle.h: Tệp này chứa các khai báo loại Xử lý dữ liệu cần thiết cho cấu trúc dữ liệu SWC. Tệp này không chứa bất kỳ biểu tượng nào sẽ sử dụng bộ nhớ.
7. Rte__Type.h: Đây còn được gọi là tệp tiêu đề Loại ứng dụng, nó chứa các hằng số liên quan đến ứng dụng như giá trị phạm vi hoặc giá trị enum được sử dụng trong SWC. Một lần nữa, tên tệp sẽ bao gồm tên SWC trong miếng đệm. Tệp này bao gồm tệp Rte_Type.h .

Communication Stack




Trong hai bài viết trước của tôi ( Giới thiệu về AUTOSAR và AUTOSAR BSW ), chúng ta đã thảo luận ngắn gọn và chi tiết về kiến ​​trúc Phân lớp AUTOSAR. Nhưng bây giờ chúng ta sẽ đi sâu hơn nữa kể từ hôm nay bằng cách tập trung từng ngăn xếp khác nhau. Đầu tiên chúng ta sẽ tìm hiểu về Stack giao tiếp và sẽ nghiên cứu các stack cho từng giao thức giao tiếp như CAN, FlexRay, v.v. trong các bài viết khác nhau cho từng loại giao thức.

Để dễ hiểu, tôi đã chia khối dịch vụ liên lạc thành khối phụ thuộc network/bus và khối độc lập để dễ hiểu. Bài viết này sẽ chỉ tập trung giải thích ngắn gọn về khối giao tiếp độc lập network/bus của AUTOSAR. Tôi cũng sẽ giải thích chi tiết từng khối trong các bài viết trong tương lai của mình. Điều này sẽ giúp liên quan trong khi đọc các bài đăng giải thích các khối phụ thuộc vào network/bus trong ngăn xếp giao tiếp bằng cách liên kết bài đăng này.



Hình trên là sơ đồ khối ngăn xếp giao tiếp chung chỉ hiển thị các khối độc lập với mạng và tất cả các khối phụ thuộc Mạng sẽ được thay thế bằng khối giao thức truyền thông tương ứng, ví dụ: CAN sẽ có tất cả các khối liên quan đến CAN hoặc FlexRay sẽ có tất cả các khối liên quan đến FlexRay.

Trong hình này, chỉ các khối như: dịch vụ truyền thông , trừu tượng hóa phần cứng truyền thông , trình điều khiển truyền thông được xem xét, nhưng lần này với các khối chi tiết trong đó. Chúng ta đã thấy tóm tắt các khối này trong hướng dẫn AUTOSAR BSW , nếu bạn chưa đọc bài viết đó thì tôi khuyên bạn nên đọc nó trước rồi quay lại đây. Tất cả các khối đều độc lập với mạng (có màu cam), các khối độc lập này tồn tại dưới dạng một phiên bản trên mỗi ECU hay nói cách khác, các khối độc lập sẽ được sử dụng lại nếu sử dụng nhiều hơn một loại bus mạng, ví dụ như CAN và FlexRay được sử dụng đồng thời. Chúng ta hãy xem chúng một cách ngắn gọn:

1. Generic NM(Network Management) interface:

Nó là lớp thích ứng giữa Trình quản lý truyền thông và quản lý mạng cụ thể của xe buýt hoặc các khối phụ thuộc mạng như CAN NM hoặc FlexRay NM. Mô-đun này chỉ chứa bộ điều phối. Mô-đun này cũng có thể được sử dụng (tùy chọn) để thực hiện vai trò điều phối viên NM nơi các mạng thuộc các loại khác nhau có thể bật hoặc tắt đồng bộ, trong đó có thể dành riêng một ECU riêng gọi là ECU cổng. Việc triển khai Giao diện AUTOSAR NM có thể hỗ trợ:

+ Chức năng Giao diện NM không có bất kỳ chức năng điều phối viên NM nào
+ Chức năng Giao diện NM với chức năng điều phối viên NM được giới hạn để hỗ trợ tắt đồng bộ các xe buýt với AUTOSAR NM chạy trên các xe buýt
+ Chức năng Giao diện NM với chức năng điều phối viên NM để hỗ trợ tắt đồng bộ các bus với AUTOSAR NM và OSEK NM trực tiếp chạy trên các bus

Mô-đun này cung cấp các dịch vụ cho Trình quản lý truyền thông (ComM) và sử dụng các dịch vụ của các lớp thích ứng Quản lý mạng phụ thuộc vào mạng hoặc bus cụ thể tương ứng như CanNm , FrNm, LinNm. Mô-đun này chuyển đổi các lệnh gọi chức năng chung thành các lệnh gọi chức năng cụ thể trên xe buýt của lớp Quản lý mạng cụ thể trên xe buýt. Vì vậy, bất kỳ cuộc gọi chức năng liên quan đến giao tiếp nào được gọi từ lớp trên, mô-đun này sẽ chuyển tiếp nó tới các cuộc gọi cụ thể trên xe buýt tương ứng. Nó cũng chuyển đổi các cuộc gọi lại xe buýt cụ thể thành các cuộc gọi lại chung cho Trình quản lý giao tiếp. Bây giờ điều này ngược lại, tất cả các lệnh gọi lại nhận được từ các lớp thấp hơn (các mô-đun cụ thể của xe buýt) được chuyển đổi thành các lệnh gọi lại chung, bởi vì các lớp trên không “hiểu” mạng hoặc xe buýt mà chúng chỉ quan tâm đến dữ liệu, tức là Tín hiệu.

2. Diagnostic Log and Trace (Dlt) :

AUTOSAR có một tính năng hay để lưu trữ thông tin chẩn đoán và cũng có thể đọc thông tin này khi cần bởi nhà phát triển hoặc kỹ sư bảo trì bằng các công cụ chuyên dụng. Mô-đun này (Dlt) giúp đạt được việc truyền thông tin chẩn đoán trên bus truyền thông. Mô-đun này nhận thông tin từ DET (Trình theo dõi lỗi mặc định), DEM (Trình quản lý sự kiện chẩn đoán), thông tin theo dõi SW-Cs và RTE. Dlt truyền thông tin này trên các bus liên lạc để hiển thị thông tin này cho các thiết bị khác trên bus. Để truyền tin nhắn trên bus truyền thông, Dlt tương tác với PDUR . Dlt có một tập hợp các lệnh được hỗ trợ được xác định bởi ID dịch vụ, bắt đầu bằng 0x01 đến 0x23. Hãy xem các tương tác Dlt với các mô-đun được liệt kê khác:

+ Tương tác Dlt với các thành phần Phần mềm: Mô-đun Dlt cung cấp các giao diện mà SWC có thể sử dụng để gửi thông tin nhật ký và theo dõi tới Dlt, mà các kỹ sư bảo trì có thể đọc thêm khi cần.

+ Tương tác Dlt với RTE: RTE có một chức năng được gọi là Theo dõi VFB (Bus chức năng ảo), không có gì khác ngoài việc chuyển tiếp ngầm định dữ liệu liên lạc truyền từ SW-C đến Dlt qua RTE. Mô-đun Dlt cung cấp giao diện cho VFB Trace. Đối với nó, Dlt phải được cấu hình là VFB Trace Client và trong khi cấu hình, chúng ta có thể cấu hình những sự kiện nào có thể theo dõi được trong cấu hình của mô-đun RTE.

+ Tương tác Dlt với DEM: DEM lưu trữ các sự kiện và thông báo được tạo từ các mô-đun SW-C và BSW . Những sự kiện này được đánh số theo ID sự kiện. Mỗi khi trạng thái của một sự kiện thay đổi, DEM gọi hàm Dlt_DemTriggerOnEventStatus để thông báo cho Dlt về sự thay đổi này. Trong hàm này, mô-đun DEM cung cấp EventID của sự kiện có trạng thái đã thay đổi. Trong chức năng này, mô-đun Dlt so sánh trạng thái cũ với trạng thái của sự kiện. trạng thái sự kiện mới, Nếu trạng thái sự kiện được thay đổi thì Dlt sẽ tạo thông báo nhật ký Dlt với trạng thái mới và gửi nó bằng cách gọi Dlt_SendLogMessage .

+ Tương tác Dlt với DET: Các mô-đun SW-C và BSW có thể báo lỗi cho mô-đun DET. Những lỗi như vậy có thể được chuyển tiếp đến mô-đun Dlt dưới dạng thông báo có nội dung phù hợp bằng cách sử dụng chức năng Dlt_DetForwardErrorTrace và nhà phát triển có thể nhìn thấy.

3. Diagnostic Communication Manager (DCM):

Mô-đun DCM nhận thông báo chẩn đoán từ mô-đun PduR . Mô-đun DCM xử lý và kiểm tra nội bộ thông báo chẩn đoán. Là một phần của quá trình xử lý dịch vụ chẩn đoán được yêu cầu, DCM sẽ tương tác với các mô-đun BSW khác hoặc với các Thành phần SW (thông qua RTE) để lấy dữ liệu được yêu cầu hoặc thực thi các lệnh được yêu cầu. Quá trình xử lý này rất cụ thể theo dịch vụ. Thông thường, DCM sẽ tập hợp thông tin thu thập được và gửi lại thông báo qua mô-đun PduR. Hãy xem các tương tác của mô-đun này với các mô-đun khác:

+ Trình quản lý sự kiện chẩn đoán (DEM): Mô-đun DEM cung cấp chức năng truy xuất thông tin liên quan đến bộ nhớ lỗi (các vị trí bộ nhớ lưu trữ lỗi) bằng cách sử dụng DCM để đáp ứng các yêu cầu từ người kiểm tra bằng cách đọc dữ liệu từ bộ nhớ lỗi.

+ Bộ định tuyến Đơn vị Dữ liệu Giao thức (PduR): Mô-đun PduR cung cấp các chức năng để truyền và nhận dữ liệu.

+ Trình quản lý giao tiếp (ComM): Mô-đun ComM cung cấp các chức năng sử dụng DCM để chỉ báo trạng thái “hoạt động” và “không hoạt động” trong giao tiếp chẩn đoán. Mô-đun DCM cung cấp chức năng xử lý các yêu cầu giao tiếp từ ComM “Đầy đủ-/ Im lặng-/ Không giao tiếp”. Ngoài ra, mô-đun DCM cung cấp chức năng bật và tắt Giao tiếp chẩn đoán nếu mô-đun ComM yêu cầu.

+ SW-C và RTE: Mô-đun DCM có khả năng phân tích luồng dữ liệu yêu cầu chẩn đoán nhận được và xử lý tất cả các chức năng liên quan đến giao tiếp chẩn đoán như xử lý giao thức và thời gian. Dựa trên phân tích luồng dữ liệu yêu cầu, mô-đun DCM sẽ tập hợp luồng dữ liệu phản hồi và ủy quyền các quy trình hoặc thực thi Kiểm soát IO cho SW-C. Nếu bất kỳ phần tử dữ liệu hoặc trạng thái chức năng nào không thể được cung cấp bởi chính mô-đun DCM thì DCM yêu cầu dữ liệu hoặc trạng thái chức năng từ SW-C thông qua giao diện cổng hoặc từ các mô-đun BSW khác thông qua lệnh gọi hàm trực tiếp.

+ BSW Scheduler Module (SchM): Mô-đun SchM cung cấp các chức năng để kích hoạt/hủy bỏ các chức năng xử lý chính.

+ EcuM: EcuM có thể khởi tạo mô-đun DCM.

+ Mcu: Mcu cho phép DCM thực hiện thiết lập lại bộ điều khiển.

4. AUTOSAR COM:

Đây là một trong những mô-đun quan trọng nhất của giao tiếp AUTOSAR. Bạn có thể hiểu rõ điều này khi tôi giải thích một số thuật ngữ cơ bản về giao tiếp AUTOSAR.

+ Tín hiệu: AUTOSAR thực hiện giao tiếp dựa trên tín hiệu. Tín hiệu là lượng thông tin nhỏ nhất trong tin nhắn CAN. Một tín hiệu có thể có kích thước bất kỳ từ 1 bit đến tất cả 64 bit của bản tin CAN. Nói cách khác, thông báo CAN được chia thành các bit gọi là tín hiệu và ứng dụng hoạt động dựa trên tín hiệu. Đối với kiểu dữ liệu nguyên thủy này được hỗ trợ như int, char, v.v. Thậm chí có thể có Nhóm Tín hiệu được sử dụng khi các tín hiệu cần được giữ chặt chẽ với nhau. Các nhóm tín hiệu có thể được sử dụng để hỗ trợ cấu trúc dữ liệu phức tạp như cấu trúc.

+ PDU: Trong ngữ cảnh AUTOSAR, thông báo được gọi là PDU (Đơn vị dữ liệu giao thức). PDU có thể tạm coi là một gói các tín hiệu. Việc đóng gói hoặc giải nén tín hiệu trong PDU này được AUTOSAR COM thực hiện trong khi truyền hoặc nhận dữ liệu tương ứng.

Do đó, chức năng chính của COM là đóng gói/giải nén các tín hiệu trong PDU trong quá trình truyền hoặc nhận tương ứng. COM cung cấp giao diện định hướng tín hiệu cho RTE. Bên dưới COM, không có mô-đun nào hiểu giao diện định hướng tín hiệu. Nó cũng thực hiện chức năng điều khiển truyền thông tin liên lạc và giám sát các tín hiệu nhận được. Trao đổi tín hiệu bên ngoài giữa các SW-C trên các ECU khác nhau được định tuyến qua RTE qua COM đến PDU-Router và sau đó đến hệ thống xe buýt như được định cấu hình trong quá trình định cấu hình. COM được sử dụng thêm cho:

+ Định tuyến tín hiệu từ các I-PDU đã nhận
+ Bắt đầu hoặc Dừng I-PDU.
+ Chuyển đổi thứ tự byte

5. Large Data COM (LdCom):

Mô-đun AUTOSAR LdCom cung cấp Cơ chế Lớp Tương tác thay thế. Bằng cách tập trung vào giao tiếp tự phát, không theo chu kỳ mà không tuần tự hóa, lọc và chuyển đổi, việc triển khai mô-đun hiệu quả mà không cần bộ đệm cục bộ đã đạt được. LdCom là một phương tiện bổ sung để gửi và nhận tín hiệu cùng với Com nhưng có nhiều tính năng hơn như được liệt kê bên dưới. Nó xử lý chủ yếu các chức năng sau:

+ Cung cấp giao diện dữ liệu hướng tín hiệu cho RTE
+ Cung cấp tín hiệu nhận được cho RTE
+ Hỗ trợ các loại dữ liệu có độ dài lớn và động
+ Hỗ trợ giao tiếp dựa trên IF và TP
+ Cung cấp giao diện dữ liệu hướng PDU hướng tới PduR

6. Protocol Data Unit Router (PduR):

PDU như tên gợi ý được sử dụng để định tuyến I-PDU (để biết thêm thông tin về điều này, hãy kiểm tra I-PDU ) giữa các mô-đun như mô-đun giao diện truyền thông (như CAN IF , LIN IF, v.v. ), DCM, AUTOSAR COM, v.v. PDU được xác định bởi ID PDU tĩnh. PDUR xác định đích đến của PDU bằng cách sử dụng PDU ID và bảng cấu hình tĩnh. PDUR không sửa đổi dữ liệu, thay vào đó, nó chỉ định tuyến PDU đến đích của nó.

Mô-đun Bộ định tuyến PDU cung cấp API cho các mô-đun bên dưới mô-đun Bộ định tuyến PDU (mô-đun giao diện truyền thông và mô-đun giao thức truyền tải) và API cho các mô-đun ngay bên trên (ví dụ: DCM và COM). Hơn nữa, mô-đun Bộ định tuyến PDU cung cấp giao diện cho bộ ghép kênh I-PDU (IPDUM) được đặt bên cạnh Bộ định tuyến PDU. Tất cả các giao diện này được xây dựng sao cho các hoạt động cần thiết để truyền dữ liệu giữa lớp dưới và lớp trên được giảm thiểu.

Mô-đun Bộ định tuyến PDU là một phần của AUTOSAR Basic SW và được khởi tạo bắt buộc trong mọi AUTOSAR ECU.

7. IPDU Multiplexer (IpduM) :

Ghép kênh PDU có nghĩa là sử dụng cùng một PCI (Thông tin điều khiển giao thức) của PDU (Đơn vị dữ liệu giao thức) với nhiều hơn một bố cục duy nhất của SDU (Đơn vị dữ liệu dịch vụ) của nó để biết thêm thông tin về PCI và SDU, hãy đọc bài viết về các điều khoản chung của AUTOSAR trên PDU . Trường bộ chọn là một phần của SDU của PDU ghép kênh. Nó được sử dụng để phân biệt nội dung của các PDU ghép kênh với nhau. Về phía người gửi, mô-đun Bộ ghép kênh I-PDU chịu trách nhiệm kết hợp các I-PDU thích hợp từ COM với các I-PDU ghép kênh mới và gửi chúng trở lại Bộ định tuyến PDU. Về phía người nhận, nó chịu trách nhiệm diễn giải nội dung của các I-PDU được ghép kênh và cung cấp cho COM các I-PDU được tách riêng thích hợp của nó có tính đến giá trị của trường bộ chọn.

8. Secure Onboard Communication(SecOC):

Mô-đun SecOC nhắm đến các cơ chế xác thực khả thi và hiệu quả về tài nguyên đối với dữ liệu quan trọng ở cấp độ PDU. Mô-đun SecOC nhận I-PDU từ PduR, trên đó mô-đun SecOC thêm hoặc xử lý thông tin liên quan đến bảo mật và hoàn nguyên các kết quả ở dạng I-PDU thành PduR. PduR sau đó tiếp tục định tuyến I-PDU. Mô-đun SecOC sử dụng các dịch vụ mật mã và tương tác với RTE để quản lý khóa và bộ đếm.

Generic Network Management Interface




Chúng tôi đã đề cập ngắn gọn về các khối chung của Dịch vụ truyền thông trong bài viết khác của tôi, bây giờ tôi sẽ giải thích chi tiết từng khối của nó, bài viết này sẽ tập trung vào khối giao diện quản lý Mạng chung. Giao diện quản lý mạng chung (NM) là một phần của các khối chung của khối Dịch vụ truyền thông của Kiến trúc phân lớp AUTOSAR. Nó là lớp thích ứng giữa Trình quản lý giao tiếp AUTOSAR (ComM) và khối Bus cụ thể hoặc quản lý mạng phụ thuộc mạng (NM) của Bus (ví dụ: CanNm cho bus CAN). Nó xử lý nhiệm vụ thay đổi trạng thái mạng từ thức sang ngủ để tiết kiệm điện năng.

Lưu ý: Vui lòng không nhầm lẫn giữa mô-đun quản lý Mạng chung với mô-đun quản lý mạng dành riêng cho Xe buýt khi đọc thêm.🙂



Hình trên là Com Stack chỉ có khối Generic Network Management được tô sáng. Đây là một khối độc lập với mạng do đó nó chỉ được khởi tạo một lần và được sử dụng lại cho tất cả các xe buýt, tức là sẽ không có các khối khác nhau cho CAN Bus và FlexRay Bus , thay vào đó, cùng một khối NM sẽ được sử dụng cho cả hai xe buýt. Generic NM cung cấp giao diện cho Trình quản lý truyền thông (ComM) và sử dụng các dịch vụ được cung cấp bởi các mô-đun NM cụ thể trên xe buýt như CanNm. ComM giao tiếp với mô-đun NM dành riêng cho xe buýt thông qua mô-đun NM chung do đó đạt được sự trừu tượng hóa hoàn toàn và độc lập với phần cứng (Bus).

Một số tính năng của mô-đun Quản lý mạng chung:

+ NM chung cho phép bổ sung adhoc các nút mới một cách liền mạch, chỉ cần nút đó phải có thuộc tính “NmSelectiveNmChannel” được đặt thành Sai trong khi định cấu hình. Các nút mới được thêm vào như vậy có thể thuộc các loại như: các nút kết nối muộn, các nút được khôi phục từ trạng thái lỗi hoặc các nút được thêm động trong mạng trực tiếp.
+ NM chung cho phép SWC giao tiếp ngay cả khi NM chung không khởi tạo được hoặc chưa khởi tạo.
+ NM chung là một mô-đun mạng độc lập, hoạt động đồng thời với bất kỳ bus truyền thông nào miễn là nó được hỗ trợ bởi AUTOSAR.
+ Nếu không có nút nào cần bus, thì Generic NM sẽ đặt bus ở chế độ ngủ.

Mô-đun NM chung chủ yếu thực hiện hai thao tác như sau:

+ Chuyển đổi các cuộc gọi chức năng chung thành các cuộc gọi cụ thể trên xe buýt và ngược lại: Các cuộc gọi chức năng từ Trình quản lý giao tiếp về bản chất là độc lập với xe buýt, mô-đun NM Chung chuyển đổi các cuộc gọi này và “chỉ đạo” chúng thành các cuộc gọi xe buýt cụ thể sẽ có trong CanNm cho CAN hoặc FrNm cho FlexRay. Nó cũng chuyển đổi cuộc gọi cụ thể của xe buýt trở lại thành cuộc gọi độc lập xe buýt được hướng tới ComM.
+ Thực hiện vai trò của bộ điều phối NM: Mô-đun NM chung có thể được sử dụng để thực hiện chức năng của bộ điều phối NM trong một ECU riêng gọi là ECU cổng được kết nối với nhiều bus (như CAN bus, FlexRay, v.v.). Chức năng như vậy là cần thiết để thực hiện tắt đồng bộ NM của xe buýt (điều này có nghĩa là NM cụ thể của xe buýt trong ECU ở đầu kia của xe buýt) trong kịch bản nhiều xe buýt, xe buýt như vậy được gọi là xe buýt phối hợp. Ở đây đồng bộ có nghĩa là tất cả các nút trong bus sẽ tắt (hoặc chuyển sang trạng thái tắt nguồn) bởi điều phối viên NM đồng bộ vì mỗi nút trong bus sẽ biết nếu có bất kỳ nút nào đang sử dụng bus hoặc sẵn sàng ngủ và nếu không có nút nào đang sử dụng xe buýt, sau đó tất cả các nút sẽ cùng chuyển sang trạng thái tắt nguồn với sự trợ giúp của bộ điều phối NM. Mô-đun NM chung sử dụng một thuật toán đặc biệt để thực hiện chức năng này được gọi là thuật toán điều phối . Điều phối viên NM giữ cho xe buýt hoạt động nếu ít nhất một nút trong mạng cần xe buýt, điều đó có nghĩa là nó sẽ không cho phép người khác ngủ ngay cả khi họ muốn! 😀Mỗi bus phối hợp (ECU sẽ lắng nghe điều phối viên NM) có thuộc tính có thể định cấu hình có thể được định cấu hình trong phần mềm Trình cấu hình như Vector DaVinci Configurator“NmSelectiveNmChannel” nếu nó được đặt thành True, thì điều phối viên NM sẽ bỏ qua nút đó và việc tắt nút đó không nằm dưới sự kiểm soát của điều phối viên NM hoặc đó sẽ là tắt máy không đồng bộ. Nếu chỉ có điều phối viên NM đang sử dụng bus và tất cả các bus được điều phối khác không sử dụng, thì NM Coordinator sẽ tắt toàn bộ bus bằng cách gửi thông báo NM đến các nút khác trong mạng và nếu không có thông báo NM nào từ các nút khác trong mạng, thì NM Điều phối viên coi đây là “không ai cần xe buýt” và sau đó tắt xe buýt. NM chung sẽ không giúp ích gì trong "đánh thức đồng bộ" vì nó không bắt buộc vì Trình quản lý giao tiếp sẽ đánh thức nút tương ứng khi các nút đó cần sử dụng bus.

Chức năng của NM Coordinator là tùy chọn, NM chung hỗ trợ như sau:

+ Chức năng giao diện NM không có chức năng điều phối viên NM
+ Chức năng giao diện NM bị giới hạn chỉ hỗ trợ chức năng điều phối viên NM với ECU sử dụng mô-đun Quản lý mạng dựa trên AUTOSAR.
+ Chức năng giao diện NM để hỗ trợ chức năng điều phối viên NM với cả hai, ECU sử dụng NM dựa trên AUTOSAR cũng như NM dựa trên OSEK . AUTOSAR dựa trên triển khai OSEK, nhưng nó có nhiều phần mở rộng hơn so với OSEK. Vì vậy, AUTOSAR sử dụng triển khai NM khác với NM của OSEK, có một sự khác biệt nhỏ. Giao diện NM có thể hỗ trợ đồng thời cả hai loại triển khai NM, vì AUTOSAR tương thích ngược với OSEK.

Các Tệp Được Tạo Cho Generic NM

Chỉ một tệp C duy nhất được tạo cho NM có tên là Nm.c . Nó có tất cả việc triển khai chức năng NM như đã thảo luận ở trên và theo cấu hình. Một số công cụ cũng triển khai macro thay vì tệp C riêng biệt để thực hiện chức năng NM.

Bốn tệp tiêu đề được tạo là:

+ Nm.h : Tệp này chứa nguyên mẫu hàm của các hàm trong tệp Nm.c.
+ Nm_Cbk.h : File này chứa các nguyên mẫu hàm gọi lại các hàm trong file Nm.c
+ Nm_Cfg.h: Tệp này chứa các tham số có thể định cấu hình thời gian biên dịch trước.
+ Nm_StackTypes.h: Tệp này chứa typedef và các cấu trúc được sử dụng trong tệp Nm.c.

Can Stack




Trong bài viết trước của tôi , chúng ta đã thảo luận ngắn gọn về các khối chung và bus độc lập của ngăn xếp Giao tiếp AUTOSAR. Nếu bạn chưa đọc bài viết đó, thì tôi khuyên bạn nên đọc nó trước khi tiếp tục.

Ngăn giao tiếp CAN là một nhóm các mô-đun dành cho hệ thống giao tiếp trên xe sử dụng bus CAN. Điều này cung cấp một giao diện thống nhất cho mạng CAN cùng với việc ẩn các thuộc tính giao thức và thông báo khỏi ứng dụng. Tầng ứng dụng chỉ quan tâm đến dữ liệu, không quan tâm đến các hoạt động cấp thấp hơn như: bus nào được sử dụng hay dữ liệu được truyền có vừa với khung CAN hay không, v.v. Các hoạt động cấp thấp hơn này được xử lý bởi ngăn xếp Giao tiếp. Ngăn giao tiếp CAN hỗ trợ CAN tiêu chuẩn cũng như CAN FD (nếu được hỗ trợ bởi phần cứng).



Hình trên cho thấy các lớp chi tiết liên quan đến ngăn xếp giao tiếp CAN trong AUTOSAR. Trong hình này, chỉ các khối như: dịch vụ truyền thông, trừu tượng hóa phần cứng truyền thông, trình điều khiển truyền thông được xem xét (vì chúng ta chỉ đang thảo luận về các khối liên quan đến ngăn xếp truyền thông), nhưng lần này với các khối chi tiết trong đó. Một số khối phụ thuộc vào mạng/bus (màu xanh đậm) và một số không phụ thuộc vào mạng/bus (màu cam), những khối độc lập tồn tại dưới dạng một phiên bản trên mỗi ECU hay nói cách khác, các khối độc lập sẽ được sử dụng lại nếu có nhiều loại của bus mạng được sử dụng, ví dụ CAN và FlexRay trong một ECU sẽ có các khối phụ thuộc bus tương ứng của riêng chúng nhưng các khối độc lập mạng/bus sẽ được sử dụng lại. Hãy xem ngắn gọn từng khối:

1. CAN NM : Đây là mô-đun phụ thuộc CAN nhưng nó độc lập với phần cứng, tức là nó sẽ chỉ được sử dụng nếu bus CAN được sử dụng trong ứng dụng nhưng việc triển khai phần mềm của nó độc lập với phần cứng. Mục đích chính của nó là phối hợp giữa các chế độ khác nhau của mạng CAN, như: chế độ ngủ của xe buýt và hoạt động bình thường. Ngoài ra, nó cũng cung cấp các tính năng có thể định cấu hình như triển khai dịch vụ để phát hiện tất cả các nút hiện tại hoặc kiểm tra xem tất cả các nút đã sẵn sàng ở chế độ ngủ chưa. Chức năng CAN NM cung cấp lớp thích ứng giữa Giao diện quản lý mạng (Nm) và Giao diện CAN ( CanIf ). CAN NM bao gồm ba chế độ: Chế độ mạng, Chế độ chuẩn bị ngủ cho xe buýt và chế độ ngủ xe buýt.

2. Trình quản lý trạng thái CAN (CanSM): AUTOSAR BSW cung cấp trình quản lý trạng thái cụ thể cho mạng/bus tương ứng. CanSM được sử dụng để thay đổi chế độ của mạng CAN. Trong ECU, có thể có nhiều mạng/bus truyền thông và mỗi mạng có một bộ điều khiển mạng duy nhất được liên kết với nó. Mô -đun ComM theo dõi các chế độ giao tiếp của mạng bằng cách yêu cầu từ các bộ điều khiển mạng đó. ComM biết bằng cấu hình của mình tay cầm nào được gán cho CAN hoặc FlexRay hoặc bất kỳ loại mạng nào khác. Đối với CAN, ComM sử dụng CanSM để yêu cầu các chế độ của mạng CAN. Mô-đun CanSM chịu trách nhiệm kiểm soát sự trừu tượng hóa luồng của mạng CAN trong AUTOSAR. Nó thay đổi các chế độ của mạng CAN theo yêu cầu được gửi từ mô-đun ComM. CAN SM sử dụng API của CANIf bất kỳ thay đổi nào về chế độ của bộ điều khiển CAN hoặc bộ thu phát CAN sẽ được CANIf thông báo cho CanSM. Tùy thuộc vào thông báo này và trạng thái của máy trạng thái mạng CAN mà mô-đun CanSM sẽ triển khai cho từng mạng CAN được định cấu hình, mô-đun CanSM sẽ thông báo cho ComM.

3. Giao thức truyền tải CAN (CanTp): Nhiều lần PDU (tin nhắn) cần truyền hoặc nhận có thể vượt quá kích thước tối đa của tin nhắn CAN được hỗ trợ. Để giải quyết các vấn đề và hạn chế của CAN, AUTOSAR triển khai khối CanTp. Các tin nhắn không vừa với một khung CAN duy nhất được phân đoạn thành nhiều phần, sao cho mỗi phần có thể được truyền trong một khung CAN duy nhất. Khối này cung cấp các dịch vụ để thực hiện phân đoạn I-PDU có kích thước lớn hơn kích thước tối đa được phép cho CAN. Khối này cũng cung cấp các dịch vụ tập hợp lại các PDU đã nhận, sau đó được chuyển tiếp đến lớp ứng dụng bằng cách giải nén các tín hiệu từ nó. CanTp cũng có các dịch vụ để phát hiện lỗi trong phân đoạn. CanTP dựa trên ISO 15765 là tiêu chuẩn cho CAN. PDURxác định có nên sử dụng mô-đun này hay không bằng cách xem xét kích thước của PDU, nếu PDU phù hợp với một khung CAN duy nhất thì nó sẽ được chuyển tiếp trực tiếp đến mô-đun tiếp theo thay vì mô-đun CanTp hoặc nếu PDU không phù hợp với một khung CAN duy nhất sau đó PDU đó đi qua CanTp rồi đến các lớp thấp hơn. Cơ chế tương tự được thực hiện khi nhận được PDU.

4. Giao diện CAN (CanIf): Nó biểu thị giao diện cho các dịch vụ của Trình điều khiển CAN cho lớp giao tiếp phía trên. Nó cung cấp giao diện duy nhất để quản lý các loại thiết bị phần cứng khác nhau như bộ điều khiển CAN và Bộ thu phát CAN theo cách bố trí phần cứng ECU. Do đó, nhiều bộ điều khiển CAN bên trong hoặc bên ngoài/bộ thu phát CAN có thể được điều khiển bởi trình quản lý trạng thái CAN ( CanSM) đều. Nó kiểm soát các chuyển đổi trạng thái của bộ điều khiển CAN từ CanSM và thông báo các thay đổi trạng thái cho lớp trên. Mô-đun giao diện CAN bao gồm tất cả các tác vụ độc lập với phần cứng thuộc về trình điều khiển thiết bị giao tiếp CAN của ECU. Các tác vụ này được triển khai một lần trong mô-đun giao diện CAN, do đó trình điều khiển thiết bị CAN bên dưới chỉ có thể tập trung vào việc truy cập và kiểm soát thiết bị phần cứng CAN cụ thể tương ứng. CanIf đáp ứng các yêu cầu điều khiển chính và luồng dữ liệu của bộ định tuyến PDU và các mô-đun giao tiếp lớp trên của ngăn xếp AUTOSAR COM. Các yêu cầu như: truyền xử lý yêu cầu, truyền xác nhận / nhận chỉ báo / thông báo lỗi và khởi động / dừng Bộ điều khiển CAN và do đó đánh thức / tham gia vào mạng.

5. Trình điều khiển bộ thu phát CAN: Bất cứ khi nào không có bộ thu phát CAN trên chip trong MCU, bộ thu phát CAN bên ngoài thường được sử dụng trên bo mạch của ECU. Khối này cung cấp trình điều khiển cho các chip Bộ thu phát CAN bên ngoài như vậy. Nó hỗ trợ chip thu phát CAN giao tiếp trên SPI .

6. Trình điều khiển cho CAN ASIC bên ngoài: Điều này đúng như tên gọi, sẽ cung cấp trình điều khiển cho Mạch tích hợp dành riêng cho ứng dụng CAN ( ASIC ). Có thể có trường hợp khi chip Bộ thu phát CAN tiêu chuẩn không phù hợp với ứng dụng, trong trường hợp đó, khối này sẽ xuất hiện. Đây là trường hợp rất hiếm, phần lớn các ứng dụng sử dụng chip Bộ thu phát CAN tiêu chuẩn.

Dưới đây chúng ta sẽ thấy hành trình của tin nhắn CAN từ tín hiệu đến tin nhắn đã sẵn sàng để truyền đi:



Hình trên là một hình vẽ rất đơn giản về hành trình của tín hiệu CAN để trở thành một thông điệp sẵn sàng truyền đi. Tín hiệu được tạo bởi lớp ứng dụng và được gửi qua RTE đến AUTOSAR COM, cho đến khi giao diện định hướng tín hiệu này tồn tại. Các lớp bên dưới không thể phân biệt giữa các tín hiệu và chỉ hiểu PDU. Vì vậy, COM gói tín hiệu vào một PDU , tín hiệu này sẽ được chuyển tiếp sang PduR . PduR sau đó chuyển nó sang CanTp vì trong trường hợp này, PDU được giả định là lớn hơn kích thước tối đa cho phép của khung CAN, sau đó nó sẽ được phân đoạn thành nhiều PDU. Bạn cũng nên chú ý rằng tên PDU thay đổi cho từng lớp, tôi đã giải thích điều này trong bài báo khác. Nếu bạn không chắc chắn về những thay đổi tên PDU thì bạn nên kiểm traPDU thay đổi liên kết . Mô hình ngược lại được thực hiện trong khi nhận bản tin CAN, ngoại trừ CanTp sẽ tập hợp lại các phân đoạn PDU thành một PDU duy nhất và truyền đến các lớp trên.

Chẩn Đoán (Diagnostic - Dlt)


Giới thiệu

Trong lập trình hệ thống nhúng nói chung, chúng tôi sử dụng UART hoặc bất kỳ giao diện nối tiếp nào để gửi hoặc nhận thông báo gỡ lỗi hoặc thông tin về mã đang hoạt động hoặc đang chạy trên phần cứng. Nhưng chúng ta cần thực hiện chức năng đó bằng cách viết một đoạn mã riêng để thực hiện thao tác nhận và truyền thông báo gỡ lỗi từ UART hoặc giao diện nối tiếp. Nếu chúng tôi sử dụng RTOS, chúng tôi cũng có thể nhận thông tin liên quan đến HĐH trên giao diện nối tiếp như UART ngoài thông tin ứng dụng.

Tương tự, AUTOSAR có một mô-đun chuyên dụng trong kiến ​​trúc phân lớp để thực hiện cùng một công việc truyền thông báo thông tin chẩn đoán/gỡ lỗi thông qua UART hoặc giao diện nối tiếp hoặc CDD (Trình điều khiển thiết bị phức hợp) và nhận các lệnh Dlt từ công cụ Nhật ký bên ngoài. Thông tin gỡ lỗi như vậy có thể được gửi từ Ứng dụng ( SWC ), DEM (Trình quản lý sự kiện chẩn đoán), DET (Trình theo dõi lỗi mặc định) và RTE . Mô-đun Dlt tiếp tục gửi thông tin nhận được này tới DCM hoặc CDD hoặc Giao diện gỡ lỗi (giao diện nối tiếp) để truyền thông tin này tới nhà phát triển/người thử nghiệm.

Mô-Đun Dlt Chi Tiết:

Dlt là mô-đun phần mềm cơ bản ( BSW ) cũng là một phần của Com Stack , cung cấp phương tiện Ghi nhật ký và Truy tìm cho SWC, DET, DEM và RTE. Mô-đun Dlt nằm trên PduR và bên dưới RTE. Theo dõi ở đây có nghĩa là theo dõi VFB có tất cả thông tin trao đổi dữ liệu cho một SWC thông qua các cổng. Mô-đun Dlt thực hiện các chức năng sau:

+ Ghi nhật ký: Chức năng này liên quan đến việc ghi nhật ký các lỗi, cảnh báo và thông báo thông tin từ SWC thông qua giao diện AUTOSAR được tiêu chuẩn hóa , thu thập tất cả thông báo nhật ký và theo dõi từ SWC trong một thành phần dịch vụ tập trung trong BSW, thông báo nhật ký từ DET hoặc DEM.
+ Truy vết: Chức năng này hữu ích để ghi lại dấu vết RTE hoặc VFB.
+ Kiểm soát: Dlt cũng xử lý một số chức năng kiểm soát như bật/tắt thông báo nhật ký hoặc kiểm soát các mức theo dõi riêng lẻ theo cấu hình bằng công cụ chuyên dụng.
+ Chung: Các chức năng chung như: Mô-đun Dlt có sẵn trong giai đoạn gỡ lỗi và sản xuất, Dlt có thể truy cập được bằng cách sử dụng giao diện nền tảng hoặc chẩn đoán tiêu chuẩn, mô-đun Dlt cũng cung cấp các cơ chế bảo mật để ngăn chặn việc lạm dụng trong giai đoạn sản xuất.



Dlt nhận thông tin như: trạng thái của ứng dụng từ SWC hoặc thông báo nhật ký, lỗi phát triển từ Trình theo dõi lỗi mặc định [DET] (chịu trách nhiệm theo dõi lỗi trong BSW xảy ra trong quá trình phát triển trong thời gian chạy), thông báo chẩn đoán từ Trình quản lý sự kiện chẩn đoán [DEM] ( chịu trách nhiệm quản lý các thông báo chẩn đoán có thông tin chẩn đoán như Đóng khung, Mã sự cố chẩn đoán [DTC]). Dlt tiếp tục chuyển đổi thông tin này ở định dạng Dlt tiêu chuẩn tuân theo giao thức Dlt (như được đưa ra trong hình bên dưới) và chuyển thông tin này tới Pdur để tiếp tục gửi nó trên bus liên lạc. Dlt cung cấp các API được truy cập bởi các mô-đun được liệt kê ở trên để truyền thông tin tới Dlt.

Diagnostic Log And Trace Protocol:

Thông tin (thông báo nhật ký) được gửi bởi SWC hoặc các mô-đun khác không thể được gửi trực tiếp trên bus truyền thông, vì nó sẽ mâu thuẫn với mục tiêu của AUTOSAR là chuẩn hóa truyền thông. Trước khi gửi tin nhắn trên bus truyền thông, Dlt chuyển đổi tin nhắn và sửa đổi nó trong một tin nhắn tiêu chuẩn bằng cách tuân theo giao thức có định dạng, trình tự tin nhắn và ngữ nghĩa cụ thể của giao thức được gọi là Giao thức Dlt . Giao thức Dlt cho phép công cụ ghi nhật ký bên ngoài giao tiếp với Dlt (sử dụng các lệnh Dlt tiêu chuẩn) để cài đặt bộ lọc về các thông báo nhật ký sẽ được nhận dựa trên mức độ nghiêm trọng (lỗi nghiêm trọng, thông tin hoặc cảnh báo). Công cụ ghi nhật ký bên ngoài cũng có thể thông báo cho SWC trong thời gian chạy để chỉ tạo nhật ký phù hợp với cấp bộ lọc hoặc thay đổi bus liên lạc mà thông báo sẽ được gửi trên đó hoặc lưu trữ cấu hình cấp bộ lọc trong bộ nhớ cố định để tránh phải định cấu hình lại Dlt. Hãy nghiên cứu giao thức đó là gì.



Hình trên (Hình.2.1) là định dạng bản tin Dlt theo giao thức và các hình 2.2,2.3 là các tiêu đề mở rộng của bản tin Dlt, bản tin Dlt có 3 phần:

+ Standard Header: Như thể hiện trong Hình.2.2, Đó là tiêu đề 16 byte bao gồm các trường như: header type (chứa thông tin chung về thông báo Dlt cho biết trường nào trong tiêu đề tiêu chuẩn có hoặc không và cũng cho biết liệu tiêu đề mở rộng có được sử dụng hay không ), 8-bit Message Counter (đây là bộ đếm để đếm các tin nhắn Dlt mà mô-đun Dlt nhận được), Độ dài (độ dài 16 bit của tin nhắn), Optional ECU ID (Nó được sử dụng để xác định ECU nào đã gửi tin nhắn Dlt nào), Optional Session ID (được sử dụng để xác định người truyền nhật ký hoặc thông báo theo dõi trong ECU), Optional Timestamp (được sử dụng để thêm thông tin thời gian mà thông báo Dlt đã được tạo)

+ Extended Header: Như thể hiện trong hình 2.3, Đó là một tiêu đề 9 byte bao gồm các trường sau: Message Info (Nó chứa thông tin của bản tin Verbose hoặc không Verbose, Message Type info [Thông điệp bản ghi, Bản tin theo dõi, Bản tin mạng, Bản tin điều khiển] , thông tin Loại thông báo [phụ thuộc vào Loại thông báo] chẳng hạn, nếu loại thông báo là Nhật ký, thì trường này cho biết các loại thông báo Nhật ký khác nhau như Lỗi nghiêm trọng, Lỗi, Thông tin, Cảnh báo, Gỡ lỗi, Chi tiết), Number of Arguments ( Nó cho biết số lượng đối số trong tải trọng của thông báo Dlt), Application ID(Đó là tên viết tắt của SWC tạo ra thông báo Dlt), Context ID (ID do người dùng xác định để nhóm hợp lý các thông báo Dlt do SWC tạo ra).

+ Payload: Phần này chứa các thông số được ghi lại hoặc theo dõi hoặc nó cũng có thể có thông tin kiểm soát. Ở chế độ dài dòng, phần này sẽ có siêu dữ liệu cho biết thông tin loại của tải trọng như: boolean,Raw,String,Biến, Điểm cố định, v.v. Nhưng ở chế độ không dài dòng, thông tin này phải được xây dựng dưới dạng siêu dữ liệu không truyền trong đó

Dlt communicates với công cụ ghi nhật ký bên ngoài một cách không đồng bộ mà không có bất kỳ kích thích bên ngoài hoặc yêu cầu kết nối nào như chúng tôi làm trong TCP. Các ứng dụng (SWC) có thể đăng ký nhận thông báo từ Dlt để được thông báo về các thay đổi cài đặt bộ lọc được thực hiện bởi công cụ ghi nhật ký. Ứng dụng có thể gửi thông điệp tường trình ở chế độ dài dòng hoặc không dài dòng. Ở chế độ dài dòng, siêu dữ liệu được thêm vào cùng với thông báo tường trình, hữu ích cho công cụ ghi nhật ký để diễn giải thông báo tường trình và trợ giúp người kiểm tra. Ở chế độ không dài dòng, không có siêu dữ liệu nào được gửi cùng với thông báo tường trình thay vào đó, một tệp FIBEX riêng được sử dụng có tất cả siêu dữ liệu mà công cụ ghi nhật ký sử dụng để diễn giải thông báo.

Services/Commands Supported By Dlt:



Bảng trên liệt kê các dịch vụ/lệnh được hỗ trợ bởi mô-đun Dlt sẽ được sử dụng trong khi gửi lệnh từ công cụ ghi nhật ký bên ngoài. Các bạn gg mấy cái này nhé ^_^

Giao Tiếp Của Dlt Với Các Lớp/Mô-Đun Khác:

1. Giao Tiếp Với Tầng Ứng Dụng (SWC):

SWC có thể giao tiếp với Dlt theo hai cách:

1. Sử dụng giao diện Dlt để gửi thông báo Nhật ký và Theo dõi
2. Sử dụng cổng do Dlt cung cấp để nhận thông báo về các thay đổi ở mức ngưỡng nhật ký và trạng thái theo dõi bằng công cụ ghi nhật ký. Điều này sẽ chỉ tạo các thông báo Nhật ký hoặc Dấu vết quan tâm.

Như đã thảo luận ở trên, mô-đun Dlt sử dụng bộ ID ứng dụng/ID ngữ cảnh để xác định thông báo nhưng mô-đun Dlt cũng hỗ trợ nhiều phiên bản SWC (trong AUTOSAR SWC có thể có nhiều phiên bản, do đó, mỗi phiên bản SWC có thể tạo thông báo và Dlt hỗ trợ nó ) sử dụng cùng một bộ ID ứng dụng/ID ngữ cảnh, để phân biệt giữa nhiều phiên bản thông báo từ cùng một SWC, một trường mới cũng được thêm vào với bộ đó có tên là ID phiên . Nhưng điều này lại làm cho vấn đề trở nên phức tạp hơn 😀, vì vậy Dlt cung cấp một cổng nhà cung cấp chuyên dụngcho mỗi phiên bản SWC được định cấu hình hoạt động như một ID phiên trong đối số được xác định cổng cho cổng nhà cung cấp. Việc gán hoặc không gán bộ ID ứng dụng/ID ngữ cảnh cho SWC tương ứng có thể được thực hiện trong quá trình cấu hình hoặc thời gian chạy với lệnh gọi tới RegisterContext và UnregisterContext tương ứng.

2. Giao Tiếp Với RTE Cho VFB Trace:

Như đã thảo luận ở đầu bài viết này, mô-đun Dlt có thể lấy dấu vết VFB từ RTE có thông tin Trao đổi dữ liệu giữa SWC và RTE mà không có bất kỳ thông tin nào đến SWC. Để cho phép Dlt ghi lại dấu vết VFB, điều này phải được cấu hình trong quá trình cấu hình RTE với “Dlt” trong tham số cấu hình RteVfbTraceClientPrefix . Cấu hình này tạo chức năng hook VFB Trace được triển khai trong mô-đun Dlt sử dụng các giao diện do RTE cung cấp.

3. Giao Tiếp Với DEM:

DEM lưu trữ các sự kiện và ID sự kiện của các sự kiện được tạo bởi các mô-đun SWC và BSW. Mọi sự kiện đều có Mã sự cố chẩn đoán (DTC), Bản ghi dữ liệu mở rộng và Khung đóng băng, chúng tôi sẽ thảo luận chi tiết hơn về các điều khoản này trong bài viết liên quan đến Chẩn đoán. DEM giao tiếp với Dlt bằng cách gọi hàm Dlt_DemTriggerOnEventStatus của Dlt trên mỗi thay đổi trong trạng thái của sự kiện để thông báo cho Dlt về thay đổi này. Trong khi gọi chức năng này, DEM cung cấp EventID của sự kiện. Dlt sử dụng EventID này để có thêm thông tin về sự kiện. Trong chức năng này, mô-đun Dlt so sánh trạng thái cũ với trạng thái mới của sự kiện, nếu có sự thay đổi về trạng thái của sự kiện, thì Dlt sẽ tạo một thông báo nhật ký Dlt với trạng thái mới và gửi nó.

4. Liên Lạc Với DET:

Mô-đun DET chịu trách nhiệm tiếp nhận báo cáo lỗi từ các mô-đun SWC và BSW. Các lỗi như vậy được chuyển tiếp đến mô-đun Dlt dưới dạng thông báo có nội dung phù hợp bằng cách sử dụng API Dlt_DetForwardErrorTrace . Cấp nhật ký cho các lỗi DET là “Lỗi”.

4. Giao Tiếp Với NVM:

Như đã thảo luận ở trên, Dlt có thể lưu trữ cấu hình bộ lọc liên tục bằng cách lưu trữ nó trong bộ nhớ không thay đổi. Đối với điều này, mô-đun Dlt phải giao tiếp với mô-đun NVM. Lệnh được sử dụng bởi công cụ ghi nhật ký (từ bảng được chia sẻ ở trên) là StoreConfiguration với ID dịch vụ 0x05 .

Truyền Các Bản Tin Log Và Trace Từ Dlt:



Hình trên mô tả đường truyền bản tin Log từ SWC xuống các lớp thấp hơn.

Lưu ý: Tôi đã kết hợp một số khối để đơn giản hóa nên hình này có thể không khớp với hình AUTOSAR ban đầu, nhưng ý chính là giống nhau.

Các bước như hình trên là:

1. Tạo dấu thời gian: Nếu được định cấu hình, dấu thời gian sẽ được thêm vào thư.

2. Thông báo lọc: Lọc thông báo có nghĩa là chấp nhận hoặc loại bỏ nhật ký đến hoặc thông báo theo dõi dựa trên bộ ID ứng dụng/ID ngữ cảnh , được gán cho thông báo đó. Tại đây, các thông báo có cấp độ nhật ký như được định cấu hình trong bộ lọc chỉ được chuyển qua các thông báo khác sẽ bị loại bỏ.

3. Chọn mục tiêu LogChannel: Mô-đun Dlt trong bước này, chọn kênh mục tiêu theo cấu hình cho thông điệp tường trình.

4. Kiểm tra độ dài Thông báo và áp dụng ngưỡng LogChannel hiện tại: Mô-đun Dlt có thể được định cấu hình để chỉ truyền kích thước tối đa của thông báo, nếu được định cấu hình thì nó sẽ thực thi nó trong bước này và loại bỏ tất cả các thông báo tường trình có kích thước lớn. Bước này cũng kiểm tra xem ngưỡng mức Nhật ký (kiểm tra bảng lệnh) có khớp với mức đã định cấu hình cho kênh đã chọn hay không, nếu không thì thông báo nhật ký sẽ bị hủy.

5. Sao chép thông báo Dlt vào bộ đệm cụ thể của LogChannel: Trong bước này, mô-đun Dlt sao chép thông báo (nếu được chuyển trong các bước trên) vào bộ đệm của kênh đã chọn.

Hơn nữa, thông báo Dlt được chuyển đến PduR và được chuyển đến các tay cầm tương ứng.

Diagnostic Communication Manager (DCM)


Giới thiệu

Tôi phải chuẩn bị cho các tình huống có vấn đề trong khi phát triển bất kỳ phần mềm ECU nào vì mọi thứ có thể sai. Trong lập trình hệ thống nhúng nói chung, chúng tôi sử dụng UART hoặc bất kỳ giao diện nối tiếp nào để gửi hoặc nhận thông báo gỡ lỗi hoặc thông tin về mã đang hoạt động hoặc đang chạy trên phần cứng. Nhưng chúng ta cần thực hiện chức năng đó bằng cách viết một đoạn mã riêng để thực hiện thao tác nhận và truyền thông báo gỡ lỗi từ UART hoặc giao diện nối tiếp. Nếu chúng tôi sử dụng RTOS, chúng tôi cũng có thể nhận thông tin liên quan đến HĐH trên giao diện nối tiếp như UART ngoài thông tin ứng dụng. Một số ứng dụng tinh vi có các dịch vụ triển khai các phiên dịch vụ được nhóm theo vai trò truy cập của người dùng và bảo mật trong các giao tiếp chẩn đoán hoặc gỡ lỗi như vậy. Các ứng dụng như vậy triển khai các dịch vụ Chẩn đoán này để cho phép người kiểm tra hoặc kỹ sư chẩn đoán nhận thông tin từ ECU về lỗi đã xảy ra hoặc trạng thái hoặc thông tin chung.

Vì AUTOSAR nhằm mục đích tiêu chuẩn hóa sự phát triển phần mềm của ECU nên hầu như mọi thành phần đều được tiêu chuẩn hóa trong đó, do đó Chẩn đoán cũng không ngoại lệ. AUTOSAR có Trình quản lý truyền thông chẩn đoán (DCM) như tên gợi ý, là một phần của dịch vụ truyền thông được sử dụng để cung cấp dịch vụ Chẩn đoán.

Người đọc dự kiến ​​​​sẽ có kiến ​​​​thức về giao thức UDSOBD trước khi tiếp tục.

ĐCM Chi Tiết:

Diagnostic Communication Manager (DCM) là một mô-đun phần mềm cơ bản ( BSW ), cũng là một phần của Com Stack và nằm trong khối Dịch vụ Truyền thông, cung cấp chức năng xử lý các yêu cầu chẩn đoán từ công cụ chẩn đoán bên ngoài. AUTOSAR DCM hỗ trợ các giao thức chẩn đoán tiêu chuẩn như UDS – ISO14229-1, OBD – ISO15031-5 trên CAN , FlexRay và MOSTxe buýt. Mô-đun DCM cung cấp các API chung cho các dịch vụ chẩn đoán, chức năng này có thể được sử dụng trong quá trình phát triển hoặc sản xuất hoặc dịch vụ và bảo trì phương tiện. Mô-đun DCM chịu trách nhiệm đảm bảo luồng dữ liệu (thông báo) chẩn đoán và quản lý các trạng thái chẩn đoán, đặc biệt là các phiên chẩn đoán và trạng thái bảo mật.



Hình trên mô tả vị trí của DCM trong AUTOSAR Com Stack và khối chung hoặc khối độc lập mạng chỉ được khởi tạo một lần. Tất cả các hoạt động cụ thể của mạng (CAN, FlexRay, MOST) được thực hiện trong các khối phụ thuộc vào mạng. DCM nằm trên bộ định tuyến PDU ( PduR ) và nó nhận được thông báo yêu cầu chẩn đoán từ PduR. Mô-đun DCM xử lý thông báo này và kiểm tra xem nó có được hỗ trợ hay không. Nếu nó được hỗ trợ, thì DCM sẽ giao tiếp với các mô-đun BSW hoặc SWC qua RTE để lấy thông tin nếu được yêu cầu hoặc thực thi các lệnh để đáp ứng yêu cầu chẩn đoán nhận được. Sau khi thu thập thông tin cần thiết, DCM sẽ tập hợp thông báo trả lời và gửi thông báo đó qua PduR.

Thông thường, khách hàng phải gửi thông báo yêu cầu chẩn đoán tới ECU (DCM) bằng công cụ chẩn đoán đặc biệt hiểu được giao thức UDS hoặc OBD. Chẩn đoán được sử dụng trong quá trình sản xuất, trong quá trình dịch vụ (Đó là điều hiển nhiên! 😀) hoặc trong quá trình phát triển. Hình bên dưới cung cấp hình ảnh tổng quan về chẩn đoán với ECU dựa trên AUTOSAR.



Các Module Con Của DCM:



Mô-đun DCM được chia thành các mô-đun phụ như:

+ Lớp phiên chẩn đoán (DSL): Mô-đun con DSL chịu trách nhiệm đảm bảo luồng dữ liệu thông suốt của các yêu cầu và phản hồi chẩn đoán. Các giao thức chẩn đoán có yêu cầu nghiêm ngặt về thời gian để truyền thông hoàn hảo, DSL cũng đảm bảo đạt được yêu cầu về thời gian đó. Giao thức chẩn đoán như UDS có các phiên và trạng thái chẩn đoán cho phép kiểm soát truy cập thông tin và nhóm yêu cầu, DSL cũng xử lý công việc này.

+ Bộ điều phối dịch vụ chẩn đoán (DSD): Mô-đun phụ DSD như tên gợi ý, hoạt động như một bộ điều phối có công việc chuyển tiếp các yêu cầu chẩn đoán đã nhận tới Bộ xử lý dịch vụ chẩn đoán (DSP) và chuyển tiếp các phản hồi chẩn đoán nhận được từ DSP sang DSL để truyền nó qua mạng

+ Bộ xử lý dịch vụ chẩn đoán (DSP): Mô-đun con DSP là phần chính của DCM nơi các yêu cầu chẩn đoán được xử lý và các hành động được thực hiện đối với các yêu cầu khi cần và phản hồi được tạo. DSP nhận thông báo yêu cầu chẩn đoán từ DSD và DSP truyền phản hồi tới DSD.

1. Dịch vụ chẩn đoán:

Dịch vụ chẩn đoán là các dịch vụ được cung cấp trong giao thức UDS mà mô-đun DCM phải hỗ trợ. Các dịch vụ này không là gì ngoài các yêu cầu chẩn đoán được gửi bởi công cụ chẩn đoán để nhận một số thông tin hoặc trạng thái hoặc thực hiện một số cài đặt. Mỗi dịch vụ được biểu thị bằng ID dịch vụ và trong khi yêu cầu thông tin cho một dịch vụ cụ thể, chúng tôi phải chuyển ID dịch vụ (SID) từ công cụ chẩn đoán.

2.Phiên chẩn đoán:

Phiên chẩn đoán là một thuật ngữ được sử dụng trong UDS để chỉ cửa sổ hoạt động dựa trên thời gian dành riêng để thực hiện hoạt động chẩn đoán với ECU. Các loại phiên chẩn đoán là:

+ Phiên chẩn đoán mặc định
+ Phiên lập trình
+ Phiên chẩn đoán mở rộng.
+ Phiên chẩn đoán hệ thống an toàn.

Mỗi phiên hỗ trợ một loại dịch vụ chẩn đoán cụ thể. Khi khởi động, phiên chẩn đoán mặc định đang hoạt động và các phiên khác nhau có thể được truy cập theo yêu cầu của công cụ chẩn đoán. Một số dịch vụ có sẵn trong Phiên chẩn đoán mặc định hoặc một số dịch vụ có thể được sử dụng để lập trình ECU có sẵn trong Phiên lập trình. Bây giờ hãy tiếp tục tìm hiểu các mô-đun phụ của DCM.

1. Lớp Phiên Chẩn Đoán (DSL):

Mô-đun phụ DSL được phát triển phù hợp với ISO 14229-1 [9] và ISO 15765-3 [12], do đó việc triển khai mô-đun này hoàn toàn độc lập với mạng hoặc xe buýt. Mô-đun DSL giúp xử lý phiên, đảm bảo thời gian chính xác theo yêu cầu của giao thức và quản lý bảo mật. DSL tương tác với các mô-đun khác nhau để đạt được các nhiệm vụ của nó, các mô-đun như:

+ PduR: Mô-đun DSL nhận yêu cầu chẩn đoán từ PduR và mô-đun DSL gửi phản hồi cho yêu cầu chẩn đoán tới PduR
+ Mô-đun phụ DSD: Mô-đun phụ DSL thông báo cho DSD về các yêu cầu chẩn đoán gửi đến và cung cấp dữ liệu. DSL cũng nhận được phản hồi cho yêu cầu chẩn đoán từ DSD mà nó chuyển tiếp tới PduR.
+ Mô-đun con SWC hoặc DSP: Mô-đun DSL cung cấp quyền truy cập vào trạng thái phiên và bảo mật.
+ Mô-đun ComM: Mô-đun con DSL phải đảm nhận thời gian liên lạc chính xác, nó đạt được điều đó với sự trợ giúp của ComM.

Hãy nghiên cứu chi tiết các chức năng được cung cấp bởi DSL:

+ Chuyển tiếp yêu cầu từ mô-đun PduR sang DSD: Chẩn đoán có PDU riêng (cho cả TX và RX) với ID PDU duy nhất của riêng chúng, bất cứ khi nào quá trình nhận yêu cầu chẩn đoán mới bắt đầu trên bất kỳ PDU chẩn đoán nào, PduR sẽ chỉ báo điều này cho DCM. PduR truyền thông tin này đến mô-đun phụ DSL, mô-đun này sẽ được chuyển tiếp tiếp đến DSD (Bộ điều phối dịch vụ chẩn đoán). PduR yêu cầu lấp đầy bộ đệm với yêu cầu chẩn đoán từ mô-đun DCM bằng cách sử dụng API: Dcm_ProvideRXBuffer() , PduR cũng cung cấp số lượng byte dự kiến ​​sẽ nhận được. API này không bao giờ trả về bộ đệm đã điền cho đến khi nó được lấp đầy hoàn toàn với số lượng byte dự kiến. Sau khi nhận hoàn toàn yêu cầu chẩn đoán (thành công hoặc có lỗi), mô-đun PduR gọi Dcm_RxIndication()API để cung cấp chỉ báo nhận cho DCM. Sau khi nhận hoàn toàn yêu cầu từ PduR, DSL chặn ID PDU DCM này (ID PDU đã nhận) và các yêu cầu mới từ cùng một loại giao thức, ví dụ: nếu phiên loại UDS đang diễn ra, thì không thể nhận được các yêu cầu mới của UDS.

+ “TesterPresent” đồng thời: DCM tự động đặt lại phiên chẩn đoán đang diễn ra và chuyển sang phiên mặc định nếu không có trao đổi dữ liệu nào diễn ra giữa DCM và công cụ Trình kiểm tra trong một khoảng thời gian cụ thể. Để giải quyết vấn đề này, ISO14229-1[9] triển khai “logic duy trì hoạt động”, một dịch vụ được triển khai trong UDS có tên là TesterPresent, máy khách (công cụ kiểm tra) gửi yêu cầu này tới DCM để cho biết máy khách vẫn hiện diện. DCM không gửi bất kỳ phản hồi nào cho yêu cầu này vì mục đích sử dụng của nó chỉ là để cho biết rằng có khách hàng. DSL cũng không chuyển tiếp điều này tới DSD vì không có gì đáng quan tâm trong yêu cầu này.

+ Chuyển tiếp phản hồi từ DSD sang PduR: DCM gửi phản hồi của nó tới công cụ trong TX PDU chuyên dụng với PDU ID duy nhất qua PduR. DSP (mô-đun phụ của DCM) gửi phản hồi này tới DSD, phản hồi này sẽ được chuyển tiếp tiếp tới DSL và cuối cùng DSL chuyển tiếp phản hồi này tới PduR. ID PDU yêu cầu và phản hồi được liên kết với nhau trong quá trình cấu hình DCM, điều này đảm bảo phản hồi chính xác cho yêu cầu nhận được. Mô-đun DSL chỉ chuyển tiếp PDU phản hồi tới PduR sau độ trễ tối thiểu được chỉ định giữa nhận yêu cầu và phản hồi. DSL sử dụng PduR_DcmTransmit() để biểu thị thông tin độ dài của PDU phản hồi tới PduR. Sau khi nhận được thông tin này, mô-đun PduR gọi Dcm_ProvideTXBuffer() để yêu cầu mô-đun DCM truyền PDU phản hồi.

+ Đảm bảo thời gian cho người kiểm tra bằng cách gửi phản hồi bận: Nhiều khi yêu cầu chẩn đoán mất nhiều thời gian hơn để xử lý, trong trường hợp đó nếu không có liên lạc từ máy chủ (DCM) đến công cụ kiểm tra trong thời gian phản hồi tối đa được chỉ định, có thể nghĩ rằng ECU không phản hồi và kết thúc phiên chẩn đoán. Để giải quyết vấn đề này, DSL gửi phản hồi bận tới công cụ kiểm tra theo định kỳ cho đến khi quá trình xử lý yêu cầu không hoàn tất. Phản hồi bận là phản hồi phủ định (giao thức) với NRC (Mã phản hồi phủ định) 0x78 có nghĩa là Phản hồi đang chờ xử lý . DSL sử dụng một bộ đệm riêng để gửi các phản hồi bận như vậy. Nhưng điều này có thể dẫn đến bế tắc 😀 , do đó, để tránh bế tắc, trong quá trình tích hợp cấu hình, bộ tích hợp cấu hình có thể đặt phản hồi bận tối đa bằng cách đặt DcmDslDiagRespMaxNumRespPend tham số cấu hình. Nếu số lượng phản hồi bận lớn hơn tham số này, mô-đun DCM sẽ dừng xử lý yêu cầu đó và gửi phản hồi tiêu cực NRC 0x10 cho biết Từ chối chung .

= Hỗ trợ truyền định kỳ: UDS có dịch vụ cho phép người kiểm tra yêu cầu truyền định kỳ các giá trị bản ghi dữ liệu từ ECU. Mô-đun DSL xử lý yêu cầu này theo hai cách: 1. Nếu bất kỳ quá trình xử lý yêu cầu nào đang diễn ra và sử dụng cùng một ID PDU sẽ được sử dụng để truyền định kỳ, DSL sẽ chỉ cho phép các yêu cầu đó sau khi hoàn tất quá trình xử lý yêu cầu đang diễn ra; 2. Hoặc nếu được định cấu hình để sử dụng giao thức và ID PDU riêng biệt, DSL sẽ cho phép yêu cầu này và gửi trên PDU riêng biệt (không được sử dụng cho các yêu cầu chẩn đoán thông thường).

+ Hỗ trợ truyền ROE: UDS có một dịch vụ có tên là ResponseOnEvent (0x86) mà người kiểm tra có thể yêu cầu ECU bắt đầu và dừng truyền các phản hồi do một sự kiện cụ thể khởi tạo. Khi đăng ký truyền dựa trên sự kiện, người kiểm tra phải chỉ định dịch vụ tương ứng mà phản hồi sẽ được gửi.

+ Hỗ trợ phản hồi được phân đoạn: Khi có nhu cầu gửi phản hồi lớn hơn bộ đệm chẩn đoán được định cấu hình và phân bổ, DSL có thể phân đoạn dữ liệu phản hồi thành từng phần và gửi phản hồi. Với điều này, ECU có thể tiết kiệm bộ nhớ vì sẽ không cần phân bổ bộ đệm lớn cho các phản hồi lớn. Phân đoạn này được hỗ trợ khi gửi phản hồi, tức là các yêu cầu được phân đoạn không được DSL hỗ trợ.

+ Hỗ trợ phản hồi ResponsePending do Ứng dụng kích hoạt ( SWC ): Trong một số trường hợp, ứng dụng cần gửi phản hồi ResponsePending ngay lập tức không giống như chức năng được mô tả ở trên để gửi phản hồi bận trong đó DSL chờ thời gian tối thiểu giữa yêu cầu và phản hồi. Điều này có thể được sử dụng trong kịch bản lập trình flash, ứng dụng sẽ gửi ResponsePending trước khi vào bootloader.

+ Quản lý cấp độ bảo mật: Mô-đun phụ DSL cung cấp các giao diện để nhận cấp độ bảo mật hiện tại và cũng để gửi cấp độ bảo mật mới. Mô-đun DSL cũng lưu mức bảo mật đang hoạt động hiện tại. Trong quá trình khởi tạo DCM, mức bảo mật được đặt thành 0x00, điều này có nghĩa là ECU bị khóa trong khoảng thời gian đó!

+ Quản lý trạng thái phiên: DSL cung cấp giao diện để nhận phiên hoạt động hiện tại và cũng để thiết lập phiên mới. Trong quá trình khởi tạo DCM, trạng thái phiên là “Phiên mặc định”. Mô-đun DSL lưu trạng thái của phiên hoạt động hiện tại.

+ Theo dõi các phiên không mặc định: Bất cứ khi nào một phiên không mặc định đang diễn ra và thời gian chờ của phiên xảy ra mà không nhận được bất kỳ yêu cầu chẩn đoán nào, mô-đun DSL sẽ đặt lại phiên hiện tại và chuyển sang phiên mặc định.

+ Thông báo cho các mô-đun phụ thuộc về thay đổi phiên: Bất cứ khi nào có thay đổi phiên, DSL sẽ thông báo cho mô-đun tương ứng liên quan đến phiên đó về thay đổi phiên.

+ Cho phép sửa đổi thời gian: Vì DSL là thiết bị đảm nhận các yêu cầu về thời gian của giao thức, nên nó cho phép sửa đổi thời gian của lớp phiên vì các tham số thời gian liên quan đến giao thức không ảnh hưởng đến lớp Vận chuyển. Để sửa đổi thời gian của giao thức, UDS đã xác định các dịch vụ sau: UDS Service DiagnosticSessionControl (0x10) và UDS Service AccessTimingParameter (0x83).

+ Xử lý các giao thức chẩn đoán khác nhau: DCM như đã nói ở phần giới thiệu, hỗ trợ các giao thức chẩn đoán khác nhau như UDS hoặc OBD, v.v. Mô-đun phụ DSL xử lý việc này.

2. Bộ Điều Phối Phiên Chẩn Đoán (DSD):

Mô-đun phụ DSD chịu trách nhiệm kiểm tra tính hợp lệ của yêu cầu chẩn đoán gửi đến. Tính hợp lệ ở đây có nghĩa là xác minh các cấp Phiên chẩn đoán hoặc Quyền truy cập bảo mật hoặc quyền của Ứng dụng. Xác thực này giúp xử lý chỉ các yêu cầu hợp lệ và từ chối các yêu cầu không hợp lệ. Mô-đun phụ DSD cũng theo dõi quá trình xử lý yêu cầu chẩn đoán đang diễn ra. Mô-đun con DSD tương tác với các mô-đun con khác như sau:

+ DSL: DSL gọi mô-đun phụ DSD khi nhận được thông báo yêu cầu chẩn đoán mới. DSD sau đó chuyển tiếp yêu cầu này tới DSP và theo dõi quá trình xử lý yêu cầu đang diễn ra. Nó cũng truyền đáp ứng của DSP tới DSL. Mô-đun phụ DSD cũng gọi DSL để nhận phiên chẩn đoán và trạng thái bảo mật mới nhất. Mô-đun DSD cũng nhận được xác nhận thông báo phản hồi truyền từ DSL.

+ DSP: DSD ủy quyền yêu cầu chẩn đoán đã nhận (nếu hợp lệ) và cũng gửi xác nhận truyền thông báo phản hồi tới DSP. Mô-đun DSP gửi tín hiệu đến DSD sau khi xử lý xong yêu cầu chẩn đoán.

Hãy hiểu các chức năng được cung cấp bởi mô-đun phụ DSD:

+ Hỗ trợ kiểm tra định danh dịch vụ chẩn đoán và điều chỉnh thông báo chẩn đoán: DSD xác thực thông báo yêu cầu chẩn đoán nhận được từ DSL và nếu được hỗ trợ, nó sẽ được chuyển tiếp đến DSP thích hợp, nếu không, nó sẽ bị từ chối bằng cách gửi phản hồi tiêu cực. Mọi yêu cầu chẩn đoán đều có Số nhận dạng dịch vụ (SID) để cho biết loại yêu cầu. DSD có Bảng định danh dịch vụ có SID được hỗ trợ xác định trước, bảng này được tạo sau khi cấu hình và được cung cấp bởi DSL. DSD kiểm tra SID đã nhận này từ yêu cầu trong Bảng định danh dịch vụ và nếu SID đã nhận có trong bảng, nó sẽ được chuyển tiếp đến DSP thích hợp, nếu không, nó sẽ bị từ chối bởi phản hồi tiêu cực với NRC 0x11 tức là Dịch vụ không được hỗ trợ cho DSL.

+ Xử lý ngăn chặn thông báo phản hồi tích cực: UDS có một cơ sở để ngăn chặn việc nhận thông báo phản hồi tích cực trên mỗi lần xử lý thành công yêu cầu chẩn đoán. Điều này được xử lý bởi DSD. DSD kiểm tra xem bit có tên “suppressPosRspMsgIndicationBit” trong yêu cầu chẩn đoán đã nhận có đúng không, nếu đúng như vậy thì DSD sẽ không gửi phản hồi tích cực. Cài đặt này sẽ bị bỏ qua nếu các phản hồi bận đang diễn ra (tham khảo DSL để biết thêm thông tin về các tin nhắn bận).

+ Chức năng xác minh: Mô-đun con DSD cũng chịu trách nhiệm xác minh yêu cầu chẩn đoán đã nhận. Mô-đun con DSD sẽ chỉ chấp nhận yêu cầu chẩn đoán nếu nó vượt qua ba lần xác minh:

- Xác minh phiên chẩn đoán: Như đã thảo luận ở trên, phiên chẩn đoán là một cửa sổ hoạt động để thực hiện chẩn đoán. Mỗi phiên có một bộ dịch vụ chẩn đoán được hỗ trợ cụ thể. Khi nhận được yêu cầu chẩn đoán mới, DSD sẽ nhận thông tin phiên chẩn đoán hiện tại và sẽ xác minh xem yêu cầu dịch vụ nhận được hiện tại có được phép cho phiên hiện tại hay không. Dịch vụ UDS cho DiagnosticSessionControl (0x10) bị bỏ qua xác minh này, nếu không thì người kiểm tra sẽ không thể thay đổi phiên chẩn đoán sau đó 😀! Nếu yêu cầu dịch vụ đã nhận không được phép trong phiên chẩn đoán hiện tại, thì DSD sẽ gửi phản hồi tiêu cực với NRC (0x7F), điều đó có nghĩa là Dịch vụ không được hỗ trợ cho phiên hoạt động.

- Xác minh các mức truy cập bảo mật dịch vụ: Một số dịch vụ chẩn đoán có các mức truy cập bảo mật hạn chế. Mô-đun phụ DSD đảm nhận việc xác minh các dịch vụ đó. Khi nhận được yêu cầu chẩn đoán mới từ DSL, DSD sẽ nhận cấp bảo mật hiện hoạt từ DSL và kiểm tra xem yêu cầu chẩn đoán mới có được cho phép đối với cấp truy cập bảo mật hiện tại hay không. Nếu yêu cầu chẩn đoán nhận được không được phép ở mức bảo mật hiện tại, thì mô-đun phụ DSD sẽ gửi phản hồi tiêu cực với NRC (0x33). Một lần nữa, Dịch vụ truy cập bảo mật của dịch vụ UDS (0x27) bị bỏ qua xác minh này, nếu không, người kiểm tra sẽ không bao giờ có thể truy cập dữ liệu bị hạn chế bảo mật 😀! Nếu yêu cầu dịch vụ nhận được không được phép đối với mức bảo mật hiện tại, thì DSD sẽ gửi phản hồi tiêu cực với NRC 0x33, nghĩa là Quyền truy cập bảo mật bị từ chối.

- Xác minh môi trường ứng dụng hoặc quyền: Không thể thực hiện chẩn đoán nếu trạng thái ECU không phù hợp hoặc nếu môi trường không phù hợp. Giống như ở trạng thái after-run ECU không được phép xử lý các yêu cầu của OBD.

+ Phân phối thông báo chẩn đoán tới DSP: Nếu dịch vụ chẩn đoán vượt qua tất cả các kiểm tra (như được mô tả ở trên), thì DSD sẽ tìm kiếm chức năng thực thi dịch vụ thích hợp của DSP và gọi trình thông dịch dịch vụ DSP tương ứng.

+ Tập hợp phản hồi tích cực hoặc tiêu cực: Mô-đun con DSD tập hợp phản hồi cho yêu cầu chẩn đoán đã thực hiện dựa trên phản hồi của DSP. Nếu phản hồi là tích cực, mô-đun con DSD sẽ thêm mã định danh dịch vụ phản hồi (giống như định danh của SID yêu cầu chẩn đoán đã nhận) và dữ liệu phản hồi (được nhận từ DSP) trong thông báo phản hồi trong khi lắp ráp. Hoặc nếu phản hồi là tiêu cực, thì DSD sẽ tập hợp một thông báo phản hồi tiêu cực với NRC nhận được từ DSP.

+ Bắt đầu truyền: Mô-đun phụ DSD chuyển tiếp thông báo phản hồi tới mô-đun phụ DSL để truyền tiếp. Khi mô-đun DSL nhận được xác nhận truyền từ PduR, nó sẽ truyền thông tin này tới DSD. Mô-đun con DSD nào sẽ chuyển tiếp tới DSP để xác nhận.

3. Bộ Xử Lý Dịch Vụ Chẩn Đoán (DSP):

Mô-đun phụ DSP là mô-đun chính xử lý yêu cầu chẩn đoán nhận được từ mô-đun phụ DSD. Khi nhận lệnh gọi chức năng từ mô-đun phụ DSD để xử lý yêu cầu chẩn đoán, DSP sẽ phân tích thông báo yêu cầu nhận được, kiểm tra định dạng của nó, kiểm tra xem chức năng phụ được yêu cầu có được hỗ trợ hay không, thu thập dữ liệu cần thiết từ các mô-đun DEM, SWC hoặc BSW và cuối cùng lắp ráp phản ứng.

Hãy hiểu một số bước:

+ Kiểm tra định dạng và hỗ trợ chức năng con: Mô-đun DSP kiểm tra xem yêu cầu nhận được có độ dài và cấu trúc thông báo phù hợp hay không trước khi xử lý yêu cầu. Nếu thông báo chẩn đoán được yêu cầu không thành công trong quá trình kiểm tra định dạng thì mô-đun DSP sẽ kích hoạt phản hồi tiêu cực với NRC 0x13 đến DSD. Mô-đun DSP cũng kiểm tra xem một chức năng phụ cụ thể có được hỗ trợ hay không trước khi thực hiện yêu cầu dịch vụ. Nếu nó không được hỗ trợ, thì mô-đun DSP sẽ kích hoạt phản hồi tiêu cực với mô-đun phụ NRC 0x12 đến DSD.

+ Tập hợp phản hồi: Sau khi xử lý yêu cầu, mô-đun DSP sẽ tập hợp thông báo phản hồi (tích cực/tiêu cực) để gửi đến DSD. Thông báo được lắp ráp mà không có mã định danh dịch vụ (vì điều này được xử lý bởi DSD). Mô-đun DSP xác nhận việc hoàn thành xử lý yêu cầu tới DSD

Theo cách này, DCM hoạt động với các mô-đun phụ bên trong như: DSL, DSD và DSP để thực hiện giao tiếp chẩn đoán. DCM là chủ đề sâu hơn và có phạm vi để hiểu từng giao thức chẩn đoán được hỗ trợ, nhưng để đơn giản hóa, tôi đã biên soạn DCM theo cách dễ hiểu nhất có thể.

About

Thức cả đêm để làm, mệt vờ cờ lờ 🙄
Để lại được gì đó nên cũng vui 🥱 😴 😪

Contact

Địa chỉ

Bách Khoa ĐN
Thọ Xuân, Thanh Hóa

Liên Hệ Với Tôi

ChuMuc15

Trái tim yêu thương là điểm bắt đầu của tri thức.