SS BSW · SOURCE X-RAY
SOURCE-READ · BUILD/BENCH NOT VERIFIED
FIRST DECISION

HAL부터 떼지 않는다.
먼저 행동 보존을
측정 가능하게 만든다.

현재 소스의 가장 큰 위험은 HAL 호출 개수가 아니라, 협력형 스케줄 위에서 타이밍과 인터페이스 책임이 암묵적으로 얽혀 있다는 점이다.

1
타이밍 기준선수정 전 행동을 계측
2
인터페이스 포트기준선 뒤에 경계 교체
한화 차이 원장병렬로 수동 이식 범위화
지금 여는 작업은 ‘행동 기준선 확보’까지다. 소스 리팩터링은 아직 시작하지 않는다. NO SOURCE CHANGE
01 / FAMILY

한 제품군, 세 개의 서로 다른 책임

SSVCU가 제어 중심이고 SSLCD는 CAN으로 연결되는 HMI다. 한화형은 내용이 매우 유사하지만 Git 계보가 이어지지 않아 자동 병합 대상이 아니다.

SSVCU

제어 두뇌

STM32F479 · FreeRTOS

  • 차량·모터·입출력 제어 중심
  • 애플리케이션과 벤더 HAL 결합 관찰
  • 우선 계측할 기준 소스
SSLCD

운전자 HMI

STM32U5G9 · TouchGFX

  • 표시와 조작 책임
  • CAN으로 제어기와 연결
  • 신호별 계약은 아직 미검증
SSVCU · HANWHA

고객 변형

내용 유사 · 계보 분리

  • 공통 커밋 계보가 관찰되지 않음
  • 서로 다른 파일 27개 우선 분류
  • 자동 병합보다 수동 이식 원장 필요
CAN ↔
판단: 세 저장소를 하나의 리팩터링 묶음으로 취급하지 않고, 제품 역할과 계보에 따라 검증 경로를 나눈다.
02 / TIMING

코드는 주기를 말하지만, 실시간 행동은 아직 말하지 않는다

선점이 꺼진 협력형 스케줄이며 주기 태스크가 같은 우선순위를 공유한다. 따라서 한 태스크의 지연이 다음 태스크의 시작 시점을 밀 수 있다.

Cooperative schedule PREEMPTION = OFF · PERIODIC PRIORITY = SAME
10 ms
다수 서브시스템 호출이 집중된 팬아웃
100 ms
내부에 500 ms 업무가 중첩
500 ms
이름상 1초 업무가 500 ms마다 호출
주기 명칭 불일치
이름·주석·실제 호출 주기가 같은 의미인지 계측 전에는 확정할 수 없다.
지연 전파 가능성
협력형 구조에서는 실행시간 상한과 양보 지점이 태스크 순서를 결정한다.
4 TASKS512 B EACHNO STACK-OVERFLOW CHECK OBSERVEDDWT / TEST-PIN HARNESS EXISTS
판단: 주기는 소스에서 관찰했지만 WCET, 지터, 스택 여유, 실제 CAN 순서는 [not verified]다.
03 / BOUNDARY

HAL 결합보다 먼저 ‘누가 신호를 소유하는가’를 정리한다

직접 HAL 호출은 기계적으로 줄일 수 있지만, 현재 인터페이스 경계는 다수의 전역 신호와 벤더 타입을 노출해 조직·모듈 간 책임까지 섞는다.

Asw차량 기능과 상태 판단
MotorControl모터 제어 도메인 로직
Core / Interface태스크, 인터페이스, 신호 교환
STM32 HAL / DriverMCU·주변장치 종속 구현
애플리케이션 직접 호출
AS-IS · IFC WALL

전역 신호 + 벤더 타입

다수의 extern과 HAL 헤더가 경계 밖으로 새어 나온다.

TO-BE · TYPED PORT

고정폭 타입 + 명시적 신호 계약

MCU를 모르는 포트와 벤더 어댑터를 분리하고 되돌릴 수 있게 교체한다.

판단: WP1의 행동 기준선 뒤에 인터페이스를 포트로 바꾸면 HAL 교체와 인력 경계 정리를 같은 방향으로 묶을 수 있다.
04 / WORK

첫 세 작업은 순차 2개 + 병렬 1개

WP1은 모든 변경의 입장권이다. WP2는 그 증거 위에서만 시작하고, WP3는 소스를 건드리지 않는 비교 작업으로 병렬 진행한다.

GATE · BEFORE ANY EDIT

타이밍 기준선

기존 DWT·테스트 핀을 활용해 고정 시나리오의 실행시간 분포, WCET 후보, 태스크 주기, 스택 여유, CAN 출력 순서를 기록한다.

통과 조건같은 입력에서 변경 전 행동을 다시 재생·비교할 수 있는 측정 묶음. 벤치·계측기 접근 필요.
AFTER WP1 · REVERSIBLE

인터페이스 포트

벤더 헤더를 경계 밖으로 밀고 고정폭 타입과 명시적 신호 계약을 갖는 MCU 중립 포트를 작은 단위로 교체한다.

통과 조건WP1의 타이밍·CAN 기준선 유지, 벤더 타입 누출 감소, 각 교체 단계의 즉시 롤백 가능.
PARALLEL · READ ONLY

한화 차이 원장

서로 다른 27개 파일을 고객 기능, 보드·핀, 캘리브레이션, 결함 수정, 무의미한 드리프트로 분류한다.

통과 조건자동 병합 없이 ‘공통화·유지·수동 이식·폐기’를 파일별로 판단할 수 있는 변형 원장.
런타임 그래프태스크·호출·의존 관계
타이밍 기준선분포·상한 후보·지터·스택
HAL 결합 히트맵직접 호출과 우회 경로
타입 신호 명세소유자·단위·범위·갱신주기
변형 차이 원장27개 차이의 처리 결정
행동 매트릭스지금 가능 / 확인 우선 / 금지
결과: “코드가 깔끔해졌다”가 아니라 “행동이 보존됐고 다음 경계를 안전하게 옮길 수 있다”를 보여준다.
05 / EVIDENCE

지금 아는 것과 아직 확인할 것을 분리한다

SOURCE OBSERVED

현재 판단에 사용

  • 세 소스의 제품 역할과 저장소 계보
  • 협력형 FreeRTOS와 주기 태스크 구성
  • 동일 크기 태스크 스택과 오버플로 검사 부재
  • 기존 DWT·테스트 핀 계측 훅
  • 직접 HAL 결합과 전역 인터페이스 경계
NOT VERIFIED

착수 전에 현장 확인

  • 현재 양산·현장 기준 브랜치
  • 빌드 재현성과 정적분석 통과 상태
  • 실기 WCET·지터·스택 여유
  • 벤치와 실제 차량의 동등성
  • CAN 신호별 계약과 계측 장비 가용성
OWNER INPUT WP1 착수에 필요한 것은 현재 양산 기준점과 CANoe/VN1630A 또는 동등한 벤치·계측 접근이다.