Nền tảng Xe được xác định bằng phần mềm (SDV) của AAOS xác định các cơ chế tiêu chuẩn để báo cáo nguồn thời gian từ các đơn vị điều khiển điện tử (ECU) và các nền tảng tiêu chuẩn để hiển thị thông tin thời gian trong Các phiên bản SDV. Trang này cung cấp thông tin chi tiết và hướng dẫn về tiêu chuẩn SDV.
Cấu trúc đồng hồ
Nền tảng SDV có 2 đồng hồ tiêu chuẩn:
Đồng hồ UTC: Đây là đồng hồ Giờ phối hợp quốc tế tiêu chuẩn. SOME/IP thường cung cấp thông tin này từ ECU cho thời gian chạy nền tảng. Các trường hợp sử dụng bao gồm độ mới của chứng chỉ, hoạt động chẩn đoán và V2X.
Đồng hồ đơn điệu của mạng: Đây là tín hiệu đồng hồ có độ chính xác cao, không giảm do các ECU cung cấp mà kiến trúc xe rộng hơn sử dụng để đảm bảo các sự kiện được phối hợp. Các ECU cung cấp tín hiệu này cho nền tảng SDV thông qua gPTP. Đồng hồ này còn được gọi là đồng hồ ổn định.
Đồng hồ trong nền tảng SDV có các yêu cầu cụ thể về cấu trúc:
Phân phối đồng hồ: Mỗi phiên bản VM đều có quyền truy cập vào cùng một tín hiệu đồng hồ đơn điệu do ECU cung cấp.
Tính toàn vẹn của đồng hồ: Đầu vào đồng hồ đơn điệu của mạng dự kiến là một nguồn đáng tin cậy để điều phối các sự kiện trên các dịch vụ. Biện pháp phòng vệ trước các lỗ hổng bảo mật có thể xảy ra của hệ thống, chẳng hạn như tấn công phát lại hoặc đảo ngược thời gian, dựa trên tính toàn vẹn của đồng hồ đơn điệu.
Sử dụng báo thức: Không nên sử dụng API đồng hồ nền tảng SDV cho các sự kiện có tần suất xuất hiện cao (> 100 Hz) hoặc độ trễ < 10 ms giữa thời gian lên lịch và thời gian diễn ra sự kiện. Các API có tần suất cao hoặc độ trễ thấp nên sử dụng trình điều khiển nhân.
API đồng hồ
Đồng hồ đơn điệu của mạng được hiển thị thông qua API clock_gettime(3) tiêu chuẩn:
// Network monotonic clock uses standard Linux API.
// This is represented as a dynamic clock in clock_gettime(3)
clock_gettime(clockid_t id, ×pec)
Đồng hồ này được cung cấp thông qua cơ chế mạng PTP cho tất cả các VM và được đăng ký làm đồng hồ động cho mục đích clock_gettime(3).
Đồng hồ UTC được biểu thị bằng CLOCK_REALTIME trong clock_gettime(3).
Trình điều khiển thiết bị không bắt buộc
Các OEM có thể chọn hiển thị một khối thiết bị Linux cho các thuộc tính thời gian bổ sung. Hiển thị điều này bằng cách xử lý quyền thông qua sepolicy:
# in device/OEM/target/sepolicy/time/file_contexts
/dev/sdvtime u:object_r:time_device:s0
OEM chịu trách nhiệm về việc phát triển và các chức năng của trình điều khiển thiết bị Linux tuỳ chỉnh, trình điều khiển này sẽ hiển thị các API cho khối thiết bị.
Thông báo và lệnh gọi lại
Thông báo và lệnh gọi lại cho các thành phần thời gian trong SDV là các chức năng của không gian người dùng do OEM cung cấp. Nền tảng SDV không cung cấp các API cụ thể cho những chức năng này.
Phải có tối đa một dịch vụ OEM cho mỗi máy ảo yêu cầu chức năng đồng bộ hoá thời gian, xử lý mọi thay đổi liên quan về thời gian cần được giám sát. Ví dụ: khi trạng thái đáng tin cậy thay đổi đối với nguồn thời gian hiện tại:
Các thay đổi về trạng thái nguồn thời gian dự kiến là các sự kiện có tần suất thấp, vì vậy, dịch vụ OEM có thể kiểm tra các thay đổi thông qua việc thăm dò, ví dụ: một lần mỗi phút.
ECU truyền đạt trạng thái đáng tin cậy của đồng hồ UTC thông qua mạng, chẳng hạn như qua SOME/IP.
Một dịch vụ OEM sẽ xuất bản các chủ đề Đường hầm dữ liệu cụ thể để hiển thị những thay đổi này cho người đăng ký.
Các OEM tuỳ chỉnh chính sách uỷ quyền cho các dịch vụ để xác định những dịch vụ nào có thể đăng ký các chủ đề Data Tunnel này để theo dõi các thay đổi về trạng thái thời gian đáng tin cậy.
Trạng thái và cách xử lý lỗi
Mã lỗi tuân theo quy ước của các API Linux tiêu chuẩn có liên quan, ví dụ:
Nếu
clock_gettime()không thành công, thao tác này sẽ trả về-1vàerrnođược đặt; điều này ngụ ý rằng thao tác đồng hồ không được hỗ trợ hoặc nguồn đồng hồ cơ bản chưa sẵn sàng.Nếu
fopen()không thành công, thao tác này sẽ trả về con trỏ rỗng vàerrnođược đặt; điều này ngụ ý rằng thiết bị khối không có sẵn.Nếu lệnh gọi
ioctl()không thành công, lệnh gọi này sẽ trả về-1vàerrnođược đặt; điều này ngụ ý rằng mã yêu cầu đã chỉ định không có phản hồi phù hợp từ trình điều khiển cơ bản.