LabHub
배우기 러닝패스 코스

센서는 멀쩡한데 보드가 못 알아듣는다 · 정체를 모르는 포착 · 이론

이름이 없는 포착 파일

LabHub 에서 이어서 보기

한 줄 요약

이름이 안 적힌 포착 파일도 스스로를 설명합니다. 채널 수와 유휴 준위, 그리고 선들 사이의 관계면 어떤 버스인지 가려집니다.

왜 이게 필요했나

현장에서 받는 파일에는 대개 이름이 없습니다. ch0, ch1 이라고만 적혀 있고, 재 온 사람은 "여기가 안 된다" 고만 말합니다. 어떤 버스인지 물어보면 "센서에서 나오는 선" 이라는 대답이 돌아옵니다. 다시 물어볼 사람이 없을 때도 있습니다. 그러면 파일에 물어봐야 합니다.

이 모듈은 앞의 세 버스를 하나로 묶습니다. 각각을 아는 것과 무엇인지 모르는 상태에서 가려내는 것은 다른 기술입니다. 그리고 현장에서 필요한 쪽은 뒤쪽입니다.

어떻게 동작하나

가려내기는 싼 단서부터 씁니다.

채널 수. 한 줄이면 비동기 직렬(UART)입니다. 클럭이 없으니 속도를 스스로 알아내야 합니다. 두 줄이면 I2C 일 가능성이 큽니다 — 한 줄이 규칙적인 클럭이고 다른 줄이 그 클럭의 낮은 구간에서만 바뀐다면 거의 확실합니다. 네 줄이면 SPI 입니다. 하나는 전송 내내 낮게 유지되는 선택선이고, 하나는 그 안에서만 도는 클럭입니다.

유휴 준위. 아무 일도 없을 때 선이 어디 있는지가 많은 것을 말합니다. UART 와 I2C 는 높게 쉽니다. 그래서 낮게 쉬는 한 줄짜리 포착을 만나면 극성이 뒤집힌 것을 의심합니다. 사이에 반전하는 레벨 변환기가 들어갔거나, RS-232 신호를 TTL 로 착각하고 잰 경우입니다. 이때 값을 그대로 읽으면 시작 비트를 찾지 못해 프레임이 엉뚱하게 잡히는데, 모든 비트를 뒤집어 읽으면 멀쩡한 문장이 나옵니다.

선들 사이의 관계. 두 줄 포착에서 한 줄이 다른 줄의 높은 구간에 변화를 만들면 그것이 START 나 STOP 입니다. 네 줄 포착에서 한 줄이 다른 줄의 모서리마다 바뀌면 데이터입니다. 전송 내내 한 번도 안 바뀌는 선이 있다면 그것도 정보입니다 — 슬레이브가 MISO 를 한 번도 구동하지 않았다는 뜻이니까요. 선택이 잘못됐거나, 칩이 안 붙어 있거나, 전원이 없습니다. 풀업만 남은 선은 언제나 0xFF 로 읽힙니다.

고장의 이름을 붙일 때는 증거를 함께 적습니다. "보율이 안 맞는다" 가 아니라 "가장 짧은 펄스가 112 µs 인데 명목 비트 시간은 104.2 µs 다" 라고 적습니다. 앞 문장은 다음 사람이 확인할 수 없고 뒤 문장은 확인할 수 있습니다. 그리고 확인할 수 없는 보고는 시간이 지나면 소문이 됩니다.

채널 1 · 유휴 낮음        -> UART, 극성 반전 의심채널 2 · STOP 없음        -> I2C, SDA 가 붙들려 버스가 잠김채널 4 · MISO 모서리 0개  -> SPI, 대상이 응답하지 않음

증거로 쓸 숫자를 고를 때는 세는 값재는 값을 함께 넣는 편이 좋습니다. 세는 값은 START 의 개수, 표본 모서리의 개수, 남는 비트의 수처럼 정수입니다. 틀리면 확실히 틀리므로 다툼이 없습니다. 재는 값은 상승 시간, 비트 시간, 저준위 구간의 길이처럼 연속량입니다. 임계값과 표본 속도에 따라 조금씩 달라지므로 함께 적어 두어야 다음 사람이 같은 값을 얻습니다. 둘 중 하나만 적으면 보고가 반쪽이 됩니다 — 개수만 있으면 여유가 얼마나 남았는지 모르고, 시간만 있으면 무엇이 몇 번 일어났는지 모릅니다.

그리고 가장 싼 단서부터 쓰는 순서를 지키는 것이 실제로 시간을 아낍니다. 채널 수와 유휴 준위는 파일의 첫 몇 줄만 읽으면 나옵니다. 여기서 버스가 정해지면 그 버스의 규칙으로만 해독하면 되고, 안 정해지면 아직 해독기를 쓸 때가 아닙니다. 해독부터 시작해 놓고 "결과가 이상하다" 를 반복하는 것이 이 일에서 가장 흔한 시간 낭비입니다.

마지막으로 못 하는 것을 적는 일이 남습니다. 이 코스의 포착 파일은 전부 합성된 파형입니다. 1차 RC 로 모서리를 만들었고 잡음도 지터도 반사도 넣지 않았습니다. 그러므로 여기서 "정상" 이라고 판정한 것이 실물 보드에서 정상이라는 뜻은 아닙니다. 해독기가 맞다는 것과 신호에 여유가 있다는 것은 다른 주장이고, 후자는 실물 계측과 데이터시트의 VIH·VIL·타이밍 값을 대조해야 합니다. 보고서에 이 경계를 적어 두지 않으면, 읽는 사람은 읽은 것보다 많은 것을 믿게 됩니다.

현장에서 만나는 모습

장애 보고서에 "I2C 오류" 한 줄만 적혀 올라오는 경우가 많습니다. 그 한 줄로는 아무도 다음 행동을 정할 수 없습니다. 주소가 NACK 인지, 버스가 잠겼는지, 상승이 느린지에 따라 고칠 사람이 다릅니다 — 첫째는 펌웨어, 둘째는 드라이버의 복구 절차, 셋째는 하드웨어입니다. 파형에서 이 셋을 가려내면 보고서 한 줄이 담당자 한 명을 지목합니다.

반대로 근거 없이 이름만 붙인 보고도 위험합니다. "노이즈 때문" 이라는 말은 거의 언제나 "아직 모르겠다" 의 다른 표현입니다. 잡음이라고 말하려면 잡음이 보이는 구간과 그 크기를 함께 내놓아야 합니다.

다음 실습에서 할 것

I2C 포착 네 편과 SPI 포착 세 편을 해독합니다. 정상 읽기 전송, 응답 없는 주소, 클럭을 붙드는 슬레이브, 풀업이 약한 버스, 모드 0과 모드 3, 선택선이 늦은 전송입니다. 마지막 단계에서는 이름이 없는 포착 셋을 받아 버스를 가려내고 고장에 이름과 숫자 증거를 함께 붙입니다.