2015-06-11 1 views
0

У меня есть код, работающий на медвежьем металле (без ОС). Код принимает некоторые данные датчика, выполняет вычисление, формирует пакет и передает. Плата питается от батареи.Arduino измерительная мощность для запуска кода

Мне интересно узнать энергию, потребляемую для каждой операции в Жюле. Это возможно? Как можно это сделать?

+0

Возможно ... В джоулях? Во всяком случае, поставьте (маленький) резистор последовательно с батареей, чтобы измерить ток. Измерьте также напряжение. Таким образом, вы можете получить мгновенную мощность. Интегрируйте его во времени, и вы получите энергию. – frarugi87

ответ

0

Количество джоулей, используемых для каждой команды, зависит от используемого процессора и инструкции, на которую вы смотрите. Я считаю, что ARM и процессоры Atmel AVR не имеют реального управления электропитанием, что упрощает работу.

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

Так что вам придется делать это экспериментально. Вот что я буду делать.

  1. Удалить все оптимизации компилятора
  2. ли частотный анализ, чтобы найти горячие операции и выбрать наиболее часто используемых. (Я предполагаю, что мы не говорим инструкции ASM, но инструкции «C».)
  3. Запишите цикл, повторяющий команду, скажем, 20 раз, и пропустите цикл в течение нескольких секунд как минимум
  4. Заменить ваш аккумулятор с электропитанием.
  5. Используйте резистор серии для измерения мощности, как указано в комментарии, но (конечно) масштабируйте напряжение соответствующим образом.
  6. Запустите программу циклирования и получите статистическую выборку мощности.
  7. Сделайте это для всех ваших горячих операций.
  8. Compute потребления энергии для вашей программы
  9. Validate использование мощности от измерений реальной мощности выполнения вашей программы
  10. Adjust (т.е. нормализует) ваши вычислений по мере необходимости

Вы также должны учитывать иерархию памяти. Доступ к памяти чипа берет энергию. Когда операции или данные кэшируются, это изменит ваше уравнение энергии.

Я полагаю, что это должно работать, но не знаю. Удачи.

Смежные вопросы