Optymalizowanie skuteczności

Podstawowe tłumaczenie SOME/IP zostało zaprojektowane tak, aby zapewnić rozwiązanie, które można aktualizować, na potrzeby integracji z usługami AUTOSAR. Głównym wyzwaniem dla brokera było tłumaczenie wiadomości i wywołań RPC, które nie były znane w czasie kompilacji. Aby rozwiązać ten problem, aktualizacje w czasie działania zakładają dynamiczne dodawanie lub aktualizowanie usług SDV, podobnie jak w przypadku wprowadzania nowych typów jednostek.

Rozwiązanie tego dynamicznego tłumaczenia jest oparte na informacjach o typie w czasie działania (RTTI). Broker korzysta z konfiguracji wszystkich zainstalowanych pakietów usług i wykonuje tłumaczenie oparte na refleksji przy użyciu schematów danych z tej konfiguracji.

Tłumaczenie oparte na RTTI jest elastyczne, ale z natury wolniejsze niż metody prekompilowane. Aby zoptymalizować ścieżki danych o dużym obciążeniu, użyj techniki, która pomija tłumaczenie.

Aby obsługiwać odbiór dużych i częstych wiadomości, SDV umożliwia pomijanie tłumaczenia i przekazywanie bajtów w formacie SOME/IP do pakietów usług konsumenckich.

Pakiet usług obsługuje ładunek w formacie SOME/IP, który może go wykorzystać lub przetłumaczyć na protobuf.

Aby pominąć tłumaczenie, w pliku mapowania SOME/IP określ dla zdarzenia message_translation_mode: INTERPRET_AS_BYTES. Przykład znajdziesz w pliku samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl.

Kompromisy związane z metodą tłumaczenia

Podczas wybierania metody tłumaczenia weź pod uwagę te kompromisy:

  • Interakcja z systemem: inne usługi SDV nie mogą interpretować bajtów przekazywanych w formacie SOME/IP bez znajomości szczegółów formatu surowego. Na przykład SDV Telemetry nie może przetwarzać poszczególnych pól takich wiadomości.

  • Dodatkowe nakłady pracy: tłumaczenie surowego ładunku w formacie SOME/IP wymaga dodatkowego nakładu pracy ze strony programisty pakietu usług.

Generator bibliotek

SDV udostępnia automatyczny generator do tłumaczenia formatu SOME/IP. Ten generator tworzy biblioteki na podstawie dostępnych definicji wiadomości i mapowań do bezpośredniego tłumaczenia bez refleksji. Pakiety usług, które korzystają z przekazywanych bajtów SOME/IP, mogą używać wygenerowanych bibliotek.

Zalecenie: używaj generatora tylko wtedy, gdy producent OEM zidentyfikuje zdarzenia o krytycznym znaczeniu dla wydajności, których nie można przetłumaczyć w ramach wymagań dotyczących wydajności projektu. W takich przypadkach producent OEM powinien mieć już zarówno definicję protobuf, jak i mapowanie SOME/IP używane do tłumaczenia opartego na RTTI. Ta sama konfiguracja może służyć jako dane wejściowe dla generatora. Więcej informacji znajdziesz w pliku README.md w katalogu core_services/tools/someip_translation_generator/.