DEENESPTFRRUARHIKOZHNL

Watchdog Driver (Wdg)

ModulWdg (Watchdog Driver)
BSW-Modul-ID102
Standard-Header#include "Wdg.h"
SWS-SpezifikationAUTOSAR_SWS_WatchdogDriver.pdf
ClusterMicrocontroller Abstraction (MCAL)

ModulegidsAI-GEGENEREERD

Bedient de watchdoghardware volgens een tijdelijke triggervoorwaarde en schakelt de bedrijfsmodi ervan om.
DOOR AI GEGENEREERD ongecontroleerd Model: claude-opus-5-5 · Inspanning: high · Temperatuur: niet regelbaar · Prompt: 826a1515b822 Herkomst Open vragen (3)
Causaal anker: R20-11 Geldig vanaf R20-11 Nieuw gesynthetiseerd voor deze specificatiestand.
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Bedient de watchdoghardware volgens een tijdelijke triggervoorwaarde en schakelt de bedrijfsmodi ervan om.

De watchdogdriver bestuurt de interne of externe watchdoghardware in opdracht van de Watchdog Manager. Deze stelt via de Watchdog Interface slechts een tijdelijke triggervoorwaarde in. Zolang deze van kracht is, triggert de driver de hardware zelf; daarna loopt de watchdog af [SWS_Wdg_00144]. Wdg_Init stelt de standaardmodus en time-out in vanuit de configuratie, en Wdg_SetMode wisselt tussen OFF-, SLOW- en FAST-modus [SWS_Wdg_00160]. Een time-out van 0 leidt tot een vrijwel onmiddellijke reset, en uitschakelen van de watchdog is alleen mogelijk als de configuratie dit toestaat.

Het watchdog-stuurprogramma Wdg bestuurt de watchdog-hardware via vier synchrone services: Wdg_Init, Wdg_SetMode, Wdg_SetTriggerCondition en Wdg_GetVersionInfo ([SWS_Wdg_00106], [SWS_Wdg_00107], [SWS_Wdg_00155], [SWS_Wdg_00109]). EcuM roept Wdg_Init aan. De Watchdog Manager bereikt het stuurprogramma alleen via de Watchdog Interface, die de instantie kiest via DeviceIndex (SWS WdgIf p. 17). Interne instanties benaderen de hardware rechtstreeks, externe via SPI of DIO ([SWS_Wdg_00161], [SWS_Wdg_00076]). Beide bieden dezelfde API [SWS_Wdg_00077].

kontext cluster_wdg Wdg-Instanzen (Namen je Instanz erweitert) EcuM EcuM (ECU State Manager) WdgInt Wdg (interner Watchdog) EcuM->WdgInt Wdg_Init WdgExt Wdg (externer Watchdog) EcuM->WdgExt Wdg_Init WdgM WdgM (Watchdog Manager) WdgIf WdgIf (Watchdog Interface) Auswahl per DeviceIndex WdgM->WdgIf WdgIf_SetMode WdgIf_SetTriggerCondition WdgIf->WdgInt Wdg_SetMode Wdg_SetTriggerCondition WdgIf->WdgExt Wdg_SetMode Wdg_SetTriggerCondition HwInt interne Watchdog-Hardware WdgInt->HwInt direkter Zugriff Det Det (optional) WdgInt->Det Det_ReportError Dem Dem (optioneel) WdgInt->Dem Dem_SetEventStatus SpiDio Spi / Dio (handler resp. driver) WdgExt->SpiDio API van de handler/driver WdgExt->Det Det_ReportError WdgExt->Dem Dem_SetEventStatus HwExt externe Watchdog-Hardware SpiDio->HwExt Bus- resp. pintoegang

Contextdiagram: EcuM initialiseert de Wdg-instanties, WdgM bestuurt ze via WdgIf. Externe instanties bereiken de hardware via Spi/Dio. Bronnen: [SWS_Wdg_00076], [SWS_Wdg_00161], SWS WdgM p. 86

De kern van de module is de triggervoorwaarde. Deze geldt als toestemming om de watchdog voor de komende n milliseconden te bedienen. Zolang deze geldig is, triggert het stuurprogramma zelf; daarna loopt de watchdog af [SWS_Wdg_00144]. Wdg_SetTriggerCondition reset de teller en rekent de milliseconden modusafhankelijk om naar een tellerwaarde ([SWS_Wdg_00136], [SWS_Wdg_00139]). De interne bedieningsroutine triggert en decrementeert zolang de teller groter is dan nul. Bij nul triggert deze niet meer ([SWS_Wdg_00134], [SWS_Wdg_00135]). Een time-out van 0 forceert een (nagenoeg) onmiddellijke reset, en een afgelopen teller kan niet opnieuw worden geladen [SWS_Wdg_00140].

Ontkoppelde triggering via de triggerconditieWdgMWdgIfWdgTimer-HardwareWatchdog-HardwareUse Case: Triggerbedingung erneuernWdgIf_SetTriggerCondition(DeviceIndex, Timeout)Wdg_SetTriggerCondition(timeout)Triggerteller resettenTerugkeerTerugkeerUse Case: Bediening in de driverloopje Timer-InterruptInterruptaltTriggerteller > 0Triggerteller verlagenHardware triggern(eventueel met activeringscode)Triggerteller = 0geen triggering: watchdog loopt afen reset de ECU

Sequentiediagram: WdgM herlaadt alleen de teller, het triggeren activeert een timer-interrupt in het stuurprogramma. Bij tellerstand 0 loopt de watchdog af. Bronnen: SWS Wdg Afb. 9.2 p. 31, [SWS_Wdg_00134], [SWS_Wdg_00135]

Wdg_Init stelt de standaardmodus en time-outperiode in vanuit de configuratieset Wdg_ConfigType [SWS_Wdg_00001]. Wdg_SetMode wisselt tussen WDGIF_OFF_MODE, WDGIF_SLOW_MODE en WDGIF_FAST_MODE en levert E_OK alleen bij een volledige wissel ([SWS_Wdg_00160], [SWS_Wdg_00103]). Een de-initialisatie bestaat niet. Uitschakelen gebeurt via de OFF-modus [SWS_Wdg_00031], en dat alleen als WdgDisableAllowed het toestaat [SWS_Wdg_00025].

Bij fouten meldt Wdg de ontwikkelingsfouten WDG_E_DRIVER_STATE, WDG_E_PARAM_MODE, WDG_E_PARAM_CONFIG en WDG_E_PARAM_TIMEOUT [SWS_Wdg_00010]. Daarnaast zijn er de productiefouten WDG_E_MODE_FAILED en WDG_E_DISABLE_REJECTED ([SWS_Wdg_00016], [SWS_Wdg_00179]). Deze productiefouten worden vermoedelijk via Dem_SetEventStatus gemeld [SWS_Wdg_00111]. Vraag Q-f0ec41b842ebbdc9 (open)

Rol in de watchdog-stack: het stuurprogramma dat het triggeren zelf op zich neemt

Het watchdog-stuurprogramma Wdg bestuurt de watchdog-hardware via een kleine, synchrone API met vier services die allemaal beschikbaar zijn via Wdg.h: Wdg_Init (service-ID 0x00), Wdg_SetMode (0x01), Wdg_SetTriggerCondition (0x03) en Wdg_GetVersionInfo (0x04). Alleen Wdg_GetVersionInfo is re-entrant ([SWS_Wdg_00106], [SWS_Wdg_00107], [SWS_Wdg_00155], [SWS_Wdg_00109]). Een interface voor de-initialisatie is er bewust niet. Als hardware en omgeving uitschakeling toestaan, gebeurt dit via Wdg_SetMode met de OFF-modus [SWS_Wdg_00031].

De services worden aangeroepen door de basissoftware. De ECU State Manager roept Wdg_Init aan (SWS EcuM p. 34). De Watchdog Manager heeft WdgIf_SetMode en WdgIf_SetTriggerCondition nodig (SWS WdgM p. 86). De Watchdog Interface koppelt deze aanroepen naar het stuurprogramma en kiest de instantie via een op nul gebaseerde DeviceIndex van het type uint8. Als er slechts één stuurprogramma is geconfigureerd, mag deze koppeling geen runtime-overhead veroorzaken, bijvoorbeeld door macro's (SWS WdgIf p. 17). Het tijdsgebonden triggeren ligt volledig in het stuurprogramma. De Watchdog Manager stelt enkel de triggervoorwaarde in (SWS WdgM p. 56; [SWS_Wdg_00144]).

Richting de hardware verschillen de instanties. Een instantie voor een interne watchdog heeft rechtstreeks toegang tot de hardware [SWS_Wdg_00161]. Een instantie voor een externe watchdog gebruikt de API van een handler of stuurprogramma, zoals SPI of DIO [SWS_Wdg_00076]. Optioneel gebruikt Wdg Det_ReportError voor ontwikkelingsfouten en Dem_SetEventStatus voor monitorstatus [SWS_Wdg_00111].

kontext cluster_wdg Wdg-Instanzen (Namen je Instanz erweitert) EcuM EcuM (ECU State Manager) WdgInt Wdg (interner Watchdog) EcuM->WdgInt Wdg_Init WdgExt Wdg (externer Watchdog) EcuM->WdgExt Wdg_Init WdgM WdgM (Watchdog Manager) WdgIf WdgIf (Watchdog Interface) Auswahl per DeviceIndex WdgM->WdgIf WdgIf_SetMode WdgIf_SetTriggerCondition WdgIf->WdgInt Wdg_SetMode Wdg_SetTriggerCondition WdgIf->WdgExt Wdg_SetMode Wdg_SetTriggerCondition HwInt interne Watchdog-Hardware WdgInt->HwInt direkter Zugriff Det Det (optional) WdgInt->Det Det_ReportError Dem Dem (optioneel) WdgInt->Dem Dem_SetEventStatus SpiDio Spi / Dio (handler resp. driver) WdgExt->SpiDio API van de handler/driver WdgExt->Det Det_ReportError WdgExt->Dem Dem_SetEventStatus HwExt externe Watchdog-Hardware SpiDio->HwExt Bus- resp. pintoegang

Contextdiagram: Wdg wordt geïnitialiseerd door EcuM en door WdgM uitsluitend indirect bestuurd via WdgIf. Interne instanties benaderen de hardware rechtstreeks, externe via Spi/Dio. Bronnen: [SWS_Wdg_00076], [SWS_Wdg_00161], [SWS_Wdg_00111], SWS WdgM p. 86

Van systeemstart naar bewaakte werking

Wdg_Init ontvangt een pointer naar een configuratieset van het type Wdg_ConfigType. Deze structuur is hardwareafhankelijk ([SWS_Wdg_00106], [SWS_Wdg_00171]). De functie initialiseert het stuurprogramma en de hardware en stelt de standaardmodus en de time-outperiode in vanuit deze set [SWS_Wdg_00001]. Bovendien initialiseert zij alle globale variabelen [SWS_Wdg_00100]. Zij beschrijft alleen de controllerregisters die andere hardwaremodules niet beïnvloeden en waarvan zij ook niet afhangen. Gemeenschappelijk gebruikte registers worden geïnitialiseerd door een overkoepelende systeemmodule [SWS_Wdg_00101]. Bij geactiveerde detectie van ontwikkelingsfouten wisselt de interne toestand na succesvolle initialisatie van WDG_UNINIT naar WDG_IDLE [SWS_Wdg_00019].

Afbeelding 9.1 van de specificatie toont de taakverdeling: EcuM initialiseert Wdg direct, waarna WdgM via WdgIf de triggervoorwaarde en modus bestuurt (SWS Wdg Afb. 9.1 p. 34). Voor integrators is van belang: vanaf Wdg_Init gelden de geconfigureerde standaardmodus en de initiële time-outperiode [SWS_Wdg_00001]. Is deze modus niet OFF, dan moet de aansturende instantie de triggervoorwaarde binnen het tijdsvenster vernieuwen, anders loopt de watchdog af [SWS_Wdg_00144].

Initialisatie, triggerconditie en moduswisselEcuMWdgMWdgIfWdgUse Case: InitialisierungWdg_Init(ConfigPtr)Globale variabelen en registers initialiserenStandaardmodus en time-outperiode instellenmet detectie van ontwikkelingsfouten:WDG_UNINIT -> WDG_IDLETerugkeerUse Case: Triggerbedingung setzenloopvernieuwen vóór afloop van het tijdvensterWdgIf_SetTriggerCondition(DeviceIndex, Timeout)Wdg_SetTriggerCondition(timeout)ms omrekenen naar tellerwaarde(rekening houden met actuele modus)TerugkeerTerugkeerUse Case: ModuswechselWdgIf_SetMode(DeviceIndex, WdgMode)Wdg_SetMode(Mode)E_OK / E_NOT_OKRetourwaarde van Wdg_SetMode

Sequentiediagram: op de initialisatie door EcuM volgen het instellen van de triggervoorwaarde en het omschakelen van de modus door WdgM via WdgIf. Bronnen: SWS Wdg Afb. 9.1 p. 34, [SWS_Wdg_00001], [SWS_Wdg_00019], [SWS_Wdg_00139], SWS WdgIf p. 18

Triggervoorwaarde: tijdelijke toestemming voor bediening

De hardware wordt niet bediend door afzonderlijke triggeraanroepen van buitenaf. In plaats daarvan geldt een triggervoorwaarde: zolang deze geldig is, bedient het stuurprogramma de hardware zelf. Wordt deze ongeldig, dan staakt het stuurprogramma het triggeren en loopt de watchdog af [SWS_Wdg_00144]. De specificatie beschrijft de voorwaarde als „toestemming om de watchdog voor de komende n milliseconden te bedienen”. De aansturende instantie moet deze binnen dit venster vernieuwen [SWS_Wdg_00144].

Wdg_SetTriggerCondition(uint16 timeout) reset de time-outteller overeenkomstig de meegegeven waarde ([SWS_Wdg_00155], [SWS_Wdg_00136]). De waarde wordt geïnterpreteerd als milliseconden. Het stuurprogramma rekent deze intern om naar een tellerwaarde [SWS_Wdg_00138] en houdt daarbij rekening met de actuele modus [SWS_Wdg_00139]. De waarde 0 is toegestaan: deze beëindigt het triggeren (nagenoeg) onmiddellijk en veroorzaakt daarmee een (nagenoeg) onmiddellijke watchdog-reset. Staat de opgeslagen teller al op 0, dan negeert de functie elke nieuwe waarde [SWS_Wdg_00140]. Een afgelopen teller kan dus niet meer opnieuw worden geladen.

Het daadwerkelijke triggeren wordt afgehandeld door een stuurprogramma-interne bedieningsroutine. Is de triggerteller groter dan nul, dan decrementeert zij deze en triggert de hardware [SWS_Wdg_00134]. Heeft de teller nul bereikt, dan doet zij niets en loopt de watchdog af [SWS_Wdg_00135]. Wordt de bediening geïmplementeerd als interruptroutine, dan horen de interrupt-frameworks thuis in Wdg_Irq.c [SWS_Wdg_00079]. Afbeelding 9.2 toont hiervoor een timer-interrupt die het triggeren qua timing onafhankelijk van de aanroep via WdgIf initieert (SWS Wdg Afb. 9.2 p. 31).

Ontkoppelde triggering via de triggerconditieWdgMWdgIfWdgTimer-HardwareWatchdog-HardwareUse Case: Triggerbedingung erneuernWdgIf_SetTriggerCondition(DeviceIndex, Timeout)Wdg_SetTriggerCondition(timeout)Triggerteller resettenTerugkeerTerugkeerUse Case: Bediening in de driverloopje Timer-InterruptInterruptaltTriggerteller > 0Triggerteller verlagenHardware triggern(eventueel met activeringscode)Triggerteller = 0geen triggering: watchdog loopt afen reset de ECU

Sequentiediagram: WdgM herlaadt de triggerteller slechts, het triggeren zelf wordt geactiveerd door een timer-interrupt in het stuurprogramma. Bij tellerstand 0 blijft het triggeren achterwege en loopt de watchdog af. Bronnen: SWS Wdg Afb. 9.2 p. 31, [SWS_Wdg_00134], [SWS_Wdg_00135], [SWS_Wdg_00136], [SWS_Wdg_00093]

triggerbedingung start Wdg_SetTriggerCondition(timeout) pruefMax Detectie van ontwikkelingsfouten actief en timeout > WdgMaxTimeout? start->pruefMax fehler WDG_E_PARAM_TIMEOUT melden teller niet opnieuw laden pruefMax->fehler ja pruefNull opgeslagen teller = 0? pruefMax->pruefNull nein ende Terugkeer naar de aanroeper fehler->ende ignorieren niets doen (meegegeven waarde negeren) pruefNull->ignorieren ja umrechnen Milliseconden omrekenen naar tellerwaarde (rekening houden met actuele modus) pruefNull->umrechnen nein ignorieren->ende laden Time-outteller resetten umrechnen->laden pruefT0 timeout = 0? laden->pruefT0 reset Triggering stopt (vrijwel) direct -> watchdog-reset van de ECU pruefT0->reset ja weiter Bedieningsroutine triggert zolang teller > 0 pruefT0->weiter nein reset->ende weiter->ende

Activiteitendiagram: Wdg_SetTriggerCondition verwerpt te grote time-outs, negeert nieuwe waarden bij een reeds afgelopen teller en rekent anders modusafhankelijk om naar een tellerwaarde. Interpretatie: de specificatie legt de volgorde van de twee controles niet vast. Bronnen: [SWS_Wdg_00146], [SWS_Wdg_00140], [SWS_Wdg_00138], [SWS_Wdg_00139], SWS Wdg p. 29

Bedrijfsmodi OFF, SLOW en FAST

Wdg_SetMode schakelt stuurprogramma en hardware om van de actuele modus naar WDGIF_OFF_MODE, WDGIF_SLOW_MODE of WDGIF_FAST_MODE. Elke modus komt overeen met een statisch geconfigureerde instelling, zoals een toggle- of window-watchdog met verschillende time-outperioden [SWS_Wdg_00160]. De hardwarespecifieke parameters per modus staan in de configuratieset die aan Wdg_Init wordt meegegeven [SWS_Wdg_00051]. Het type WdgIf_ModeType importeert Wdg uit WdgIf.h [SWS_Wdg_00105]. Een ouder configuratiemodel toont hiervoor de containers WdgSettingsFast, WdgSettingsSlow en WdgSettingsOff evenals WdgDefaultMode (ECUC-Parameter Afb. 5.21 p. 377).

Wdg_SetMode levert E_OK alleen als de wissel volledig is uitgevoerd en alle parameters van stuurprogramma en hardware de nieuwe waarden hebben [SWS_Wdg_00103]. WdgIf geeft deze retourwaarde ongewijzigd door (SWS WdgIf p. 18). Of de watchdog mag worden uitgeschakeld, bepaalt de pre-compile-parameter WdgDisableAllowed. Staat deze op OFF, dan wordt een initialisatie met een uitschakelende standaardmodus afgewezen [SWS_Wdg_00025]. De fout WDG_E_DISABLE_REJECTED dekt volgens de beschrijving ervan ook een overeenkomstige moduswissel af [SWS_Wdg_00179].

modi start OFF WDGIF_OFF_MODE start->OFF Wdg_Init (standaardmodus) alleen als WdgDisableAllowed != OFF SLOW WDGIF_SLOW_MODE start->SLOW Wdg_Init (Standardmodus) FAST WDGIF_FAST_MODE start->FAST Wdg_Init (Standardmodus) OFF->SLOW Wdg_SetMode OFF->FAST Wdg_SetMode SLOW->OFF Wdg_SetMode alleen als uitschakelen is toegestaan SLOW->FAST Wdg_SetMode FAST->OFF Wdg_SetMode alleen als uitschakelen is toegestaan FAST->SLOW Wdg_SetMode

Toestandsdiagram: Wdg_Init stelt de geconfigureerde standaardmodus in, waarna Wdg_SetMode wisselt tussen de drie modi. De OFF-modus is alleen bereikbaar als WdgDisableAllowed dit toestaat. Bronnen: [SWS_Wdg_00160], [SWS_Wdg_00001], [SWS_Wdg_00025], [SWS_Wdg_00179], [SWS_Wdg_00031]

Interne toestanden, exclusieve gebieden en activeringscodes

Bij geactiveerde detectie van ontwikkelingsfouten houdt Wdg een interne toestand bij: WDG_UNINIT tot aan de succesvolle initialisatie, daarna WDG_IDLE [SWS_Wdg_00019]. Wdg_SetMode en de bedieningsroutine stellen tijdens hun uitvoering WDG_BUSY in. Als laatste handeling voor de return stellen zij weer WDG_IDLE in ([SWS_Wdg_00018], [SWS_Wdg_00052]). Beide controleren vooraf of de toestand WDG_IDLE is. Zo niet, dan blijft de moduswissel respectievelijk het triggeren achterwege en wordt WDG_E_DRIVER_STATE gemeld ([SWS_Wdg_00017], [SWS_Wdg_00035]). Zo worden aanroepen vóór de initialisatie gedetecteerd, evenals overlappingen van moduswissel en triggeren.

Als voor gegevensconsistentie interrupts moeten worden geblokkeerd, bijvoorbeeld bij de moduswissel of in de triggerroutine, dient dit bij voorkeur te gebeuren via een exclusief gebied van de BSW-scheduler. Het interne stuurprogramma mag als MCAL-module interrupts ook direct blokkeren [SWS_Wdg_00040]. De handleiding voor BSW-distributie verklaart de achtergrond: in MCAL-stuurprogramma's kunnen Main Function, service-API en ISR in eigen uitvoeringscontexten gelijktijdig toegang hebben tot gemeenschappelijke periferieregisters (BSW Distribution Guide p. 36).

Sommige hardware vereist een configureerbare of variabele activeringscode. In dat geval beheert Wdg de code intern en geeft telkens de juiste waarde door. De hardware actualiseert daarop de interne variabele met de eerstvolgende verwachte code [SWS_Wdg_00093]. De triggercyclus moet zodanig zijn gekozen dat deze actualisering gegarandeerd kan plaatsvinden [SWS_Wdg_00094]. Een configureerbare startcode hoort thuis in de configuratieset. Bij een vast in de hardware ingebouwde code vervalt deze eis [SWS_Wdg_00095].

zustaende start UNINIT WDG_UNINIT start->UNINIT UNINIT->UNINIT Wdg_SetMode / Bedienroutine: WDG_E_DRIVER_STATE IDLE WDG_IDLE UNINIT->IDLE Wdg_Init erfolgreich BUSY WDG_BUSY IDLE->BUSY Wdg_SetMode of bedieningsroutine begint BUSY->IDLE laatste operatie vóór de terugkeer BUSY->BUSY weiterer Aufruf: WDG_E_DRIVER_STATE, kein Wechsel/kein Triggern

Toestandsdiagram: bij geactiveerde detectie van ontwikkelingsfouten gelden de toestanden WDG_UNINIT, WDG_IDLE en WDG_BUSY. Aanroepen buiten WDG_IDLE worden afgewezen met WDG_E_DRIVER_STATE. Bronnen: [SWS_Wdg_00019], [SWS_Wdg_00017], [SWS_Wdg_00018], [SWS_Wdg_00035], [SWS_Wdg_00052]

Interne en externe watchdogs: instanties, bestanden, configuratie

Een ECU kan meerdere Wdg-instanties hebben, bijvoorbeeld één voor een interne en één voor een externe watchdog. In dat geval worden API-namen en instantiespecifieke typenamen [SWS_Wdg_00172] evenals broncode- en header-bestandsnamen conform SRS_BSW_00347 uitgebreid ([SWS_Wdg_00169], [SWS_Wdg_00170]). Afbeelding 1 toont de bestandsstructuur met placeholders zoals Wdg<xxx>.h en Wdg_<xxx>PBcfg.c (SWS Wdg Afb. 1 p. 11). Een externe Wdg moet dezelfde functionele omvang bieden met een semantisch identieke API als een interne [SWS_Wdg_00077]. De broncode ervan moet onafhankelijk zijn van het microcontrollerplatform [SWS_Wdg_00055]. Een voorbeeld uit de safety-omgeving is een externe window-watchdog die via SPI is aangesloten (EXP SafetyUseCase Afb. 4.1 p. 20).

De codebestandsstructuur is niet volledig voorgeschreven. Indien gewenst omvat zij Wdg_Lcfg.c voor link-time-parameters en Wdg_PBcfg.c voor post-build-parameters [SWS_Wdg_00079]. Wdg controleert de configuratie uiterlijk tijdens compile-time statisch [SWS_Wdg_00086]. Of de code vanuit ROM of RAM draait, wordt vastgelegd door een statische configuratie [SWS_Wdg_00168]. Voor externe hardware neemt Wdg de toegangsparameters, zoals SPI-kanaal of DIO-poort, op in zijn gepubliceerde parameters en configuratieparameters [SWS_Wdg_00078]. Recentere releases modelleren dit als keuzereferentie WdgExternalContainerRef naar een DIO-kanaalgroep, een SPI-sequentie of een I2C-sequentie. I2C wordt in R20-11 niet uitdrukkelijk genoemd (SWS Wdg p. 40). Wdg_SetTriggerCondition controleert tegen de maximale waarde WdgMaxTimeout [SWS_Wdg_00146]. Het model van de gepubliceerde informatie bevat daarnaast WdgMinTimeout en WdgResolution (ECUC-Parameter Afb. 5.22 p. 380).

Gedrag in het foutgeval

Wdg maakt onderscheid tussen ontwikkelingsfouten, die overwegend alleen bij geactiveerde detectie van ontwikkelingsfouten worden gecontroleerd, en uitgebreide productiefouten. De foutcodes zijn vastgelegd [SWS_Wdg_00010]:

  • WDG_E_DRIVER_STATE (0x10)
  • WDG_E_PARAM_MODE (0x11)
  • WDG_E_PARAM_CONFIG (0x12)
  • WDG_E_PARAM_TIMEOUT (0x13)
  • WDG_E_PARAM_POINTER (0x14)
  • WDG_E_INIT_FAILED (0x15, ongeldige selectie van de configuratieset)

Voor ontwikkelingsfouten vraagt Wdg optioneel Det_ReportError op [SWS_Wdg_00111]. De foutgevallen van de afzonderlijke services:

  • Initialisatie: ligt de configuratieset buiten de toegestane limieten, dan blijft de initialisatie achterwege met WDG_E_PARAM_CONFIG [SWS_Wdg_00090]. Zou de standaardmodus de watchdog uitschakelen hoewel WdgDisableAllowed==OFF geldt, dan blijft deze achterwege met WDG_E_DISABLE_REJECTED [SWS_Wdg_00025].
  • Moduswissel: een onjuiste toestand leidt tot WDG_E_DRIVER_STATE [SWS_Wdg_00017]. Een modus buiten het bereik of ontoelaatbare hardware-instellingen leiden tot WDG_E_PARAM_MODE ([SWS_Wdg_00091], [SWS_Wdg_00092]). In alle drie de gevallen vindt er geen wissel plaats en levert de functie E_NOT_OK. Mislukt de wissel zelf, bijvoorbeeld door inconsistente instellingen of geschonden tijdvoorwaarden, dan levert zij E_NOT_OK en meldt WDG_E_MODE_FAILED [SWS_Wdg_00016].
  • Triggervoorwaarde: overschrijdt de time-out WdgMaxTimeout, dan wordt de teller niet opnieuw geladen en wordt WDG_E_PARAM_TIMEOUT gemeld [SWS_Wdg_00146].
  • Versie-opvraag: een ongeldige pointer valt onder WDG_E_PARAM_POINTER [SWS_Wdg_00010]. De null-pointercontrole voor Wdg_GetVersionInfo wordt beschreven in een documentpassage uit recentere releases (SWS Wdg p. 30).

De productiefouten WDG_E_MODE_FAILED en WDG_E_DISABLE_REJECTED betreffen initialisatie en moduswissel. De bewakingsfrequentie ervan hangt af van de bovenliggende laag ([SWS_Wdg_00178], [SWS_Wdg_00179]). Ze worden met FAILED gemeld wanneer het instellen respectievelijk uitschakelen van de modus mislukt, en met PASSED wanneer dit lukt ([SWS_Wdg_00180], [SWS_Wdg_00181], [SWS_Wdg_00182], [SWS_Wdg_00183]). Deze meldingen verlopen vermoedelijk via het optioneel opgevraagde Dem_SetEventStatus [SWS_Wdg_00111]. Vraag (open) Het ernstigste geval verschijnt bewust niet als retourwaarde: blijft de triggervoorwaarde uit of wordt deze op 0 gezet, dan loopt de watchdog af en wordt de ECU gereset ([SWS_Wdg_00135], [SWS_Wdg_00140]).

setmode start Wdg_SetMode(Mode) pruefZustand Entwicklungsfehlererkennung aktiv: Zustand = WDG_IDLE? start->pruefZustand fehlerZustand WDG_E_DRIVER_STATE melden kein Wechsel, E_NOT_OK pruefZustand->fehlerZustand nein pruefMode Modus binnen het toelaatbare bereik? pruefZustand->pruefMode ja ende Terugkeer naar de aanroeper fehlerZustand->ende pruefGrenzen Hardware-instellingen van de modus binnen de grenzen? pruefMode->pruefGrenzen ja fehlerMode WDG_E_PARAM_MODE melden kein Wechsel, E_NOT_OK pruefMode->fehlerMode nein pruefGrenzen->fehlerMode nein busy Zustand WDG_BUSY pruefGrenzen->busy ja fehlerMode->ende umschalten Driver en hardware omschakelen naar nieuwe modus busy->umschalten pruefErfolg Overgang volledig en succesvol? umschalten->pruefErfolg ok WDG_E_MODE_FAILED: PASSED Teruggave E_OK pruefErfolg->ok ja nok WDG_E_MODE_FAILED: FAILED Teruggave E_NOT_OK pruefErfolg->nok nein idle Zustand WDG_IDLE (letzte Operation) ok->idle nok->idle idle->ende

Activiteitendiagram: Wdg_SetMode controleert toestand, modus en hardwarelimieten, schakelt om en meldt het resultaat via retourwaarde en WDG_E_MODE_FAILED. Interpretatie: de volgorde van de controles is niet normatief vastgelegd. Bronnen: [SWS_Wdg_00017], [SWS_Wdg_00091], [SWS_Wdg_00092], [SWS_Wdg_00016], [SWS_Wdg_00103], [SWS_Wdg_00018], [SWS_Wdg_00180], [SWS_Wdg_00181]

Verdere gedetailleerde bewijzen

Door AI gegenereerde modulehandleiding op basis van de specificatie-uittreksels voor AUTOSAR Classic R20-11. Uitsluitend de gekoppelde requirements zijn normatief; uitspraken die als interpretatie zijn aangeduid, worden niet rechtstreeks door de bronnen gedekt.

Watchdog Driver (Wdg)

Hardware watchdog timer servicing and mode configuration.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

functie Wdg_Init [SWS_Wdg_00106] 📄 PDF

void Wdg_Init (const Wdg_ConfigType* ConfigPtr);

Initializes the module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 9b3504b00b97 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik en verloop

De synchrone functie Wdg_Init dient voor de initialisatie van de drivermodule Wdg en de watchdog-hardware [SWS_Wdg_00106], [SWS_Wdg_00001]. Via de parameter ConfigPtr wordt een pointer naar de configuratieset doorgegeven [SWS_Wdg_00106]. De functie initialiseert alle globale variabelen van de module en stelt de voorgeconfigureerde standaard-watchdog-modus en de initiële time-outperiode in [SWS_Wdg_00001], [SWS_Wdg_00100].

Hardware-aansturing en beperkingen

Wdg_Init configureert uitsluitend die controllerregisters voor watchdog-aansturing die geen andere hardwaremodules beïnvloeden of van hen afhankelijk zijn [SWS_Wdg_00101]. Registers met module-overstijgende afhankelijkheden worden daarentegen geïnitialiseerd door een gezamenlijke systeemmodule [SWS_Wdg_00101]. De functie is niet-re-entrant en levert geen retourwaarde op [SWS_Wdg_00106].

Foutafhandeling

Vóór het uitvoeren van de initialisatie vinden specifieke controles plaats:

  • Als de detectie van ontwikkelingsfouten (Development Error Detection) is geactiveerd, wordt gecontroleerd of de hardwarespecifieke inhoud van de configuratieset binnen de toegestane grenzen ligt; bij fouten breekt de functie af en meldt WDG_E_PARAM_CONFIG [SWS_Wdg_00090].
  • Indien het deactiveren van de watchdog niet is toegestaan (WdgDisableAllowed == OFF), maar de geconfigureerde standaardmodus deze zou deactiveren, wordt de initialisatie afgebroken en de fout WDG_E_DISABLE_REJECTED geactiveerd [SWS_Wdg_00025].

Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatie-eisen.

Implementer's Guide volgt (complexiteit I2)

functie Wdg_SetMode [SWS_Wdg_00107] 📄 PDF

Std_ReturnType Wdg_SetMode (WdgIf_ModeType Mode);

Switches the watchdog into the mode Mode. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_WatchdogDriver

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: b7aa0ec55f3d Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik

De synchrone en niet re-entrante functie [SWS_Wdg_00107] schakelt de watchdog-driver en de onderliggende hardware om naar een van drie statisch geconfigureerde modi: WDGIF_OFF_MODE, WDGIF_SLOW_MODE of WDGIF_FAST_MODE [SWS_Wdg_00160]. Aangezien de module geen afzonderlijke interface voor de de-initialisatie aanbiedt, vindt een shutdown van de watchdog plaats via de aanroep met de modus WDGIF_OFF_MODE, voor zover de hardware dit ondersteunt [SWS_Wdg_00031]. Bij succesvolle en volledige overname van alle parameters retourneert de functie E_OK [SWS_Wdg_00103].

Toestand en gelijktijdigheid

Vanwege het ontbreken van re-entrantie mag er geen gelijktijdige aanroep plaatsvinden. Bij geactiveerde foutdetectie controleert de functie of de module zich in de toestand WDG_IDLE bevindt [SWS_Wdg_00017]. Tijdens de uitvoering zet zij de toestand op WDG_BUSY en wisselt pas als laatste handeling voor de terugkeer weer naar WDG_IDLE [SWS_Wdg_00018].

Foutafhandeling

In geval van een fout wordt E_NOT_OK geretourneerd:

  • Bij ongeldige waarden voor Mode of buiten de grenzen liggende hardwarespecifieke configuraties meldt de functie de fout WDG_E_PARAM_MODE [SWS_Wdg_00091], [SWS_Wdg_00092].
  • Bevindt de module zich niet in de toestand WDG_IDLE, dan breekt de overgang met WDG_E_DRIVER_STATE af [SWS_Wdg_00017].
  • Als de hardware de modus niet kan aannemen – bijvoorbeeld door inconsistente instellingen of geschonden timing-eisen –, wordt de Extended Production Error WDG_E_MODE_FAILED getriggerd [SWS_Wdg_00016].

Deze tekst is gegenereerd door een AI op basis van de AUTOSAR-specificatie.

Implementer's Guide volgt (complexiteit I2)

functie Wdg_SetTriggerCondition [SWS_Wdg_00155] 📄 PDF

void Wdg_SetTriggerCondition (uint16 timeout);

Sets the timeout value for the trigger counter.

type Wdg_ConfigType [SWS_Wdg_00171] 📄 PDF

Used for pointers to structures holding configuration data provided to the Wdg module initialization routine for configuration of the module and watchdog hardware.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Wdg
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Wdg@rel:R20-11#25edb647
Content hash
25edb647
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_WatchdogDriver.pdf#nameddest=SWS_Wdg_00106

Themakaart

Detailweergave

Kies een item in de inhoudsopgave.

Initialisatie en status

Returns the version information of the module.

void Wdg_GetVersionInfo (Std_VersionInfoType* versioninfo);
Wdg_Init functie

Initializes the module.

void Wdg_Init (const Wdg_ConfigType* ConfigPtr);

Diensten

Wdg_SetMode functie

Switches the watchdog into the mode Mode. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_WatchdogDriver

Std_ReturnType Wdg_SetMode (WdgIf_ModeType Mode);

Sets the timeout value for the trigger counter.

void Wdg_SetTriggerCondition (uint16 timeout);

Typen

Used for pointers to structures holding configuration data provided to the Wdg module initialization routine for configuration of the module and watchdog hardware.