AI 요약
휴대용 스마트 인두기 파인실(Pinecil) 구매 및 UART 접속기를 작성한 지 2년이 지난 시점에서, 작성자는 시스템 초기화 및 드라이버 레벨의 오류를 디버깅하기 위해 J-Link JTAG 연결 방식을 도입했습니다. 최근 Zephyr RTOS에 Bouffalo Lab BL706 MCU의 업스트림 지원이 추가되면서 파인실 개발 환경이 크게 개선되었습니다. 단순 로그 출력에 유용한 UART와 달리, 드라이버 개발 초기 단계에서는 세부 제어가 가능한 JTAG 기반의 디버그 액세스가 필수적입니다. 이를 위해 작성자는 파인실 브레이크아웃 보드의 10핀 JTAG 헤더와 SEGGER J-Link 20핀 커넥터를 듀폰 와이어 및 리본 케이블을 사용하여 상호 맵핑했습니다. 연결 완료 후 JLinkExe 유틸리티를 활용해 3.335V의 로직 전압(VTref)을 확인했으며, 최종적으로 JLinkGDBServer를 통해 BL706 MCU 내부의 SiFive E24 코어 컴플렉스에 연결하여 포트 2331에서 GDB 디버깅 세션을 시작할 수 있게 되었습니다.
핵심 인사이트
- Zephyr RTOS 지원: @VynDragon, @will-tm, @josuah 등의 기여로 Zephyr RTOS에 Bouffalo Lab BL706 MCU를 위한 업스트림 지원이 성공적으로 추가되었습니다.
- JTAG 헤더 규격: 파인실 브레이크아웃 보드는 JTAG 디버깅용 10핀 헤더를 포함하고 있으며, 여기에는 3v3 reference 핀 1개, GND 핀 4개 및 표준 JTAG 신호선들이 포함되어 있습니다.
- 전압 감지 성공: SEGGER J-Link Commander V9.28 환경에서 브레이크아웃 보드의 3v3 핀 연결을 통해 3.335V의 VTref(로직 전압 레벨) 감지를 성공적으로 완료했습니다.
- 포트 2331 디버깅:
JLinkGDBServer -device E24 -if JTAG명령어를 통해 SiFive E24 코어 디버깅을 위한 로컬 GDB 서버를 2331번 포트에서 활성화했습니다.
주요 디테일
- 디버깅 방식 전환: UART 통신은 실시간 로그 확인에는 유용하나, 시스템이 정상 부팅되기 전인 극초기 단계(early system initialization) 및 저수준 드라이버 이슈 해결에는 J-Link JTAG 도구가 훨씬 더 효과적입니다.
- 커넥터 배선: 파인실 브레이크아웃 보드의 2.54mm 핀과 J-Link의 20핀 커넥터 연결을 위해 암-암(female-to-female) 및 암-수(female-to-male) 듀폰 와이어가 사용되었습니다.
- 리본 케이블 핀 맵핑: 케이블 혼선을 막기 위해 리본 케이블을 사용할 때, 노치(notch)를 위로 향하게 하여 J-Link의 1번 핀(VTref)이 케이블 좌측 상단에 제대로 맞물리도록 배선 구조를 직관적으로 정렬했습니다.
- 사용 하드웨어 사양: 테스트에는 USB High speed(480 MBit/s) 모드를 지원하는 하드웨어 버전 V11.00의 SEGGER J-Link V11 디버거(S/N 821010562)가 활용되었습니다.
- GDB 서버 포트 구성: GDB 서버 가동 시 기본 GDB 연결 포트는 2331번, SWO 원시 출력 포트는 2332번, 터미널 I/O 포트는 2333번으로 자동으로 할당됩니다.
향후 전망
- Zephyr OS의 공식 BL706 지원과 고성능 J-Link 하드웨어를 연동한 디버깅 인프라가 갖추어짐에 따라, 향후 파인실 하드웨어를 응용한 다양한 오픈소스 임베디드 프로젝트 및 드라이버 펌웨어 개발이 한층 더 원활해질 것으로 보입니다.
