DUJINLABS.COM

전자회로 실무 / 펌웨어·회로

부트 핀(pin)은 펌웨어(firmware)보다 먼저 읽히므로 리셋(reset) 순간의 외부 부하를 확인합니다

전원을 켤 때만 부팅이 잘못된다면 부트 설정 핀(pin)에 연결된 외부 회로를 살펴보세요. 프로그램(program) 실행 후의 전압이 아니라, 리셋(reset) 중 설정을 읽는 순간의 핀 전압이 중요합니다.

먼저 알아둘 용어

부트 스트랩(bootstrap)·GPIO(General-Purpose Input/Output) — 부트 스트랩은 시작 모드를 정하기 위해 특정 시점에 핀 상태를 읽는 기능입니다. GPIO는 범용 입출력 핀이지만 같은 핀이 시작 순간에는 스트랩 역할을 겸할 수 있습니다.

VIH·VIL — VIH는 HIGH로 보장 인식하는 입력 전압 조건, VIL은 LOW로 보장 인식하는 조건입니다. 두 조건 사이 전압은 확실한 논리 상태로 취급하지 않습니다.

푸시풀(push-pull)·레벨 시프터(level shifter) — 푸시풀 출력은 HIGH와 LOW를 모두 능동 구동합니다. 레벨 시프터는 서로 다른 논리 전압을 연결하는 회로입니다. 두 장치의 전원 순서에 따라 초기 핀 상태가 달라질 수 있습니다.

시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다.
정지 그림 확대
시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다. · 그림을 클릭하면 확대됩니다.

작동 원리

부트 스트랩(strapping) 핀은 정해진 리셋 시점의 논리 상태를 내부에 저장하고 시작 모드를 결정하는 핀입니다. 나중에 일반 GPIO로 사용할 수 있어도 시작 순간에는 다른 역할을 합니다. 초기화 코드에서 풀업(pull-up)을 켜는 방식은 이미 끝난 샘플링(sampling)을 고치지 못합니다. 내부 풀업이 있다고 해도 외부 출력이나 저항망이 그보다 강하게 당기면 의도와 다른 레벨이 될 수 있습니다.

적용 순서

  1. 사용하는 칩과 모듈(module)의 정확한 세부 모델에 해당하는 부트 설정 표를 확인합니다. 스트랩 핀, 내부 기본 풀 상태, 선택 결과와 샘플링 조건을 한 표에 적습니다. 같은 ESP32 계열이라도 모델마다 핀 기능이 다를 수 있으므로, 다른 모델의 핀 배정표를 그대로 쓰지 않습니다.
  1. 각 스트랩에 연결된 모든 외부 부품을 추적합니다. 전원 OFF, 전원 상승, 리셋 유지, 리셋 해제, 정상 동작의 다섯 상태에서 누가 그 핀을 구동하는지 적습니다. 센서(sensor)가 아직 준비되지 않았을 때의 출력과 레벨 시프터의 전원 순서도 포함합니다.
  1. 리셋 신호와 스트랩 전압을 함께 관찰합니다. 데이터시트(datasheet)가 정한 핀 상태가 미리 안정되어 있어야 하는 설정 시간과 그 상태를 유지해야 하는 유지 시간 안에 VIH 또는 VIL이 충족되는지 봅니다. 리셋이 끝난 한참 뒤 멀티미터(multimeter)로 잰 전압만으로 통과 판정하지 않습니다.
  1. 외부 회로의 초기 구동을 지연하거나, 적합한 풀 저항을 적용하거나, 가능한 경우 스트랩이 아닌 핀으로 옮깁니다. 두 푸시풀 출력이 서로 반대 전압을 강제로 내보내는 상태를 저항값 조정만으로 해결하려고 하지 않습니다. 수정 뒤 정상 부트·다운로드·디버그 등 필요한 모드를 모두 확인합니다.

계산과 판단 예

설명용으로 3.3 V에 연결된 10 kΩ 풀업과 10 kΩ 풀다운(pull-down)이 함께 있으면 이상적인 정지 전압은 1.65 V입니다. 이 전압이 HIGH 또는 LOW의 보장 조건을 만족하는지 사용 부품의 임계값과 대조해야 합니다. 내부 풀 저항은 공차나 상태 의존성이 있으므로 이 저항값을 공통 설계값으로 쓰지 않습니다.

적용 조건과 한계

부트 실패는 스트랩 외에도 전원·클록(clock)·플래시(flash)·리셋 문제일 수 있습니다. 핀에 커패시터(capacitor)를 추가하면 원하는 상태 도달이 늦어질 수 있습니다. 측정 프로브(probe)의 부하도 원래 상태를 바꿀 수 있으므로 작은 여유에서 특히 주의합니다.

확인과 기록

전원을 충분히 껐다가 켤 때, 짧게 껐다가 다시 켤 때, 수동으로 리셋할 때, 주변장치 전원이 먼저 또는 나중에 켜질 때 모드와 파형을 반복 확인합니다. 결과를 “GPIO 최종값”이 아니라 “샘플링 구간의 핀 상태와 실제 부트 모드”로 기록합니다.

작업 순서를 다시 확인합니다

부트 핀은 펌웨어보다 먼저 읽히므로 리셋 순간의 외부 부하를 확인합니다 — 설명용 도해
부트 핀은 펌웨어보다 먼저 읽히므로 리셋 순간의 외부 부하를 확인합니다 — 설명용 도해 · 클릭하면 확대됩니다.