C-SPY로 수행하는 애플리케이션의 전류 소모량 최적화
상태바
C-SPY로 수행하는 애플리케이션의 전류 소모량 최적화
  • 박진희 기자
  • 승인 2019.04.26 09:05
  • 댓글 0
이 기사를 공유합니다

[테크월드=박진희 기자] 일반적으로 가장 많이 사용되는 보드 전체 또는 보드의 특정 파트의 전류소모를 측정하는 방법은 전류 측정장비(Current meter)를 사용하는 방법이다. 전류측정 장비를 사용하면 다른 어떤 방법보다 아주 정확한 전류 소비량 측정이 가능하다. 하지만 이런 방법의 소비전류 측정은 측정된 전류 소비량과 수행된 코드와의 상관관계 확인이 되지않아 전류소비량이 최좀 소화된 소프트웨어를 작성하는데 큰 도움은 되지 않는다.

이에반해 C-SPY의 파워디버깅(Power Debugging) 기능은 디버깅 프로브 또는 특정 장비를 이용해 전류 소모량을 샘플링하는 동시에 MCU의 PC(Program Counter)를 샘플링한다. 즉, PC 값을 동시에 기록하기에 애플리케이션의 코드 수행에 따른 전류 변화를 알 수 있다. 이는 전류 소모량에 최적화된 소프트웨어 개발에 많은 도움이 될 수 있다. 이번에는 파워 디버깅 의 동작과 사용법에 대해 알아보고자 한다.

파워디버깅이란 무엇인가

IAR Embedded Workbench의 C-SPY 디버거의 기능 중 하나인 파워 디버깅은 디버깅 프로브에 의해 측정되는 전류 소비량과 수행된 소스코드와의 상관 관계를 확인 할 수 있는 기능이다. 배터리를 사용하는 소형 IoT 디바이스, 웨어러블 장비 등의 저전력 고효율을 요구하는 디바이스 장비를 개발하는 경우 전류 소비를 최소화 시키는 노력이 필요하다.

하드웨어의 경우 전류 소비율이 적은 파트를 선정해 사용하면 전류 소비에 최적화된 하드웨어를 구성할 수 있으나 구성된 하드웨어를 소프트웨어에서 제어를 어떻게 하느냐에 따라 전체의 전류소비율은 크게 변할 수 있다. 예를들어 사용하지 않는 I/O를 켜 놓는다던가 사용하지 않는 주변장치을 동작시키는 경우 불필요한 전류를 소비하게된다.

이런 소프트웨어에 의해 불필요한 전류 소비를 소비하는 경우를 확인하고 전류소비에 최적화된 소프트웨어 작성을 해야 할 경우, 실시간으로 전류 소비량과 수행된 코드의 위치를 기록할 수 있는C-SPY의 파워 디버깅 기능이 유용하게 사용된다. 

파워디버깅의 동작 

C-SPY 환경에서 파워 디버깅을 사용하기 위해 전류 소비값을 측정할 수 있는 I-jet / I-jet Trace / J-link / J-link Ultra 등의 디버깅 프로브 장비가 필요하다. 또한 해당 디버깅 프로브의 전원 출력핀을 통해 보드에 전원(5V)이 공급돼야하며 디버깅 프로브에 내장된 AD 컨버터를 이용해 전류 소비 값을 샘플링한다. 파워디버깅 기능을 사용하기 위해 디버깅 프로브와 타깃과의 연결 인터페이스는 SWD를 사용해야 하며 SWO핀이 연결 돼야 한다.

[그림 1]

[그림 1]의 방법으로는 디버깅 프로브에 의해 전원이 공급되며 전류 소비량 샘플링 또한 보드 전체의 전류소비량만 측정 할 수 있다. 만일 보드 전체의 전류 소비량 측정 외 특정 파트에 대한 전류 소비량 측정이나 보드의 전원공급이 디버깅 프로브가 아닌 외부 전원을 사용하는 경우 I-scope라고 하는 별도의 장비를 사용해야 한다.

[그림 2] IAR I-jet 프로브
[그림 3] IAR I-jet Trace

I-scope 장비는 I-jet / I-jet Trace 장비와 연결 할 수 있으며, 타깃보드와 디버깅 프로브 사이에 연결되고 프로브 핀을 이용해 특정 전류소비 측정을 수행한다. I-scope 장비를 사용하면 최대 전류 1채널과 2채널의 전압을 동시에 측정가능하다. 전류를 측정하지 않는다면 동시에 최대 3개 채널에서 전압 측정이 가능하다.

C-SPY에서의 파워디버깅 사용

C-SPY 디버거 환경에서 파워 디버깅을 위해 Power Log, Power Log Setup, Timeline 그리고 Function Profiler 의 디버깅 창이 지원된다. 해당 창들은 C-SPY 디버거 환경의 디버깅 프로브 메뉴에서 실행 할 수 있다.

Power Log 

Power Log 창에서는 응용 프로그램 동작 중PC(Program Counter), 전류 소비량과 측정 전압을 기록하는 창이다. 측정 전압 값은 I-scope를 이용해 전압 측정을 했을 경우에만 기록되며 I-scope 장비가 연결되지 않은 경우에는 전압을 측정할 수 없다.

[그림 4] Power Log 창

[그림 4]에 기록된 전류와 전압 샘플링 값은 측정된 위치의 수행된 실행 코드와 상관 관계를 가지고 있으며 해당 샘플을 더블클릭하면 연관된 실행 코드 위치를 에디터창에 표시한다. 

Timeline 

[그림 5]는 애플리케이션의 실행 중 측정되는 값을 시간 경과에 따른 값을 확인 할 수 있도록 그래프화 해 출력하는 창이다. Timeline 창을 이용하면 애플리케이션 실행 중 전류 소비의 전반적인 전류소비 양상과 패턴을 한 눈에 볼 수있다. 그래프의 시간 단위의 조정이 가능하며 Power Log 창과 마찬가지로 측정된 샘플을 더블클릭하면 연관된 실행 코드 위치를 에디터창에 표시한다.

[그림 5] Timeline 창

Function Profiler

함수의 프로파일링 정보를 확인 할 수 있는 [그림 6]은 응용 프로그램이 실행 되는 동안 가장 많이 시간을 소비하고 있는 함수가 어떤 함수인지 파악하는데 유용하게 사용된다. Function Profiler창에 PC(Program Counter) 샘플 카운터 외 전류 소비량의 샘플 데이터 또한 출력할 수 있어 함수 별 전류 소비율, 최대 전류량, 최소 전류량, 평균 전류량을 확인할 수 있다.

[그림 6] Function Profiler 창

Power Log Setup

Power Log Setup 창은 파워디버깅 사용의 기본 설정을 할 수 있는 창이다. 전류와 전압의 단위 설정, I-scope 장비를 이용 시 연결돼있는 Shunt 저장 크기 입력 등의 다양한 연결 정보 설정과 측정되는 전류, 전압 샘플에 따른 Action 설정이 가능하다.

예를 들어, 기준 전류값을 200mA로 설정 후 Power Log의 Action에 Log All and Halt CPU Above Threshold를 선택하면 애플리케이션 동작 중 전류 샘플이 200mA 이 넘으면 CPU를 멈추게 된다. 해당 기능을 활용하면 특정 전류 소비량을 넘어 초과할 경우 수행되는 소스코드를 쉽게 파악할 수 있어 전류 소비에 최적화된 소스 코드를 만들어야 할 경우 유용하다.

[그림 7] Power Log Setup 창

맺음말

파워 디버깅을 효과적으로 하기위한 많은 디버깅 창이 지원되고 있으며 다양하게 활용 될 수 있다. 전류, 전압 측정이 가능한 디버깅 프로브의 측정 성능에 제한이 있어 전류계(Current Meter)와 오실로스코프(Oscilloscope) 처럼 높은 정밀도를 갖고 전류, 전압 값을 측정하지는 못하지만 전류 소비와 소스코드 수행의 상관관계 파악으로 좀 더 빠르고 쉽게 전류 소비에 가장 최적화된 소스코드를 작성할 수 있도록 도와준다.

 

작성 IAR Systems 이현도 과장 Hyun-Do.Lee@iar.com


관련기사

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
0 / 400
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.