๋ฌธ์ ํด๊ฒฐ
์์คํ ์ด์ ์ค ๋ฐ์ํ ์ ์๋ ์ฃผ์ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
์๋ฆฌ์ผ ํต์ ์คํจ
ํฌํธ๋ฅผ ์ฐพ์ ์ ์์
์ฆ์: 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 ๋ฑ ๋ฌด์๋ฏธํ ๋ฐ์ดํธ)
ํด๊ฒฐ:
config.yaml์serial.baudrate๊ฐ ํ์ธ (๊ธฐ๋ณธ: 115200)- DSP ํ์จ์ด์ UART ์ด๊ธฐํ ์ฝ๋์์ ๋ณด๋๋ ์ดํธ ํ์ธ
- ์์ชฝ ๊ฐ์ด ์ผ์นํ๋์ง ๊ฒ์ฆ
# ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ก ์ง์ ํ์ธ
python -c "
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3)
print(ser.read(100))
ser.close()
"CRC ์ค๋ฅ ๋ฐ๋ณต
์ฆ์: CRC mismatch ๊ฒฝ๊ณ ๊ฐ ์ง์์ ์ผ๋ก ๋ฐ์
์์ธ: ์ ๊ธฐ์ ๋ ธ์ด์ฆ, ์ผ์ด๋ธ ๋ถ๋, ์ ์ง ๋ฌธ์
ํด๊ฒฐ:
- USB ์ผ์ด๋ธ์ ๊ต์ฒดํฉ๋๋ค (์ฐจํ ์ผ์ด๋ธ ๊ถ์ฅ)
- USB ํ๋ธ๋ฅผ ์ ๊ฑฐํ๊ณ PC์ ์ง์ ์ฐ๊ฒฐํฉ๋๋ค
- ๋ชจํฐ ๊ตฌ๋ ์ค ๋ฐ์ํ๋ฉด ํต์ ์ผ์ด๋ธ์ ๋ฐฐ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅ์ ๊ณผ ๋ถ๋ฆฌํฉ๋๋ค
- ์ง์๋๋ฉด DSP ๋ณด๋์ UART TX/RX ํ ํํ์ ์ค์ค๋ก์ค์ฝํ๋ก ํ์ธํฉ๋๋ค
JTAG ์ฐ๊ฒฐ ์คํจ
SDS200i ์๋ฎฌ๋ ์ดํฐ ๋ฏธ์ธ์
์ฆ์: Error connecting to the target ๋๋ UniFlash์์ ์๋ฎฌ๋ ์ดํฐ ๋ชฉ๋ก์ ํ์ ์ ๋จ
ํ์ธ ์ ์ฐจ:
- USB ์ผ์ด๋ธ ์ฐ๊ฒฐ ์ํ ํ์ธ
- SDS200i ์ ์ LED ์ ๋ฑ ํ์ธ
- ๋๋ผ์ด๋ฒ ์ค์น ํ์ธ:
# Linux lsusb | grep -i spectrum # ๊ฒฐ๊ณผ ์์ผ๋ฉด ๋๋ผ์ด๋ฒ ๋ฏธ์ค์น - CCS์์ Target Configuration ์ฌ์์ฑ
ํ๋์ ๊ฒ์ฆ ์คํจ
์ฆ์: Verification failed at address 0x...
ํด๊ฒฐ:
| ๋จ๊ณ | ์กฐ์น |
|---|---|
| 1 | DSP ๋ณด๋์ ์ ์์ OFF/ONํ๊ณ ์ฌ์๋ |
| 2 | JTAG ์ผ์ด๋ธ์ ๋ถ๋ฆฌ/์ฌ์ฐ๊ฒฐ |
| 3 | CCS์์ 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 1000Python ์์กด์ฑ ๋ฌธ์
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.txtreliability ํจํค์ง ํธํ์ฑ
reliability ํจํค์ง๋ ํน์ numpy/scipy ๋ฒ์ ์กฐํฉ์์๋ง ๋์ํฉ๋๋ค.
# ๋ฒ์ ํ์ธ
pip show reliability numpy scipy
# ํธํ ๋ฒ์ ๊ฐ์ ์ค์น (requirements.txt ๊ธฐ์ค)
pip install -r requirements.txt --force-reinstallmatplotlib ๊ทธ๋ํ ํ์ ์ ๋จ
์ฆ์: 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 ์ ๋ฉธ ์์)
ํ์ธ ์ ์ฐจ:
- ์ ์ ๊ณต๊ธ ํ์ธ (๋ฉํฐ๋ฏธํฐ๋ก 3.3V, 5V ๋ ์ผ ์ธก์ )
- JTAG ์ฐ๊ฒฐ ํ CCS์์ halt โ ํ์ฌ PC ์์น ํ์ธ
- ๋ฌดํ ๋ฃจํ๋ HardFault์ ๊ฐํ ์๋์ง ํ์ธ
- ์์น๋ ํ์ด๋จธ ์ค์ ํ์ธ (์ด๊ธฐํ ์ฝ๋์์ ๋นํ์ฑํ ์ฌ๋ถ)
- ๋ถํธ ๋ชจ๋ ํ(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.yaml์ jtag.uniflash_path์ jtag.ccs_path๊ฐ ์ค์ ์ค์น ๊ฒฝ๋ก์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.