AAOS Yazılımla Tanımlanmış Araç (SDV) platformu, elektronik kontrol birimlerinden (ECU'lar) zaman kaynağı raporlaması için standart mekanizmalar ve SDV örneklerinde zaman bilgilerini göstermek için standart yüzeyler tanımlar. Bu sayfada, SDV standardıyla ilgili ayrıntılar ve rehberlik sağlanmaktadır.
Saat mimarisi
SDV platformunda iki standart saat bulunur:
UTC saati: Bu, standart Eşgüdümlü Evrensel Saat'tir. SOME/IP, genellikle bunu ECU'lardan platform çalışma zamanına sağlar. Kullanım alanları arasında sertifika geçerliliği, teşhis ve V2X yer alır.
Ağ tekdüze saati: Bu, azalan olmayan ve son derece doğru bir saat sinyalidir. Araç mimarisinin daha geniş kapsamlı olarak kullandığı ECU'lardan sağlanır ve etkinliklerin koordine edilmesini sağlar. ECU'lar bunu gPTP aracılığıyla SDV platformuna sağlar. Bu saat, sabit saat olarak da bilinir.
SDV platformundaki saatlerin belirli mimari şartları vardır:
Saat teslimi: Her sanal makine örneği, ECU'lar tarafından sağlanan aynı monoton saat sinyaline erişir.
Saat bütünlüğü: Ağın tekdüze saat girişi, hizmetler genelinde etkinliklerin koordine edilmesi için güvenilir bir kaynak olmalıdır. Tekrar oynama saldırıları veya zaman tersine çevirme gibi olası sistem güvenlik açıklarına karşı savunma, tekdüze saatin bütünlüğüne dayanır.
Alarm kullanımı: SDV platformu saat API'leri, yüksek sıklıkta gerçekleşen (> 100 Hz) veya planlama ile etkinlik zamanı arasında < 10 ms gecikme süresi olan etkinlikler için kullanılmamalıdır. Yüksek frekanslı veya düşük gecikmeli API'ler, çekirdek sürücüsü kullanmalıdır.
Saat API'leri
Ağ tekdüze saati, standart clock_gettime(3) API aracılığıyla kullanıma sunulur:
// Network monotonic clock uses standard Linux API.
// This is represented as a dynamic clock in clock_gettime(3)
clock_gettime(clockid_t id, ×pec)
Bu saat, tüm sanal makinelere PTP ağ mekanizması aracılığıyla sağlanır ve clock_gettime(3) amaçları için dinamik saat olarak kaydedilir.
UTC saati, clock_gettime(3) içinde CLOCK_REALTIME ile gösterilir.
İsteğe bağlı cihaz sürücüsü
OEM'ler, ek zaman özellikleri için bir Linux cihaz bloğu gösterme seçeneğine sahiptir. Bunu, sepolicy aracılığıyla izin işleme ile gösterin:
# in device/OEM/target/sepolicy/time/file_contexts
/dev/sdvtime u:object_r:time_device:s0
OEM'ler, API'leri cihaz bloğuna sunan özel Linux cihaz sürücüsünün geliştirilmesi ve özelliklerinden sorumludur.
Bildirimler ve geri aramalar
SDV'deki zaman bileşenleriyle ilgili bildirimler ve geri aramalar, OEM tarafından sağlanan kullanıcı alanı özellikleridir. SDV platformu, bu işlevler için belirli API'ler sağlamaz.
İzlenecek tüm ilgili saat değişikliklerini işleyen, saat senkronizasyonu işlevi gerektiren her sanal makine için en fazla bir OEM hizmeti olmalıdır. Örneğin, geçerli saat kaynağının güvenilir durumu değiştiğinde:
Zaman kaynağı durumlarındaki değişikliklerin düşük sıklıklı etkinlikler olması beklenir. Bu nedenle, bir OEM hizmeti, örneğin dakikada bir kez yoklama yaparak değişiklikleri kontrol edebilir.
ECU'lar, UTC saatin güvenilir durumunu ağ üzerinden (ör. SOME/IP üzerinden) iletir.
Bir OEM hizmeti, bu değişiklikleri abonelere göstermek için belirli Data Tunnel konularını yayınlar.
OEM'ler, hangi hizmetlerin güvenilir zaman durumu değişikliklerini dinlemek için bu veri tüneli konularına abone olabileceğini belirlemek üzere yetkilendirme politikasını özelleştirir.
Hata durumu ve işleme
Hata kodları, ilgili standart Linux API'lerinin kurallarına uyar. Örneğin:
clock_gettime()başarısız olursa-1döndürülür veerrnoayarlanır. Bu, saat işleminin desteklenmediği veya temel alınan saat kaynağının hazır olmadığı anlamına gelir.fopen()başarısız olursa bu, boş bir işaretçi döndürür veerrnoayarlanır. Bu, blok cihazın kullanılamadığını gösterir.Bir
ioctl()çağrısı başarısız olursa-1döndürülür veerrnoayarlanır. Bu, belirtilen istek kodunun temel sürücüden eşleşen bir yanıt almadığı anlamına gelir.