AI 생성미검증모델: claude-opus-5-5 · 노력: high · 온도: 제어 불가 · 프롬프트: 826a1515b822출처열린 질문 (3)
인과 앵커: R20-11R20-11부터 유효이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
기한이 정해진 트리거 조건에 따라 워치독 하드웨어를 서비스하고 작동 모드를 전환합니다.
워치독 드라이버는 Watchdog Manager의 위임을 받아 내부 또는 외부 워치독 하드웨어를 제어합니다. Watchdog Manager는 Watchdog Interface를 통해 기한이 정해진 트리거 조건만 설정합니다. 이 조건이 유효한 동안 드라이버는 하드웨어를 자체적으로 트리거하며, 이후 워치독이 만료됩니다 [SWS_Wdg_00144]. Wdg_Init은 구성에서 기본 모드와 타임아웃을 설정하고, Wdg_SetMode는 OFF, SLOW 및 FAST 모드 간을 전환합니다 [SWS_Wdg_00160]. 0의 타임아웃은 거의 즉각적인 리셋을 트리거하며, 워치독 비활성화는 구성에서 허용하는 경우에만 가능합니다.
모듈의 핵심은 트리거 조건입니다. 이는 향후 n 밀리초 동안 워치독을 서비스할 수 있는 권한으로 간주됩니다. 이 조건이 유효한 동안 드라이버가 자체적으로 트리거하며, 이후 워치독이 만료됩니다 [SWS_Wdg_00144]. Wdg_SetTriggerCondition은 카운터를 재설정하고 모드에 따라 밀리초를 카운터 값으로 변환합니다([SWS_Wdg_00136], [SWS_Wdg_00139]). 내부 서비스 루틴은 카운터가 0보다 큰 동안 트리거하고 감소시킵니다. 0이 되면 더 이상 트리거하지 않습니다([SWS_Wdg_00134], [SWS_Wdg_00135]). 0의 타임아웃은 (거의) 즉각적인 리셋을 강제하며, 만료된 카운터는 다시 로드할 수 없습니다 [SWS_Wdg_00140].
Wdg_Init은 구성 세트 Wdg_ConfigType[SWS_Wdg_00001]에서 기본 모드 및 타임아웃 주기를 설정합니다. Wdg_SetMode은 WDGIF_OFF_MODE, WDGIF_SLOW_MODE 및 WDGIF_FAST_MODE 사이를 전환하며 완전히 전환된 경우에만 E_OK을 반환합니다([SWS_Wdg_00160], [SWS_Wdg_00103]). 초기화 해제 기능은 없습니다. 비활성화는 OFF 모드 [SWS_Wdg_00031]을 통해 수행되며, WdgDisableAllowed이 이를 허용하는 경우에만 가능합니다 [SWS_Wdg_00025].
워치독 드라이버 Wdg는 모두 Wdg.h을 통해 사용 가능한 네 가지 서비스를 포함하는 작고 동기식인 API를 통해 워치독 하드웨어를 제어합니다: Wdg_Init (서비스 ID 0x00), Wdg_SetMode (0x01), Wdg_SetTriggerCondition (0x03) 및 Wdg_GetVersionInfo (0x04). Wdg_GetVersionInfo만이 재진입 가능합니다([SWS_Wdg_00106], [SWS_Wdg_00107], [SWS_Wdg_00155], [SWS_Wdg_00109]). 초기화 해제를 위한 인터페이스는 의도적으로 제공되지 않습니다. 하드웨어와 환경이 비활성화를 허용하는 경우, OFF 모드를 사용하여 Wdg_SetMode을 통해 수행됩니다 [SWS_Wdg_00031].
서비스들은 베이직 소프트웨어에 의해 호출됩니다. ECU State Manager는 Wdg_Init을 호출합니다(SWS EcuM 34쪽). Watchdog Manager에는 WdgIf_SetMode 및 WdgIf_SetTriggerCondition이 필요합니다(SWS WdgM 86쪽). Watchdog Interface는 이러한 호출을 드라이버에 매핑하고 uint8 타입의 0 기반 DeviceIndex을 통해 인스턴스를 선택합니다. 하나의 드라이버만 구성된 경우, 예를 들어 매크로를 사용하여 이 매핑으로 인한 런타임 오버헤드가 발생하지 않아야 합니다(SWS WdgIf 17쪽). 시간 기반 트리거링은 전적으로 드라이버에 있습니다. Watchdog Manager는 트리거 조건만 설정합니다(SWS WdgM 56쪽; [SWS_Wdg_00144]).
하드웨어와 관련하여 인스턴스 간에 차이가 있습니다. 내부 워치독용 인스턴스는 하드웨어에 직접 접근합니다 [SWS_Wdg_00161]. 외부 워치독용 인스턴스는 SPI 또는 DIO와 같은 핸들러나 드라이버의 API를 사용합니다 [SWS_Wdg_00076]. 선택적으로 Wdg는 개발 오류에 Det_ReportError을, 모니터 상태에 Dem_SetEventStatus을 사용합니다 [SWS_Wdg_00111].
Wdg_Init은 Wdg_ConfigType 타입의 구성 세트에 대한 포인터를 수신합니다. 이 구조체는 하드웨어에 종속적입니다([SWS_Wdg_00106], [SWS_Wdg_00171]). 이 함수는 드라이버와 하드웨어를 초기화하고 이 세트로부터 기본 모드와 타임아웃 주기를 설정합니다 [SWS_Wdg_00001]. 또한 모든 전역 변수를 초기화합니다 [SWS_Wdg_00100]. 다른 하드웨어 모듈에 영향을 주지 않고 이에 의존하지도 않는 컨트롤러 레지스터만 기록합니다. 공유 레지스터는 상위 시스템 모듈에 의해 초기화됩니다 [SWS_Wdg_00101]. 개발 오류 감지가 활성화된 경우 성공적인 초기화 후 내부 상태가 WDG_UNINIT에서 WDG_IDLE(으)로 변경됩니다 [SWS_Wdg_00019].
사양의 그림 9.1은 역할 분담을 보여줍니다. EcuM은 Wdg를 직접 초기화하고, 그 후 WdgM은 WdgIf를 통해 트리거 조건과 모드를 제어합니다(SWS Wdg 그림 9.1 34쪽). 통합자에게 중요한 점은 Wdg_Init부터 구성된 기본 모드와 초기 타임아웃 주기가 적용된다는 것입니다 [SWS_Wdg_00001]. 이 모드가 OFF가 아닌 경우 제어 인스턴스는 시간 창 내에 트리거 조건을 갱신해야 하며, 그렇지 않으면 워치독이 만료됩니다 [SWS_Wdg_00144].
하드웨어는 외부의 개별 트리거 호출에 의해 서비스되지 않습니다. 대신 트리거 조건이 적용됩니다. 조건이 유효한 동안 드라이버는 하드웨어를 자체적으로 서비스합니다. 조건이 무효화되면 트리거링을 중단하고 워치독이 만료됩니다 [SWS_Wdg_00144]. 사양에서는 이 조건을 "향후 n 밀리초 동안 워치독을 서비스할 수 있는 권한"으로 설명합니다. 제어 인스턴스는 이 창 내에서 조건을 갱신해야 합니다 [SWS_Wdg_00144].
Wdg_SetTriggerCondition(uint16 timeout)은 전달된 값에 따라 타임아웃 카운터를 재설정합니다([SWS_Wdg_00155], [SWS_Wdg_00136]). 이 값은 밀리초로 해석됩니다. 드라이버는 이를 내부적으로 카운터 값으로 변환하고 [SWS_Wdg_00138] 이때 현재 모드를 고려합니다 [SWS_Wdg_00139]. 값 0은 허용되며, 트리거링을 (거의) 즉시 종료하여 (거의) 즉각적인 워치독 리셋을 유발합니다. 저장된 카운터가 이미 0이면 함수는 모든 새 값을 무시합니다 [SWS_Wdg_00140]. 따라서 만료된 카운터는 더 이상 다시 로드할 수 없습니다.
실제 트리거링은 드라이버 내부의 서비스 루틴이 처리합니다. 트리거 카운터가 0보다 크면 카운터를 감소시키고 하드웨어를 트리거합니다 [SWS_Wdg_00134]. 카운터가 0에 도달하면 아무 작업도 수행하지 않으며 워치독이 만료됩니다 [SWS_Wdg_00135]. 서비스가 인터럽트 루틴으로 구현되는 경우 인터럽트 프레임은 Wdg_Irq.c에 속합니다 [SWS_Wdg_00079]. 그림 9.2는 WdgIf를 통한 호출과 시간적으로 독립적으로 트리거링을 유발하는 타이머 인터럽트를 보여줍니다(SWS Wdg 그림 9.2 31쪽).
Wdg_SetMode은 드라이버와 하드웨어를 현재 모드에서 WDGIF_OFF_MODE, WDGIF_SLOW_MODE 또는 WDGIF_FAST_MODE(으)로 전환합니다. 각 모드는 서로 다른 타임아웃 주기를 가진 토글 또는 윈도우 워치독과 같이 정적으로 구성된 설정에 해당합니다 [SWS_Wdg_00160]. 모드별 하드웨어 고유 파라미터는 Wdg_Init에 전달되는 구성 세트에 있습니다 [SWS_Wdg_00051]. Wdg는 WdgIf_ModeType 타입을 WdgIf.h에서 가져옵니다 [SWS_Wdg_00105]. 이전 구성 모델에는 이에 대한 컨테이너 WdgSettingsFast, WdgSettingsSlow 및 WdgSettingsOff와 WdgDefaultMode이 표시되어 있습니다(ECUC-Parameter 그림 5.21 377쪽).
Wdg_SetMode은(는) 전환이 완전히 실행되고 드라이버 및 하드웨어의 모든 매개변수가 새 값을 가질 때만 E_OK을(를) 반환합니다 [SWS_Wdg_00103]. WdgIf는 이 반환값을 변경 없이 그대로 전달합니다 (SWS WdgIf 18쪽). 워치독의 비활성화(끄기)가 허용되는지 여부는 프리컴파일 매개변수 WdgDisableAllowed에 의해 결정됩니다. 이 값이 OFF(으)로 설정된 경우, 비활성화하는 기본 모드를 통한 초기화는 거부됩니다 [SWS_Wdg_00025]. 오류 WDG_E_DISABLE_REJECTED은(는) 해당 설명에 따르면 상응하는 모드 전환도 포괄합니다 [SWS_Wdg_00179].
개발 오류 감지가 활성화된 경우 Wdg는 내부 상태를 유지합니다: 성공적인 초기화 전까지는 WDG_UNINIT, 그 이후에는 WDG_IDLE[SWS_Wdg_00019]. Wdg_SetMode 및 서비스 루틴은 실행되는 동안 WDG_BUSY(으)로 설정합니다. 반환 전 마지막 동작으로 다시 WDG_IDLE(으)로 설정합니다 ([SWS_Wdg_00018], [SWS_Wdg_00052]). 둘 다 사전에 상태가 WDG_IDLE인지 확인합니다. 그렇지 않으면 모드 전환 또는 트리거링이 수행되지 않으며 WDG_E_DRIVER_STATE이(가) 보고됩니다 ([SWS_Wdg_00017], [SWS_Wdg_00035]). 이를 통해 초기화 전의 호출뿐만 아니라 모드 전환과 트리거링 간의 중복도 감지됩니다.
모드 전환 시 또는 트리거 루틴 등에서 데이터 일관성을 위해 인터럽트를 비활성화해야 하는 경우, 가급적 BSW 스케줄러의 배타적 영역(Exclusive Area)을 통해 수행해야 합니다. 내부 드라이버는 MCAL 모듈로서 인터럽트를 직접 비활성화할 수도 있습니다 [SWS_Wdg_00040]. BSW 분배 가이드라인은 그 배경을 다음과 같이 설명합니다: MCAL 드라이버에서는 Main Function, 서비스 API 및 ISR이 자체 실행 컨텍스트에서 공유 주변장치 레지스터에 접근할 수 있습니다 (BSW Distribution Guide 36쪽).
일부 하드웨어는 구성 가능하거나 변경 가능한 활성화 코드를 요구합니다. 이 경우 Wdg는 코드를 내부적으로 관리하고 매번 올바른 값을 전달합니다. 그러면 하드웨어는 다음에 예상되는 코드로 내부 변수를 업데이트합니다 [SWS_Wdg_00093]. 트리거 주기는 이러한 업데이트가 확실히 일어날 수 있도록 선택되어야 합니다 [SWS_Wdg_00094]. 구성 가능한 초기 코드는 구성 세트에 속합니다. 하드웨어에 고정되어 지정된 코드의 경우 이 요구사항은 생략됩니다 [SWS_Wdg_00095].
코드 파일 구조가 완전히 규정되어 있지는 않습니다. 필요한 경우 링크 타임 매개변수를 위한 Wdg_Lcfg.c 및 포스트 빌드 매개변수를 위한 Wdg_PBcfg.c을(를) 포함합니다 [SWS_Wdg_00079]. Wdg는 늦어도 컴파일 시점에 구성을 정적으로 검사합니다 [SWS_Wdg_00086]. 코드가 ROM에서 실행되는지 RAM에서 실행되는지는 정적 구성에 의해 결정됩니다 [SWS_Wdg_00168]. 외부 하드웨어의 경우 Wdg는 SPI 채널 또는 DIO 포트와 같은 액세스 매개변수를 자체 공개 매개변수 및 구성 매개변수에 포함합니다 [SWS_Wdg_00078]. 최신 릴리스에서는 이를 DIO 채널 그룹, SPI 시퀀스 또는 I2C 시퀀스에 대한 선택 참조 WdgExternalContainerRef(으)로 모델링합니다. I2C는 R20-11에서 명시적으로 언급되지 않습니다 (SWS Wdg 40쪽). Wdg_SetTriggerCondition은(는) 최댓값 WdgMaxTimeout에 대해 검사합니다 [SWS_Wdg_00146]. 공개 정보 모델에는 이 외에도 WdgMinTimeout 및 WdgResolution이(가) 포함됩니다 (ECUC-Parameter 그림 5.22 380쪽).
오류가 발생한 경우의 동작
Wdg는 주로 개발 오류 감지가 활성화된 경우에만 검사되는 개발 오류를 확장 프로덕션 오류와 구별합니다. 오류 코드는 다음과 같이 정의되어 있습니다 [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, 구성 세트의 잘못된 선택)
개발 오류의 경우 Wdg는 선택적으로 Det_ReportError을(를) 요청합니다 [SWS_Wdg_00111]. 개별 서비스의 오류 사례:
초기화: 구성 세트가 허용 한계를 벗어나면 WDG_E_PARAM_CONFIG(으)로 초기화가 수행되지 않습니다 [SWS_Wdg_00090]. WdgDisableAllowed==OFF이(가) 적용됨에도 기본 모드가 워치독을 비활성화하는 경우, WDG_E_DISABLE_REJECTED(으)로 초기화가 수행되지 않습니다 [SWS_Wdg_00025].
모드 전환: 잘못된 상태는 WDG_E_DRIVER_STATE(으)로 이어집니다 [SWS_Wdg_00017]. 범위를 벗어난 모드 또는 허용되지 않는 하드웨어 설정은 WDG_E_PARAM_MODE(으)로 이어집니다 ([SWS_Wdg_00091], [SWS_Wdg_00092]). 세 가지 경우 모두 전환이 발생하지 않으며, 함수는 E_NOT_OK을(를) 반환합니다. 일관되지 않은 설정이나 시간 조건 위반 등으로 인해 전환 자체가 실패하는 경우, 함수는 E_NOT_OK을(를) 반환하고 WDG_E_MODE_FAILED을(를) 보고합니다 [SWS_Wdg_00016].
트리거 조건: 타임아웃이 WdgMaxTimeout을(를) 초과하면 카운터가 다시 로드되지 않고 WDG_E_PARAM_TIMEOUT이(가) 보고됩니다 [SWS_Wdg_00146].
버전 조회: 유효하지 않은 포인터는 WDG_E_PARAM_POINTER에 해당합니다 [SWS_Wdg_00010]. Wdg_GetVersionInfo에 대한 널 포인터 검사는 최신 릴리스의 문서 위치에서 설명합니다 (SWS Wdg 30쪽).
Wdg_Init은(는) 워치독 제어를 위한 제어기 레지스터 중 다른 하드웨어 모듈에 영향을 주지 않거나 이들에 종속되지 않는 레지스터만을 구성합니다 [SWS_Wdg_00101]. 모듈 간 종속성이 있는 레지스터는 대신 공통 시스템 모듈에 의해 초기화됩니다 [SWS_Wdg_00101]. 이 함수는 재진입이 불가능하며 반환값을 제공하지 않습니다 [SWS_Wdg_00106].
오류 처리
초기화를 수행하기 전에 특정 검사가 이루어집니다:
개발 오류 감지(Development Error Detection)가 활성화되어 있는 경우 구성 세트의 하드웨어별 내용이 허용 한도 내에 있는지 검사하며, 오류가 있는 경우 함수는 중단되고 WDG_E_PARAM_CONFIG을(를) 보고합니다 [SWS_Wdg_00090].
워치독 비활성화가 허용되지 않는데(WdgDisableAllowed == OFF), 구성된 기본 모드가 워치독을 비활성화하는 경우 초기화가 중단되고 오류 WDG_E_DISABLE_REJECTED이(가) 발생합니다 [SWS_Wdg_00025].
Switches the watchdog into the mode Mode. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_WatchdogDriver
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: b7aa0ec55f3d출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용
동기식 및 재진입 불가 함수 [SWS_Wdg_00107]은(는) 워치독 드라이버 및 기반 하드웨어를 정적으로 구성된 세 가지 모드 중 하나인 WDGIF_OFF_MODE, WDGIF_SLOW_MODE 또는 WDGIF_FAST_MODE(으)로 전환합니다 [SWS_Wdg_00160]. 모듈이 초기화 해제를 위한 별도의 인터페이스를 제공하지 않으므로, 하드웨어가 이를 지원하는 경우 모드 WDGIF_OFF_MODE 호출을 통해 워치독 셧다운이 수행됩니다 [SWS_Wdg_00031]. 모든 파라미터가 성공적으로 완전히 적용되면 함수는 E_OK을(를) 반환합니다 [SWS_Wdg_00103].
상태 및 동시성
재진입성이 없으므로 동시 호출을 수행해서는 안 됩니다. 오류 감지가 활성화된 경우 함수는 모듈이 상태 WDG_IDLE에 있는지 확인합니다 [SWS_Wdg_00017]. 실행 중에는 상태를 WDG_BUSY(으)로 설정하고 반환 직전의 마지막 작업이 되어서야 비로소 다시 WDG_IDLE(으)로 변경합니다 [SWS_Wdg_00018].
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 · 독일어 원문