Při výběru klíčových součástek pro low power aplikaci se nesmíme soustředit jen na velikost paměti, výkon MCU a jeho spotřebu. Důležitou roli hrají obvody, se kterými procesor komunikuje - RF moduly, analogové obvody, výkonové měniče, snímače a další. Všechny tyto obvody přispívají do celkové spotřeby systému. Hlavní zátěží je ale mikrokontrolér. Máme ho pod kontrolou a můžeme jeho spotřebu plně ovlivnit. Záleží jen nás, jak dokážeme využít power management daného mikrokontroléru a tím celého systému. V článku si ukážeme správný výběr mikrokontroléru s ohledem na použité periferie, které jsou nutné pro danou aplikaci. Ukážeme si, jaké nástroje se používají pro monitorování spotřeby, tipy a triky k dosažení optimální spotřeby a výkonu pro danou aplikaci.
Výběr architektury mikrokontroléru s nízkým výkonem
Výběr low power mikrokontroléru vždy začíná volbou jádra. Existuje mnoho proprietárních mikroprocesorových jader, ale pro začátek je vhodné si zvolit ARM Cortex-M. Proč? Protože jsou podporována mnoha dodavateli. Ti poskytují zázemí podpory a zdroje informací včetně zdrojových kódů a příkladů. Aby se minimalizovala spotřeba energie, je třeba zvážit dva faktory: výkonnost a energetickou účinnost. Vyčíslení obou veličin pro mikrokontrotrolér nám zajistí dvě metody. CoreMark a ULPmark od EEMBC.
CoreMark
Měří procesní výkon, který je schopen daný mikrokontrolér dosáhnout. Čím vyšší je hodnota, tím větší je výkon. Například procesor STMicroelectronics STM32L053, který může být testován přímo na vývojové desce STM32L053 Nucleo Board, má hodnotu CoreMark 75,18. Procesor STM32F417, má hodnotu CoreMark 501.85.Na první pohled se může zdát, že je jasná volba jít do STM32F417, protože má vyšší hodnotu CoreMark. Nicméně existuje několik jiných faktorů, které mohou zvrátit vaše rozhodnutí.
Obrázek 1. STM32L053 Nucleo Board STMicroelectronics je určen pro low power aplikace a aplikace s omezeným přístupem k napájecímu zdroji. (Zdroj obrázku: STMicroelectronics)
Za prvé, CoreMark Vám sdělí, kolik testovacích iterací je schopen provést za jednu sekundu. Procesory pracující s různými hodinovými frekvencemi vykazují značně rozdílné hodnoty. Lepším srovnáním výkonnosti je srovnání CoreMark / MHz. V tomto případě procesor STM32L053 poskytuje výsledek 2,35, zatímco STM32F417 poskytuje výsledek 2,98 (zdroj: EEMBC). Oba procesory jsou velmi efektivní, ale jeden v tomhle ohledu lepší.
Za druhé je potřeba se podívat na základní architekturu. STM32L053 je založen na jádře ARM Cortex-M0 +, který je přímo optimalizován pro low power apliace a má minimální počet ladicích modulů. Kromě toho byly odstraněny všechny nedostatky, které odčerpávali zbytečné množství energie.
Procesor STM32F417 je založen na modulu ARM Cortex-M4, který je navržen jako vysoce výkonný procesor a běží na frekvenci 168 MHz v porovnání s 32 MHz. To je téměř pětinásobek v rychlosti hodin a pouze 26% nárůst v CoreMark / MHz.
ULPmark
Měří, jak efektivně je mikrokontrolér schopen provádět operace, jako jsou výpočty a operace s pamětí. Nejnovější verze dokonce započítává do efektivity také práce s periferiemi. Což poskytuje přehled o tom, jak efektivní je procesor z hlediska spotřeby energie celkově.
Správná kombinace integrovaných periferií
Výběr jádra je sice klíčovou otázkou, ale nesmí se zapomínat na ostatní aspekty, které ovlivní nemalou měrou spotřebu – integrované periferie. Periferie představují zásadní rozdíl v tom, kolik energie CPU zkonzumuje. Při výběru si musíme být jisti, že periferní zařízení mají nízkou spotřebu energie a jejich obsluha je co nejvíce automatizovaná.
Mikrokontrolér by měl mít implementovanou funkci DMA – Direct Memory Access (přímý přístup do paměti ). DMA umožňuje bez zásahu procesoru přesun dat z periferie do paměti, z paměti do periferie a dokonce i mezi různými oblastmi v paměti. To znamená, že CPU se může věnovat jiné činnosti v kódu nebo může přejít do režimu hlubokého spánku, a tím šetřil drahocennou energii.
Skvělým příkladem je procesor Texas Instruments MSP430FR5994, který lze nalézt na vývojové desce MSP430FR5994 Launchpad. MSP430FR5994 má vestavěný řadič DMA, který má šest individuálních kanálů. Každý z nich se může věnovat v jeden okamžik různé činnosti.
.
Obrázek 2. Vývojový kit MSP430FR5994 od společnosti Texas Instruments obsahuje několik periferií s nízkým výkonem, jako je například nízkoenergetický akcelerátor pro zpracování signálu, šestikanálový řadič DMA a několik low-power módů. (Zdroj obrázku: Texas Instruments)
Moderní mikrokontrolér má různé režimy napájení, které nastaví procesor a periferní zařízení do různých stavů - od jednoduchého stavu spánku až po hluboký spánek, kde je mikrokontrolér téměř vypnutý. V režimu hlubokého spánku může mít celý mikrokontrolér odběr jen několik desítek nanoampér.
Nastavení a konfigurace režimů nízké spotřeby a jednotlivých událostí, které procesor probudí, není jednoduché a jsou časově náročné. Nové mikrokontroléry Synergy firmy Renesas, obsahují konfigurační software v rámci vývojového prostředí. Umožňuje konfigurovat režimy napájení pomocí několika kliknutí myší. Pokud potřebujete vytvořit low power aplikaci, můžete začít s 32bitovým procesorem S124, který má 64 nebo 128 kbitů Flash pamět. K dispozici je vývojová deska Synergy DK-124 development board, pomocí níž si ověříte všechny vlastnosti daného procesoru.
Obrázek 3. Vývojová deska Synergy DK-124 od společnosti Renesas je vybavena analogovým komparátorem s nízkým výkonem, lze nastavit vícero režimů spánku a low power operace. (Zdroj obrázku: Renesas)
Měření a ověřování spotřeby energie mikroprocesoru
Správná volba režimu procesoru ve správný okamžik dokáže snížit energii na minimum. Stále je tu možnost, abychom dosáhli ještě lepšího výsledku. Musíme pečlivě sledovat odběr energie během celého chodu zdrojového kódu. Existuje několik různých metod pro sledování spotřeby energie mikroprocesoru. Například použitím proudových sond a speciálních ladicích nástrojů. Proudové sondy nedělají nic jiného, než měří napětí na zkratovém odporu(tzv. shunt), z čehož se vypočte procházející proud.
Toto řešení funguje skvěle, pokud chcete měřit aktuální spotřebu celého systému, ale pokud opravdu chcete porovnat jakou spotřebu má mikrokontrolér v daný okamžik (části kódu) je lepší k tomu použít speciální ladící nástroj. Ten ukáže, které oblasti kódu mohou vyžadovat další optimalizaci nebo celkové přepracování.
Na trhu existuje několik různých debuggerů, které pracují s mikrokontrolérem ARM Cortex-M. Na obrázku 4. je uveden jeden z nich a to IAR Systems I-Scope, jehož součástí je proudová sonda IAR I-Jet.
Obrázek 4. Rozhraní IAR I-Scope,. Je-li připojeno k I-Jet, může být použito k měření napětí respektive proudu mikrokontroléru. Díky tomu lze zjistil, které oblasti kódu spotřebovávají nejvíce energie. (Zdroj obrázku: IAR Systems Software)
Nástroj I-Scope má interní monitor napětí založený na diferenciálním zesilovači. Měří pokles napětí na odporu, který je v sérii s napájením mikrokontroléru. To umožňuje sondám I-Jet měřit napětí při současném chodu program counteru(PC) v jádru procesoru (obr. 5).
Obrázek 5. IAR I-Scope (zvýrazněný žlutě) pracuje ve spojení s I-Jet sondou pro porovnání spotřeby skrz zkratovací odpor a právě vykonávanou částí kódu. (Zdroj obrázku: IAR Systems Software)
Program counter nám dává informace, v jaké části kódu se zrovna nacházíme a sonda dodává aktuální spotřebu. Tyto informace společně generují tzv. energetický profil aplikace, který slouží k hlubší analýze kódu a následné optimalizaci.
Tipy a triky pro návrh zařízení s malým výkonem
Nalezení správného mikrokontroléru a hardwaru pro monitorování je klíčovou otázkou pro navrhování zařízení s nízkým výkonem. Detailní znalost mikrokontroléru je nutnou podmínkou pro minimalizaci spotřeby energie. K tomu je několik obecných kroků, které můžeme udělat.
- Výpočet kapacity baterie s minimálními, maximálními a průměrnými odhady spotřeby energie.
- Používat low -power časovač k řízení jakéhokoliv interních systémových hodin pro plánovač nebo RTOS.
- Uvádět procesor do režimu spánku co nejčastěji (nezapomeňte brát v úvahu dobu probuzení a vypnutí při aplikacích v reálném čase).
- Systém založený na přerušení. Přerušení lze použít k probouzení systému, vykonání operace a následnému okamžitému spánku.
- Integrace řadiče DMA a veškerou obsluhu periferie do architektury softwaru, aby bylo možné "paralelní" zpracování.
- Možnost měnit systémové hodiny mikrokontroléru podle potřeby. Tím dochází k další úspoře energie.
- Sledujte spotřebu energie kódu a nebojte se experimentovat s různými architekturami a konfiguracemi. První pokus nemusí znamenat nejlepší konfiguraci či kód.
- Je-li k dispozici, použijte funkci „Interrupt’s sleep-on-exit feature“, která spustí procesor na konci přerušení a ušetří několik desítek hodinových cyklů na každé události.
Závěr
Výběr low power mikrokontroléru není snadný. Je třeba vzít v úvahu několik klíčových věcí. Od architektury mikrokontroléru přes jeho schopnosti komunikovat a ovládat periferie až po optimalizaci zdrojového kódu pomocí energetického profilu. Jakmile je zvolen low-power mikrokontrolér, neexistuje žádná záruka, že vývojář dosáhne námi očekávané minimální spotřeby. Sledování spotřeby v různých částech kódu po celou dobu vývoje software je nutné proto, abychom plně využili vlastnosti daného mikrokontroléru a dosáhli minimální spotřeby energie pro danou IoT aplikaci.