임베디드

Trace32 디버깅에 대해서

embeddedworld 2025. 3. 23. 16:53

임베디드 시스템을 개발할 때, 코드 디버깅은 필수적인 과정이다. 특히, 실시간 운영체제(RTOS) 기반의 시스템이나 멀티코어 환경에서는 단순한 소프트웨어 디버거로는 한계가 있다. 이때 Lauterbach의 Trace32 같은 강력한 하드웨어 디버거가 필요하다.

이번 글에서는 Trace32의 개념, 주요 기능, 실전 활용법을 다룬다.



1. Trace32란 무엇인가?


Trace32는 독일 Lauterbach사가 개발한 하드웨어 디버거 및 트레이스 분석 도구다. 특히 임베디드 시스템, 멀티코어 프로세서, RTOS 기반 시스템을 디버깅할 때 강력한 성능을 발휘한다.

<Trace32의 주요 특징>
• JTAG 디버깅: 칩 내부를 직접 제어하여 레지스터 및 메모리를 분석
• 트레이스(Trace) 기능: 프로그램 실행 흐름을 기록하고 분석
• RTOS 지원: FreeRTOS, QNX, VxWorks 등 다양한 RTOS 디버깅 가능
• 멀티코어 디버깅: 다중 코어 프로세서에서 각 코어의 실행 상태를 추적
• Flash 프로그래밍: 내장 Flash 메모리에 직접 코드 다운로드 및 디버깅

<지원 아키텍처>
• ARM (Cortex-M, Cortex-A, Cortex-R 등)
• PowerPC (e200, e500, e6500 등)
• RISC-V
• x86 및 x86-64
• 기타 다양한 MCU 및 DSP



2. Trace32 하드웨어 구성


Trace32는 크게 PowerDebug와 PowerTrace 두 가지 하드웨어 모듈로 구성된다.
1. PowerDebug
• JTAG, SWD 인터페이스를 통해 타겟 보드와 연결
• 기본적인 디버깅 기능 제공 (Break, Step, Memory Watch 등)

2. PowerTrace
• 트레이스 데이터를 수집하여 실행 흐름을 기록
• 하드웨어 버퍼를 활용해 실시간 분석 가능
• 멀티코어 및 RTOS 환경에서 실행 흐름을 정밀하게 추적

<타겟 보드 연결 예시>

[PC] ─── [Trace32 Debugger] ─── [JTAG/SWD] ─── [Target Board]

PC에서 Trace32 소프트웨어를 실행하면 디버거 하드웨어를 통해 MCU의 상태를 실시간으로 분석할 수 있다.



3. Trace32 기본 명령어 및 인터페이스


Trace32는 자체적인 T32 스크립트 언어를 사용하며, GUI와 명령어 기반 인터페이스를 모두 제공한다.

<Trace32 주요 명령어>

Trace32 명령어


<Trace32 실행 예제>
1. 프로그램 로드 및 실행
Data.LOAD.Elf my_program.elf
GO

2. 브레이크포인트 설정 및 변수 값 확인
BREAK main
GO
VAR.SHOW my_variable

3. 레지스터 및 메모리 조회
R R0  ; ARM 레지스터 R0 값 출력
DUMP 0x20000000 0x100 ; 특정 메모리 영역 덤프

4. 실행 흐름 추적 (Trace 기능)

TRACE.START
GO
TRACE.STOP
TRACE.DISPLAY

프로그램의 실행 흐름을 분석하려면 트레이스를 활성화한다. 프로그램이 어떤 순서로 실행되었는지 분석할 수 있다.



5. Trace32의 고급 기능

5.1 RTOS 디버깅


Trace32는 FreeRTOS, VxWorks, QNX 등의 RTOS를 지원하며, 태스크(Task) 단위 디버깅이 가능하다.

TASKS

이 명령을 실행하면 현재 실행 중인 태스크 목록을 확인할 수 있다.

5.2 멀티코어 디버깅


멀티코어 시스템에서는 특정 코어를 선택하여 디버깅할 수 있다.

CORE.SELECT 1  ; 1번 코어 선택
GO

5.3 Flash 프로그래밍


내장 플래시에 직접 코드를 다운로드하고 실행할 수 있다.

FLASH.Program debug_test.hex
GO



6. 마치며


Trace32는 단순한 JTAG 디버거를 넘어 트레이스 분석, 멀티코어 디버깅, RTOS 지원 등의 강력한 기능을 제공한다. 특히 임베디드 시스템에서 하드웨어 동작을 정확히 분석해야 할 때 필수적인 도구다.