Шина IEEE 1394 — FireWire

Регистры и структуры данных для управления энергопотреблением

Узлы, участвующие в управлении энергопотреблением, должны иметь единичное значение бита pmc в информационном блоке последовательной шины. Новые регистры CSR, введенные для управления энергопотреблением, располагаются в начальном пространстве узла, начиная с адреса FFFF F001 0000h или выше. Регистры делятся на две группы:

  • регистры, относящиеся к узлу (node-specific CSR);
  • регистры, относящиеся к блоку (unit-specific CSR).

Форматы регистров, относящихся к узлу, приведены на первом рисунке. На положение этого блока регистров указывает элемент Node_Power_Management в конфигурационной памяти. Ниже в скобках указано смещение регистров от начала блока. Обязательный регистр состояния питания узла NODE_POWER_STATE (00h) предназначен для сообщения текущего уровня потребления.

Обязательный регистр управления питанием узла NODE_POWER_CONTROL (04h) служит только для управления сменой уровня потребления (поле lvl). Значения поля func: 0 — резерв, 1 (grant) — разрешение смены состояния на последнее запрошенное; 2 (deny) — запрет смены состояния; 3 (wait) — выдержка 5 с перед отработкой последующей команды смены состояния; 4…7 (Set Level 0… Set Level 3) — установка указанного уровня (отразится в поле lvl в регистре состояния питания узла).

Необязательный регистр адреса уведомления NOTIFICATION_ADDRESS (08h) содержит полный адрес, по которому следует посылать уведомление о смене уровня потребления (идентификатор узла в поле destination_node_id, адрес в полях destination_offset_hi и destination_offset_lo). Бит e разрешает узлу генерировать уведомление.

Необязательный регистр состояния кабельного питания CABLE_POWER_SOURCE_STATE (0Ch) имеет следующие поля:

  • power — мощность, отдаваемая узлом в кабель (в десятых долях ватта);
  • voltage — напряжение питания (в десятых долях вольта);
  • rlvl — текущий запрашиваемый уровень потребления (0…3);
  • src — текущее состояние питания узла: 0 — от шины, 1 — от батареи, 2 — от сети, 3 — резерв;
  • v — признак действительности полей power и voltage;
  • lvl — текущий уровень потребления узла (0…3), соответствует состояниям N0…N3.

Необязательный регистр управления кабельным питанием CABLE_POWER_SOURCE_CONTROL (10h) управляет отработкой команд. Значения поля func: 0 — резерв, 1 (grant) — разрешение смены состояния на последнее запрошенное; 2 (deny) — запрет смены состояния; 3 (wait) — выдержка 5 с перед отработкой последующей команды смены состояния; 4…7 (Set Level 0… Set Level 3) — установка указанного уровня (поле lvl в регистре состояния кабельного питания).

Регистр смены уровня потребления POWER_CHANGE, обязательный для узла, управляющего потреблением, позволяет его приложениям управлять состоянием энергопотребления любого узла или блока. Поле lvl задает желаемый (запрашиваемый) уровень потребления узла, заданного полем PHY_ID. Поле csr_offset задает конкретный блок или весь узел, для которого требуется смена уровня.

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

Регистр состояния питания блока UNIT_POWER_STATE (00h) имеет следующие поля:

  • power — мощность, отдаваемая блоком в кабель или потребляемая (в десятых долях ватта);
  • voltage — напряжение питания (в десятых долях вольта);
  • k — признак того, что блок является источником события пробуждения;
  • rlvl — текущий запрашиваемый уровень потребления (0…3);
  • src — текущее состояние питания блока: 0 — от узла, 1 — от собственной батареи, 2 — от сети, 3 — блок подает питание в кабель;
  • v — признак действительности полей power и voltage;
  • lvl — текущий уровень потребления (0…3), соответствует состояниям D0…D3.

Регистр управления питанием блока UNIT_POWER_CONTROL (04h) служит для установки уровня потребления с помощью поля func: 0…3 — резерв; 4…7 (Set Level 0… Set Level 3) — установка указанного уровня (поле lvl в регистре состояния питания блока).

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

Описатели уровней потребления узла Node_Power_Level должны присутствовать для всех уровней потребления, поддерживаемых устройством. Аналогичные описатели уровней потребления блока Unit_Power_Level могут присутствовать в PM-каталоге блока. В описателях содержатся следующие поля:

  • power_requrements — мощность, потребляемая узлом или блоком на данном уровне (в десятых долях ватта);
  • voltage — требуемое напряжение: 0 — в соответствии с 1394–1995 (8–40В), 1 — 3,3 В, 2 — 5 В, 3 — 12 В, 4–Fh — резерв;
  • lvl — уровень потребления (0–3), описываемый данным элементом (соответствует N0…N3 для узла и D0…D3 для блока);
  • w — способность приостановки (standby) LINK-уровня (бит действителен только в описателе нулевого уровня);
  • v — признак действительности описателя.

Описатели кабельного питания Cable_Power_Source_Level сообщают возможности поставки питания в шину на каждом уровне потребления. Описатели относятся только к узлу. В них содержатся следующие поля:

  • power_requrements — мощность, подаваемая узлом в кабель на данном уровне (в десятых долях Вт);
  • voltage — подаваемое напряжение: 0 — в соответствии с 1394–1995 (8–40 В), 1 — 12 В, 2–Fh — резерв;
  • lvl — уровень потребления (0–3), описываемый данным элементом;
  • v — признак действительности описателя.

Указатель Node_Power_Management в поле csr_offset содержит смещение в области регистров CSR, по которому находится группа регистров управления энергопотреблением узла.

Указатель Unit_Power_Management в поле csr_offset содержит смещение в области регистров CSR, по которому находится группа регистров управления энергопотреблением блока.

Батареи питания (в том числе и аккумуляторные) могут относиться как к узлу в целом, так и к его отдельным блокам. К каждой батарее относится регистр состояния батареи BATTERY_STATE_REGISTER со следующими полями (см. рисунок ниже):

  • capacity — емкость полностью заряженной батареи в ватт-часах;
  • available — текущий уровень заряженности (в процентах от полной емкости);
  • voltage — напряжение батареи (в десятых долях вольта);
  • st — состояние: 0 — батарея отсутствует, 1 — резерв, 2 — батарея установлена и используется, 3 — батарея заряжается.

На местоположение регистров состояния батарей указывают элементы Battery_State, находящиеся в каталогах групп батарей Battery_Group. На каталоги групп батарей имеются ссылки в PM-каталоге узла Node_Power_Directory (для батарей узла) и/или в PM-каталогах блоков Unit_Power_Directory (для индивидуальных батарей блоков).

Яндекс.Метрика