Старая версия сайта

микроконтроллеры от ведущих мировых производителей

Для микроконтроллеров семейств EFM8 и EFM32 предусмотрена возможность отладки программы по энергопотреблению. Соответствующая программа называется Energy Profiler и входит в состав платформы Simplicity Studio.

Каждая отладочная плата Starter Kit для EFM32 и отладочная плата Starter Kit для EFM8 содержит измерительный модуль Advanced Energy Monitor (AEM), который может передавать на ПК текущие значения потребляемого тока, питающего напряжения, а также значение со встроенного на AEM таймера. 

Для того чтобы использовать этот модуль необходимо установить переключатель питания, расположенный на всех отладочных платах в левом нижнем углу, в крайнее правое положение DBG и подключить плату к компютеру через отладочный USB-интерфейс. После подключения платы, запуска Simplicity Studio и утилиты Energy Profiler на экране компьютера появится окно с графиком зависимости энергопотребления от времени. График строится по ходу исполнения программы. 

С помощью графика можно оценить общий уровень энергопотребления и найти возможности для его оптимизации. Блок AEM и поддержка в Energy Profiler обеспечиваются во всех сериях 8-разрядных микроконтроллеров EFM8 и 32-разрядных микроконтроллеров EFM32.

Для 32-разрядных контроллеров с ядрами Cortex-M3 и Cortex-M4F значение энергопотребления может быть измерено с привязкой к исполняемому коду. Для этого данные с блока AEM обрабатываются вместе со значением счетчика команд с линии SWO. Значение счетчика команд позволяет соотнести каждую точку на графике со строкой в листинге программы. Для этого Energy Profiler использует объектный файл .axf с данными об отладке в формате DWARF (Debug With Arbitrary Record Format), который создается при компиляции проекта в режиме отладки, а также библиотеки libelf и libdwarf.

В режиме измерения энергопотребления с привязкой к коду программы доступны дополнительные статистические данные, например распределение потребляемой мощности по отдельным функциям программы.

Для запуска профилирования (как с привязкой к исполняемому коду, так и без неё) достаточно создать и применить новую конфигурацию Profiler. После этого компиляция программы, программирование контроллера и запуск профилирования энергопотребления будут выполняться по нажатию кнопки "Начать профилирование".

Чтобы обеспечить привязку измерений к коду программы при создании конфигурации нужно

  • указать файл *.afx в поле Executable
  • проверить наличие отметки Enable Code Correlation на вкладке Profiler

В текст программы нужно предварительно добавить вызов функции BSP_TraceSwoSetup().

void BSP_TraceSwoSetup(void)
{
/* Enable GPIO Clock. */
CMU->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO;
/* Enable Serial wire output pin */
GPIO->ROUTE |= GPIO_ROUTE_SWOPEN;
#if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY) || defined(_EFM32_LEOPARD_FAMILY)
/* Set location 0 */
GPIO->ROUTE = (GPIO->ROUTE & ~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC0;

/* Enable output on pin - GPIO Port F, Pin 2 */
GPIO->P[5].MODEL &= ~(_GPIO_P_MODEL_MODE2_MASK);
GPIO->P[5].MODEL |= GPIO_P_MODEL_MODE2_PUSHPULL;
#else
/* Set location 1 */
GPIO->ROUTE = (GPIO->ROUTE & ~(_GPIO_ROUTE_SWLOCATION_MASK)) | GPIO_ROUTE_SWLOCATION_LOC1;
/* Enable output on pin */
GPIO->P[2].MODEH &= ~(_GPIO_P_MODEH_MODE15_MASK);
GPIO->P[2].MODEH |= GPIO_P_MODEH_MODE15_PUSHPULL;
#endif
/* Enable debug clock AUXHFRCO */
CMU->OSCENCMD = CMU_OSCENCMD_AUXHFRCOEN;

while(!(CMU->STATUS & CMU_STATUS_AUXHFRCORDY));

/* Enable trace in core debug */
CoreDebug->DHCSR |= 1;
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

/* Enable PC and IRQ sampling output */
DWT->CTRL = 0x400113FF;
/* Set TPIU prescaler to 16. */
TPI->ACPR = 0xf;
/* Set protocol to NRZ */
TPI->SPPR = 2;
/* Disable continuous formatting */
TPI->FFCR = 0x100;
/* Unlock ITM and output data */
ITM->LAR = 0xC5ACCE55;
ITM->TCR = 0x10009;

Обзор утилиты Energy Profiler и пример её использования для оптимизации энергопотребления программы доступен в формате видеообзора на русском языке.

Перейти к другим видеообзорам

 

На сайте доступны описания других компонентов Simplicity Studio: