การแปล SOME/IP ขั้นพื้นฐานได้รับการออกแบบมาเพื่อมอบโซลูชันที่อัปเดตได้สำหรับการผสานรวมกับบริการ AUTOSAR ความท้าทายหลักสำหรับโบรกเกอร์คือการ แปลข้อความและการเรียก RPC ที่ไม่รู้จักในเวลาคอมไพล์ เพื่อแก้ไขปัญหานี้ การอัปเดตที่รันไทม์จะถือว่าเป็นการเพิ่มหรืออัปเดตบริการ SDV แบบไดนามิก ซึ่งคล้ายกับวิธีเปิดตัวประเภทหน่วยใหม่
โซลูชันสำหรับการแปลแบบไดนามิกนี้อิงตามข้อมูลประเภทรันไทม์ (RTTI) โบรกเกอร์จะใช้การกำหนดค่าจากแพ็กเกจบริการที่ติดตั้งทั้งหมดและทำการแปลตามการสะท้อนโดยใช้สคีมาข้อมูลจากการกำหนดค่าดังกล่าว
แม้ว่าการแปลที่อิงตาม RTTI จะมีความยืดหยุ่น แต่ก็ช้ากว่าวิธีการที่คอมไพล์ล่วงหน้าโดยธรรมชาติ หากต้องการเพิ่มประสิทธิภาพเส้นทางข้อมูลที่มีการโหลดสูง ให้ใช้เทคนิคที่ ข้ามการแปล
SDV ช่วยให้คุณข้ามการแปลและส่งต่อไบต์ที่จัดรูปแบบ SOME/IP ไปยังแพ็กเกจบริการสำหรับผู้บริโภคเพื่อรองรับการใช้ข้อความขนาดใหญ่และข้อความที่ส่งบ่อย
ชุดบริการจะจัดการเพย์โหลดที่จัดรูปแบบ SOME/IP ซึ่งสามารถ ใช้เพย์โหลดหรือแปลเพย์โหลดเป็น Protobuf
ระบุ message_translation_mode: INTERPRET_AS_BYTES สำหรับเหตุการณ์ใน
ไฟล์การแมป SOME/IP เพื่อข้ามการแปล ดูตัวอย่างได้ที่
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/