Skip to Content

문제 해결

시스템 운영 중 발생할 수 있는 주요 문제와 해결 방법을 정리합니다.

시리얼 통신 실패

포트를 찾을 수 없음

증상: serial.serialutil.SerialException: could not open port

원인 및 해결:

원인확인 방법해결
USB 케이블 미연결ls /dev/ttyUSB* 결과 없음USB 케이블 연결 확인, 다른 포트 시도
권한 부족ls -l /dev/ttyUSB0 확인sudo usermod -aG dialout $USER 후 재로그인
다른 프로세스가 점유lsof /dev/ttyUSB0점유 프로세스 종료 후 재시도
WSL에서 USB 미인식lsusb 결과 없음usbipd attach 명령으로 WSL에 USB 연결

WSL 환경에서 USB 장치를 연결하는 방법:

# Windows PowerShell (관리자) usbipd list # 장치 목록 확인 usbipd bind --busid <BUS-ID> # 최초 1회 usbipd attach --wsl --busid <BUS-ID> # WSL에 연결 # WSL에서 확인 ls /dev/ttyUSB*

보드레이트 불일치

증상: 데이터 수신은 되나 깨진 문자열 (0xFF, 0x00 등 무의미한 바이트)

해결:

  1. config.yamlserial.baudrate 값 확인 (기본: 115200)
  2. DSP 펌웨어의 UART 초기화 코드에서 보드레이트 확인
  3. 양쪽 값이 일치하는지 검증
# 시리얼 모니터로 직접 확인 python -c " import serial ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3) print(ser.read(100)) ser.close() "

CRC 오류 반복

증상: CRC mismatch 경고가 지속적으로 발생

원인: 전기적 노이즈, 케이블 불량, 접지 문제

해결:

  1. USB 케이블을 교체합니다 (차폐 케이블 권장)
  2. USB 허브를 제거하고 PC에 직접 연결합니다
  3. 모터 구동 중 발생하면 통신 케이블의 배선 경로를 전력선과 분리합니다
  4. 지속되면 DSP 보드의 UART TX/RX 핀 파형을 오실로스코프로 확인합니다

JTAG 연결 실패

SDS200i 에뮬레이터 미인식

증상: Error connecting to the target 또는 UniFlash에서 에뮬레이터 목록에 표시 안 됨

확인 절차:

  1. USB 케이블 연결 상태 확인
  2. SDS200i 전원 LED 점등 확인
  3. 드라이버 설치 확인:
    # Linux lsusb | grep -i spectrum # 결과 없으면 드라이버 미설치
  4. CCS에서 Target Configuration 재생성

플래시 검증 실패

증상: Verification failed at address 0x...

해결:

단계조치
1DSP 보드의 전원을 OFF/ON하고 재시도
2JTAG 케이블을 분리/재연결
3CCS에서 Erase Flash 후 재플래시
4클럭 설정 확인 (JTAG 속도를 낮춰 시도: 1 MHz → 500 kHz)
5다른 DSP 보드로 교체하여 보드 불량 여부 확인
# UniFlash CLI로 플래시 삭제 후 재시도 dslite.sh --config=config.ccxml --erase dslite.sh --config=config.ccxml --flash --verify firmware/build/motor_control.out

시뮬레이션 수렴 실패

Weibull 모수 추정 수렴 안 됨

증상: ConvergenceWarning: Maximum likelihood estimation did not converge

원인 및 해결:

원인해결
데이터 포인트 부족 (n < 5)시험 데이터 추가 확보
모든 데이터가 중도 절단 (고장 없음)최소 1개 이상의 고장 데이터 필요
초기값 부적절--initial-beta 옵션으로 초기 추정값 지정
데이터에 이상치 포함전처리에서 이상치 제거 후 재실행
# 초기값 지정하여 재시도 python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --initial-beta 2.0 \ --initial-eta 5000

순위회귀(RR) 방법으로 전환

MLE가 수렴하지 않으면 순위회귀 방법을 사용합니다:

python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --estimation-method rr

수치 오버플로우

증상: RuntimeWarning: overflow encountered in exp

대규모 시간값(수만 시간)에서 발생할 수 있습니다. 시간 단위를 변환하여 수치 안정성을 확보합니다:

# 시간 단위를 kh (천 시간)로 변환 python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --time-scale 1000

Python 의존성 문제

venv 생성 실패

증상: Error: Command 'python3 -m venv venv' returned non-zero exit status 1

# python3-venv 패키지 설치 (Ubuntu/WSL) sudo apt update sudo apt install python3.12-venv # venv 생성 python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

패키지 설치 실패

증상: pip install 중 컴파일 에러 (numpy, scipy)

# 빌드 도구 설치 sudo apt install build-essential python3-dev gfortran # pip 업그레이드 후 재시도 pip install --upgrade pip setuptools wheel pip install -r requirements.txt

reliability 패키지 호환성

reliability 패키지는 특정 numpy/scipy 버전 조합에서만 동작합니다.

# 버전 확인 pip show reliability numpy scipy # 호환 버전 강제 설치 (requirements.txt 기준) pip install -r requirements.txt --force-reinstall

matplotlib 그래프 표시 안 됨

증상: WSL에서 plt.show() 호출 시 창이 뜨지 않음

WSL은 기본적으로 GUI를 지원하지 않습니다. 두 가지 해결 방법이 있습니다:

# 방법 1: 파일로 저장 (권장) import matplotlib matplotlib.use('Agg') # GUI 백엔드 비활성화 import matplotlib.pyplot as plt plt.savefig('results/plot.png', dpi=150, bbox_inches='tight')
# 방법 2: WSLg 활성화 (Windows 11) # Windows 설정 → Windows 기능에서 WSL 업데이트 확인 wsl --update

펌웨어 플래시 실패

CCS 빌드 오류

증상: undefined reference to 'FOC_run' 등 링커 에러

원인해결
C2000Ware 경로 미설정CCS 프로젝트 속성 → Include Paths에 C2000Ware 경로 추가
소스 파일 누락firmware/src/algorithm/, firmware/src/hal/ 전체 포함 확인
링커 스크립트 불일치.cmd 파일이 TMS320F2838x용인지 확인
컴파일러 버전CCS에서 C2000 컴파일러 22.x 이상 사용

DSP 보드 무응답

증상: 플래시 후 보드가 동작하지 않음 (UART 출력 없음, LED 점멸 없음)

확인 절차:

  1. 전원 공급 확인 (멀티미터로 3.3V, 5V 레일 측정)
  2. JTAG 연결 후 CCS에서 halt → 현재 PC 위치 확인
  3. 무한 루프나 HardFault에 갇혀 있는지 확인
  4. 워치독 타이머 설정 확인 (초기화 코드에서 비활성화 여부)
  5. 부트 모드 핀(GPIO72/73) 설정 확인
# CCS 디버거 콘솔에서 # PC 위치 확인 → 어디서 멈췄는지 파악 # 메모리 덤프로 스택 트레이스 확인

자동화 파이프라인에서 플래시 실패

증상: automation/pipeline.py --mode flash 실행 시 타임아웃

# UniFlash CLI 직접 실행으로 원인 특정 dslite.sh --config=config.ccxml --flash firmware/build/motor_control.out 2>&1 # config.ccxml 경로 확인 ls firmware/*.ccxml # CCS 설치 경로 확인 which dslite.sh || echo "UniFlash CLI가 PATH에 없음"

config.yamljtag.uniflash_pathjtag.ccs_path가 실제 설치 경로와 일치하는지 확인합니다.

Last updated on