initial commit

This commit is contained in:
2026-05-18 17:36:05 +09:00
commit fadeba40cc
24 changed files with 12173 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
# 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`