Шина IEEE 1394 — FireWire

Информационный блок последовательной шины и корневой каталог

Информационный блок последовательной шины

Информационный блок последовательной шины (bus_info_block) занимает 4 квадлета (см. рисунок ниже). Назначение его полей:

  • bus_name — имя шины («1394» в ASCII)
  • irmc — признак способности к роли диспетчера изохронных ресурсов;
  • cmc — признак способности к роли мастера циклов;
  • isc — признак способности к изохронным передачам;
  • bmc — признак способности к роли диспетчера шины;
  • pmc — признак способности к управлению питанием (введено в 1394a);
  • cyc_clk_acc — точность генерации интервалов циклов (в миллионных долях, ppm, допустимо 0–100), только для узлов с cmc = 1;
  • max_rec — указатель максимального размера поля данных, равного 2max_rec + 1. Допустимо max_rec = 1…13 (длина пакета 4, 8, 16… 16 384 байт);
  • node_vendor_id — идентификатор производителя (то же, что и vendor_id в минимальном формате);
  • chip_id_hi, chip_id_lo — две составные части 40-битного идентификатора микросхемы LINK-уровня, который в совокупности с node_vendor_id дает глобально уникальный идентификатор узла;
  • gen — номер генерации содержимого памяти, инкрементируется с каждой его модификацией (введено в 1394a). Позволяет конфигурационному ПО сократить объем запрашиваемой информации, если считанное значение номера после сброса совпадает с предыдущим;
  • link_speed — максимальная скорость, поддерживаемая LINK-уровнем; может не совпадать со скоростью PHY, сообщаемой в пакете самоидентификации (введено в 1394a).

 

Корневой каталог

Корневой каталог содержит элементы, состоящие из двух полей:

  • key (8 бит) — ключ элемента, в котором можно выделить:
         -----key_type (2 бита) — тип ключа: 0 — непосредственный параметр, 1 — смещение (в начальном пространстве регистров), по которому находится параметр; 2 —смещение (в памяти конфигурации), по которому находится структура данных (лист); 3 — смещение, по которому находится каталог;
         -----key_value (6 бит) — значение ключа, по которому определяется назначение элемента.
  • value или offset (24 бита) — значение элемента или смещение ячейки памяти, с которой начинается данный элемент. Смещение указывается в квадлетах относительно положения данного элемента каталога.

Элементы корневого каталога приведены в таблице. Для всех узлов шины обязательны первые три элемента из приведенных в таблице. Структура элемента, содержащего уникальный 64-битный идентификатор узла, приведена на рисунке. Этот идентификатор, называемый EUI-64 (Extended Unique Identifier), состоит из идентификаторов производителя узла и идентификатора микросхемы LINKуровня. Он может использоваться для идентификации программного драйвера данного узла. В CSR определен еще и 88-битный глобальный идентификатор GUI (Globally Unique Identifier), в котором к EUI-64 в качестве старших 24 бит добавлен идентификатор Company_Id. Идентификатор GUI уникально определяет узел во всем мире всех шин, отвечающих CSR-архитектуре.

Таблица. Элементы корневого каталога

Ключ Смещение или значение
03h Module_Vendor_Id, значение идентификатора производителя модуля (может совпадать с идентификатором производителя узла)
0Ch Node_Capabilities, значение свойств узла (см. рисунок после этой таблицы):
spt — признак наличия регистра SPLIT_TIMEOUT, должен быть единичным у узла, способного участвовать в транзакциях
ms — признак наличия регистров Messaging Passing
int — признак наличия регистров Interrupt_Traget и Interrupt_Mask
ext — признак наличия регистра TEST_ARGUMENT
bas — признак наличия регистров TEST_START и TEST_STATUS
prv — признак наличия приватного пространства узла
64 — признак поддержки
64-битной адресации (в IEEE 1394 всегда установлен)
fix — признак фиксированной (а не расширенной) адресации (в IEEE 1394 всегда установлен)
lst — признак наличия бита Lost в регистрах State_Clear и State_Set
drq — признак наличия бита Dreq в регистрах State_Clear и State_Set
elog — признак наличия регистра Error_Log и бита Elog в регистрах State_Clear и State_Set
atn, off — признак наличия одноименных битов в регистрах State_Clear и State_Set
ded — узел поддерживает состояние Dead
init — узел поддерживает состояние Initializing
8Dh Node_Unique_Id_offset — смещение элементалиста с уникальным идентификатором узла. Смещение (в квадлетах) задается относительно положения данного ключа в памяти конфигурации. Формат элемента приведен на рисунок выше
82h Bus_Dependent_Info_Offset — смещение элемента информации, относящейся к шине
C2h Bus_Dependent_Info_Offset — смещение каталога информации, относящейся к шине
04h Module_Hw_Version, значение версии аппаратных средств модуля
05h Module_Spec_Id, значение идентификатора спецификации модуля
07h Module_Sw_Version, значение версии программных средств модуля
87h Module_Dependent_Info_Offset — смещение элемента информации, относящейся к модулю
C7h Module_Dependent_Info_Offset — смещение каталога информации, относящейся к модулю
08h Node_Vendor_Id, идентификатор производителя узла
09h Node_Hw_Version, значение версии аппаратных средств узла
0Ah Node_Spec_Id, значение идентификатора спецификации узла
0Bh Node_Sw_Version, значение версии программных средств узла
90h Node_Dependent_Info_Offset — смещение элемента информации, относящейся к узлу
D0h Node_Dependent_Info_Offset — смещение каталога информации, относящейся к узлу
D1h Unit_Directory_Offset — смещение каталога информации, относящейся к блоку
F0h Node_Power_Directory_Offset — относительное смещение каталога управления потреблением, относящегося к узлу (введено в 1394a)

 

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