FreeRTOS — бесщелевой режим энергосбережения | FreeRTOS Fourteen

Оглавление

проиллюстрировать:

1. Знакомство с режимом низкого энергопотребления.

1.1. Режим низкого энергопотребления STM32.

2. Бестикальный режим

2.1.Как потреблять электроэнергию в режиме Tickless?

2.2. Идея дизайна бестикального режима

2.3.Как можно снизить энергопотребление, не влияя на работу системы?

3. Измените конфигурацию в режиме Tickless.

3.1. Определения макросов, связанные с конфигурацией

4. Используйте режим пониженного энергопотребления Tickless.

4.1. Этапы использования


проиллюстрировать:

О содержании:

        1) Следующий контент в основном представляет собой концептуальное понимание и поэтапный анализ.

        2) Персонального примера кода пока нет, используется официальный пример кода FreeRTOS.

        3) Если вы хотите перенести код для тестирования, поищите в другом месте. В следующем контенте нет личного образца кода для тестирования.

О других:

        1) Операционная система: победа 10

        2) Платформа: Кейл 5 мдк

        3) Язык: язык c

        4) Плата: серия STM32 пересажена на FreeRTOS

1. Знакомство с режимом низкого энергопотребления.

        Многие приложения имеют строгие требования к энергопотреблению, например, носимые часы, физические сетевые продукты с низким энергопотреблением и т. д.; обычные микроконтроллеры имеют соответствующие режимы пониженного энергопотребления, а режим пониженного энергопотребления микроконтроллера можно использовать во время разработки на «голом железе».

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

 1.1. Режим низкого энергопотребления STM32.

Как показано на рисунке 1 ниже:

       Рисунок 1

        В основном используйте спящий режим, войдите в спящий режим, команда WFI: _WFI, команда WFE: _WFE, выйдите из спящего режима, любое прерывание или событие может активировать спящий режим;

 

2. Бестикальный режим

2.1.Как потреблять электроэнергию в режиме Tickless?

        Суть заключается в реализации спящего режима вызовом инструкции WIF. При выполнении задач в режиме ожидания перейдите в спящий режим.

2.2. Идея дизайна бестикального режима

        В эксперименте по статистике времени выполнения задач видно, что во время работы всей системы большую часть времени выполняются простаивающие задачи, как показано на рисунке 2 ниже:

фигура 2

2.3.Как можно снизить энергопотребление, не влияя на работу системы?

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

сложность:

        1) Сколько времени занимает пробуждение после входа в режим пониженного энергопотребления? Как точно разбудить MCU до выполнения следующей задачи?

        2)Любое прерывание может разбудить MCU.Частые прерывания тикающего таймера повлияют на эффект низкого энергопотребления (прерывание раз в 1мс)

решать:

        1) Рассчитайте время блокировки задачи;

        2) Изменить период прерывания тикающего таймера на время работы в режиме пониженного энергопотребления.После выхода из режима пониженного энергопотребления необходимо восполнить биение системных часов.

 Хорошей новостью является то, что механизм режима Tickless с низким энергопотреблением FreeRTOS уже справился с этими трудностями и может использоваться путем прямого вызова соответствующих функций API.

3. Измените конфигурацию в режиме Tickless.

3.1. Определения макросов, связанные с конфигурацией

        1) configUSE_TICKLESS_IDLE --> Это определение макроса используется для включения режима Tickless с низким энергопотреблением (1 включено, 0 не включено, другие значения необходимо реализовать функцию Tickless самостоятельно);

        2) configEXPECTED_IDLE_TIME_BEFORE_SLEEP -->Это определение макроса используется для определения минимальной продолжительности перехода системы в соответствующий режим пониженного энергопотребления (не менее 2 системных тактов, то есть не менее 2 мс);

        3) configPRE_SLEEP_PROCESSING (x) --> Это определение макроса используется для транзакций, выполняемых системой перед переходом на низкое энергопотребление, например: отключение периферийных часов перед переходом на низкое энергопотребление, чтобы еще больше снизить низкое энергопотребление;

        4) configPOSR_SLEEP_PROCESSING (x) --> Это определение макроса используется для транзакций, выполняемых системой перед выходом из режима низкого энергопотребления, например: включение периферийных часов перед выходом из режима низкого энергопотребления для достижения нормальной работы системы.

Примечание. configPRE_SLEEP_PROCESSING (x) и configPOSR_SLEEP_PROCESSING (x) необходимо напрямую реализовать внутренние операции функции --> определить макрос для другой функции и реализовать его в другой функции.

4. Используйте режим пониженного энергопотребления Tickless.

4.1. Этапы использования

        1) Настройте связанные определения макросов

        2) Реализовать две функции: configPRE_SLEEP_PROCESSING(), configPOSR_SLEEP_PROCESSING() и добиться дальнейшего снижения энергопотребления в этих двух функциях (например, отключение внешних прерываний, отключение таймеров и т. д.).

Je suppose que tu aimes

Origine blog.csdn.net/qq_57663276/article/details/129028591
conseillé
Classement