개발 도구를 통한 MCU 전력 소비 조정
DigiKey 유럽 편집자 제공
2017-06-06
사물 인터넷(IoT)을 구성하는 여러 장치에 공통적인 한 가지 측면은 바로 낮은 에너지 소비 요구 사항입니다. 이 요구 사항을 해결하려면 총체적인 전략을 통해 여러 수준에서 최적화가 이루어져야 합니다. 성공적인 설계를 위해서는 저전력 부품을 선택해야 할 뿐만 아니라, 이러한 부품이 가장 효율적인 방식으로 함께 작동하도록 하여 배터리 커패시터의 사용을 낮출 수 있도록 소프트웨어를 사용해야 합니다. 하드웨어와 소프트웨어의 구현이 미묘한 수준으로 변경되더라도 전체적인 에너지 사용에는 큰 차이가 발생할 수 있습니다.
대부분의 IoT 장치의 중심에는 높은 에너지 효율을 위해 설계된 MCU(마이크로 컨트롤러)가 있습니다. 일반적인 저에너지 MCU에는 코어 프로세서를 대신하여 I/O 및 필수적인 시스템 기능을 제어하는 지능적인 주변 소자 어레이가 포함되어 있습니다. 많은 경우, 직렬 포트(UART)를 통해 데이터를 자율적으로 송신 및 수신할 수 있지만, 프로세서 코어에서 실행되는 소프트웨어는 데이터 수신이 완료된 후 해당 버퍼로부터 바이트를 전송하는 데에만 사용됩니다. Silicon Labs의 Gecko EFM32 MCU 제품군과 같은 장치에서 제공하는 연동 DMA 전송 기능을 사용하면 이러한 상호작용까지 최소화할 수 있습니다. 이러한 경우, 프로세서 코어는 전체 메시지를 수신한 후 메모리의 내용을 검사할 때만 활성화하면 됩니다.
주변 장치가 I/O를 관리할 수 있도록 함으로써 MCU는 많은 부분이 비활성화되어 전력을 소비하지 않는 절전 모드 상태로 유지되는 시간을 크게 늘릴 수 있습니다. 듀티 사이클은 활성화 모드에서 보내는 시간과 절전 모드에서 보내는 시간의 비율입니다. 배터리로 구동되는 IoT 응용 제품에서 낮은 듀티 사이클은 매우 중요합니다. 절전 모드에서는 마이크로암페어 수준의 전력을 소비하지만 활성화 모드에서는 일반적으로 훨씬 더 많은 전력을 소비하기 때문입니다.
듀티 사이클이 낮으면 프로세서 코어는 대부분의 시간 동안 절전 모드를 유지하며 데이터를 수집하거나 통신해야 하는 경우에만 활성화됩니다. 낮은 듀티 사이클을 구현할 때 중요한 것은 소프트웨어와 하드웨어 사이의 상호작용 방식을 파악하는 것입니다. MCU가 너무 오래 활성화되도록 하는 기능은 식별을 통해 대체하거나, 가능한 경우 새로 작성해야 합니다. 지금까지는 하드웨어가 완성된 후 테스트 중에 식별이 이루어졌으므로 개발 초기 단계에서 이러한 목표를 달성하기 어려웠습니다.
Silicon Labs의 Pearl Gecko 시험용 키트 및 유사한 평가 기판에는 고급 에너지 모니터링(AEM) 기능이 포함되어 있습니다. Silicon Labs의 Simplicity Studio에 포함된 고급 도구와 함께 사용하면 애플리케이션에 필요한 에너지에 대한 값진 통찰력을 소프트웨어 개발 단계에서 얻을 수 있습니다. 이러한 정보에는 절전 모드의 효과에 대한 정보뿐만 아니라 기능 수준의 최적화에 대한 정보까지 포함되어 있습니다.

그림 1: Pearl Gecko 시험용 키트 기판에 구현된 AEM 모듈.
AEM 기능은 USB 버스를 통해 전력을 소비하는 내장 LDO를 통해 전류의 흐름을 모니터링합니다. 일반적으로 USB는 소프트웨어를 디버그하거나 대상 MCU에 다운로드할 때 사용됩니다. 그림 1에 표시된 것과 같이, 내장 스위치를 배터리 작동 모드로 설정하면 전류를 측정할 수 없습니다.
전원 스위치를 AEM 모드로 설정하면 기판 컨트롤러에서 수집된 데이터가 Simplicity Studio 도구로 전달되며 Energy Profiler를 사용하여 데이터를 확인할 수 있습니다. AEM은 0.1μA에서 50mA에 이르는 넓은 범위의 전류를 측정할 수 있으며, 이는 114dB의 작동 범위에 해당합니다. 이를 통해 다양한 절전 모드 상태가 미치는 영향 및 활성화 모드에서의 전력 소비를 정밀하게 분석할 수 있습니다.
이러한 넓은 범위에 걸친 전류 소비를 정확하게 측정하기 위하여, 전류 감지 증폭기가 이중 이득 스테이지와 함께 사용됩니다. 증폭기는 작은 직렬 저항기에 걸친 전압 강하를 측정하고 이득 스테이지는 두 개의 서로 다른 이득 설정을 통해 이 전압을 추가적으로 증폭하여 두 개의 전류 범위를 얻게 됩니다. 이 두 범위 사이의 전이는 약 250μA에서 발생합니다. 디지털 필터링 및 평균값 계산은 샘플을 내보내기 전에 평가 기판 컨트롤러 내에서 이루어집니다.
AEM은 타이머가 째깍거릴 때마다 전류를 샘플링 및 변환한 후 이를 전압 및 타이밍 정보와 함께 USB를 통해 개발 도구로 전송하며 초당 최대 6250개의 전류 샘플을 생성합니다.
에너지 프로파일은 상관관계 파악을 위한 추적 데이터를 이용해 생성되므로, MCU에서 실행되는 코드는 임의 레코드 형식을 통한 디버그(DWARF) 데이터를 전송하는 명령문을 포함하여 컴파일해야 합니다. 디버거로 전송된 프로그램 카운터(PC) 샘플과 개체 파일 사이의 상관관계를 디버그 데이터를 사용하여 파악한 후, MCU에서 실행되는 관련 소스 파일, 기능 및 C 코드 행을 찾습니다. 이를 통해 전력 측정과 각 기능 및 작업 사이의 관계를 파악할 수 있습니다.
사용자는 Simplicity Studio 내의 프로파일링 도구를 사용하여 3개의 창에 액세스할 수 있습니다. 이러한 창에는 관련 코드, 전류 소비 그래프 및 기능 수준의 뷰가 표시됩니다. 전류 그래프의 어느 한 점을 클릭하면 코드 목록 창에 그 코드의 부분이 강조되어 표시됩니다. 이는 주어진 순간에 주어진 만큼의 전류를 소비하면서 실행되는 실제 코드 부분에 해당합니다. 기능 목록에는 각 기능이 소비한 총 에너지 및 애플리케이션 전체에 대해 측정된 총 에너지에 대한 각 기능의 에너지 소비 백분율이 표시됩니다. 사용자가 추후에 프로파일링 정보를 분석하고 싶은 경우에는 데이터를 파일로 내보낸 후 추가 분석을 위해 가져올 수 있습니다.
Simplicity Studio에서 제공되는 전력 모니터링 도구의 사용을 설명하기 위해 UART 포트를 통해 통신하는 MCU의 예를 살펴보겠습니다. 추후 처리를 위해 Gecko의 LEUART 버퍼에 저장된 데이터를 직관적인 방법으로 주 메모리로 이동할 수 있으므로 정기적으로 주변 장치를 폴링할 수 있습니다. 데이터를 사용할 수 있는 경우, 상태 플래그(LEUART_STATUS_RXDATAV)는 데이터를 검색할 수 있음을 나타냅니다.

그림 2: 직렬 포트 폴링을 통해 오랜 시간 동안 높은 수준의 전력을 소비하는 경우.
활성화된 프로세서 코어에서 이 코드를 실행하면 수 밀리암페어의 정전류가 소비됩니다. 그래프를 클릭하면 이러한 전력 소비의 원인이 되는 기능을 강조하여 표시할 수 있습니다. 에너지를 절약하려면 MCU는 데이터 가용성을 확인하기 위한 폴링을 사용하지 않아야 합니다. 데이터 인출 작업 사이에 프로세서를 절전 모드로 전환하고 수신 버퍼의 데이터를 사용할 수 있게 되면 프로세서를 활성화하기 위한 인터럽트를 사용하면 폴링을 방지할 수 있습니다. 전류 소비는 절전 모드 중에 많이 감소하고 인터럽트 서비스 루틴(ISR)이 실행될 때 급증합니다. 이는 Energy Profiler 창에서 정확한 ISR를 지정하여 확인할 수 있습니다.

그림 3: ISR의 구현을 통한 고전류 소비 시간 단축.
그러나 데이터 수신 인터럽트가 처리된 후에 코드의 다른 부분에서 프로세서를 활성화 상태로 유지하여 예상보다 많은 전력을 소비할 수도 있습니다. 관련 기능을 클릭하면 현재 송신 기능으로 인해 추가적인 전력 소비가 발생하고 있음을 보여줍니다. 송신 기능을 프로그래밍하는 간단한 방법은 각 바이트의 송신이 완료되는 동안 대기하도록 while{} 루프를 설정하는 것이지만, 그러한 경우에는 필요 이상으로 프로세서의 실행이 지속됩니다. 수신 포트의 경우와 마찬가지로, 이러한 루프는 각 바이트의 송신이 완료된 후에 프로세서를 활성화하는 인터럽트로 대체할 수 있습니다. 이제 프로세서는 각 프레임 바이트 전송 작업 사이에서 절전 모드로 전환하므로 평균 전류 소비가 낮아집니다.

그림 4: 바이트 수준의 송신 작업 사이에서의 절전 모드 전환을 통한 추가적인 전력 소비 감소.
Gecko MCU의 LEUART 모듈은 중간 절전 모드에서 작동할 수 있습니다. 중간 절전 모드에서는 고주파 발진기의 작동이 중단되지만, 저주파 발진기(RC 또는 수정)는 계속 실행되어 LEUART를 클로킹합니다. 이러한 모드를 활용하면 ISR 처리 작업 사이에서 전류 소비를 마이크로암페어 수준으로 낮출 수 있습니다.

그림 5: 낮은 듀티 사이클 애플리케이션의 에너지 효율 향상을 위한 중간 절전 모드의 활용.
더 많은 버퍼 처리 작업을 연동 DMA 엔진으로 옮기면 프레임 전체가 송신 또는 수신된 후에 연동 DMA가 인터럽트를 트리거하게 되므로 에너지 효율을 더욱 높일 수 있습니다. 이러한 전략을 사용하면 프로세서 코어가 더 오래 절전 상태를 유지할 수 있으며 기능 수준에서의 데이터 분석 작업에 초점을 두고 전력을 최적화할 수 있습니다.
결론:
위의 예시는 MCU 응용 분야에서 에너지 효율을 최적화할 때의 전류 모니터링과 디버깅 도구의 중요성을 잘 나타내고 있습니다. 개발이 완료될 때까지 기다린 후에 에너지 효율을 최적화하는 대신 개발 단계 전체에 걸쳐 분석을 실행할 수 있으며 이를 통해 반복적인 에너지 효율 향상을 명확히 확인할 수 있습니다. 프로세서의 개입 없이 오래 작동할 수 있는 지능적인 하드웨어 및 고급 절전 모드를 함께 사용함으로써 엔지니어링 팀은 손쉽게 에너지 효율을 크게 높일 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.