# 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](https://www.segger.com/downloads/jlink/) — `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 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/포트를 점유 중이면 연결이 실패할 수 있음 ## 시작 ```bash npm install npm run dev ``` 로컬 실행 (UI 빌드 후 Electron): ```bash npm run build npm start ``` Windows 설치/실행 파일 (`release/` 폴더): ```bash 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`