Atiende el hardware del watchdog conforme a una condición de disparo temporal y conmuta sus modos de funcionamiento.
GENERADO POR IAno revisadoModelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 826a1515b822ProcedenciaPreguntas abiertas (3)
Ancla causal: R20-11Válido desde R20-11Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Atiende el hardware del watchdog conforme a una condición de disparo temporal y conmuta sus modos de funcionamiento.
El controlador del watchdog controla el hardware de watchdog interno o externo por encargo del Watchdog Manager. Este último solo establece una condición de disparo temporal a través de la Watchdog Interface. Mientras sea válida, el controlador dispara el hardware por sí mismo; después, el watchdog expira [SWS_Wdg_00144]. Wdg_Init establece el modo predeterminado y el tiempo de expiración a partir de la configuración, y Wdg_SetMode cambia entre los modos OFF, SLOW y FAST [SWS_Wdg_00160]. Un tiempo de expiración de 0 desencadena un reinicio casi inmediato, y el watchdog solo se puede desconectar si la configuración lo permite.
El controlador del watchdog Wdg controla el hardware del watchdog a través de cuatro servicios síncronos: Wdg_Init, Wdg_SetMode, Wdg_SetTriggerCondition y Wdg_GetVersionInfo ([SWS_Wdg_00106], [SWS_Wdg_00107], [SWS_Wdg_00155], [SWS_Wdg_00109]). EcuM llama a Wdg_Init. El Watchdog Manager solo accede al controlador a través de la Watchdog Interface, que selecciona la instancia mediante DeviceIndex (SWS WdgIf p. 17). Las instancias internas acceden directamente al hardware; las externas, a través de SPI o DIO ([SWS_Wdg_00161], [SWS_Wdg_00076]). Ambas ofrecen la misma API [SWS_Wdg_00077].
Diagrama de contexto: EcuM inicializa las instancias de Wdg, WdgM las controla a través de WdgIf. Las instancias externas acceden al hardware a través de Spi/Dio. Fuentes: [SWS_Wdg_00076], [SWS_Wdg_00161], SWS WdgM p. 86
El núcleo del módulo es la condición de disparo. Se considera un permiso para atender al watchdog durante los siguientes n milisegundos. Mientras sea válida, el propio controlador realiza el disparo; después, el watchdog expira [SWS_Wdg_00144]. Wdg_SetTriggerCondition restablece el contador y convierte los milisegundos en un valor de contador en función del modo ([SWS_Wdg_00136], [SWS_Wdg_00139]). La rutina interna de atención dispara y decrementa mientras el contador sea mayor que cero. En cero, deja de disparar ([SWS_Wdg_00134], [SWS_Wdg_00135]). Un tiempo de expiración de 0 fuerza un reinicio (casi) inmediato, y un contador expirado no se puede volver a cargar [SWS_Wdg_00140].
Diagrama de secuencia: WdgM solo recarga el contador, el disparo lo desencadena una interrupción de temporizador en el controlador. Con el contador a 0, el watchdog expira. Fuentes: SWS Wdg Fig. 9.2 p. 31, [SWS_Wdg_00134], [SWS_Wdg_00135]
Wdg_Init establece el modo predeterminado y el período de tiempo de expiración a partir del conjunto de configuración Wdg_ConfigType[SWS_Wdg_00001]. Wdg_SetMode conmuta entre WDGIF_OFF_MODE, WDGIF_SLOW_MODE y WDGIF_FAST_MODE y devuelve E_OK solo en caso de un cambio completo ([SWS_Wdg_00160], [SWS_Wdg_00103]). No existe una desinicialización. La desconexión se realiza a través del modo OFF [SWS_Wdg_00031], y solo si WdgDisableAllowed lo permite [SWS_Wdg_00025].
En caso de error, Wdg notifica los errores de desarrollo WDG_E_DRIVER_STATE, WDG_E_PARAM_MODE, WDG_E_PARAM_CONFIG y WDG_E_PARAM_TIMEOUT[SWS_Wdg_00010]. A ellos se añaden los errores de producción WDG_E_MODE_FAILED y WDG_E_DISABLE_REJECTED ([SWS_Wdg_00016], [SWS_Wdg_00179]). Se asume que estos errores de producción se notifican a través de Dem_SetEventStatus[SWS_Wdg_00111]. Pregunta Q-f0ec41b842ebbdc9 (abierta)
Rol en la pila del watchdog: el controlador que asume el disparo por sí mismo
El controlador del watchdog Wdg controla el hardware del watchdog a través de una API pequeña y síncrona con cuatro servicios, todos disponibles mediante Wdg.h: Wdg_Init (Service ID 0x00), Wdg_SetMode (0x01), Wdg_SetTriggerCondition (0x03) y Wdg_GetVersionInfo (0x04). Solo Wdg_GetVersionInfo es reentrante ([SWS_Wdg_00106], [SWS_Wdg_00107], [SWS_Wdg_00155], [SWS_Wdg_00109]). Deliberadamente no existe una interfaz para la desinicialización. Si el hardware y el entorno permiten una desconexión, esta se lleva a cabo mediante Wdg_SetMode con el modo OFF [SWS_Wdg_00031].
Los servicios son llamados por el software básico. El ECU State Manager llama a Wdg_Init (SWS EcuM p. 34). El Watchdog Manager requiere WdgIf_SetMode y WdgIf_SetTriggerCondition (SWS WdgM p. 86). La Watchdog Interface mapea estas llamadas al controlador y selecciona la instancia a través de un DeviceIndex de base cero de tipo uint8. Si solo hay un controlador configurado, este mapeo no debe causar sobrecarga en tiempo de ejecución, por ejemplo mediante macros (SWS WdgIf p. 17). La temporización del disparo recae por completo en el controlador. El Watchdog Manager solo establece la condición de disparo (SWS WdgM p. 56; [SWS_Wdg_00144]).
Hacia el hardware, las instancias difieren. Una instancia para un watchdog interno accede directamente al hardware [SWS_Wdg_00161]. Una instancia para un watchdog externo utiliza la API de un manejador o controlador, como SPI o DIO [SWS_Wdg_00076]. Opcionalmente, Wdg utiliza Det_ReportError para errores de desarrollo y Dem_SetEventStatus para el estado del monitor [SWS_Wdg_00111].
Diagrama de contexto: Wdg es inicializado por EcuM y controlado por WdgM solo indirectamente a través de WdgIf. Las instancias internas acceden directamente al hardware; las externas, a través de Spi/Dio. Fuentes: [SWS_Wdg_00076], [SWS_Wdg_00161], [SWS_Wdg_00111], SWS WdgM p. 86
Del inicio del sistema al funcionamiento supervisado
Wdg_Init recibe un puntero a un conjunto de configuración de tipo Wdg_ConfigType. Esta estructura depende del hardware ([SWS_Wdg_00106], [SWS_Wdg_00171]). La función inicializa el controlador y el hardware, y establece el modo predeterminado y el período de tiempo de expiración a partir de dicho conjunto [SWS_Wdg_00001]. Además, inicializa todas las variables globales [SWS_Wdg_00100]. Solo escribe en los registros del controlador que no influyen en otros módulos de hardware ni dependen de ellos. Los registros de uso compartido son inicializados por un módulo de sistema global [SWS_Wdg_00101]. Con la detección de errores de desarrollo activada, el estado interno cambia tras una inicialización correcta de WDG_UNINIT a WDG_IDLE[SWS_Wdg_00019].
La figura 9.1 de la especificación muestra la división del trabajo: EcuM inicializa Wdg directamente; a continuación, WdgM controla la condición de disparo y el modo a través de WdgIf (SWS Wdg Fig. 9.1 p. 34). Para los integradores es importante: a partir de Wdg_Init rigen el modo predeterminado configurado y el período inicial de tiempo de expiración [SWS_Wdg_00001]. Si este modo no es OFF, la entidad de control debe renovar la condición de disparo dentro de la ventana de tiempo; de lo contrario, el watchdog expira [SWS_Wdg_00144].
Condición de disparo: permiso temporal para la atención
El hardware no se atiende mediante llamadas individuales de disparo desde el exterior. En su lugar, rige una condición de disparo: mientras sea válida, el propio controlador atiende el hardware. Si pierde su validez, cesa el disparo y el watchdog expira [SWS_Wdg_00144]. La especificación describe la condición como «permiso para atender el watchdog durante los próximos n milisegundos». La entidad de control debe renovarla dentro de este margen [SWS_Wdg_00144].
Wdg_SetTriggerCondition(uint16 timeout) restablece el contador de tiempo de expiración conforme al valor transferido ([SWS_Wdg_00155], [SWS_Wdg_00136]). El valor se interpreta en milisegundos. El controlador lo convierte internamente en un valor de contador [SWS_Wdg_00138] y tiene en cuenta el modo actual [SWS_Wdg_00139]. El valor 0 es admisible: detiene el disparo de forma (casi) inmediata y desencadena con ello un reinicio del watchdog (casi) inmediato. Si el contador almacenado ya se encuentra en 0, la función ignora cualquier valor nuevo [SWS_Wdg_00140]. Por lo tanto, un contador expirado ya no se puede recargar.
Del disparo en sí se encarga una rutina de atención interna del controlador. Si el contador de disparo es mayor que cero, lo decrementa y dispara el hardware [SWS_Wdg_00134]. Si ha alcanzado cero, no realiza ninguna acción y el watchdog expira [SWS_Wdg_00135]. Si la atención se implementa como rutina de interrupción, los marcos de interrupción pertenecen a Wdg_Irq.c[SWS_Wdg_00079]. La figura 9.2 muestra para ello una interrupción de temporizador que desencadena el disparo de forma temporalmente independiente de la llamada a través de WdgIf (SWS Wdg Fig. 9.2 p. 31).
Diagrama de actividades: Wdg_SetTriggerCondition descarta los tiempos de expiración excesivos, ignora valores nuevos con un contador ya expirado y, de lo contrario, realiza la conversión a un valor de contador en función del modo. Interpretación: la especificación no establece el orden de ambas comprobaciones. Fuentes: [SWS_Wdg_00146], [SWS_Wdg_00140], [SWS_Wdg_00138], [SWS_Wdg_00139], SWS Wdg p. 29
Modos de funcionamiento OFF, SLOW y FAST
Wdg_SetMode conmuta el controlador y el hardware desde el modo actual a WDGIF_OFF_MODE, WDGIF_SLOW_MODE o WDGIF_FAST_MODE. Cada modo corresponde a un ajuste configurado estáticamente, como watchdog de conmutación (toggle) o de ventana con diferentes períodos de tiempo de expiración [SWS_Wdg_00160]. Los parámetros específicos de hardware para cada modo figuran en el conjunto de configuración que se transfiere a Wdg_Init[SWS_Wdg_00051]. Wdg importa el tipo WdgIf_ModeType de WdgIf.h[SWS_Wdg_00105]. Un modelo de configuración anterior muestra para ello los contenedores WdgSettingsFast, WdgSettingsSlow y WdgSettingsOff, así como WdgDefaultMode (ECUC-Parameter Fig. 5.21 p. 377).
Wdg_SetMode devuelve E_OK únicamente si el cambio se ha ejecutado por completo y todos los parámetros del controlador y del hardware tienen los nuevos valores [SWS_Wdg_00103]. WdgIf transmite este valor de retorno sin modificaciones (SWS WdgIf p. 18). Si se permite desactivar el watchdog, lo determina el parámetro pre-compile WdgDisableAllowed. Si está en OFF, se rechaza una inicialización con un modo predeterminado de desconexión [SWS_Wdg_00025]. Según su descripción, el error WDG_E_DISABLE_REJECTED también cubre el correspondiente cambio de modo [SWS_Wdg_00179].
Estados internos, áreas exclusivas y códigos de activación
Con la detección de errores de desarrollo activada, Wdg gestiona un estado interno: WDG_UNINIT hasta una inicialización correcta, después WDG_IDLE[SWS_Wdg_00019]. Wdg_SetMode y la rutina de atención establecen WDG_BUSY durante su ejecución. Como última operación antes del retorno, restablecen WDG_IDLE ([SWS_Wdg_00018], [SWS_Wdg_00052]). Ambas comprueban previamente si el estado es WDG_IDLE. En caso contrario, se omite el cambio de modo o el disparo, y se notifica WDG_E_DRIVER_STATE ([SWS_Wdg_00017], [SWS_Wdg_00035]). De este modo se detectan llamadas previas a la inicialización, así como solapamientos entre cambio de modo y disparo.
Si para la consistencia de datos deben bloquearse interrupciones, por ejemplo durante un cambio de modo o en la rutina de disparo, esto debe hacerse preferiblemente mediante un área exclusiva del planificador BSW. Como módulo MCAL, el controlador interno también puede deshabilitar interrupciones directamente [SWS_Wdg_00040]. La guía de distribución de BSW explica el trasfondo: en los controladores MCAL, la función principal (Main Function), la API de servicio y la ISR pueden acceder a registros periféricos comunes en sus propios contextos de ejecución (BSW Distribution Guide p. 36).
Cierto hardware requiere un código de activación configurable o variable. En tal caso, Wdg administra el código internamente y transfiere en cada ocasión el valor correcto. A continuación, el hardware actualiza la variable interna con el siguiente código esperado [SWS_Wdg_00093]. El ciclo de disparo debe seleccionarse de manera que se garantice que esta actualización pueda llevarse a cabo [SWS_Wdg_00094]. Un código inicial configurable pertenece al conjunto de configuración. Con un código fijo predeterminado por hardware, este requisito no aplica [SWS_Wdg_00095].
Watchdogs internos y externos: instancias, archivos, configuración
Una ECU puede tener varias instancias de Wdg, por ejemplo una para un watchdog interno y otra para un watchdog externo. En tal caso, los nombres de la API y los nombres de tipos específicos de la instancia [SWS_Wdg_00172], así como los nombres de archivos de código y cabecera, se amplían según SRS_BSW_00347 ([SWS_Wdg_00169], [SWS_Wdg_00170]). La figura 1 muestra la estructura de archivos con marcadores de posición como Wdg<xxx>.h y Wdg_<xxx>PBcfg.c (SWS Wdg Fig. 1 p. 11). Un Wdg externo debe ofrecer el mismo alcance funcional con una API semánticamente idéntica a la de uno interno [SWS_Wdg_00077]. Su código fuente debe ser independiente de la plataforma del microcontrolador [SWS_Wdg_00055]. Un ejemplo del ámbito de seguridad funcional (Safety) es un watchdog de ventana externo conectado mediante SPI (EXP SafetyUseCase Fig. 4.1 p. 20).
La estructura de archivos de código no está predeterminada por completo. En caso necesario, incluye Wdg_Lcfg.c para parámetros link-time y Wdg_PBcfg.c para parámetros post-build [SWS_Wdg_00079]. Wdg comprueba estáticamente la configuración a más tardar en tiempo de compilación [SWS_Wdg_00086]. Una configuración estática determina si el código se ejecuta desde ROM o RAM [SWS_Wdg_00168]. Para hardware externo, Wdg incluye los parámetros de acceso, como el canal SPI o el puerto DIO, en sus parámetros publicados y en sus parámetros de configuración [SWS_Wdg_00078]. Las versiones más recientes lo modelan como una referencia de selección WdgExternalContainerRef a un grupo de canales DIO, una secuencia SPI o una secuencia I2C. I2C no se menciona expresamente en R20-11 (SWS Wdg p. 40). Wdg_SetTriggerCondition realiza la comprobación frente al valor máximo WdgMaxTimeout[SWS_Wdg_00146]. El modelo de información publicada contiene además WdgMinTimeout y WdgResolution (ECUC-Parameter Fig. 5.22 p. 380).
Comportamiento en caso de error
Wdg distingue los errores de desarrollo, que en su mayoría solo se comprueban con la detección de errores de desarrollo activada, de los errores de producción extendidos. Los códigos de error están definidos [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, selección no válida del conjunto de configuración)
Para errores de desarrollo, Wdg solicita opcionalmente Det_ReportError[SWS_Wdg_00111]. Los casos de error de los servicios individuales:
Inicialización: si el conjunto de configuración se encuentra fuera de los límites permitidos, se omite la inicialización con WDG_E_PARAM_CONFIG[SWS_Wdg_00090]. Si el modo predeterminado fuera a apagar el watchdog a pesar de regir WdgDisableAllowed==OFF, se omite con WDG_E_DISABLE_REJECTED[SWS_Wdg_00025].
Cambio de modo: un estado incorrecto da lugar a WDG_E_DRIVER_STATE[SWS_Wdg_00017]. Un modo fuera de rango o ajustes de hardware no permitidos conducen a WDG_E_PARAM_MODE ([SWS_Wdg_00091], [SWS_Wdg_00092]). En los tres casos no se produce ningún cambio y la función devuelve E_NOT_OK. Si el cambio falla en sí mismo, por ejemplo debido a ajustes inconsistentes o al incumplimiento de condiciones temporales, devuelve E_NOT_OK y notifica WDG_E_MODE_FAILED[SWS_Wdg_00016].
Condición de disparo: si el tiempo de expiración supera WdgMaxTimeout, el contador no se recarga y se notifica WDG_E_PARAM_TIMEOUT[SWS_Wdg_00146].
Consulta de versión: un puntero no válido entra en WDG_E_PARAM_POINTER[SWS_Wdg_00010]. La comprobación de puntero nulo para Wdg_GetVersionInfo se describe en un pasaje documental de versiones más recientes (SWS Wdg p. 30).
Los fallos de producción WDG_E_MODE_FAILED y WDG_E_DISABLE_REJECTED afectan a la inicialización y al cambio de modo. Su frecuencia de supervisión depende de la capa superior ([SWS_Wdg_00178], [SWS_Wdg_00179]). Se notifican con FAILED cuando falla el establecimiento o la desactivación del modo, y con PASSED cuando tiene éxito ([SWS_Wdg_00180], [SWS_Wdg_00181], [SWS_Wdg_00182], [SWS_Wdg_00183]). Es de suponer que estas notificaciones transcurren a través del Dem_SetEventStatus solicitado opcionalmente [SWS_Wdg_00111]. Pregunta (abierta) El caso más grave no aparece deliberadamente como valor de retorno: si la condición de disparo no se produce o se ajusta a 0, el watchdog expira y la ECU se reinicia ([SWS_Wdg_00135], [SWS_Wdg_00140]).
Diagramas discrepantes: la figura 2 del controlador, así como los diagramas de secuencia del Watchdog Manager, muestran WdgIf_Trigger o bien Wdg_Trigger (SWS Wdg Fig. 2 p. 30, SWS WdgM Fig. 13 p. 75, SWS WdgM Fig. 17 p. 78). Esta función no pertenece a la API de R20-11. Allí es determinante el mecanismo mediante Wdg_SetTriggerCondition ([SWS_Wdg_00155]).
Guía de módulo generada por IA sobre la base de los extractos de especificación para AUTOSAR Classic R20-11. Solo los requirements enlazados son normativos; las afirmaciones identificadas como interpretación no están directamente respaldadas por las fuentes.
Watchdog Driver (Wdg)
Hardware watchdog timer servicing and mode configuration.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9b3504b00b97Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y secuencia
La función síncrona Wdg_Init sirve para la inicialización del módulo controlador Wdg así como del hardware del watchdog [SWS_Wdg_00106], [SWS_Wdg_00001]. A través del parámetro ConfigPtr se transfiere un puntero al conjunto de configuración [SWS_Wdg_00106]. La función inicializa todas las variables globales del módulo y establece el modo estándar preconfigurado del watchdog, así como el período inicial de tiempo de espera [SWS_Wdg_00001], [SWS_Wdg_00100].
Control de hardware y restricciones
Wdg_Init configura exclusivamente aquellos registros del controlador para el manejo del watchdog que no afectan a otros módulos de hardware ni dependen de ellos [SWS_Wdg_00101]. En su lugar, los registros con dependencias intermodulares son inicializados por un módulo de sistema común [SWS_Wdg_00101]. La función no es reentrante y no proporciona ningún valor de retorno [SWS_Wdg_00106].
Manejo de errores
Antes de llevar a cabo la inicialización se efectúan comprobaciones específicas:
Si la detección de errores de desarrollo (Development Error Detection) está activada, se comprueba si los contenidos específicos de hardware del conjunto de configuración se encuentran dentro de los límites admisibles; en caso de errores, la función se interrumpe y notifica WDG_E_PARAM_CONFIG[SWS_Wdg_00090].
En caso de que la desactivación del watchdog sea inadmisible (WdgDisableAllowed == OFF), pero el modo estándar configurado fuera a desactivarlo, se cancela la inicialización y se desencadena el error WDG_E_DISABLE_REJECTED[SWS_Wdg_00025].
Esta nota de uso ha sido generada automáticamente sobre la base de los requisitos de la especificación.
Switches the watchdog into the mode Mode. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_WatchdogDriver
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: b7aa0ec55f3dProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
La función síncrona y no reentrante [SWS_Wdg_00107] conmuta el controlador del watchdog, así como el hardware subyacente, a uno de tres modos configurados estáticamente: WDGIF_OFF_MODE, WDGIF_SLOW_MODE o WDGIF_FAST_MODE[SWS_Wdg_00160]. Dado que el módulo no ofrece una interfaz independiente para la desinicialización, el shutdown del watchdog se realiza mediante la llamada con el modo WDGIF_OFF_MODE, siempre que el hardware lo admita [SWS_Wdg_00031]. En caso de una adopción correcta y completa de todos los parámetros, la función devuelve E_OK[SWS_Wdg_00103].
Estado y concurrencia
Debido a la falta de reentrancia, no debe realizarse ninguna llamada concurrente. Con la detección de errores activada, la función comprueba si el módulo se encuentra en el estado WDG_IDLE[SWS_Wdg_00017]. Durante la ejecución, establece el estado en WDG_BUSY y no vuelve a cambiar a WDG_IDLE hasta la última operación antes del retorno [SWS_Wdg_00018].
Manejo de errores
En caso de error, se devuelve E_NOT_OK:
Con valores no válidos para Mode o configuraciones específicas de hardware que se encuentren fuera de los límites, la función notifica el error WDG_E_PARAM_MODE[SWS_Wdg_00091], [SWS_Wdg_00092].
Si el módulo no se encuentra en el estado WDG_IDLE, el cambio se cancela con WDG_E_DRIVER_STATE[SWS_Wdg_00017].
Si el hardware no puede adoptar el modo —por ejemplo, debido a ajustes inconsistentes o al incumplimiento de requisitos de temporización—, se dispara el Extended Production Error WDG_E_MODE_FAILED[SWS_Wdg_00016].
Este texto ha sido generado por una IA a partir de la especificación de AUTOSAR.
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.
Used for pointers to structures holding configuration data provided to the Wdg module initialization routine for configuration of the module and watchdog hardware.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán