Table of Contents
이 문서는 자동차 전자 제어 장치 (ECU) 내에서 기본 제어 요소이며 엔진 타이밍에서 브레이크 작동에 이르기까지 모든 것을 지배합니다. 단일 misconfigured register는 시스템 고장, erratic 센서 판독 또는 손상된 차량 안전으로 케이스 할 수 있습니다. 디버깅 등록 구성은 하드웨어 분석, 펌웨어 검사 및 프로토콜 검증을 결합하는 훈련 된 다중 계층 접근 방식을 요구합니다. 이 문서는 핵심 디버깅 기술을 확장하고 생산 자동차 환경에서 사용되는 고급 방법을 소개합니다.
자동차 ECU에 있는 기록기 Misconfigurations 이해
등록은 아날로그 - 투 - 디지털 변환기, PWM 발전기 또는 CAN 컨트롤러와 같은 주변 모듈 기능을 어떻게 예측하는 구성 메모리 위치 역할을합니다. Misconfigurations는 다음과 같이 진행되는 운영 모드와 일치하지 않는 값이 발생하면 다음과 같이 발생합니다.
- 초회화 시퀀스 부트로더 또는 애플리케이션 시작시.
- Race 조건 여러 작업이나 중단은 적절한 동기화 없이 동일한 등록으로 작성합니다.
- Voltage 또는 전자기 간섭 오류 수정 코드에 의해 보호되지 않은 등록에 비트 플립을 발생.
- Protocol framing errors는 연속 버스(CAN, LIN, FlexRay)에 있는 명령을 기록합니다.
- Firmware version mismatches 하드웨어 개정과 관련하여 등록 주소 또는 비트 필드 변경을 기록합니다.
체계적인 Debugging 워크 플로우
특정 도구로 다이빙하기 전에 반복 가능한 워크플로우를 채택하십시오. observe → isolate → interrogate → correct → check]. 시스템을 변경하지 않고 증상을 수집하여 시작하면 오류 도메인을 직접 검사하고 수정을 적용하고 최종 수정을 수정합니다.
1. Oscilloscope와 논리 해석기 기술
고속 oscilloscopes (≥200 MHz 대역폭)는 SPI, I2C, 또는 평행 등록 접근 선에 신호 무결성을 붙잡습니다. glitches, undershoot, 또는 setup/hold 시간 위반을 찾으십시오. 프로토콜 디코딩 (예를들면, CAN, LIN)와 Logic 해석기는 정확한 등록 주소와 데이터 바이트가 버스에 나타날지 여부를 보여줍니다. 예를 들어, I2C 기록에 누락 된 승인 비트는 비 유연성 노예 또는 LT-EXES-EXTRAL [] 하드웨어 가이드라인에 대한 경고를 나타냅니다. [F] [F] [F]] [F]] [F]] [F]]] [F]]] [F]] [F]]] [F] [F]] [F] [F] [F] [F] [F] [F] [F] [F]] [F] [F] [F] [F] [F] [F] [F] [F]]] [F] [F] [F] [F] [F] [F] [F]]]]]]] [F] [F]]
FlexRay를 디버깅하거나, 프로토콜 프레임을 가진 물리적 계층 신호를 분리하기 위해 혼합 신호 oscilloscope를 사용합니다. CAN 식별자가 표적 ECU의 등록 매핑 테이블에 일치하도록 식별합니다. 최근 사례 연구에서 차량의 전송 제어 장치 전시 된 간헐적인 기어 슬립 페이지; 분석은 한 개의 슬롯에 의해 지연되는 등록 쓰기를 일으키는 잘못 정렬 된 FlexRay 사이클을 공개했습니다. 잘못된 이동 프로파일에 대한 주요.
2. JTAG와 In-Circuit 에뮬레이션
JTAG 디버거 (예 : Lauterbach, Segger J-Link)는 CPU가 반감되거나 실행되는 동안 직접 메모리 맵핑 등록 액세스를 허용합니다. 그(것)들을 사용하여:
- ]모든 등록]의 의심스러운 주변 모듈과 예상 구성표에 대한 비교.
- Set Hardware Breakpoints을 호출하여 등록을 수정하는 정확한 코드 경로들을 잡으려고 합니다.
- Perform trace 캡처 를 기록하기 위해 수천 개의 사이클을 기록하고, 중단 콘텐츠에 기인한 sporadic corruption 을 공개합니다.
회로 에뮬레이터 (ICE) 마이크로 컨트롤러의 버스 인터페이스를 시뮬레이션하여 오류 또는 오버라이드 하드웨어 동작을 주입 할 수 있습니다. 이것은 극단적 인 온도 또는 전압 조건에서 테스트 등록 액세스에 특히 유용합니다. [[FLT : 0]]NXP의 JTAG[[FLT :1]]를 통해 S32K 레지스터를 디버깅하는 가이드는 실제 연습을 제공합니다.
3. IDEs를 가진 Firmware-Level Debugging
현대 임베디드 IDE (IAR 임베디드 작업 벤치, Eclipse 기반 MCUXpresso, Keil MDK) 실시간 가변 시계 창 및 등록 검사기를 제공합니다. 라인으로 초기화 코드 라인을 통해 각 주변 라이브러리 호출 후 등록 값 변경 방법을 관찰하십시오. 특별주의를 지불하십시오 :
- Clock gating registers – 주변의 시계가 활성화되지 않는 경우, 기록은 침묵적으로 무시하거나 단단한 결함을 유발합니다.
- Wait-state configuration 플래시 메모리에 대한 – misconfigured wait states는 prefetch 중 임의 등록 손상을 일으킬 수 있습니다.
- Interrupt 우선 등록 – 중첩된 중단은 다공구 등록 설정에 대해, 의도한 상태의 주변을 떠나는 것을 제외할 수 있습니다.
각 쓰기 후 예상 마스크에 등록 값을 확인하는 방어적인 주장을 추가합니다. 예를 들어, ]는 개발 중에 즉시 잘못 구성을 잡을 수 있습니다.
4. 통신 프로토콜 분석
많은 등록 된 구성은 버스 레벨 오류에서 유래합니다. CAN 버스 분석기 (예 : Vector CANalyzer, Kvaser Memorator)를 사용하여 캡처 및 해독 메시지를 해독하십시오.
- DLC mismatches – 4 바이트를 예상하지만 2만 전송하면 부분적으로 업데이트됩니다.
- Checksum 또는 CRC 오류] 진단 요청(UDS 서비스 0x2E, WriteDataByIdentifier)에 대한.
- Arbitration loss 를 덮어쓰기 위한 더 높은 선명한 메시지가 발생한다.
LIN 네트워크의 경우 마스터 ECU가 올바른 동기화 브레이크와 식별자를 전송한다는 것을 확인합니다. 잘못 구성 된 LIN 프레임은 잘못된 등록 인덱스로 작성할 수 있습니다. CAN에 등록 액세스에 자동화 리소스에서 할 수 있습니다.
5. 시뮬레이션 및 모델 기반 검증
하드웨어가 사용되기 전에 가상 프로토 타입 (예 : Synopsys Virtualizer, 자동차 확장과 QEMU)를 사용하여 등록 동작을 시뮬레이션합니다. ECU의 등록 모델에 대한 대상 펌웨어를 실행하십시오. 이 기술은 다음과 같은 기능을 제공합니다.
- 오프-by-one errors 등록 주소 계산에.
- Timing violations 이전 글이 효력을 발생하기 전에 등록 읽음이 발생한다.
- Uninitialized register read 임의 기본 값으로 생성한다.
수학적으로 등록 액세스 패턴에 따라 표시된 형식 검증 도구와 시뮬레이션을 결합합니다. ]Ansys Sherlock와 같은 회사들은 등록 레벨 장애 모드 분석을 제공합니다.
Misconfigurations를 방지하는 모범 사례
Proactive Prevention은 벌레잡기를 감소시킵니다. 개발 과정으로 다음을 Incorporate:
Design-For-Test (DFT) 등록 액세스
현재 구성을 노출하는 읽기 전용 상태 및 ID 등록자의 집합을 예약하십시오. 모든 중요한 등록 값이 축적 된 "register CRC"를 포함하십시오. 즉시 플래그 손상을 즉시 플래그를 즉시 플래그.
Atomic 등록은 Sequences를 작성합니다.
멀티 바이트 또는 멀티 비트 구성의 경우 쓰기 순서의 주위에 중단하고 가능한 한 단일 인구 쓰기 (예를 들어, 32 비트 상점)을 사용합니다. 많은 자동차 MCUs는 버스 수준에 원자가되는 "double-word" 매장 지침을 제공합니다.
Redundant 구성 저장
두 개의 별도의 메모리 위치 (예 : RAM 미러 및 EEPROM에서 백업)에 중요한 등록 설정을 저장하십시오. 재설정 후, 모두 비교하십시오. 그렇지 않으면 안전한 상태 항목을 트리거하고 충돌을 로그하십시오.
Watchdog 및 등록 건강 모니터링
주기적으로 백 키 등록기를 읽고 예상 값과 비교하는 배경 작업을 구현하십시오. 공시 persists가 오류 카운터를 증가시키는 경우. 임계값을 초과 한 후, ECU는 실패한 안전한 모드를 입력합니다. 이는 특히 ISO 26262 ASIL 등급 시스템에 중요합니다.
종합 문서 및 버전 제어
펌웨어 저장소에 등록 맵 스프레드 시트 또는 XML 파일을 유지하십시오. 코드가 새로운 마이크로 제어기 변형에 포트 될 때 자동 도구 (예 : SVDConv, CMSIS-SVD)를 사용하여 헤더 파일을 직접 생성하기 위해 자동화 된 도구를 사용하십시오.
사례 연구: PWM 등록 Misconfiguration을 디버깅
하이브리드 자동차의 모터 컨트롤러는 가시성 요령과 감소 된 효율성을 전시했습니다. PWM 타이머 출력의 전류계 측정은 가변 의무를 명령하는 제어 알고리즘에도 불구하고 일정한 주파수 의무 주기를 보여주었습니다. JTAG 디버거를 사용하여 팀은 타이머의 비교 기록기를 검사하고 잘못된 주소 오프셋에 쓰기를 발견했습니다. 루트 원인은 새로운 하드웨어 개정을위한 보드 지원 패키지의 잘못된 기본 주소였습니다. 기지 주소를 패치 한 후, 디버깅을 사용하여, 일반적으로 두 번의 코드를 기록 할 수 있습니다. 이 코드는 두 번의 코드를 기록했지만, 두 번의 코드를 기록 할 수 있습니다.
관련 기사
자동차 전자의 디버깅 기록기 구성 요소는 하드웨어 프로빙, 소프트웨어 검사 및 프로토콜 분석의 혼합을 요구합니다. 신호 무결성, JTAG에 대한 oscilloscopes를 고용함으로써 코드 흐름 분석, 및 프로토콜 분석기에 대한 직접 등록 액세스, IDE 디버거를 위한 코드 흐름 분석, 엔지니어는 효율적으로 격리 및 정확한 등록 관련 문제를 해결할 수 있습니다. atomic write, 중복 구성 저장 및 자동화된 등록 맵 생성과 같은 예방 조치는 ECU 구성의 가용성을 최소화하고 이러한 비용의 가용성을 최소화할 것입니다.