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.yaml์˜ serial.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.yaml์˜ jtag.uniflash_path์™€ jtag.ccs_path๊ฐ€ ์‹ค์ œ ์„ค์น˜ ๊ฒฝ๋กœ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.