Hardware와 Software Co-Debugging Solution

TRACE32
Admin (토론 | 기여) 사용자의 2015년 4월 24일 (금) 11:24 판

이동: 둘러보기, 검색

Hardware Software Co-Debugging with TRACE32

Hardware와 Software Co-Debugging 관점에서 Software동작에 따른 Hardware 신호들의 변화는 크게 Digital logic 신호와 Analog 신호들이 있겠습니다. 시스템 개발자들은 상황에 따라 특정 Software가 동작할 당시에 해당 코드와 동기 하여 Digital 또는 Analog 신호들의 변화 추이를 비교 분석하고 싶을 때가 있습니다. 또한 최근 Mobile 기기와 같은 Digital Device들은 많게는 10여개가 넘는 CPU core들로 구성되고 있어 Power Consumption에 대한 Issue가 날로 증대 되고 있으며 Software와 연동하여 그 추이를 분석하고 최적화하는데 많은 관심을 갖게 되었습니다. 가령 스탠바이 또는 동작시간과 같은 파라미터 들은 휴대폰과 같은 Mobile 기기의 동작에 중요한 요소가 되었으며 그러한 이유로 소모전류 최적화를 위한 포괄적인 측정 분석 그리고 개선을 위한 시도들이 꾸준히 증대되고 있습니다.

일반적으로 그에 대한 Debugging 또는 측정 및 분석은

* Hardware와 Software는 각각 독립적으로 측정과 분석이 이루어 졌고

* 특히 Power Consumption의 경우 Power-saving 기능을 가진 절전소자를 사용한다거나

* CPU core의 동작 주파수나 공급 전원을 가변 하여 사용하도록 하며

* 외부 메모리에서 코드 실행 대비 절전 기능이 우수한 cache와 on-chip 메모리를 포함하는 core들을 사용하는 것 등의 방법으로 이루어 졌습니다.

 

그러나 이러한 각 개별 특성에 대한 분석과 개선은 만족할 만한 수준의 결과를 가져다 주지 못했고 아직도 다양한 시도들이 이루어지고 있습니다. 특히 Software와 Hardware의 독립적인 측정 및 분석은 결과를 도출하고 검증하는데 많은 시간과 비용을 지불할 수 밖에 없습니다.

소비전력 절감의 최적화의 경우에 소프트웨어가 하드웨어의 모든 절전기능을 지속적으로 연계하여 통제하는 시도들을 진행 중에 있으며 전류, 전압 그리고 시간의 능동적인 조합을 통해 어플리케이션 각각의 동작모드에서 각 인자들의 최적의 설정 값을 찾아내 최적화 목적을 달성해 가고 있습니다. 예를 들면

마이크로프로세서는 해당 시간에 정확히 power-saving 모드에 들어가는지, 프로그램이 얼마만큼 전력소모에 영향을 주는지 그리고 예상치 못한 power peak는 없는지 등의 전류, 전압 변화뿐만 아니라 제어 소프트웨어의 프로그램과 데이터 흐름분석 측정 그리고 기록을 통해 서로의 연관성을 유기적으로 분석하고 올바르게 제어하는 메커니즘을 채용하고 있습니다. 따라서 이러한 최적화 작업을 위해서는 적절한 계측 분석 결과와 해당 결과들의 연관성을 쉽게 볼 수 있도록 해 주는 테스트 및 분석 환경이 확보되어야 합니다.

 

Requirements

각각의 코드에 따른 Hardware의 변화 추이를 구체화하기 위해서 아래와 같은 데이터가 수집 되어야 합니다

* 발생 순서대로의 제어 소프트웨어 프로그램의 흐름

      - 최근에는 real-time trace가 가능한 디버거(ex. ARM의 ETM trace)가 이런 일을 위해 사용되고 있음

 * Software동작에 따른 Hardware 신호(Digital 혹은 Analog)들의 변화추이

      - Analog/digital signal 측정이 가능한 Logic analyzer나 Current Probe등이 여기에 속함

 * 기록된 프로그램 실행 History와 Hardware 측정 결과 값들과의 연관성 있는 분석 결과 출력

      - Code Flow chart와 Hardware 신호들의 Timing Chart 및 Synchronization

      - Hardware 신호들의 Decoding Chart 및 Code Flow와 Synchronization

앞에서 언급한 것처럼 대단히 어려운 부분은 측정된 전류나 전압과 같은 Analog 신호 정보와 Digital 신호 정보들을 프로그램 흐름 정보와 상호 연관시켜 분석해 내는 것입니다. 만약 서로 다른 제조사로부터 완벽하게 통합되지 않는 이종 장비들을 사용한다면, 출력 데이터들의 관련 연관성 확보가 엄청나게 복잡해질 뿐 아니라 Timing상의 매우 큰 오차를 유발할 수 밖에 없습니다. 이러한 문제에 대한 솔루션으로 해당 정보들의 통합 오차를 최대하 줄이기 위하여 각 정보들의 Time Stamp와 Synchronization 위한 Hardware 통합 방법론이 적용된 TRACE32 Hardware Analyzer 제품군은 기존의 사용하던 Debug GUI를 그대로 사용하므로 친화적인 화면과 최적의 방법을 제공합니다.

 

 

Solution

TRACE32는 디버거로서 소스코드 흐름제어와 및 프로그램 실행 History를 분석을 보여줄 수 있는  Real-Time Trace와 Hardware 신호분석을 위한 Logic analyzer 및 AnalogProbe를 제공함으로써 각 Hardware 소자들의 신호측정 및 Nano-Second TimeStamp를 기준으로 모든 정보들을 일관성 있게 정렬하여 동기화된 Hardware Software 분석 결과를 제공할 수 있습니다.

따라서 Hardware 신호 측정결과들의 저장 값과의 Code Flow의 연관성을 보여줄 수 있기 때문에 특정 Code 실행 시 Hardware 신호나 그 신호로부터 Decoding된 분석 결과와 동기해 결과를 확인해 볼 수 있습니다.

 

각각의 함수별/모듈별/프로세스별 소모되는 power consumption이나 특정 상태에서 코드 실행 시특정 Logic 신호 또는 Analog 신호들을 확인해 볼 수 있도록 해줍니다

 

이러한 데이터 분석을 위하여 TRACE32는 크게 Code Flow 분석을 위한 PowerTraceII/CombiProbe /uTRACE, Digital Logic 분석을 위한 PowerIntegrator/PowerProbe, Analog 신호분석을 위한 AnalogProbe의 3가지 제품군을 가지고 있습니다. 본 제품들은 모듈화 되어 있어 필요에 따라 옵션으로 사용을 결정할 수 있습니다.

 

 

PoweTraceII

 CombiProbe와 uTRACE는 PowerTraceII의 축소본(외형은 Appendix참조)

-      Program Flow를 분석을 통해 함수/모듈/프로세스별 Flow chart를 분서

-      각 함수/모듈/프로세스별 Profiling

-      Event에 의한 Trigger를 통해 해당 Event 주변의 Code Flow를 분석

-      Event에 의해 PowerIntegrator/AnalogProbe Trace Trigger

-      Code Coverage 분석

 

 

 

 

PoweIntegrator/PowerProbe

(외형은 Appendix참조)

-  102Channel(PowerIntegratorII)

-  204Channel(PowerIntegrator)/64Channel(PowerProbe)

-  Hardware Event에 의한 PowerTraceII/AnalogProbe Trace Trigger

-  Code Coverage 분석

-  Protocol Analyzer : USB, SPI, I2C, CAN, JTAG, DigiRF etc.

 

 

 

Analog Probe

(외형은 Appendix참조)

-  최대 4개의 전압과 3개의 전류 채널에 대한 real-time 측정

-  전압과 전류 전력에 대한 측정 영역과 Limit에 대해 real-time trigger

 

전류측정을 위해서는 Shunt 저항이 해당 device의 전원 라인에 필요하게 됩니다.

이 저항에서의 전압감소는 저항 값에 따라 달라지며, 전류 또한 비례해집니다. 이 전압 값은 TRACE32 Analog Probe에 의해서 측정 됩니다.

이러한 측정 방법이 보편적으로 사용되는 방법이며 전류, 전압 그리고 shunt 저항 값은 그래픽 유저 인터페이스를 통해 제어할 수 있다. 전력은 수집된 전류, 전압 값에 따라 계산되며 고정된 전압으로 계산되도록 할 수 있다.

 

전류, 전압 그리고 소비전력은 시간에 연관해서 그래프 또는 테이블로 표시되어 지며 모든 화면(프로그램 흐름, 챠트, 전류, 전압, 전력)은 시간과 동기화 되어 서로 연동(track) 되어 집니다

만약에 어떤 임의의 시점을 선택한다면 다른 윈도우들도 자동으로 해당되는 시점을 기반으로  re-flash되어 표시되어 집니다.

아래는 8개의 LED들이 연속적으로 스위칭 되고 Sign파 전압이 생성 되는 예제입니다.

그래프 ①은 현재시점의 에너지가 계단 형태로 증가됨을 보여주고 있으며 전압의 형태가 Sign파라는 것은 전압-시간 그래프를 통해서 확인할 수 있습니다.

전류 ① 전압 ②그리고 프로그램 차트 ③화면에서 LED3_on 함수가 검정색 수직라인에 정렬되어 있음을 볼 수 있고 TRACE.List 화면 ④에서는 이와 연관된 소스코드가 수평 바에 의해서 동기화 되어 표시되고 있음을 확인 하실 수 있습니다

 

통계적인 분석은 각각의 프로그램 정지 후에 자동으로 수행되며 여기에서는 실행된 개별함수에 대해서 소모되는 소비전력의 최소, 최대, 평균 값에 대한 정보를 제공합니다. 전체 소비전력에서의 점유율 또한 각각의 함수에 대해서도 계산되어 가장 많은 전력소모의 원인이 되는 프로그램 파트를 쉽게 파악할 수 있도록 해줍니다

 

이 bar챠트 ⑤는 LED8_on 함수가 가장 높은 전력소모가 되었음을 의미합니다.

 

전압과 전류에 대해 trigger 시점을 정의할 수 있으며 내부 trigger unit에 의해서 저장의 시작 및
선택적인 저장 또한 가능해집니다. 또한 trigger 신호는 실시간으로 프로그램을 정지 시킬 수 있어서 이는 현재 전류피크의 원인을 매우 빠르게 파악하도록 도와줍니다.

 

또한 TRACE32는 타 장비와의 연동이 가능한 API를 제공하고 있어서 열 감지 카메라와 같은 장비와 연동하면 앞서 소개한 소모전력이 변동될 때 어떤 프로그램이 실행되고 있으며, 이 경우 어떤

디바이스가 동작을 하고 있는지 또는 문제가 발생이 되는지를 열 감지 영상과 함께 볼수 있도록

하여 정상적인 전류 이상으로 발생하는 소자의 문제 또한 검출이 용이하도록 해줍니다

 

Summary

TRACE32 PowerTraceII(CombiProbe/uTRACE) PowerIntegrator(PoweProbe) AnalogProbe는 Software Hardware Co-debugging을 효과적으로 실행할 수 있도록 Hardware적인 통합 솔루션을 제공합니다. 따라서 코드 실행에 따른 Hardware 신호들과 동기하며 그에 따른 분석결과를 제공합니다. 일예로 에너지 분석을 위한 통합된 소비전력 측정 솔루션은 개발자들로 하여금 프로그램 코드와 그에 따른 전류/ 전압 소비의 상관관계를 검출하는데 사용하기 쉽고 신뢰할 수 있는 결과를 도출하도록 도와줍니다.

이러한 기능들은 기존의 TRACE32의 사용자 인터페이스에 통합되어 있으며 기존 디지털기기 개발

뿐 아니라 Mobile 기기 제조사와의 긴밀한 협력의 결과로 실질적인 적용이 가능해졌으며

TRACE32는 한번 더 이 분야의 개발 툴로서의 혁신적인 기술과 유용성을 증명하고 있습니다.

TRACE32 Hardware Software Co-Debugging 솔루션은 모듈구조 컨셉이 그대로 적용되어서

이미 사용 중인 기존고객들에게도 유연한 확장성을 제공하며 이러한 솔루션 개발을 통해서

지속적인 고객가치를 제공 하고 있으며 앞으로도 최고의 개발 솔루션 제공을 위해

끊임없이 노력할 것입니다.

 

관련 문의는 trace32@mdstec.com으로 해주십시오

 

Appendix – Hardware Configuration Options

 

# Option 1

 

 

 

 

 

Option 2

 

 

 

Option 3