แพลตฟอร์ม AAOS Software Defined Vehicle (SDV) กำหนดกลไกมาตรฐานสำหรับ การรายงานแหล่งที่มาของเวลาจากหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) และพื้นผิวมาตรฐาน สำหรับการแสดงข้อมูลเวลาใน อินสแตนซ์ SDV หน้านี้มีรายละเอียดและคำแนะนำสำหรับมาตรฐาน SDV
สถาปัตยกรรมนาฬิกา
แพลตฟอร์ม SDV มีนาฬิกามาตรฐาน 2 เรือน ดังนี้
นาฬิกา UTC: เป็นนาฬิกาเวลาสากลเชิงพิกัดมาตรฐาน โดยปกติแล้ว SOME/IP จะส่งนาฬิกานี้จาก ECU ไปยังรันไทม์ของแพลตฟอร์ม กรณีการใช้งาน ได้แก่ ความใหม่ของใบรับรอง การวินิจฉัย และ V2X
นาฬิกา Monotonic ของเครือข่าย: เป็นสัญญาณนาฬิกาที่มีความแม่นยำสูงและไม่ลดลง ซึ่งส่งจาก ECU ที่สถาปัตยกรรมยานพาหนะที่กว้างขึ้นใช้เพื่อให้มั่นใจว่าเหตุการณ์ต่างๆ จะมีการประสานงานกัน ECU จะส่งนาฬิกานี้ไปยังแพลตฟอร์ม SDV ผ่าน gPTP นาฬิกานี้เรียกอีกอย่างว่า นาฬิกาคงที่
นาฬิกาในแพลตฟอร์ม SDV มีข้อกำหนดด้านสถาปัตยกรรมที่เฉพาะเจาะจง ดังนี้
การส่งนาฬิกา: อินสแตนซ์ VM แต่ละรายการจะได้รับสิทธิ์เข้าถึงสัญญาณนาฬิกา Monotonic เดียวกันที่ ECU จัดเตรียมไว้
ความสมบูรณ์ของนาฬิกา: อินพุตนาฬิกา Monotonic ของเครือข่ายควรเป็นแหล่งที่เชื่อถือได้สำหรับการประสานงานเหตุการณ์ในบริการต่างๆ การป้องกันช่องโหว่ของระบบที่อาจเกิดขึ้น เช่น การโจมตีแบบ Replay หรือการกลับเวลา จะขึ้นอยู่กับความสมบูรณ์ของนาฬิกา Monotonic
การใช้นาฬิกาปลุก: ไม่ควรใช้ API นาฬิกาของแพลตฟอร์ม SDV สำหรับเหตุการณ์ที่เกิดขึ้นบ่อย (> 100 Hz) หรือมีเวลาแฝง < 10 มิลลิวินาทีระหว่างการกำหนดเวลาและเวลาของเหตุการณ์ API ที่มีความถี่สูงหรือเวลาแฝงต่ำควรใช้ไดรเวอร์เคอร์เนล
API นาฬิกา
นาฬิกา Monotonic ของเครือข่าย จะแสดงผ่าน API clock_gettime(3) มาตรฐาน
// Network monotonic clock uses standard Linux API.
// This is represented as a dynamic clock in clock_gettime(3)
clock_gettime(clockid_t id, ×pec)
นาฬิกานี้จัดเตรียมไว้ผ่านกลไกเครือข่าย PTP ให้กับ VM ทั้งหมดและลงทะเบียนเป็นนาฬิกาแบบไดนามิกเพื่อวัตถุประสงค์ clock_gettime(3)
นาฬิกา UTC แสดงด้วย CLOCK_REALTIME ใน clock_gettime(3)
ไดรเวอร์อุปกรณ์เสริม
OEM มีตัวเลือกในการแสดงบล็อกอุปกรณ์ Linux สำหรับพร็อพเพอร์ตี้เวลาเพิ่มเติม เปิดเผยพร็อพเพอร์ตี้นี้ด้วยการจัดการสิทธิ์ผ่าน sepolicy
# in device/OEM/target/sepolicy/time/file_contexts
/dev/sdvtime u:object_r:time_device:s0
OEM มีหน้าที่รับผิดชอบในการพัฒนาและความสามารถของไดรเวอร์อุปกรณ์ Linux ที่กำหนดเองซึ่งแสดง API ไปยังบล็อกอุปกรณ์
การแจ้งเตือนและการเรียกกลับ
การแจ้งเตือนและการเรียกกลับสำหรับคอมโพเนนต์เวลาใน SDV เป็นความสามารถของ Userland ที่ OEM จัดเตรียมไว้ แพลตฟอร์ม SDV ไม่ได้จัดเตรียม API ที่เฉพาะเจาะจงสำหรับฟังก์ชันเหล่านี้
ควรมี บริการของ OEM ไม่เกิน 1 รายการ ต่อ VM ที่ต้องใช้ฟังก์ชันการซิงค์เวลาซึ่งจัดการการเปลี่ยนแปลงเวลาที่เกี่ยวข้องทั้งหมดที่จะตรวจสอบ ตัวอย่างเช่น เมื่อสถานะที่เชื่อถือได้ของแหล่งที่มาของเวลาปัจจุบันเปลี่ยนแปลง
สถานะแหล่งที่มาของเวลาคาดว่าจะมีการเปลี่ยนแปลงเป็นเหตุการณ์ความถี่ต่ำ ดังนั้นบริการของ OEM จึงตรวจสอบการเปลี่ยนแปลงผ่านการโพลได้ เช่น ทุกๆ 1 นาที
ECU จะสื่อสารสถานะที่เชื่อถือได้ของนาฬิกา UTC ผ่านเครือข่าย เช่น ผ่าน SOME/IP
บริการของ OEM จะเผยแพร่ หัวข้อ Data Tunnel ที่เฉพาะเจาะจงเพื่อแสดงการเปลี่ยนแปลงเหล่านี้ต่อผู้รับข้อมูล
OEM จะปรับแต่งนโยบายการให้สิทธิ์สำหรับบริการเพื่อกำหนดว่าบริการใดสามารถสมัครรับข้อมูลหัวข้อ Data Tunnel เหล่านี้เพื่อรับฟังการเปลี่ยนแปลงสถานะเวลาที่เชื่อถือได้
สถานะและการจัดการข้อผิดพลาด
รหัสข้อผิดพลาดเป็นไปตามข้อกำหนดของ API Linux มาตรฐานที่เกี่ยวข้อง เช่น
หาก
clock_gettime()ล้มเหลว ฟังก์ชันนี้จะแสดง-1และตั้งค่าerrnoซึ่งหมายความว่าระบบไม่รองรับการทำงานของนาฬิกาหรือแหล่งที่มาของนาฬิกาพื้นฐานยังไม่พร้อมหาก
fopen()ล้มเหลว ฟังก์ชันนี้จะแสดงพอยน์เตอร์ Null และตั้งค่าerrnoซึ่งหมายความว่าอุปกรณ์บล็อกไม่พร้อมใช้งานหากการเรียก
ioctl()ล้มเหลว ฟังก์ชันนี้จะแสดง-1และตั้งค่าerrnoซึ่งหมายความว่ารหัสคำขอที่ระบุไม่มีการตอบกลับที่ตรงกันจากไดรเวอร์พื้นฐาน