Files
2026-05-18 17:36:05 +09:00

2.9 KiB

DTM RTT Tester

  • Electron 기반의 독립형 DTM 테스트 도구
  • nRF5 SDK DTM 예제의 RTT transport(DTM_TRANSPORT_RTT)와 동일한 2바이트 DTM 프로토콜을 SEGGER J-Link RTT로 주고받음

펌웨어 (대상 보드)

  • nRF5 SDK 17.1.0 examples/dtm/direct_test_mode/main.cRTT 빌드로 플래시

  • SEGGER_RTT_Read(0, …) / SEGGER_RTT_Write(0, …)Up/Down channel 0

  • Keil 등에서 전처리기 DTM_TRANSPORT_RTT 정의

  • pca10056 기본 타겟: NRF52840_xxAA

호스트 요구 사항

  • 플래시: nrfjprog (nRF Command Line Tools / C:\nrfutil\bin 등) — 프로브 목록에도 사용

  • RTT 테스트: SEGGER J-Link Software and Documentation PackJLinkGDBServerCL.exe 필요 (nrfjprog만으로는 RTT 불가)

  • SEGGER V7.50+ 기본 설치 경로: C:\Program Files\SEGGER\JLink_V942\ (버전마다 JLink_VxxxJLink\ 아님)

  • PATH에 없으면 SEGGER_JLINK_PATH에 위 폴더 지정 (예: C:\Program Files\SEGGER\JLink_V942)

  • 동시 실행: J-Link 2대 + 보드 2개, 세션마다 서로 다른 프로브 SN. GDB Server는 인스턴스마다 GDB/SWO/RTT 포트가 겹치면 안 됨 (기본 2331/2332는 한 프로세스만 가능)

    • Receiver: GDB/SWO/RTT 선호 29021/29022/19021 (점유 시 자동으로 빈 포트 탐색)
    • Transmitter: 29031/29032/19022
  • J-Link 1대만 있으면 한 세션만 Start 가능 (다른 쪽 Start 시 충돌·RTT 타임아웃). 앱이 같은 SN이면 Start를 막고 안내 메시지를 표시함

  • 프로브가 보이지 않는 경우 PowerShell에서 nrfjprog --ids로 SN이 나오는지 먼저 확인(앱은 nrfjprog --ids로 목록 채움)

현재 구조

  • electron/main.cjs: Electron 메인 프로세스
  • electron/preload.cjs: renderer API
  • electron/services/DTM.cjs: DTM 테스트 로직
  • electron/services/DTM_transport.cjs: J-Link RTT 기반 DTM transport
  • electron/services/jlink/: J-Link 프로브 목록, GDB Server, RTT Telnet 클라이언트
  • electron/services/dtmController.cjs: 세션·IPC
  • src/App.tsx: UI

RTT 연결 방식

  1. 세션별로 JLinkGDBServerCL을 실행해 SWD로 타겟에 연결
  2. 세션별 TCP (선호값, busy면 자동 대체): Receiver 29021/29022/19021, Transmitter 29031/29032/19022
  3. 연결 직후 RTTCh;0 설정 (펌웨어 channel 0과 일치)
  4. DTM 명령/응답은 UART와 동일하게 2바이트 프레임
  • RTT Viewer 등이 이미 같은 J-Link/포트를 점유 중이면 연결이 실패할 수 있음

시작

npm install
npm run dev

로컬 실행 (UI 빌드 후 Electron):

npm run build
npm start

Windows 설치/실행 파일 (release/ 폴더):

npm install
npm run build:win
  • release/DTM RTT Tester Setup x.x.x.exe — NSIS 설치 프로그램
  • release/DTM RTT Tester x.x.x.exe — portable (설치 없이 실행)

macOS (Apple Silicon): npm run build:mac