DEENESPTFRRUARHIKOZHNL
AUTOSAR_CP_SWS_OS FIG-fa685f71ffab59d2 928 × 624 px 5 Release(s)

Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)

SHA-256 Inhalts-Fingerabdruck: fa685f71ffab59d2813f592b8691a7fcf27d41f8b35595ea0b158697161099d9
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: UML-Zustandsdiagramm (Finite State Machine / Statechart).
  • Technischer Zweck: Formale Definition des Lebenszyklus und der Zustandsübergänge einer explizit synchronisierten Ablaufverfolgungstabelle (ScheduleTable) im AUTOSAR Classic OS (SWS_Os_00013, SRS_Os_11002).
  • Funktionale Einordnung:
    • Systemebene: Basissoftware (BSW), System Services – AUTOSAR OS.
    • Kernfunktion: Zeitgesteuertes Auslösen von Tasks und Events entlang einer Zeitbasis (Counter/Tick).
    • Synchronisationsmodus: Explicit Synchronization – Abgleich der lokalen Schedule-Table-Zeitachse mit einer externen globalen Zeitbasis (z. B. bereitgestellt über FlexRay Sync, TSN oder den StbM – Synchronized Time-Base Manager) via dedizierter API-Aufrufe (SyncScheduleTable()).

2. Komponenten, Entitäten & Schnittstellen

  • Entitäten / Datentypen (AUTOSAR OS):
    • ScheduleTableType: Bezeichner der Schedule Table (Konfigurationscontainer: OsScheduleTable).
    • ScheduleTableStatusType: Zustandstyp für den Rückgabewert von GetScheduleTableStatus().
  • Zustände (ScheduleTableStatusType):
    • SCHEDULETABLE_STOPPED: Tabelle ist inaktiv, konsumiert keine Counter-Verarbeitung.
    • SCHEDULETABLE_NEXT: Tabelle ist als Folgetabelle einer aktuell laufenden Schedule Table registriert (Kettung via NextScheduleTable()).
    • SCHEDULETABLE_WAITING: Tabelle wartet nach StartScheduleTableSync() auf den ersten Synchronisationsimpuls (SyncScheduleTable()), um synchronisiert zu starten.
    • SCHEDULETABLE_RUNNING: Tabelle läuft aktiv ab, ist jedoch asynchron zur globalen Zeit (außerhalb des Toleranzfensters PRECISION oder durch API entkoppelt).
    • SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS: Tabelle läuft aktiv und befindet sich innerhalb des konfigurierten Synchronisationsfensters (OsScheduleTablePrecision).
  • Schnittstellen & Parameter:
    • Service-APIs: StartScheduleTableRel(), StartScheduleTableAbs(), StartScheduleTableSync(), StopScheduleTable(), NextScheduleTable(), SyncScheduleTable(), SetScheduleTableAsync().
    • Konfigurationsparameter: OsScheduleTablePrecision (PRECISION), OsScheduleTableSyncStrategy = EXPLICIT.
    • Dynamische Werte: CounterValue (aktueller Stand des zugrundeliegenden OS-Counters), GlobalValue (an SyncScheduleTable() übergebener externer Zeitwert).

3. Dynamisches Verhalten & Sequenzablauf

Start-Pfade
  1. Asynchroner / Unmittelbarer Start:
    • SCHEDULETABLE_STOPPED $\xrightarrow{\text{StartScheduleTableRel() / StartScheduleTableAbs()}}$ SCHEDULETABLE_RUNNING.
    • Startet die Ausführung relativ oder absolut zum OS-Counter, ohne initiale Synchronisation.
  2. Synchroner Start (Verzögert / Phasenkorrekt):
    • SCHEDULETABLE_STOPPED $\xrightarrow{\text{StartScheduleTableSync()}}$ SCHEDULETABLE_WAITING.
    • Verbleibt in WAITING, bis externer Zeitbezug hergestellt wird:
    • SCHEDULETABLE_WAITING $\xrightarrow{\text{SyncScheduleTable()}}$ SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS.
  3. Kettung (Chaining):
    • SCHEDULETABLE_STOPPED $\xrightarrow{\text{NextScheduleTable()}}$ SCHEDULETABLE_NEXT.
    • Aktivierung erfolgt automatisch bei Erreichen des Tabellenendes der Vorgängertabelle:
    • SCHEDULETABLE_NEXT $\xrightarrow{\text{„previous“ ScheduleTable ends}}$ SCHEDULETABLE_RUNNING.
Synchronisationsdynamik & Phasenabgleich
  • Einschwingen in Synchronizität:
    • In SCHEDULETABLE_RUNNING evaluiert das OS bei Aufruf von SyncScheduleTable() die Phasendifferenz:
    • Bedingung: |CounterValue - GlobalValue| ≤ PRECISION.
    • Transition → SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS.
    • Hinweis: Liegt der Versatz außerhalb von PRECISION, bleibt die Tabelle in RUNNING, während das OS Retardierungs-/Advance-Strategien anwendet, um die Phasenlage schrittweise anzunähern.
  • Verlust der Synchronizität / Entkopplung:
    • In SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS führt Drift oder Jitter (|CounterValue - GlobalValue| > PRECISION) oder der explizite API-Aufruf SetScheduleTableAsync() zum sofortigen Zustandswechsel → SCHEDULETABLE_RUNNING.
Abbruchbedingungen
  • StopScheduleTable() bricht die Tabelle aus allen aktiven Zuständen (WAITING, RUNNING, RUNNING_AND_SYNCHRONOUS, NEXT) deterministisch ab → SCHEDULETABLE_STOPPED.
  • Vorhandene Expiry Points werden verworfen; verknüpfte Next-Beziehungen werden aufgelöst.

4. Normative Relevanz & Entwickler-Hinweise

  • Konfigurationsanforderungen (Os.epd / BSW-Integrator):
    • OsScheduleTableSyncStrategy muss auf EXPLICIT gesetzt sein.
    • OsScheduleTablePrecision definiert das Toleranzband für den Übergang zu SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS. Ein zu enges Band führt zu permanentem Flattern zwischen RUNNING und SYNCHRONOUS; ein zu weites Band gefährdet globale TDMA-Slots (z. B. FlexRay/TSN).
    • Maximalwerte für Drift-Korrekturen (OsScheduleTableMaxAdvance, OsScheduleTableMaxRetard) müssen auf die Task-Laufzeiten abgestimmt werden, um Deadline-Misses während Phasenverschiebungen zu verhindern.
  • API-Vertrag & Fehlerbehandlung:
    • Der Aufruf von SyncScheduleTable() oder SetScheduleTableAsync() auf einer Tabelle mit impliziter Synchronisation (IMPLICIT) oder ohne zugewiesenen Sync-Counter liefert E_OS_ID bzw. im Extended Status E_OS_CORE.
    • Ein Aufruf von StartScheduleTableSync() auf einer bereits aktiven Tabelle (RUNNING, WAITING, NEXT) schlägt mit E_OS_STATE fehl.
  • Applikations- & Stack-Design:
    • Zyklische Triggerung: SyncScheduleTable() wird typischerweise aus einem Zeitsynchronisations-Modul (StbM) oder aus einem Bus-Treiber/Interface-Callback (z. B. FlexRay Sync Pulse, PTP/IEEE 802.1AS) periodisch aufgerufen.
    • Status-Polling: Zur Laufzeit sollte die Applikation/BswM über GetScheduleTableStatus() verifizieren, ob der Status SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS vorliegt, bevor zeitkritische Bus-Interaktionen freigegeben werden.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Erkannte Spezifikationsbelege & Anforderungen auf dieser Seite

Vorkommen in AUTOSAR-Releases (5)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R21-11 AUTOSAR_SWS_OS S. 48 7.5 Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)
R22-11 AUTOSAR_SWS_OS S. 52 7.5 Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)
R23-11 AUTOSAR_CP_SWS_OS S. 47 7.5 Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)
R24-11 AUTOSAR_CP_SWS_OS S. 48 7.5 Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)
R25-11 AUTOSAR_CP_SWS_OS S. 49 7.5 Figure 7.5: States of an explicit synchronized ScheduleTable (not all conditions for transitions are shown in the picture)