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
다수 서브시스템 호출이 집중된 팬아웃
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 또는 동등한 벤치·계측 접근이다.