Драйвер модуля управления питанием доменов устройств
Подробнее...
|
| файл | hal_ppu.h |
| | Интерфейс драйвера модуля PPU.
|
| |
|
| typedef void(* | ReqOffForCPU) (void) |
| | Тип функции запроса для выключения смежного ядра
|
| |
|
| enum ppu_status | PPU_SetState (PPU_Type *base, enum ppu_power_mode mode) |
| | Функция запроса установки статического режима работы
|
| |
| enum ppu_status | PPU_SetStateDynamic (PPU_Type *base, enum ppu_power_mode mode) |
| | Функция запроса установки динамического режима работы
|
| |
| enum ppu_status | PPU_SetPDCMPPUSense (enum ppu_domain_index pd_dst, enum ppu_sense_index pd_src, uint32_t sense) |
| | Функция установки зависимости доменов питания
|
| |
| enum ppu_status | PPU_SetIRQStatus (PPU_Type *base, enum ppu_event_name irq, enum ppu_add_event_name add_irq) |
| | Функция установки состояний прерываний
|
| |
| enum ppu_status | PPU_SetIRQMask (PPU_Type *base, enum ppu_event_name irq, enum ppu_add_event_name add_irq) |
| | Функция установки масок прерываний
|
| |
| enum ppu_status | PPU_ClrIRQStatus (PPU_Type *base, enum ppu_event_name irq, enum ppu_add_event_name add_irq) |
| | Функция сброса состояний прерываний
|
| |
| enum ppu_status | PPU_ClrIRQMask (PPU_Type *base, enum ppu_event_name irq, enum ppu_add_event_name add_irq) |
| | Функция сброса масок прерываний
|
| |
Драйвер модуля управления питанием доменов устройств
Драйвер модуля PPU позволяет управлять питанием доменов чипа.
◆ ReqOffForCPU
| typedef void(* ReqOffForCPU) (void) |
Тип функции запроса для выключения смежного ядра
Механизм отключения домена питания одного ядра из другого ядра определяется пользователем. Этот механизм вызывается драйвером при запросе отключения домена питания одним одного ядра из другого ядра. Пример механизма приведён в boards/eliot1_bub/driver_examples/ppu/core1_startup/
◆ ppu_add_event_name
Имена масок дополнительных прерываний
| Элементы перечислений |
|---|
| PPU_StaPolicyOp | Статус события завершения перехода статической операционной политики
|
| PPU_STA_PolicyPwr | Статус события завершения перехода политики статического питания
|
| PPU_DynDeny | Маска события отказа динамического перехода
|
| PPU_DynAccept | Маска события принятия динамического перехода
|
| PPU_UnsptPolicy | Маска события неподдерживаемой политики
|
| PPU_AddEventNameAll | Все доступные маски дополнительных событий
|
◆ ppu_domain_index
Индексы блоков PPU.
| Элементы перечислений |
|---|
| PPU_DomainCPU0 | Домен питания подсистемы CPU0
|
| PPU_DomainCPU1 | Домен питания подсистемы CPU1
|
| PPU_DomainDEBUG | Домен питания подсистемы отладки
|
| PPU_DomainCRYPTO | Домен питания крипто-ускорителя CryptoCell
|
| PPU_DomainGMS | Домен питания крипто-ускорителя GMS
|
| PPU_DomainGNSS | Домен питания навигационного ядра GNSS
|
| PPU_DomainSRAM0 | Домен питания банков памяти SRAM0
|
| PPU_DomainSRAM1 | Домен питания банков памяти SRAM1
|
| PPU_DomainSRAM2 | Домен питания банков памяти SRAM2
|
| PPU_DomainSRAM3 | Домен питания банков памяти SRAM3
|
| PPU_DomainSYS | Домен питания системный
|
| PPU_DomainMax | Максимальниое значение индекса домена
|
◆ ppu_event_name
Имена масок прерываний
| Элементы перечислений |
|---|
| PPU_Locked | Маска события блокировки
|
| PPU_EmuDeny | Маска события отказа от эмуляции перехода
|
| PPU_EmuAccept | Маска события принятия перехода эмуляции
|
| PPU_StaDeny | Маска события запрета статического перехода
|
| PPU_StaAccept | Маска события принятия статического перехода
|
| PPU_StaPolicyTrn | Маска события полного завершения статического перехода к политике
|
| PPU_EventNameAll | Все доступные маски событий
|
◆ ppu_opportunities_idr0
Идентификационный регистр PPU_IDR0.
| Элементы перечислений |
|---|
| PPU_DYN_WRM_RST_SPT | Динамическая поддержка WARM_RST
|
| PPU_DYN_ON_SPT | Динамическая поддержка ON
|
| PPU_DYN_FUNC_RET_SPT | Динамическая поддержка FUNC_RET
|
| PPU_DYN_FULL_RET_SPT | Динамическая поддержка FULL_RET
|
| PPU_DYN_MEM_OFF_SPT | Динамическая поддержка MEM_OFF
|
| PPU_DYN_LGC_RET_SPT | Динамическая поддержка LOGIC_RET
|
| PPU_DYN_MEM_RET_EMU_SPT | Динамическая поддержка MEM_RET_EMU
|
| PPU_DYN_MEM_RET_SPT | Динамическая поддержка MEM_RET
|
| PPU_DYN_OFF_EMU_SPT | Динамическая поддержка OFF_EMU
|
| PPU_DYN_OFF_SPT | Динамическая поддержка OFF
|
| PPU_STA_DBG_RECOV_SPT | Поддержка DBG_RECOV
|
| PPU_STA_WRM_RST_SPT | Поддержка WARM_RST
|
| PPU_STA_ON_SPT | Поддержка ON
|
| PPU_STA_FUNC_RET_SPT | Поддержка FUNC_RET
|
| PPU_STA_FULL_RET_SPT | Поддержка FULL_RET
|
| PPU_STA_MEM_OFF_SPT | Поддержка MEM_OFF
|
| PPU_STA_LGC_RET_SPT | Поддержка LOGIC_RET
|
| PPU_STA_MEM_RET_EMU_SPT | Поддержка MEM_RET_EMU
|
| PPU_STA_MEM_RET_SPT | Поддержка MEM_RET
|
| PPU_STA_OFF_EMU_SPT | Поддержка OFF_EMU
|
| PPU_STA_OFF_SPT | Поддержка OFF
|
◆ ppu_opportunities_idr1
Идентификационный регистр PPU_IDR1.
| Элементы перечислений |
|---|
| PPU_OFF_MEM_RET_TRANS | Прямой переход от OFF к MEM_RET
|
| PPU_OP_ACTIVE | Модель использования режима работы для динамических переходов
|
| PPU_STA_POLICY_OP_IRQ_SPT | Статус события завершения перехода операционной политики
|
| PPU_STA_POLICY_PWR_IRQ_SPT | Статус события завершения перехода к политике электропитания
|
| PPU_FUNC_RET_RAM_REG | Указывает, присутствует ли регистр PPU_FUNRR или зарезервирован
|
| PPU_FULL_RET_RAM_REG | Указывает, присутствует или зарезервирован регистр PPU_FULRR
|
| PPU_MEM_RET_RAM_REG | Указывает, присутствует ли регистр PPU_MEMRR или зарезервирован
|
| PPU_LOCK_SPT | Блокировка и событие прерывания блокировки поддерживаются
|
| PPU_SW_DEV_DEL_SPT | Поддержка конфигурации управления задержкой программного устройства
|
| PPU_PWR_MODE_ENTRY_DEL_SPT | Поддержка задержки входа в режим питания
|
◆ ppu_power_mode
Состояние домена питания
- Заметки
- Приоритет состояния домена питания возрастает с возрастанием значения
| Элементы перечислений |
|---|
| PPU_PowerModeOn | Логика включена, оперативная память включена, компонент работает
|
| PPU_PowerModeOff | Логика выключена и оперативная память выключена
|
| PPU_PowerModeMemRet | Логика выключена, ОЗУ сохранено
|
| PPU_PowerModeWarmRst | Cхема в состоянии сброса с включенной логикой и оперативной памятью
|
| PPU_PowerModeDbgRecov | Cхема в состоянии сброса с включенной логикой и оперативной памятью. Этот режим используется для включения сброса компонента, как правило, когда он заблокирован или не работает, при этом сохраняется часть или все состояние компонента во время сброса для последующего анализа отладки
|
| PPU_PowerModeFuncRet | Логика включена, оперативная память сохранена, компонент работает
|
| PPU_PowerModeMemOff | Логика включена, ОЗУ выключено, компонент работает
|
| PPU_PowerModeFullRet | Логика и оперативная память в сохранении
|
| PPU_PowerModeLogicRet | Сохранение логики при отключенной оперативной памяти
|
| PPU_PowerModeMemRetEmu | Логика включена, оперативная память включена. Этот режим используется для имитации функционального состояния MEM_RET без отключения питания
|
| PPU_PowerModeOffEmu | Логика включена, оперативная память включена. Этот режим используется для имитации функционального состояния OFF без отключения питания
|
| PPU_PowerModeMax | Максимальное допустимое значение
|
◆ ppu_sense_index
Индексы бит блоков PPU, от которых зависят другие домены
| Элементы перечислений |
|---|
| PPU_SenseCPU0 | Домен питания подсистемы CPU0
|
| PPU_SenseCPU1 | Домен питания подсистемы CPU1
|
| PPU_SenseCRYPTO | Домен питания крипто-ускорителя CryptoCell
|
| PPU_SenseGMS | Домен питания крипто-ускорителя GMS
|
| PPU_SenseGNSS | Домен питания навигационного ядра GNSS
|
| PPU_SenseSRAM0 | Домен питания банков памяти SRAM0
|
| PPU_SenseSRAM1 | Домен питания банков памяти SRAM1
|
| PPU_SenseSRAM2 | Домен питания банков памяти SRAM2
|
| PPU_SenseSRAM3 | Домен питания банков памяти SRAM3
|
| PPU_SenseSYS | Домен питания системный
|
◆ ppu_status
Статусы драйвера PPU.
| Элементы перечислений |
|---|
| PPU_Status_Ok | Нет ошибок
|
| PPU_Status_InvalidArgument | Недопустимый аргумент
|
| PPU_Status_FeatureNotSupport | Не поддерживается
|
| PPU_Status_DriverError | Ошибка драйвера
|
| PPU_Status_ConfigError | Ошибка конфигурации
|
◆ PPU_ClrIRQMask()
Функция сброса масок прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Маски основных прерываний |
| add_irq | МАски дополнительных прерываний |
- Возвращаемые значения
-
◆ PPU_ClrIRQStatus()
Функция сброса состояний прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Основные прерывания |
| add_irq | Дополнительные прерывания |
- Возвращаемые значения
-
◆ PPU_GetIRQMask()
Получение масок прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Маски прерываний |
| add_irq | Маски дополнительных прерываний |
- Возвращает
- Статус
◆ PPU_GetIRQStatus()
Получение статуса прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Состояния прерываний |
| add_irq | Состояния дополнительных прерываний |
- Возвращает
- Статус
◆ PPU_GetLastAPIStatus()
Получение статуса выполнения функции, тип результата которой отличен от enum ppu_status.
- Возвращает
- Статус
◆ PPU_GetPDxSenseFromPDy()
Функция получения зависимости доменов питания
- Аргументы
-
| pd_dst | Домен который зависит от состояние другого домена
|
| pd_src | Домен от которого зависит состояние другого домена |
- Возвращает
- 1 - Есть зависимость
-
0 - Нет зависимости или выполняемое действие не валидно. Узнать валидность можно вызвав ( PPU_GetLastAPIStatus )
◆ PPU_GetPowerState()
Функция получения состояния домена
- Аргументы
-
| base | Базовый адрес блока PPU
|
- Возвращает
- Состояние домена
- Заметки
- Если задан некорректный адрес, возвращается PPU_PowerModeOff,
◆ PPU_Init()
Функция инициализации блока PPU.
- Аргументы
-
| base | Базовый адрес блока PPU
|
| cfg | Конфигурация |
- Возвращаемые значения
-
◆ PPU_SetIRQMask()
Функция установки масок прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Маски основных прерываний |
| add_irq | МАски дополнительных прерываний |
- Возвращаемые значения
-
◆ PPU_SetIRQStatus()
Функция установки состояний прерываний
- Аргументы
-
| base | Базовый адрес блока PPU
|
| irq | Основные прерывания |
| add_irq | Дополнительные прерывания |
- Возвращаемые значения
-
◆ PPU_SetPDCMPPUSense()
Функция установки зависимости доменов питания
- Аргументы
-
| pd_dst | Домен который зависит от состояние другого домена
|
| pd_src | Домен от которого зависит состояние другого домена |
| sense | Зависимость: 1 - есть, 0 - нет |
- Возвращаемые значения
-
◆ PPU_SetState()
Функция запроса установки статического режима работы
- Аргументы
-
| base | Базовый адрес блока PPU
|
| mode | Устанавливаемое состояние |
- Заметки
- Статический переход доменов CPUx в режим OFF недопустим и приведёт к возникновению BusFault.
- Возвращаемые значения
-
◆ PPU_SetStateDynamic()
Функция запроса установки динамического режима работы
- Аргументы
-
| base | Базовый адрес блока PPU
|
| mode | Устанавливаемое состояние |
- Заметки
- Переход доменов CPUx в режим OFF произойдет только после вызова инструкции WFI, в режим ON допускается переводить, когда ядро будет настроено для работы(у ядра будет исполняемая программа)
- Возвращаемые значения
-
◆ PPU_StateOffRequestHandler()
| void PPU_StateOffRequestHandler |
( |
void | | ) |
|
Функция отключения питания текущего ядра
- Заметки
- Переводит ядро, на котором исполняется функция в динамический режим Off: 1) Устанавливает признак глубокого сна; 2) Разрешает работу WIC/EWC, но не настраивает NVIC; 3) Разрешает отключение FPU, если он есть в ядре; 4) Запрашивает динамически Off; 5) Исполняет __WFI(); После этих действий ядро должно уснуть, а домен отключиться.
-
Эта функция должна быть использована для отключения одного ядра из другого ядра процессора. Например, если CPU0 пытается отключить CPU1, то эта функция должна вызываться на ядре CPU1 в механизме, который обрабатывает запрос остановки от CPU0 к CPU1 ( см. ppu_config ).