예외 상황을 재현과 근거로 좁히기
차량용 AP 드라이버와 부팅 장애 분석
차량용 AP 칩 플랫폼의 드라이버 개발과 양산 안정화. 1,000대 중 1대에서만 멈추던 부팅을 JTAG로 추적해 CPU 캐시 설정 결함을 찾아 해결.
- 담당 범위
- 주변장치 드라이버 · MCU 연동 · 부팅 분석 · 보드 브링업
- Linux Kernel
- C
- u-boot
- JTAG
- UART
- SPI
- I2C
- Watchdog
문제와 제약
약 1,000대의 칩 가운데 1대에서만 부팅이 멈췄습니다. 같은 OS 이미지를 다른 칩에 올리면 정상이었고, 그 칩에 올릴 때만 문제가 생겼습니다. 처음에는 칩 자체의 문제로 판단했습니다.
기술적 접근과 판단
멈추는 지점부터 확인
JTAG 디버거를 연결해 부팅 과정을 한 단계씩 실행하며 멈추는 지점을 추적했습니다.
기본값도 원인 후보로
CPU 코어의 캐시 설정을 바꾸는 것에 따라 증상이 나타나고 사라지는 것을 찾았습니다. 그동안 기본값으로 써 와서 아무도 의심하지 않던 설정이었고, 수정해 재배포하는 것으로 해결했습니다.
드라이버와 부팅 경로
UART·SPI·I2C·Timer·Watchdog·CPU Core·Clock Controller 드라이버를 개발해 양산 수준으로 안정화하고, MCU–AP 통신 연동과 u-boot 부팅, 신규 보드 브링업 이슈 분석을 맡았습니다.
- 특정 칩에서만 부팅 멈춤
- JTAG 단계 실행으로 멈춤 지점 추적
- CPU 캐시 설정 수정 · 재배포
다른 환경에서 잘 돈다는 사실만으로 원인 후보를 지우지 않습니다.
구현과 검증
- UART·SPI·I2C·Timer·Watchdog·CPU Core·Clock Controller 드라이버 개발과 양산 안정화
- Automotive MCU–AP 통신 연동, u-boot 부팅과 신규 보드 브링업 이슈 분석
- JTAG 단계 실행으로 특정 칩에서만 재현되던 부팅 멈춤의 원인(CPU 캐시 설정)을 찾아 수정·재배포
결과
- 특정 칩에서만 재현되던 부팅 멈춤을 캐시 설정 수정으로 해결
- 주변장치 드라이버 개발과 양산 안정화, 보드 브링업 지원
배운 점
다른 칩에서 정상 동작한다는 사실이 소프트웨어에 문제가 없다는 근거는 아니었습니다. 칩 간의 작은 편차가 기본 설정에 숨은 결함을 드러낼 수 있습니다.