IAR Power Debugging
목차
Power Debugging
IAR Embedded Workbench의 C-SPY 디버거의 기능 중 하나인 Power Debugging은 디버깅 프로브에 의하여 측정되는 전류 소비량과 수행된 소스코드와의 상관 관계를 확인 할 수 있는 기능입니다. 배터리를 사용하는 소형 IoT 디바이스, 웨어러블 장비 등의 저전력 고효율을 요구하는 디바이스 장비를 개발하는 경우 전류 소비를 최소화 시키는 노력이 필요합니다. 하드웨어의 경우 전류 소비율이 적은 파트를 선정하여 사용하면 전류 소비에 최적화된 하드웨어를 구성할 수 있으나 구성된 하드웨어를 소프트웨어에서 제어를 어떻게 하느냐에 따라 전체의 소비전력은 크게 변할 수 있습니다. 예를들어 사용하지 않는 I/O를 켜 놓는다던가 사용하지 않는 페리페럴을 동작시키는 경우 불필요한 전류를 소비하게 됩니다. 이러한 소프트웨어에 의하여 불필요한 전류 소비를 소비하는 경우를 확인하고 전류소비에 최적화된 소프트웨어 작성을 하기 위하여 실시간으로 전류 소비량과 수행된 코드의 위치를 기록할 수 있는C-SPY의 Power Debugging 기능이 유용하게 사용됩니다.
Power Debugging의 동작
C-SPY 환경에서 Power Debugging을 사용하기 위하여 전류 소비 값을 측정 가능한 I-jet / I-jet Trace / J-link / J-link Ultra 등의 디버깅 프로브 장비가 장비가 필요합니다. 또한 해당 디버깅 프로브의 전원 출력 핀을 통하여 보드에 전원(5V)공급 되어야 하며 디버깅 프로브에 내장된 AD Converter를 이용하여 전류 소비 값을 샘플링 합니다. Power Debugging 기능을 사용하기 위하여 디버깅 프로브와 타겟과의 연결 인터페이스는 SWD를 사용해야 하며 SWO핀이 연결 되어야 합니다.
위의 방법으로는 디버깅 프로브에 의하여 전원이 공급 되어야 하며 전류 소비량 샘플링 또한 보드 전체의 전류소비량만 측정 가능합니다. 만일 보드 전체의 전류 소비량 측정 외 특정 파트에 대한 전류 소비량 측정이나 보드의 전원공급이 디버깅 프로브가 아닌 외부 전원을 사용하는 경우 I-scope라고 하는 별도의 장비를 사용하여야 합니다.
I-scope 장비는 I-jet / I-jet Trace 장비와 연결 가능합니다. 타겟보드와 디버깅 프로브 사이에 연결되며 프로브 핀을 이용하여 특정 전류소비 측정을 수행합니다.
I-scope 장비를 사용하면 최대 전류 1채널과 2채널의 전압을 동시에 측정 가능합니다. 전류를 측정하지 않는다면 동시에 최대 3개 채널에서 전압 측정이 가능합니다.
C-SPY에서의 Power Debugging 사용
C-SPY 디버거 환경에서 Power Debugging을 위하여 Power Log, Power LogSetup, Timeline 그리고 Function Profiler의 디버깅 창이 지원되며 해당 창들은 C-SPY 디버거 환경에서 디버깅 프로브 메뉴에서 실행 할 수 있습니다.
Power Log
Power Log 창에서는 응용 프로그램 동작 중PC(Program Counter), 전류 소비량과 측정 전압을 기록하는 창입니다. 측정 전압 값은 I-scope를 이용하여 전압 측정을 하였을 경우만 기록되며 I-scope 장비가 연결되지 않은 경우에는 전압을 측정할 수 없습니다.
Power Log 창에 기록된 전류와 전압 샘플링 값은 측정된 위치의 수행된 실행 코드와 상관 관계를 가지고 있으며 해당 샘플을 더블 클릭하시면 연관된 실행 코드 위치를 에디터 창에 표시합니다.
Timeline
Timeline 창은 응용프로그램의 실행 중 측정되는 값을 시간 경과에 따른 값을 확인 할 수 있도록 그래프화 하여 출력하는 창입니다. Timeline 창을 이용하시면 응용 프로그램 실행 중 전류 소비의 전반적인 전류소비 양상과 패턴을 한눈에 볼 수 있습니다. 그래프의 시간 단위의 조정이 가능하며 Power Log 창과 마찬가지로 측정된 샘플을 더블 클릭하면 연관된 실행 코드 위치를 에디터 창에 표시합니다.
Function Profiler
함수의 프로파일링 정보를 확인 할 수 있는 Function Profiler 창은 응용 프로그램이 실행 되는 동안 가장 많이 시간을 소비하고 있는 함수가 어떠한 함수인지 파악하는데 유용하게 사용됩니다. 이러한 Function Profiler창에 PC(Program Counter) 샘플 카운터 외 전류 소비량의 샘플 데이터 또한 출력할 수 있어 함수 별 전류 소비율, 최대 전류량, 최소 전류량, 평균 전류량을 확인 할 수 있습니다.
Power Log Setup
Power Log Setup 창은 Power Debugging 사용의 기본 설정을 할 수 있는 창입니다. 전류와 전압의 단위 설정, I-scope 장비를 이용 시 연결되어있는 Shunt 저장 크기 입력 등의 다양한 연결 정보 설정과 측정되는 전류, 전압 샘플에 따른 Action 설정이 가능합니다.
예를 들어, 기준 전류 값을 200mA로 설정 후 Power Log의 Action 에 ‘Log All and Halt CPU Above Threshold’를 선택하게 되면 응용 프로그램 동작 중 전류 샘플이 200mA 이 넘게 될 때 CPU가 멈추게 됩니다. 해당 기능을 활용하면 특정 전류 소비량을 넘어 초과할 경우 수행되는 소스 코드들을 쉽게 파악할 수 있어 전류 소비에 최적화된 소스 코드를 만들기 위하여 유용하게 사용됩니다.
Power Debugging을 효과적으로 하기 위한 많은 디버깅 창이 지원되고 있으며 다양하게 활용 될 수 있습니다. 전류, 전압 측정이 가능한 디버깅 프로브의 측정 성능에 제한이 있어 Current Meter와 Oscilloscope 처럼 높은 정밀도를 갖고 전류, 전압 값을 측정하지 못하지만 전류 소비와 소스 코드 수행의 상관관계 파악으로 좀 더 빠르고 쉽게 전류 소비에 가장 최적화된 소스 코드를 작성 가능하게 도와드립니다.