전자회로 실무 / 전자회로 실무·디버깅

디버그 커넥터 하나로 펌웨어 로그까지 읽는 전용 배선을 설계합니다 (Shared SWD–UART Debug Connector)

소형 기판에 디버그 헤더와 직렬 로그용 헤더를 따로 놓기 어려울 때가 있습니다. 이때 사용 중인 프로브가 쓰지 않는 접점 두 개가 전용 커넥터와 케이블 전체에서 실제로 비어 있다면, 그 접점으로 펌웨어의 송신·수신 신호를 빼낼 수 있습니다. 프로그래밍과 로그 수집을 한 번의 연결로 처리하는 방법이지만, 커넥터 모양이 같다는 이유로 표준 핀을 임의로 바꾸면 프로브나 목표 기판을 손상시킬 수 있습니다. 여기서는 어느 배선에만 적용할 수 있는지부터 확인하겠습니다.

한 커넥터에 서로 다른 통신을 담습니다

SWD(Serial Wire Debug)는 마이크로컨트롤러(MCU, Microcontroller Unit)의 프로그램 기록과 디버깅에 쓰는 연결입니다. 주요 신호는 데이터선 SWDIO, 클록선 SWCLK, 기준 전압을 읽기 위한 VTref, 접지(GND), 필요할 때 쓰는 리셋(nRESET)입니다. UART(Universal Asynchronous Receiver/Transmitter)는 시작 비트와 정해진 전송 속도(baud)를 사용하는 비동기 직렬 통신입니다. UART의 TX는 보내는 쪽, RX는 받는 쪽을 뜻합니다.

목표 기판의 MCU가 로그를 UART_TX로 내보내면, 디버그 케이블의 별도 접점을 따라 어댑터의 USB–UART 변환기(USB-to-UART bridge) RX로 갑니다. 반대 방향 명령은 변환기 TX에서 MCU UART_RX로 들어갑니다. 변환기는 UART의 논리 신호를 컴퓨터의 USB 직렬 포트로 옮겨 줍니다. FTDI는 이런 변환기 제품을 만드는 회사 이름이지 UART와 다른 통신 규격의 이름이 아닙니다. SWD 신호는 어댑터를 지나 프로브에 그대로 전달하고, UART 신호만 변환기로 갈라 놓습니다.

전용 목표 기판 커넥터의 SWD 신호는 디버그 프로브로 통과시키고, 별도로 배정·검증한 UART 송신과 수신 접점만 USB–UART 변환기로 갈라 PC에 연결하는 개념도입니다. 이 그림의 접점은 표준 10핀 핀 번호를 나타내지 않습니다.
전용 목표 기판 커넥터의 SWD 신호는 디버그 프로브로 통과시키고, 별도로 배정·검증한 UART 송신과 수신 접점만 USB–UART 변환기로 갈라 PC에 연결하는 개념도입니다. 이 그림의 접점은 표준 10핀 핀 번호를 나타내지 않습니다. · 클릭하면 확대됩니다.

이 방법은 전용 핀 배정(custom pinout)입니다. 표준 10핀 Cortex Debug 커넥터에 늘 빈 접점 두 개가 있다는 뜻이 아닙니다. 그 커넥터의 7번 위치는 방향을 구별하는 키(KEY), 9번은 접지 감지(GNDDetect)로 정해져 있습니다. 6번 SWO와 8번 TDI 위치도 사용 중인 추적·JTAG 기능 및 프로브에 따라 역할이 달라집니다. 어떤 설계의 7·9번 UART 사례를 표준 10핀 헤더의 보편적인 배선표로 옮기지 마십시오. 표준 케이블을 계속 써야 한다면 기능 충돌이 없는 더 큰 전용 커넥터나 별도 시험 패드를 선택해야 합니다.

전원 인가 전, 목표 기판과 어댑터를 따로 검사합니다

  1. 실제 커넥터의 핀 번호와 방향을 그립니다. 기판 실크와 부품 데이터시트의 핀 1, 케이블의 극성 표시, 프로브의 사용 핀을 각각 대조합니다. 목표 기판과 어댑터 양쪽에 SWDIO, SWCLK, VTref, GND, nRESET과 추가 UART_TX/RX가 어느 접점에 연결되는지 표를 만듭니다. 비어 있다고 생각한 접점을 프로브가 구동하거나 접지로 읽는다면 UART에 사용할 수 없습니다.
  2. SWD 경로는 어댑터를 통과시키고 UART 두 선만 분기합니다. 목표 기판 UART_TX는 USB–UART 변환기 RX, 목표 기판 UART_RX는 변환기 TX에 연결합니다. 프로브 측에는 이 UART 신호가 가지 않도록 분리합니다. 적어도 한 개의 검증된 GND 경로가 목표 기판과 변환기 사이에 있어야 합니다. 키 위치나 GNDDetect을 지운 전용 설계를 일반 Cortex 규격이라고 표시하지 않습니다.
  3. 논리 전압을 확인합니다. VTref는 프로브가 목표 기판의 신호 전압을 아는 데 쓰는 기준이며, 모든 USB–UART 변환기의 전원 입력과 같은 뜻이 아닙니다. MCU UART의 HIGH 전압, 변환기 VCCIO의 설정 전압과 입력 허용 범위를 각 부품 자료에서 확인합니다. 1.8 V 목표 기판과 3.3 V 변환기를 단순히 선으로 잇거나, 마이크로컨트롤러의 논리 레벨 UART에 RS-232 전압을 직접 넣지 않습니다. 어느 쪽만 켜져 있을 때 입력 보호 경로를 통해 전원이 역류하지 않는지도 확인합니다.
  4. 전원을 끈 상태에서 도통·단락을 검사합니다. 목표 기판의 TX가 어댑터 RX까지, RX가 어댑터 TX까지 연결되는지 재고, SWDIO·SWCLK·리셋·접지와 서로 닿지 않는지 확인합니다. 커넥터를 뒤집거나 다른 규격의 프로브를 꽂아도 동일한 배선이 된다고 가정하지 않습니다.

연결 뒤에는 기록 기능과 로그를 각각 확인합니다

먼저 목표 기판만 규정된 방법으로 켠 다음, 디버그 프로브로 장치 식별과 간단한 메모리 읽기 또는 기록·검증을 수행합니다. 로그 수집 배선을 추가한 뒤 SWD가 끊겼다면 UART 시험보다 핀 배정과 어댑터 통과 배선을 먼저 고쳐야 합니다.

이어서 USB–UART 변환기를 연결하고 컴퓨터에서 새 직렬 포트를 확인합니다. 펌웨어가 실제로 선택한 UART 주변장치와 핀으로 알려진 짧은 문자열을 한 번 보내게 하고, 터미널의 baud, 데이터 비트, 패리티, 정지 비트를 동일하게 맞춥니다. 재설정 직후의 로그도 필요하면 터미널을 먼저 연 다음 목표 기판을 리셋해 첫 바이트부터 받습니다. 반대 방향을 써야 한다면 변환기 TX에서 보낸 짧은 명령을 MCU가 수신했다고 응답하는지 확인합니다. 프로브 연결·해제, USB만 켠 상태, 목표 전원만 켠 상태에서도 의도하지 않은 전압이나 로그 오류가 없는지 검사합니다.

관찰 결과우선 확인할 항목
SWD 기록도 로그도 동작하지 않습니다.커넥터 방향, 접지, 목표 전원, VTref와 공통 신호의 도통을 확인합니다.
SWD는 되지만 로그가 전혀 없습니다.목표 UART의 실제 핀 설정, TX→RX 교차 연결, 목표 전원과 USB 직렬 포트 선택을 확인합니다.
글자가 깨져 보입니다.펌웨어와 터미널의 baud·데이터 비트·패리티·정지 비트 및 논리 전압을 비교합니다.
한쪽 전원만 켰는데 다른 쪽 전압이 올라갑니다.UART 입력 보호 소자를 통한 역전원 공급 가능성을 확인하고, 전원을 차단했을 때 입력을 분리하는 버퍼나 적합한 변환기를 검토합니다.

시험 기록에는 사용한 커넥터·케이블·프로브의 정확한 핀 배정, 목표·변환기 전압, 펌웨어의 UART 핀과 통신 설정, SWD 검증 결과, 수신한 문자열을 함께 남깁니다. 그래야 같은 모양의 표준 케이블과 이 전용 케이블이 뒤섞이지 않고, 다음 기판에서도 로그가 안 나오는 원인을 배선과 설정 중 어디에서 찾아야 할지 바로 구분할 수 있습니다.