SWO

TRACE32
Admin (토론 | 기여) 사용자의 2015년 5월 29일 (금) 13:25 판

이동: 둘러보기, 검색

Serial Wire Output 란

CoreSight 기반한 chip 에서 2pin debug 통신 프로토콜인 Serial Wire Debug 를 지원할 경우, Serial Wire Output 을 이용하여 1pin trace를 받을 수 있습니다. Serial Wire Debug 신호는 Serial Wire Clock(SWCLK), Serial Wire Data I/O(SWDIO) 이며, JTAG 신호에서 TCK와 TMS 신호 사용합니다.

     

총 3pin으로 ITM data를 받아볼 수 있으며 Pin 설정은 10pin일 경우 아래와 같은 pin map을 가질 수 있습니다.

             

Compiler 적용 방법 (for Cortex-M)


1)    IAR EWARM

IAR Compiler에서는 SWO Library 제공

Option 적용으로 SWO output 가능

   

 

2)    Keil uVision

SWO trace를 위한 Retargeting 코드가 적용되어야, SWO output 가능

 

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))

#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))

#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))

#define TRCENA          0x01000000

/* USER CODE BEGIN PV */

struct __FILE { int handle; /* Add whatever needed */ };

FILE __stdout;

FILE __stdin;

int fputc(int ch, FILE *f) {

  if (DEMCR & TRCENA) {

    while (ITM_Port32(0) == 0);

    //ITM_Port32(0) = ch;

ITM_Port8(0) = ch;

  }

  return(ch);

}

 

TRACE32 Serial Wire Debug Out(SWO) 설정 및 예시

 

1)    TRACE32 Combiprobe cable

-      SWO 1pin trace를 받기 위해서는 TRACE32 Combiprobe cable이 필요합니다.  

     

2)    Serial Wire Debug Port (SWDP) Powerview 설정 명령어


 ①     SWDP 통신 연결 설정

SYStem.CONFIG SWDP ON

SYStem.Up

 

②    TPIU pin을 Serial Wire Viewer mode의 ITM trace를 위한 ETM off설정

ETM.OFF

   

③     Port size와 ITM 설정,

 비동기적인 Serial Wire Output 신호는 CPU frequency에 받음에 따라 bit rate를 조정 가능

à NRZ/2 는 CPU frequency를 둘로 나눌 경우

ITM.PortSize SWV

ITM.PortMode <format>

 

④     bit rate를 고정적으로 설정할 경우 (Autofocus나 TraceClock 설정 중 가능)

CAnalyzer.TraceCLOCK <frequency>

 

⑤     자동으로 최적의 clock 을 찾는 Autofoucs 기능을 사용할 경우

(Autofocus나 TraceClock 설정 중 가능)

CAnalyzer.AutoFocus

   

3)    Printf를 SWO 1pin으로 trace 받을 경우 예시

printf를 SWO 1pin trace를 이용하여 해당 printf 코드에 해당하는 data를 받아 볼 수 있습니다.  

SYStem.CONFIG.SWDP ON

SYStem.Up

 

ITM.PortMode NRZ

ITM.PortSize SWV

CAnalyzer.Init

CAnalyzer.AutoFocus

 

 

문자열 형태로 printf를 받는 것은 현재 구현 중이며, dll파일을 이용하여 해당 data log를 문자열 형태로 확인이 가능합니다.