TI/TDA3

TDA3 CCS 리눅스 설치 가이드

728x90

개요

리눅스 호스트에서 CCS 12.4를 설치하고 Blackhawk XDS560v2 STM 에뮬레이터로 TDA3x EVM에 JTAG 연결하기까지의 과정을 설명.

항목 값
호스트 OS Ubuntu 22,04
CCS 버전 12.4.0.00007
타겟 보드 TDA3x EVM (TDA3XX-EVM)
에뮬레이터 Blackhawk USB560v2 System Trace Emulator

사전 준비

설치 전에 인터넷 연결, sudo 권한, 약 4 GB의 디스크 여유가 필요하다. 설치기는 컴포넌트를 TI 서버(software-dl.ti.com)에서 내려받으므로 오프라인 설치는 불가하다.

1. TI 사이트에서 리눅스용 CCS 12.4 설치기를 받는다:
https://www.ti.com/tool/download/CCSTUDIO/12.4.0

 

CCSTUDIO IDE, configuration, compiler or debugger | TI.com

download Windows single file (offline) installer for Code Composer Studio IDE (all features, devices)  — 1227793 K

www.ti.com

 

2. 압축을 풀고 실행 권한을 확인한다.

cd ~/Downloads
tar xzf CCS12.4.0.00007_linux-x64.tar.gz
cd CCS12.4.0.00007_linux-x64
chmod +x ccs_setup_12.4.0.00007.run

 

3. CCS 12 설치기가 요구하는 배포판 라이브러리를 설치한다. (libgconf-2-4는 Ubuntu 22.04 이후 저장소에 없을 수 있으며, 없으면 건너뛴다.)

sudo apt update
sudo apt install -y libc6-i386 libusb-0.1-4 libgconf-2-4 libncurses5 libpython2.7 libtinfo5 build-essential
 

4. 에뮬레이터는 설치가 끝난 뒤에 연결한다. 먼저 꽂아두면 udev 규칙 적용 전에 디바이스 노드가 생기므로 다시 연결해야 한다.

CCS 12.4 설치

컴포넌트 선택에서 TDA/DRA 디바이스 지원과 Blackhawk Debug Probes 둘 다 켜야 한다. 기본값은 둘 다 꺼져 있고, Blackhawk을 빼먹으면 에뮬레이터 드라이버(libbh560v2u_io.so) 자체가 설치되지 않는다.

방법 A. 명령줄(unattended) 설치

설치 경로와 컴포넌트를 인자로 바로 지정하므로 재현이 쉽다. 약 5분 걸린다.

cd ~/Downloads/CCS12.4.0.00007_linux-x64
./ccs_setup_12.4.0.00007.run --mode unattended \
    --prefix /home/server/ti/ccs1240 \
    --enable-components PF_TDA_DRA \
    --install-BlackHawk true
인자 의미
--prefix 설치 디렉터리. 이 아래에 ccs/가 생긴다
--enable-components PF_TDA_DRA Automotive(TDA/DRA) 디바이스 지원. TDA3x 디바이스 정의와 XDS560v2 드라이버가 포함된다
--install-BlackHawk true Blackhawk Debug Probes(EMU_BH) 컴포넌트
--mode gtk GUI 설치기로 바꾸고 싶을 때(기본값)

방법 B. GUI 설치

1. ./ccs_setup_12.4.0.00007.run 실행.

2. Installation Directory에 /home/server/ti/ccs1240 입력.

3. Setup type에서 Custom Installation 선택.

4. Select Components에서 Automotive: TDAx devices 체크.

5. Select Debug Probes에서 Blackhawk Debug Probes 체크 (이 페이지를 그냥 넘기면 TI XDS/Spectrum Digital만 설치된다).

6. Install 후 완료까지 대기.

이미 설치된 CCS에 Blackhawk 컴포넌트만 추가

설치기 사본이 <설치경로>/ccs/install_info/에 보관되므로 다시 내려받을 필요가 없다. CCS를 완전히 종료한 뒤 같은 --prefix로 실행하면 기존 설치에 컴포넌트가 추가된다.

./ccs_setup_12.4.0.00007.run --mode unattended \
    --prefix /home/server/ti/ccs1240 \
    --enable-components PF_TDA_DRA \
    --install-BlackHawk true

USB 드라이버(udev) 설정

install_drivers.sh를 root로 한 번 실행하면 TI와 Blackhawk udev 규칙이 모두 들어간다. 이 단계를 건너뛰면 에뮬레이터 디바이스 노드가 root:root 0644로 생기고 일반 사용자 CCS가 열지 못한다.

cd /home/server/ti/ccs1240/ccs/install_scripts
sudo ./install_drivers.sh

스크립트는 두 개를 순서대로 호출한다.

스크립트 생성 파일 대상
ti_permissions_install.sh /etc/udev/rules.d/71-ti-permissions.rules TI XDS100/110/200, Spectrum Digital(0c55), FTDI(0403)
bh_emulation_install.sh /etc/udev/rules.d/71-bh-permissions.rules Blackhawk(0b1e): USB560v2 STM 0009, 8007, 8008

bh_emulation_install.sh는 Blackhawk 컴포넌트가 설치된 경우에만 존재한다. 설치 후에 Blackhawk을 추가했다면 install_drivers.sh를 다시 실행해야 한다.

규칙 적용 후 에뮬레이터 USB를 뽑았다 다시 꽂는다. 이미 꽂혀 있던 장치는 규칙을 다시 읽어도 권한이 바뀌지 않는다.

sudo udevadm control --reload-rules
sudo udevadm trigger
# 그리고 USB 재연결

스크립트 없이 수동으로 넣을 때는 아래 한 줄이면 된다.

echo 'SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="0b1e",MODE:="0666"' \
    | sudo tee /etc/udev/rules.d/71-bh-permissions.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

규칙이 있으면 CCS를 sudo로 띄울 필요가 없다. root로 띄우면 워크스페이스와 ~/.ti/ 설정이 root 소유가 되어 이후 일반 사용자 실행이 깨진다.

에뮬레이터 인식 확인

lsusb에 Blackhawk 장치가 보이고 디바이스 노드가 0666이면 호스트 쪽 준비는 끝이다. 이 두 가지를 CCS를 열기 전에 먼저 확인하면 오류 원인을 호스트/타겟으로 바로 나눌 수 있다.

lsusb | grep -i 0b1e
# Bus 001 Device 062: ID 0b1e:0009 Electronic Warfare Assoc., Inc. (EWA) Blackhawk USB560v2 System Trace Emulator

ls -la /dev/bus/usb/001/062      # Bus/Device 번호는 lsusb 출력에 맞춘다
# crw-rw-rw- 1 root root 189, 61  9월 21 13:11 /dev/bus/usb/001/062
확인 항목 정상 비정상일 때
lsusb에 0b1e:0009 표시 보임 USB 케이블·허브 교체, dmesg | grep -i usb로 열거 오류 확인
디바이스 노드 권한 crw-rw-rw- (0666) udev 규칙 누락 → 위 섹션 다시 수행 후 USB 재연결
에뮬레이터 LED 전원 LED 점등 USB 전류 부족 → 외부 전원 허브 사용

같은 보드에서 0403:6011 FT4232H도 함께 보이는데, 이건 EVM 온보드 UART 브릿지라 JTAG 연결과는 무관하다. 시리얼 콘솔은 /dev/ttyUSB*로 잡히며 dialout 그룹이면 접근할 수 있다.

타겟 구성(ccxml) 생성

Connection은 반드시 Blackhawk XDS560v2-USB System Trace Emulator를 고른다. 이름이 비슷한 Spectrum Digital XDS560V2 STM USB를 고르면 드라이버가 SD VID(0c55)만 찾기 때문에 Blackhawk 장비는 열리지 않는다.

  1. CCS 메뉴 File › New › Target Configuration File.
  2. 파일 이름 입력(예: TDA3x_BH560v2.ccxml), Use shared location 체크 → ~/ti/CCSTargetConfigurations/에 저장된다.
  3. Connection: Blackhawk XDS560v2-USB System Trace Emulator.
  4. Board or Device: 필터에 TDA3x 입력 → TDA3x 체크.
  5. Save → Test Connection. 아래 연결 테스트 섹션의 정상 출력이 나오면 끝.

저장된 ccxml은 XML이므로 연결 종류를 파일에서 바로 확인할 수 있다.

grep -oE 'href="connections/[^"]+"' ~/ti/CCSTargetConfigurations/TDA3x_BH560v2.ccxml
# href="connections/BH-XDS560v2-USB_Connection.xml"   ← Blackhawk (정상)
# href="connections/SD560V2USB_Connection.xml"        ← Spectrum Digital (장비 불일치)

TDA3x를 고르면 코어별 GEL 파일이 ccs_base/emulation/gel/TDA3x/에서 자동으로 붙는다. 보드에 맞게 DDR 설정을 바꿔야 하면 TDA3xx_ddr_config.gel을 수정하거나 Advanced 탭에서 경로를 바꾼다.

연결 테스트

1. 평가 보드)을 준비하고, 디버그 모드(예: SYSBOOT 스위치를 디버그 모드로 설정)로 부팅합니다

2. 보드와 JTAG 인터페이스를 연결합니다.

3. EVM을 디버그 모드로 부팅하고, CCS에서 타깃 코어(예: Cortex-M4 또는 Cortex-A15 등)에 연결합니다.

4. 아래과 같은 로그가 나오면 정상 연결 된 것

Cortex_M4_IPU1_C0: GEL Output:  ==================================================
Cortex_M4_IPU1_C0: GEL Output:  ========= TDA3xx PG3.0 device detected   =========
Cortex_M4_IPU1_C0: GEL Output:  ========= TDA3xx GP Device detected    ===========
Cortex_M4_IPU1_C0: GEL Output:  ========= TDA3xx 15x15 Device detected ===========
Cortex_M4_IPU1_C0: GEL Output:  ==================================================
Cortex_M4_IPU1_C0: GEL Output: --->>> All Control module lock registers are UNLOCKED <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> RTI is not currently enabled, so not doing anything  <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> Starting  IPU A-MMU configurations... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> IPU A-MMU configuration completed. <<<---
Cortex_M4_IPU1_C0: GEL Output: ------------------------------------------------------------------------------------------
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR and DPLL configuration Based on Package selection pin status(Sysboot[7]) <<<---
Cortex_M4_IPU1_C0: GEL Output: ------------------------------------------------------------------------------------------
Cortex_M4_IPU1_C0: GEL Output: --->>> 15x15 Package Detected(SYSBOOT[7]=0)... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> PRCM Clock Configuration for OPPNOM in progress... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> CORE DPLL OPP 0 clock config is in progress...
Cortex_M4_IPU1_C0: GEL Output: --->>> CORE DPLL OPP 0 is DONE!
Cortex_M4_IPU1_C0: GEL Output: --->>> PER DPLL OPP 0 clock config in progress...
Cortex_M4_IPU1_C0: GEL Output: --->>> PER DPLL OPP 0 is DONE!
Cortex_M4_IPU1_C0: GEL Output: --->>> DSP_GMAC DPLL OPP 0 clock config is in progress...
Cortex_M4_IPU1_C0: GEL Output: --->>> DSP_GMAC DPLL OPP 0 is DONE!
Cortex_M4_IPU1_C0: GEL Output: --->>> EVE_VID_DSP DPLL OPP 0 clock config is in progress...
Cortex_M4_IPU1_C0: GEL Output: --->>> EVE_VID_DSP_DPLL OPP 0 is DONE!
Cortex_M4_IPU1_C0: GEL Output: --->>> PRCM Clock Configuration for OPP 0 is DONE! <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> PRCM Configuration for all modules in progress... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> PRCM Configuration for all modules is DONE! <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR3 initialization starts (TI 15x15 EVM)... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR3 Initialization is in progress ... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR DPLL clock config for 532MHz is in progress...
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR DPLL clock config for 532MHz is in DONE!
Cortex_M4_IPU1_C0: GEL Output:        Launch full leveling
Cortex_M4_IPU1_C0: GEL Output:        Updating slave ratios in PHY_STATUSx registers
Cortex_M4_IPU1_C0: GEL Output:        as per HW leveling output
Cortex_M4_IPU1_C0: GEL Output:        HW leveling is now disabled. Using slave ratios from 
Cortex_M4_IPU1_C0: GEL Output:        PHY_STATUSx registers
Cortex_M4_IPU1_C0: GEL Output: --->>> EMIF1 Narrow Mode config is in progress ... <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> EMIF1 Narrow Mode config is DONE! <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> CANLAB: EMIF1 narrow (16-bit) mode enabled <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> DDR3 532MHz Initialization is DONE! <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> TDA3xx Begin All Pad Configuration for Vision Platform <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> TDA3xx Begin All Pad Configuration for RGMII usage on EVM Platform <<<---
Cortex_M4_IPU1_C0: GEL Output: 	--->>> TDA3xx Begin GMAC_SW MDIO Pad Configuration <<<---
Cortex_M4_IPU1_C0: GEL Output: 	--->>> TDA3xx End GMAC_SW MDIO Pad Configuration <<<---
Cortex_M4_IPU1_C0: GEL Output: 	--->>> TDA3xx Begin GMAC_SW RGMII0 Pad Configuration <<<---
Cortex_M4_IPU1_C0: GEL Output: 	--->>> TDA3xx End GMAC_SW RGMII0 Pad Configuration <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> TDA3xx End All Pad Configuration for RGMII usage on EVM Platform <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> TDA3xx End All Pad Configuration for Vision Platform <<<---
Cortex_M4_IPU1_C0: GEL Output: --->>> TDA3xx Target Connect Sequence DONE !!!!!  <<<---

트러블슈팅

오류에 관한 내용을 정리해 놓은 공식 페이지이다.

https://software-dl.ti.com/ccs/esd/documents/ccsv7_debugging_jtag_connectivity_issues.html

 

Debugging JTAG

 

software-dl.ti.com

 

로그 파일로 원인을 추적할 때 보는 곳은 세 군데다.

  • Test Connection 결과: CCS 화면 출력 또는 ~/.ti/ccs1240/0/0/BrdDat/ 아래 .dat와 함께 생기는 로그
  • Blackhawk 드라이버: bh560v2-dbgjtag.sh 사용 시 /tmp/bh560v2-output.log
  • 설치 문제: /home/server/ti/ccs1240/ccs/install_logs/<날짜시간>/ccs_install_12.4.0.00007.log의 Components installed: 줄
728x90

'TI > TDA3' 카테고리의 다른 글

Vision SDK에서 NDK 네트워크 통신 구성하기  (0) 2026.03.20
UART2 추가 가이드  (0) 2026.02.19
Draw2D를 이용해 한글 표시  (0) 2025.12.31
I2C SLAVE MODE  (0) 2025.06.03
Vision SDK Usecase 사용 방법  (0) 2025.04.16