파워 최적화 : 파워 디버깅

글 고성용 이사(Sung-Yong.Ko@iar.com)/ IAR Systems Korea


1. 파워 디버깅이란?

많은 임베디드 시스템에서 긴 배터리 사용시간은 아주 중요한 요소로 부각되고 있다. 파워 소비는 하드웨어의 설계뿐만이 아니라 시스템 소프트웨어에서 어떻게 사용하고 어떻게 제어를 하느냐에도 큰 영향을 받는다.

파워 디버깅이란 임베디드 시스템에서 소프트웨어 실행이 어떻게 시스템 수준의 파워 소비에 영향을 주는지에 대한 정보를 소프트웨어 개발자들에게 제공해주는 방법론인 것이다. 즉, 소스 코드에 파워 소비를 결합함으로써 파워 최적화에 대한 테스트와 조율을 가능케 해주는 것이다. 다음 그림 1과 같이 파워 소비에 대한 내용을 부가적인 측정장비 없이 IAR EWARM C-SPY에서 확인할 수 있어 파워 소비에 대한 최적화 구현에 도움이 된다.




2. 파워 디버깅의 구현

어떠한 방법으로 파워 디버깅이 구현되는지를 살펴보자.  I-jet/J-link ultra등의 debug probe를 통해 5V 전원을 타깃 보드에 공급한다.



이는 JTAG 19 pin을 통해 연결되며, 타깃 보드에서는 MCU에 필요한 3.3 volt 등으로 변환하여 사용하며, 변환된 전압을 피드백하여 사용전압을 표시한다.
I-jet/J-link ultra 내부에 AD converter가 내장되어 있어 사용되는 전류량을 측정할 수 있는 것이다. 요즘 많이 사용되고 있는 Cortex-M3/M4 core에는 CoreSight라는 debug Logic이 포함되어 있다.
이를 통해 디버깅에 필요한 여러 정보들을 효율적으로 취합 할 수 있다. 그림 3에서 보이는 것처럼 디버그 블록으로 DWT(Data Watchpoint and Trace), FPB(Flash Patch and Breakpoint), ITM(Instruction Trace Macrocell), ETM(Embedded Trace Macrocell), DAP(Debug Access Port)등의 구성을 보이고 있다. DWT에서는 PC(Program Counter) 정보를, ITM에서는 시간에 대한 정보를 얻을 수 있다.



JTAG/SWO 인터페이스와 Debug API와 Power API를 통해 IAR Embedded Workbench로 정보들이 전달된다. 이러한 경로를 통해 앞에서 살펴 본 내용들의 PC, Time, 그리고 소비전류에 대한 정보를 레코드화 할 수 있다.


3. IAR C-SPY의 파워 디버깅

 IAR C-SPY 디버거에서 지원하는 파워 디버깅 기능에 대하여 알아보도록 하자.
Power Log, Timeline 그리고 Function Profiler에서 파워 디버깅에 필요한 정보를 제공한다.



3.1 파워로그
파워 로그는 모든 수집된 파워 샘플에 대한 로그이다. 여기서 파워 샘플의 최고 값을 찾는 데는 유용하게 쓰이며 또한 파워 샘플과 실행 코드간에 연관성을 가지고 있기 때문에 파워 로그에서 더블클릭을 하면 해당 샘플과 연관된 소스코드의 위치를 표시한다.



3.2 타임라인
Timeline window에서는 시간 정보와 함께 파워 샘플에 대한 소비전류 값을 그래프로 표현하여 시각적으로 소비전류에 대한 상황을 쉽게 파악할 수 있게 해, 파워 소비에 대한 양상을 시간 단위를 조정하면서 파악할 수 있다.



3.3 함수 프로파일러
Function Profiler는 실행되는 동안 가장 많은 시간을 소비하고 있는 함수들이 어떤 것들인지를 파악하는데 매우 유용하다. Function Profiler와 Power Profiler를 결합시켜 함수 당 소비전류에 대한 내용을 측정할 수 있다.



또한 Function Prof iler는 함수에 대한 리스트를 나열하며, 파워 소비전류에 대한 평균치, 최대, 최소값을 표시한다.

4. 파워를 위한 코드 최적화 
 파워 소비에 영향을 줄 수 있는 내용에 대해 살펴보면서 소스 코드 작성시 고려해야 할 점들을 알아보자.

4.1 주변 장치 상태 변화 기다리기
예를 들어 주변 장치에 대한 상태 변화를 기다리기 위해 poll loop를 사용한다. 

while (USBD_GetState() < USBD_STATE_CONFIGURED);
while ((BASE_PMC->PMC_SR & MC_MCKRDY) ! = PMC_MCKRDY);

소프트웨어 지연 기능을 수행하기 위해 다음의 코드를 사용하게 된다.

i = 10000; // SW Delay
do i--;
while (i != 0);

이런 식으로 처리되는 경우 CPU가 계속적인 체크 동작을 해야 한다. 이를 이벤트나 Timer Interrupt를 사용하는 방식으로 변경함으로 소비전류를 줄일 수 있다.

4.2 DMA vs. polled I/O
DMA는 전통적으로 전송 속도를 증가시키는데 사용한다. CPU가 데이터를 이동하기 위해 계속 작업을 하면 그 만큼 많은 소비전류를 야기시킬 것이다. polling 방식의 처리는 지양해야 한다. 어떤 아키텍처에서는 CPU가 슬립모드에서도 DMA 전송이 가능하기도 하여 CPU의 부하를 줄일 수 있다.

4.3 저전력모드 진단
Low Power Mode에 대해 작업지향적 설계(Task-oriented design)로 구성되거나 RTOS를 사용하는 것은 아주 좋은 접근 방법이다. 작업지향적 설계에서는 한 Task 를 최하위 우선순위로 설정 할 수 있고, 이 Task는 다른 Task가 없는 경우에만 실행이 될 것이다. 이런 idle Task는 power management를 하기에 아주 적합한 곳이 된다. idle Task 가 실행 될 때 마다 Low Power Mode로 진입한다. power debugging tool은 다른 low-level modes을 정교하게 만드는 경우에 매우 유용하게 사용 된다. Function Profiler 는 Low Power Mode로 진입하는 Task나 함수에 대해 파워 측정에 대한 비교를 할 때 이용한다. 평균 값과 전체 파워 소비의 퍼센트는 비교 시에 유용한 정보가 된다.

4.4 CPU 주파수
CMOS MCU에 있어 파워 소비에 대한 공식은 이론상으로는 다음과 같다.
P = f x U^2 x k
( f 는 clock frequency, U 는 supply voltage 그리고 k 는 상수 값 )

위의 식에서 보면 주파수가 높을수록 많은 전류를 소비한다는 뜻이 된다. 거의 sleep mode가 없는 경우라면 50MHz에서 소요된 시간이 100MHz일 때는 50%로 시간이 단축된다는 의미이다. 즉, 높은 주파수는 실행 속도가 빨라지므로 소요 시간이 짧아져서 전체적인 파워 소비는 대등할 수 있다. 그러므로 프로그램의 상황에 따라서 적절한 선택을 해야 한다.

4.5 인터럽트에서 파워 소비 처리
그림 8은 인터럽트에서 파워 소비에 대한 처리 내용이다. 우선 순위가 낮은 인터럽트가 t1에서 발생하여 I1의 전류를 사용한다. 이때 우선 순위가 더 높은 인터럽트가 발생이 되는 경우 t2 시점에서 전류 I2를 사용한다.
그림에서 보이는 노란색 영역 부분이 t2와 t3 구간에서 필요 없는 파워를 소비하고 있는 상황이 되고 우선 순위와 그에 따른 각종 주변 장치의 세밀한 제어가 요구 된다.



4.6 하드웨어 설정 충돌 찾기
일반적으로 설계 시 floating inputs을 방지하기 위해 사용하지 않는 MCU I/O pin들을 ground에 연결한다. 만약 소프트웨어가 실수로 output으로 설정하고 high로 만들 경우 전류가 흐르게 되고 이러한 예상치 못한 전류량에 대해서는 어플리케이션 시작 부분의 파워 그래프를 보면서 쉽게 오류를 찾을 수 있다. 유사한 상황으로 입력과 출력 설정이 잘못되어 충돌이 생기는 경우도 주의해야 한다.

4.7 아날로그 인터페이스



같은 보드에 아날로그와 디지털 회로가 함께 사용된 경우는 보드의 layout과 routing이 중요하다. 소프트웨어 설계 또한 아날로그 측정의 품질에 영향을 미칠 수 있고 아날로그 신호를 샘플링을 하면서 동시에 많은 I/O pin들을 활성화 시킬 경우 여러 디지털 라인이 동시에 토글 상태가 되며, 이러한 상황은 AD converter에 예기치 않은 노이즈를 유발할 수 있다.


회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지