기술자료

[E2E 스레드] 전원 켜진 상태에서 JTAG 펌웨어 로드 눌렀더니... (모터·인버터 보드가 타버리는 진짜 이유와 3대 안전 설계)

인터럽트 2026.09.22 11:17:13 조회수 27

전원 인가 상태(활전 상태)에서 펌웨어 다운로드 시 FET 파손 원인과 3단계 하드웨어 안전 설계에 대해 정리합니다.




1. 실제 장비 파손 사례 (E2E 스레드 #1673514)


MCU를 활용하여 모터 제어나 전력변환(인버터, 컨버터) 보드를 개발할 때 흔히 겪을 수 있는 사고 사례가 있습니다.


파워서플라이 전원이 켜져 있는 상태에서 CCS의 Debug 버튼을 눌러 새 펌웨어를 다운로드하는 순간, 스위칭 소자(FET)에서 단락(쇼트)이 발생하며 부품이 소손되는 현상입니다.


실제 TI E2E 포럼에 등록된 문의 내용입니다:

"F28377S를 적용한 전력변환 컨버터가 살아 있는 상태에서 XDS110 에뮬레이터로 펌웨어를 다운로드했습니다. 다운로드가 완료되고 리셋하는 순간 컨버터 몇 대의 FET가 단락되어 파손되었습니다. 플래싱 도중 PWM 핀이 특정 상태로 고정되어 상단(High-side)과 하단(Low-side) 스위치가 동시에 켜진 것으로 추정되는데, 원인과 방지 대책이 궁금합니다."


이 현상은 전형적인 '슛스루(Shoot-through, 직통 단락)' 현상으로, 하드웨어적인 안전 대책 없이 소프트웨어에만 의존했을 때 발생하는 대표적인 문제입니다.




2. 개발 과정에서 흔히 발생하는 착각과 원인


"디버거로 CPU를 일시정지(Halt)시키거나 리셋하면 출력 핀도 안전하게 0V(꺼짐) 상태가 될 것이다"라고 생각하기 쉽습니다. 그러나 이는 사실과 다릅니다.


TI 본사 엔지니어의 공식 답변입니다:

"디버거로 칩을 플래싱하거나 멈추는 동안, MCU 핀은 사전에 정의된 안전 상태로 스스로 이동하지 않습니다."



위 다이어그램과 같이 파손이 일어나는 메커니즘은 다음과 같습니다:


- 1) CPU Halt(프로그램 일시정지): 디버거가 플래시를 기록하기 위해 CPU를 멈출 때, 내부 연산 장치만 멈출 뿐 핀 드라이버 회로는 멈추기 직전의 전압 상태(High 또는 Low)를 그대로 유지합니다.


- 2) 플로팅(Floating): 리셋 또는 부트 전환 과정에서 핀이 입력(High-Impedance) 상태로 바뀌며 전압이 불안정해집니다. 주변 스위칭 노이즈가 유입되면 게이트 드라이버가 오작동합니다.


- 3) 상/하단 스위치 동시 턴온: 상단 FET와 하단 FET가 동시에 도통되면서 전원과 접지가 직통으로 연결되어 순간적으로 수십~수백 암페어의 과전류가 흘러 소자가 파손됩니다.


즉, JTAG 다운로드, 시리얼 통신 업데이트, 리셋 구간 등 모든 전이 상태에서 MCU 스스로 전력단을 보호해 주는 기능은 존재하지 않습니다.




3. 전력단 파손을 방지하는 3단계 하드웨어 방어벽


TI가 권장하는 설계 원칙의 핵심은 "전력단 안전을 MCU 소프트웨어 하나에만 의존하지 말 것"입니다. MCU가 멈추거나 리셋되는 상황에서도 하드웨어 회로 자체에서 직통 단락을 원천 차단해야 합니다.



1) 하드웨어 인터록 내장 게이트 드라이버 사용

인버터/하프브리지 구동 회로에는 반드시 동시 턴온 방지(Cross-conduction prevention / Interlock) 로직과 데드타임(Dead-time) 생성 기능이 내장된 게이트 드라이버 IC를 채택합니다. MCU에서 오신호로 상/하단 동시 High를 출력하더라도 드라이버 IC가 이를 무시하고 차단합니다.


2) 물리적 차단 신호(System Enable) 구성

MCU와 게이트 드라이버 사이에 드라이버 동작을 물리적으로 차단할 수 있는 Enable(EN) 핀을 연동합니다. MCU 리셋 중이거나 디버깅 중일 때는 하드웨어 회로가 Enable 신호를 강제로 비활성화(Disable)하여 PWM 신호의 전달을 차단합니다.


3) 확실한 외부 풀다운(Pull-Down) 저항 배치

MCU 내부 풀다운 저항(약 30kΩ~50kΩ)은 스위칭 노이즈가 심한 환경에서 취약합니다. 게이트 드라이버 입력단에 4.7kΩ~10kΩ 수준의 외부 풀다운 저항을 병렬 연결하여, MCU 핀이 하이임피던스(Hi-Z) 상태가 되더라도 신호를 0V 접지 레벨로 확실하게 유지합니다.




4. 안전한 펌웨어 업데이트: 애플리케이션 제어 분기 방식


현장에서 펌웨어를 업데이트할 때는 부트 핀을 조작하여 전원을 강제 리셋하는 방식보다, 실행 중인 애플리케이션이 안전하게 준비를 마친 후 부트로더로 진입하는 방식이 권장됩니다.



- 1) 정상 운용 중 통신(CAN, UART 등)을 통해 펌웨어 업데이트 명령을 수신합니다.


- 2) 메인 애플리케이션이 스스로 PWM 출력을 차단하고 모터를 정지시킨 뒤, 커패시터 전하가 방전될 때까지 안전 대기 시간을 확보합니다.


- 3) 전력단이 완전히 비활성화된 것을 확인한 후, 소프트웨어 명령을 통해 RAM 상의 플래시 부트로더(커널)로 분기합니다.


- 4) 안전이 확보된 상태에서 신규 펌웨어를 기록합니다.


평상시에는 위와 같은 안전 분기 방식을 사용하고, 펌웨어 손상으로 정상 부팅이 불가능할 경우를 대비하여 하드웨어 부트 핀/점퍼를 통한 비상 부트 경로를 함께 유지하는 이중화 설계가 가장 바람직합니다.




5. 실무 점검 체크리스트


회로 설계 및 펌웨어 구현 시 점검할 항목입니다:


1) 모든 PWM 및 게이트 구동 핀에 적절한 외부 풀다운 저항(4.7kΩ~10kΩ)이 배치되어 있는가


2) 게이트 드라이버 IC가 상/하단 동시 도통 방지(인터록) 및 데드타임 삽입 기능을 지원하는가


3) MCU 리셋 및 부트 구간 동안 전력단을 물리적으로 분리할 수 있는 하드웨어 Enable 경로가 있는가


4) 부트 모드 선택 핀이 주요 전력 스위칭 구동 핀과 중복 할당되지 않았는가


5) 펌웨어 업데이트 진입 시 전력단 차단 및 방전 대기 시퀀스가 소프트웨어에 구현되어 있는가


6) 고전압 인가 상태에서 JTAG 디버깅 시 PC와 타깃 보드가 완전히 전기적으로 분리된 절연 에뮬레이터를 사용하고 있는가




6. 핵심 요약


"CPU를 일시정지하는 것"과 "하드웨어 출력이 안전해지는 것"은 전혀 다른 문제입니다. 디버거는 프로그램 카운터의 진행을 멈출 뿐 하드웨어 핀의 전압 상태를 안전하게 정리해 주지 않습니다. 고전력 전력변환 시스템에서 신호 공백으로 인한 사고를 막는 주체는 소프트웨어가 아닌 하드웨어 보호 회로여야 합니다.




원문(출처) : TI E2E 커뮤니티 https://e2e.ti.com/thread/1673514

총 댓글 0
로그인을 하셔야 댓글을 등록하실 수 있습니다.
번호 제목 작성자 날짜
번호 제목 날짜 작성자 조회
27 [E2E 스레드] GPIO로 릴레이를 직접 구동해도 될까? (12mA 싱크 설정과 "절대 최대"와 "권장"의 차이) 이미지첨부 있음 2026.10.27 인터럽트 13
26 [E2E 스레드] 칩을 갈았는데 똑같이 죽었다 — F28027F CSM 잠김 사례와 "칩이 아니라 보드"를 의심해야 하는 순간 이미지첨부 있음 2026.10.23 인터럽트 15
25 [E2E 스레드] 10채널 ADC 변환 인터럽트가 트리거 후 0.42us 만에 떴다? — F2800157 타이밍 계측 사례와 tEOC·... 이미지첨부 있음 2026.10.07 인터럽트 18
24 [E2E 스레드] EtherCAT 슬레이브, 랜선만 뺐다 꽂으면 먹통이 되는 이유는? (F28P650 SDO 메일박스 락(Lock) 해... 이미지첨부 있음 2026.09.29 인터럽트 34
23 [E2E 스레드] 전원 켜진 상태에서 JTAG 펌웨어 로드 눌렀더니... (모터·인버터 보드가 타버리는 진짜 이유와 3대 안전 설계) 이미지첨부 있음 2026.09.22 인터럽트 27
22 [E2E 스레드] F28x의 16비트 주소 지정과 엔디안(Endian) 정리 이미지첨부 있음 2026.09.16 인터럽트 50
21 [TIP] 배열 초기화 작업 어떻게 하고 계신가요? (loop unroll / memset 함수 활용) 이미지첨부 있음 인기글 2019.02.27 싱크웍스 4024
20 [CCS TIP] CCS 실행속도를 빠르게 ... 이미지첨부 있음 인기글 2019.01.31 싱크웍스 5963
19 [CCS TIP] CCS 실시간 디버깅 시, 화면 갱신율 조정 방법 이미지첨부 있음 인기글 2018.10.11 싱크웍스 2529
18 [CCS TIP] CCS에서 라이브러리 파일(*.lib)을 만들기 - 3편 이미지첨부 있음 인기글 2016.10.21 싱크웍스 4396
17 [CCS TIP] CCS에서 라이브러리 파일(*.lib)을 만들기 - 2편 이미지첨부 있음 인기글 2016.10.19 싱크웍스 2028
16 [CCS TIP] CCS에서 라이브러리 파일(*.lib)을 만들기 - 1편 이미지첨부 있음 인기글 2016.10.18 싱크웍스 1946
15 [SPRAAD8A] 6. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.16 이지영 1058
14 [SPRAAD8A] 5. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.15 이지영 626
13 [SPRAAD8A] 4. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.13 이지영 647
12 [SPRAAD8A] 3. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.10 이지영 722
11 [SPRAAD8A] 2. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.09 이지영 990
10 [SPRAAD8A] 1. TMS320280x and TMS3202801x ADC 교정(Calibration) 이미지첨부 있음 인기글 2010.09.08 이지영 1928
9 [SPRAAU8] 5. TMS320C28xxx DSC에서 컴파일러 섹션을 Flash로부터 RAM으로 복사하는 방법 인기글 2010.03.30 싱크웍스 1374
8 [SPRAAU8] 4. TMS320C28xxx DSC에서 컴파일러 섹션을 Flash로부터 RAM으로 복사하는 방법 인기글 2010.03.30 싱크웍스 1157
7 [SPRAAU8] 3. TMS320C28xxx DSC에서 컴파일러 섹션을 Flash로부터 RAM으로 복사하는 방법 이미지첨부 있음 인기글 2010.03.30 싱크웍스 1450
6 [SPRAAU8] 2. TMS320C28xxx DSC에서 컴파일러 섹션을 Flash로부터 RAM으로 복사하는 방법 인기글 2010.03.30 싱크웍스 1732
5 [SPRAAU8] 1. TMS320C28xxx DSC에서 컴파일러 섹션을 Flash로부터 RAM으로 복사하는 방법 인기글 2010.03.30 싱크웍스 2667
4 [SPRAAH1] 4. TMS320F280x, 28xxx의 eQEP 모듈을 Capture로 활용하기 인기글 2010.03.25 싱크웍스 641
3 [SPRAAH1] 3. TMS320F280x, 28xxx의 eQEP 모듈을 Capture로 활용하기 이미지첨부 있음 인기글 2010.03.25 싱크웍스 562
2 [SPRAAH1] 2. TMS320F280x, 28xxx의 eQEP 모듈을 Capture로 활용하기 이미지첨부 있음 인기글 2010.03.25 싱크웍스 821
1 [SPRAAH1] 1. TMS320F280x, 28xxx의 eQEP 모듈을 Capture로 활용하기 이미지첨부 있음 인기글 2010.03.25 싱크웍스 1553

비밀번호 인증

비밀번호를 입력해 주세요.

닫기
 
 

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기