link140 link141 link142 link143 link144 link145 link146 link147 link148 link149 link150 link151 link152 link153 link154 link155 link156 link157 link158 link159 link160 link161 link162 link163 link164 link165 link166 link167 link168 link169 link170 link171 link172 link173 link174 link175 link176 link177 link178 link179 link180 link181 link182 link183 link184 link185 link186 link187 link188 link189 link190 link191 link192 link193 link194 link195 link196 link197 link198 link199 link200 link201 link202 link203 link204 link205 link206 link207 link208 link209 link210 link211 link212 link213 link214 link215 link216 link217 link218 link219 link220 link221 link222 link223 link224 link225 link226 link227 link228 link229 link230 link231 link232 link233 link234 link235 link236 link237 link238 link239 link240 link241 link242 link243 link244 link245 link246 link247 link248 link249 link250 link251 link252 link253 link254 link255 link256 link257 link258 link259 link260 link261 link262 link263 link264 link265 link266 link267 link268 link269 link270 link271 link272 link273 link274 link275 link276 link277 link278 link279

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Шина 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 (для индивидуальных батарей блоков).