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.c를 RTT 빌드로 플래시 -
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 Pack —
JLinkGDBServerCL.exe필요 (nrfjprog만으로는 RTT 불가) -
SEGGER V7.50+ 기본 설치 경로:
C:\Program Files\SEGGER\JLink_V942\(버전마다JLink_Vxxx—JLink\아님) -
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 APIelectron/services/DTM.cjs: DTM 테스트 로직electron/services/DTM_transport.cjs: J-Link RTT 기반 DTM transportelectron/services/jlink/: J-Link 프로브 목록, GDB Server, RTT Telnet 클라이언트electron/services/dtmController.cjs: 세션·IPCsrc/App.tsx: UI
RTT 연결 방식
- 세션별로
JLinkGDBServerCL을 실행해 SWD로 타겟에 연결 - 세션별 TCP (선호값, busy면 자동 대체): Receiver 29021/29022/19021, Transmitter 29031/29032/19022
- 연결 직후
RTTCh;0설정 (펌웨어 channel 0과 일치) - 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