실행 순서 — 부팅 · 인터럽트 · 주기 레인
블록은 소스에 적힌 호출 순서 그대로입니다. 레인은 서로 겹칠 수 없습니다 — 선점이 꺼져 있어 한 태스크가 양보하기 전까지 다른 레인은 시작되지 않습니다.
각주 — EcuM_Task_1sec은 이름과 달리 500 ms 주기로 실행되고 freertos.c:365의 주석은 1 sec이라고 적혀 있습니다. Vcu_Proc_500ms는 500 ms 레인이 아니라 100 ms 레인의 카운터 안에서 돕니다. Dm_Proc_100ms는 두 ref 모두 빈 스텁이라 부하로 세면 안 됩니다.
제어권 중재 — 요청 단계와 실제 단계
이 장비의 모든 출력은 여기서 정해진 소유자를 따라갑니다. 왼쪽 필터에서 제어권을 고르면 그 경로만 남습니다.
동결된 판정
2단계에서 1단계로. 런타임 건전성 가드 두 개가 같은 틱 직접 검사에서 한 틱(10 ms) 늦는 폴트 매개 검사로 옮겨졌고, 자율주행 허용 신호와 강등 경로는 게이트에서 빠졌으며, PC 전원 상태가 추가되어 빌드 플래그 조건부가 아닌 상시 조건이 되었습니다.frozen text — Two-stage to one-stage. Two runtime-health guards moved from a same-tick direct check to a fault-mediated check that lags by one 10 ms tick; the autonomous-enable signal and the demotion path were dropped from the gate; PC-power state was added and is now unconditional rather than build-flag dependent.
요청 단계 — vDm_Ctrl_OwnerReq
주 ref Asw/Dm.c:139 · 비교 ref Asw/Dm.c:133
실제 단계 — vDm_Ctrl_OwnerAct
주 ref: 모든 case가 직접 대입 · 비교 ref: ADT만 Asw/Dm.c:157/:159에서 재검사 후 실패 시 CTRL_RC로 강등하고 vDm_DangerFeatureInit_F를 세웠습니다 (:167).
가드는 사라지지 않고 폴트 경로로 옮겨갔습니다
버스오프는 FaultReaction_ClassB에서 FC_CanBusOff로, ADU 타임아웃은 FaultReaction_ClassD에서 FC_ADT_CanMsgTimeout으로 올라오고, FaultReaction_Malfuntion_Auto_D()가 Set_TgtAutoFault(true)를 호출합니다 (Asw/FaultReaction.c:207). 요청 단계가 그 플래그를 읽습니다.
FaultReaction()은 Dm_Proc_10ms 끝에서 실행 — 주 ref :231, 비교 ref :241비교 ref에는 같은 틱 직접 검사가 있어 이 간극이 없었음두 ref 모두 Asw/Dm.c의 Dm_Proc_10ms 안에 그대로 남아 있는 원문 주석입니다. 실제 소유자 전이 처리가 아직 미완성이라고 작성자가 직접 남긴 문장이라 그대로 인용합니다.
[미검증] 이 변경이 의도된 것인지, 출하 빌드의 플래그 조합이 무엇인지, 한 틱 지연이 하위 모듈에서 보상되는지 — 세 가지 모두 소스만으로는 확인할 수 없습니다.
부팅과 메모리 배치
이 이미지가 말하는 것은 하나입니다 — 애플리케이션이 자기 벡터 테이블을 옮긴다는 것, 즉 이 펌웨어는 부트로더가 띄우는 이미지라는 것.
플래시 배치와 벡터 테이블 재배치
STM32F479VITX_FLASH.ld:51-52에서, 재배치는 Core/Src/system_stm32f4xx.c:110,181에서 읽었습니다. 부트로더는 별도 프로젝트(STM32F479_BOOT)이고, PC 측 리프로그래머는 Vector 하드웨어를 쓰는 C# 애플리케이션입니다.HAL 결합 열지도
주 ref 기준 Drivers/ 밖에서 HAL_*를 직접 호출하는 지점은 745곳입니다 (비교 ref 737곳). 애플리케이션 헤더 26개 중 17개가 벤더 HAL 헤더를 직접 include합니다 — MCU 중립 작업의 실제 작업량은 이 목록입니다.
막대 길이는 파일별 직접 호출 수입니다. Core/Src의 CubeMX 생성 파일은 원래 HAL을 부르는 자리이므로 문제가 아닙니다 — 판단이 필요한 곳은 Asw와 MotorControl 행입니다.
인쇄본 안내 — 인쇄 시 네 개 뷰가 모두 펼쳐집니다. 선택 상태와 필터는 화면 전용이며, 모든 근거는 각 항목에 파일:줄로 표기되어 있습니다.