본문 바로가기
기타

ECU Reset과 MCU Reset의 차이 - 자동차 ECU 개발에서 알아야 할 Reset 동작

by Autosar 2026. 9. 28.
반응형

자동차 ECU를 개발하다 보면 ECU Reset과 MCU Reset이라는 용어를 자주 접하게 된다.

두 용어 모두 ECU가 다시 시작되는 상황에서 사용되기 때문에 비슷하게 느껴지지만, 정확히는 서로 바라보는 관점이 다르다.

 

특히 AUTOSAR 기반 ECU에서 UDS 진단 서비스인 0x11 ECUReset을 구현하거나,

Watchdog 및 Functional Safety에 의한 Reset을 분석할 때 두 개념을 구분할 필요가 있다.

 

1. ECU Reset이란?

 

ECU Reset은 ECU를 재시작시키는 시스템 관점의 개념이다.

예를 들어 진단기에서 UDS 0x11 ECUReset 서비스를 요청하면 ECU는 해당 요청을 처리한 후 ECU를 재시작할 수 있다.

 

대표적인 요청은 다음과 같다.

11 01

 

여기서

0x11 : ECUReset
0x01 : hardReset

 

을 의미한다.

 

즉 진단기 입장에서는 "ECU를 Reset해라."라는 요청을 전달하는 것이다.

실제 ECU 내부에서 어떤 Reset 방식을 사용할지는 ECU의 Software 및 MCU 구조에 따라 결정된다.

 

2. MCU Reset이란?

 

MCU Reset은 Microcontroller 자체를 Reset하는 동작이다.

MCU에는 Reset을 관리하는 Hardware 영역이 존재하며, 다양한 원인으로 Reset이 발생할 수 있다.

 

대표적인 원인은 다음과 같다.

Reset 원인 설명
Software Reset Software가 의도적으로 MCU Reset 수행
Watchdog Reset Watchdog Timeout 발생
Power-On Reset MCU 전원 인가 시 발생
Brown-Out Reset 전원 전압 저하로 발생
External Reset 외부 Reset 입력에 의해 발생
Hardware Fault MCU 내부 Hardware Fault 등에 의해 발생
Safety Reset Safety Mechanism에 의해 발생

 

따라서 MCU Reset은 특정한 하나의 기능을 의미하는 것이 아니라 MCU가 Reset되는 실제 동작이라고 이해하면 된다.

 

3. ECU Reset과 MCU Reset의 관계

 

두 개념의 관계를 가장 간단하게 표현하면 다음과 같다.

               ECU Reset
   ───────────────
                     │
ECU를 재시작하기 위한 시스템 동작
                     │
                    ▼
           MCU Reset 등
          실제 Reset 수행

 

중요한 부분은 ECU Reset과 MCU Reset이 1:1로 같은 의미는 아니라는 것이다.

 

예를 들어 UDS 0x11 ECUReset 요청을 처리하면서 MCU Reset을 수행할 수도 있다.

반대로 MCU Reset은 UDS 요청이 없어도 발생할 수 있다.

 

예를 들어 Watchdog Timeout이 발생하면 진단기에서 ECU Reset을 요청하지 않았더라도 MCU Reset이 발생할 수 있다.

따라서 다음과 같이 이해하면 가장 쉽다.

 

ECU Reset = ECU를 재시작한다는 시스템 관점

MCU Reset = MCU가 실제로 Reset되는 Hardware 관점

 

4. UDS ECUReset과 MCU Reset

 

AUTOSAR 기반 ECU에서는 UDS 0x11 ECUReset을 DCM에서 처리하게 된다.

일반적인 구조에서는 DCM이 ECU Reset 요청을 판단하고, ECU의 Reset 처리 로직을 통해 실제 MCU Reset이 수행될 수 있다.

Tester
   │
   │ UDS 0x11 ECUReset
  ▼
 DCM
   │
   │ Reset 처리
  ▼
ECU Reset
   │
  ▼
MCU Reset

 

다만 실제 구현은 프로젝트와 AUTOSAR Stack에 따라 달라질 수 있다.

 

따라서

Mcu_PerformReset();

 

와 같은 API가 반드시 UDS 0x11에서만 호출되는 것은 아니다.

 

Application에서 직접 호출할 수도 있고, Safety Mechanism이나 다른 Recovery Logic에서 호출할 수도 있다.

 

5. MCU Reset은 UDS 없이도 발생한다

 

여기가 ECU Reset과 MCU Reset을 구분할 때 가장 중요한 부분이다.

예를 들어 Application이 정상적으로 동작하지 않아 Watchdog Timeout이 발생했다고 가정해보자.

이 경우 진단기에서 0x11 ECUReset을 요청하지 않았더라도 MCU가 Reset될 수 있다.

 

대표적인 상황을 정리하면 다음과 같다.

① UDS ECUReset

진단기에서 ECU Reset을 요청하는 경우다.

UDS 0x11

→ ECU Reset 처리

→ MCU Reset

 

② Watchdog Reset

Software가 정상적으로 동작하지 않는 경우다.

Task 이상

→ Watchdog Timeout

→ MCU Reset

 

③ Software Reset

Application 또는 Safety Logic에서 특정 조건에 따라 의도적으로 Reset하는 경우다.

Fault Detection

→ Recovery 실패

→ Software Reset

 

④ Hardware / Power Reset

전원이나 MCU Hardware 상태에 의해 Reset되는 경우다.

Power / Hardware Fault

→ MCU Reset

 

즉 MCU Reset은 발생 원인이 다양하다.

 

6. Functional Safety에서의 MCU Reset

 

자동차 ECU에서는 특정 Fault가 반복적으로 발생할 경우 MCU Reset을 Recovery 방법으로 사용하는 경우도 있다.

예를 들어 특정 Safety Check에서 오류가 반복적으로 검출된다고 가정해보자.

if (Mpu_Fail >= 5U)
{
    Mcu_PerformReset();
}

 

위와 같은 구조라면 단순히 한 번의 오류가 발생했다고 바로 Reset하는 것이 아니라,

오류가 반복되는 경우 MCU Reset을 수행하도록 만들 수 있다.

 

개념적으로는 다음과 같다.

Fault 발생
   ↓
Fault Detection
   ↓
Retry / Recovery
   ↓
Fault 반복
   ↓
MCU Reset

 

실제 프로젝트에서는 이와 같은 Reset 조건이 Safety Requirement에 정의될 수 있다.

 

예를 들어

  • 연속 오류 횟수
  • Fault Detection 시간
  • Recovery 횟수
  • Reset 조건
  • Reset 이후의 초기화 동작

등을 요구사항에 따라 구현한다.

 

7. Reset이 발생했을 때 어떻게 원인을 찾을까?

 

ECU가 갑자기 재부팅되는 문제가 발생했다고 가정해보자.

이때 단순히 Application Code만 확인하는 것보다 MCU Reset Cause를 먼저 확인하는 것이 효과적이다.

 

MCU에서는 Reset 원인을 확인하기 위한 Status Register를 제공하는 경우가 많다.

따라서 ECU가 예상하지 못하게 재부팅되었다면 다음 순서로 확인하는 것이 좋다.

 

① MCU Reset 발생 여부 확인
                  ↓
② Reset Cause Register 확인
                  ↓
③ Reset 원인에 해당하는 Software/Hardware 확인

 

예를 들어 Reset Cause가 Watchdog이라면 Watchdog이 발생하기 직전의 Task 동작이나 CPU Hang 여부를 확인해야 한다.

반대로 Software Reset이라면 Reset API를 호출하는 모든 경로를 검색하는 것이 효과적이다.

 

8. Trace32로 Reset 원인을 분석하는 방법

 

실제 ECU 개발에서는 Trace32와 MCU Register를 함께 확인하면 원인을 빠르게 좁힐 수 있다.

 

예를 들어 다음과 같은 상황을 생각할 수 있다.

if (Mpu_Fail >= 5U)
{
    Mcu_PerformReset();
}

 

ECU가 계속 재부팅된다면 다음 항목을 확인한다.

 

변수 확인

Mpu_Fail

 

값이 실제로 5까지 증가하는지 확인한다.

 

Reset API 호출 여부

Mcu_PerformReset()

 

호출 시점의 Call Stack을 확인한다.

 

MCU Reset Cause 확인

MCU의 Reset Status Register를 확인하여 실제 Reset 원인이 Software Reset인지 확인한다.

 

이렇게 확인하면 "ECU가 갑자기 재부팅된다."라는 현상을 "특정 Safety Fault가 5회 연속 발생했고, 해당 조건에서 Software Reset API가 호출되어 MCU Reset이 발생했다." 와 같이 구체적인 원인으로 좁힐 수 있다.

 

9. ECU Reset과 MCU Reset 비교

 

마지막으로 두 개념을 표로 정리하면 다음과 같다.

항목  ECU Reset MCU Reset
관점 System / ECU MCU / Hardware
의미  ECU를 재시작하는 개념 MCU 자체를 Reset하는 동작
대표적인 원인 UDS 0x11 등 SW, Watchdog, Power, Hardware, Safety 등
진단기 요청 가능 직접적인 UDS 개념은 아님
발생 범위 ECU 전체 동작 관점 MCU Reset 동작
주요 분석 대상 DCM / Reset 처리 Logic Reset Cause / MCU Register

 

 

정리

 

ECU Reset과 MCU Reset은 비슷한 의미로 사용되는 경우가 많지만, 개발할 때는 시스템 관점과 MCU 관점으로 구분하는 것이 중요하다. 특히 다음 두 문장을 기억하면 된다.

 

ECU Reset은 ECU를 다시 시작하기 위한 시스템 관점의 개념이다.

MCU Reset은 실제 Microcontroller의 Reset 동작이다.

 

따라서 UDS 0x11 ECUReset에 의해 MCU Reset이 발생할 수도 있지만, MCU Reset이 발생했다고 해서 반드시 UDS ECUReset이 원인인 것은 아니다. Watchdog, Software Fault, Functional Safety Mechanism, Power 이상 등 다양한 원인으로 MCU Reset이 발생할 수 있다.

 

실제 ECU에서 Reset 문제를 분석할 때는 "ECU가 Reset됐다"에서 끝내지 않고, MCU Reset Cause를 확인하여 정확한 발생 원인을 추적하는 것​이 핵심이다.

반응형