clocks | soc@03000000 | aliases | chosen | firmware | cpus | opp_l_table | psci | n_brom | s_brom | sram_ctrl | sram_a1 | sram_a2 | prcm | s_cpuscfg | ion | dram | memory@40000000 | interrupt-controller@03020000 | interrupt-controller@0 | intc-nmi@07010320 | sunxi-sid@03006000 | sunxi-sid-ng@03006000 | sunxi-chipid@03006200 | timer_arch | pmu | dramfreq | uboot | iommu@030f0000 | gpu@0x01800000 | box_start_os0 | __symbols__ | Все узлы Узел: memory@40000000 - комментарии memory - узел устройства memory требуется для всех деревьев устройств и описывает структуру физической памяти для системы. Если в системе имеется несколько диапазонов памяти, можно создать несколько узлов памяти или указать диапазоны в свойстве reg одного узла памяти. Свойства узла memory :В примере ниже (из мануала) свойство reg используется для определения адреса и размера двух диапазонов памяти. Диапазон адресов области ввода-вывода 2 Гб пропускается. Обратите внимание, что свойства #address-cells и #size-cells корневого узла задают значение 2, что означает, что для определения адреса и длины свойства reg узла memory требуются две 32-битные ячейки.
Примечание.
А теперь два реальных примера: 1) В дереве устройств OpiZero2 (сохраненном с загруженной системой) имеется узел memory@40000000 со свойством reg, имеющем начение <0x00000000 40000000 0x00000000 40000000>, что соответствует размеру ОЗУ = 1 Gb, начинающегося с адреса 1 Gb, т.к. <0x00000000 40000000> = 1073741824 (1024 Mb) При этом в файле, сохраненном командой U-Boot fdtprint, reg = <0x00000000 40000000 0x00000000 20000000>, что соответствует размеру памяти 512 Mb. Видимо, в процессе загрузки ядра происходит определение реального размера памяти и модификация значения reg в дереве устройств Отметим, что 2 Gb - это истинный суммарный объем микросхем памяти, имеющихся в устройстве. Однако, в файле sunxi.fex, имеющемся в образе прошивки, |