В разделе aliases
DTS мы видим записи формата
property = &label;
Каждая запись состоит из:
a. property
- здесь определено новое свойство.
b. &label
- Полный путь DTS к node
, на который ссылается label
.
По сути, он присваивает a значение b. Отныне к длинному имени узла, идентифицированного label
, можно будет получить доступ с помощью сокращенного имени property
.
Обратите внимание, что правая часть этого назначения использует label
s, а НЕ - сокращенные имена отдельных узлов. Точно так же, как label
в коде C относится к инструкции в строке, где она определена, label
в DTS относится к отдельному узлу (используя его полный длинный путь), который определен в этой строке.
Например, учитывая следующий DTS,
lxr.free-electrons.com /source/arch/powerpc/boot/dts/mpc8313erdb.dts
раздел aliases
которого состоит из следующего:
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 serial0 = &serial0;
24 serial1 = &serial1;
25 pci0 = &pci0;
26 };
Вновь определенные свойства (LHS)
ethernet0
ethernet1
serial0
serial1
pci0
см. соответствующие этикетки (RHS)
Например, для свойства ethernet0
теперь установлено значение "/soc8313@e0000000/ethernet@24000"
, т. Е. Узел, определенный на строка, в которой определена метка enet0
.
ОБНОВЛЕНИЕ:
Почему псевдонимы определены ТОЛЬКО для ethernet0
, serial0
...?
Далее разработчик намеревается получить доступ к этим узлам в исходном коде ядра. Как только псевдоним определен в DTS, дескриптор узла, на который он ссылается, получается простым поиском его в разделе aliases
, а не поиском в весь DTS.
Источник: функция find_node_by_alias () в исходном коде ядра Linux.
Почему узел pci0
находится в НЕ под узлом soc8313
?
- On MPC8313, the PCI and DMA blocks are interfaced via the IO-Sequencer(IOS). Hence the special treatment as compared to the other blocks (ethernet, I2C, UART) that are connected directly to the system bus.
person
TheCodeArtist
schedule
19.07.2013