ترجمه اولیه SOME/IP به گونهای طراحی شده بود که یک راهکار قابل بهروزرسانی برای ادغام با سرویسهای AUTOSAR ارائه دهد. چالش اصلی برای کارگزار، ترجمه پیامها و فراخوانیهای RPC بود که در زمان کامپایل شناخته شده نبودند. برای پرداختن به این موضوع، بهروزرسانیهای زمان اجرا، افزودن یا بهروزرسانیهای پویای سرویسهای SDV را در نظر میگیرند، مشابه نحوه معرفی انواع واحدهای جدید.
راهکار این ترجمه پویا مبتنی بر اطلاعات نوع زمان اجرا (RTTI) است. کارگزار، پیکربندی تمام بستههای خدمات نصبشده را مصرف میکند و ترجمه مبتنی بر بازتاب را با استفاده از طرحهای دادهای از آن پیکربندی انجام میدهد.
اگرچه ترجمه مبتنی بر RTTI انعطافپذیری ارائه میدهد، اما ذاتاً کندتر از روشهای از پیش کامپایل شده است. برای بهینهسازی مسیرهای دادهای که به شدت بارگذاری میشوند، از تکنیکی استفاده کنید که ترجمه را دور میزند.
برای پشتیبانی از مصرف پیامهای بزرگ و مکرر، SDV به شما امکان میدهد ترجمه را دور بزنید و بایتهای فرمتشده SOME/IP را به بستههای خدمات مصرفی ارسال کنید.
این بستهی سرویس، محمولهی با فرمت SOME/IP را مدیریت میکند که میتواند محموله را مصرف کند یا محموله را به protobuf ترجمه کند.
برای دور زدن ترجمه، در یک فایل نگاشت SOME/IP، برای رویداد، حالت ترجمه message_translation_mode: INTERPRET_AS_BYTES را مشخص کنید. برای مثال به samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl مراجعه کنید.
بدهبستانهای روش ترجمه
هنگام انتخاب روش ترجمه، این موارد را در نظر بگیرید:
تعامل سیستم: سایر سرویسهای SDV نمیتوانند بایتهای ارسالشده در قالب SOME/IP را بدون دانستن جزئیات قالب خام تفسیر کنند. به عنوان مثال، SDV Telemetry نمیتواند فیلدهای جداگانه چنین پیامهایی را پردازش کند.
تلاش بیشتر: ترجمهی محتوای خام در قالب SOME/IP نیازمند تلاش بیشتر از سوی توسعهدهندهی بستهی سرویس است.
مولد کتابخانه
SDV یک مولد خودکار برای ترجمه فرمت SOME/IP ارائه میدهد. این مولد، کتابخانههایی را بر اساس تعاریف و نگاشتهای پیام موجود برای ترجمه مستقیم و بدون انعکاس ایجاد میکند. بستههای خدماتی که بایتهای SOME/IP ارسالی را مصرف میکنند، میتوانند از کتابخانههای تولید شده استفاده کنند.
توصیه: فقط در صورتی از مولد استفاده کنید که تولیدکننده اصلی (OEM) شما رویدادهای حیاتی عملکردی را شناسایی کند که قابل ترجمه در چارچوب الزامات عملکردی پروژه شما نباشند. در چنین مواردی، تولیدکننده اصلی (OEM) شما باید از قبل تعریف protobuf و نگاشت SOME/IP مورد استفاده برای ترجمه مبتنی بر RTTI را داشته باشد. همین پیکربندی میتواند به عنوان ورودی برای تولیدکننده عمل کند. برای جزئیات بیشتر، به فایل README.md در دایرکتوری core_services/tools/someip_translation_generator/ مراجعه کنید.