Я хочу сделать частоту процессора на плате на базе imx6s неизменной. Даже вызов WFI не должен влиять. Пока я вижу значительное падение частоты процессора, когда процессор остается в режиме WFI.
Согласно техническому справочному руководству для imx6s режим пониженного энергопотребления, процессор будет передан после WFI
, конфигурируется LPM
битами регистра CLPCR
(стр. 855). Я установил биты LPM в 0x0, что упоминается как режим RUN. Насколько я понимаю, этого должно быть достаточно, чтобы не переводить процессор в какой-либо спящий режим (WAIT или STOP на imx).
Есть ли что-то еще за этим? Я что-то упустил здесь?
Предположим, я использую пользовательскую среду, отличную от Linux.
Приложение (как и что я измеряю):
Эксперимент выглядит следующим образом: 1. С WFI
p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds) <- here it goes to WFI
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 600 microseconds
2. Без воды для инъекций
p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds) <- WFI is removed
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 100 miliseconds
WFI
и оставить часы процессора включенными. Это противоречит целиWFI
? Если это для отладки и у вас есть физический доступ, вы можете использовать переключатель GPIO и область действия. Дельта должна быть очень точной. - person artless noise   schedule 26.02.2018WFI
для экономии энергии. Сохранение тактовой частоты ЦП не приведет к экономии энергии, особенно когда ЦП находится в статическом состоянии. Я предполагаю, что доступ к DDR не осуществляется, но поддержание активных часов процессора, вероятно, не намного больше энергии, чем спин-петля в кеше. Режимы определены в другом месте документа; RUN — это «спящий» режим с максимальной мощностью. См. стр. 817. Вы можете использовать CCGR, чтобы включить EPIT и использовать его в качестве источника времени. Ядро ARM жестко закодировано, поэтому логика не может быть легко настроена Freescale/NXP. Если возможно, посмотрите документы ARM, а не NXP. - person artless noise   schedule 28.02.2018