Команды U-Boot

  Инфо    Память    Хранилище    Выполнение    Загрузка    Окружение      FDT      Sunxi  

    fdt      fdt addr    fdt chosen    fdt list    fdt mknode    fdt move    fdt print    fdt rm    fdt set  

fdt


Служебные команды FDT (плоского дерева устройств) (flattened device tree utility commands)

Help: => help fdt fdt - flattened device tree utility commands Usage: fdt addr [-c] <addr> [<length>] - Set the [control] fdt location to <addr> fdt apply <addr> - Apply overlay to the DT fdt boardsetup - Do board-specific set up fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active fdt resize [<extrasize>] - Resize fdt to size + padding to 4k addr + some optional <extrasize> if needed fdt print <path> [<prop>] - Recursive print starting at <path> fdt list <path> [<prop>] - Print one level starting at <path> fdt get value <var> <path> <prop> - Get <property> and store in <var> fdt get name <var> <path> <index> - Get name of node <index> and store in <var> fdt get addr <var> <path> <prop> - Get start address of <property> and store in <var> fdt get size <var> <path> [<prop>] - Get size of [<property>] or num nodes and store in <var> fdt set <path> <prop> [<val>] - Set <property> [to <val>] fdt mknode <path> <node> - Create a new node after <path> fdt rm <path> [<prop>] - Delete the node or <property> fdt header - Display header info fdt bootcpu <id> - Set boot cpuid fdt memory <addr> <size> - Add/Update memory node fdt rsvmem print - Show current mem reserves fdt rsvmem add <addr> <size> - Add a mem reserve fdt rsvmem delete <index> - Delete a mem reserves fdt chosen [<start> <end>] - Add/update the /chosen branch in the tree <start>/<end> - initrd start/end addr NOTE: Dereference aliases by omitting the leading '/', e.g. fdt print ethernet0. =>

  • fdt addr [-c] <addr> [<length>] - установить [control] местоположение fdt на адрес <addr> длиной <length>
  • fdt apply <addr> - применить оверлей <addr> к дереву устройств
  • fdt boardsetup - настройка конкретной платы
  • fdt move <fdt> <newaddr> <length> - скопировать fdt в <addr> и сделать его активным
  • fdt resize [<extrasize>] - изменить размер fdt до size + заполнение до 4k addr + некоторый дополнительный <extrasize>, если необходимо
  • fdt print <path> [<prop>] - рекурсивный вывод, начиная с <path>
  • fdt list <path> [<prop>] - вывод одного уровня, начиная с <path>
  • fdt get value <var> <path> <prop> - получить <property> и сохранить в <var>
  • fdt get name <var> <path> <index> - получить имя узла <index> и сохранить в <var>
  • fdt get addr <var> <path> <prop> - получить начальный адрес <property> и сохранить в <var>
  • fdt get size <var> <path> [<prop>] - получить размер [<property>] или количество узлов и сохранить в <var>
  • fdt set <path> <prop> [<val>] - установить <property> [на <val>]
  • fdt mknode <path> <node> - создать новый узел после <path>
  • fdt rm <path> [<prop>] - удалить узел или <prop>
  • fdt header - показать информацию заголовка
  • fdt bootcpu <id> - установить загрузочный cpuid
  • fdt memory <addr> <size> - добавить / обновить узел памяти
  • fdt rsvmem print - показать текущие резервы памяти
  • fdt rsvmem add <addr> <size> - добавить резерв памяти
  • fdt rsvmem delete <index> - удалить зарезервированную память
  • fdt selected [<start> <end>] - добавить / обновить / выбранную ветвь в дереве
    <start> / <end> - начальный / конечный адрес initrd

    Примечания.

  • 1. Выполняйте разыменование псевдонимов, опуская "/" в начале, например, fdt print ethernet0.

  • 2. fdt print без аргументов - очень длинный вывод полного дерева устройств (прервать по Ctrl-C)
  • Результат выполнения команды для Orange Pi Zero2:

    => fdt header magic: 0xd00dfeed totalsize: 0x1f880 (129152) off_dt_struct: 0x48 off_dt_strings: 0x1baec off_mem_rsvmap: 0x28 version: 17 last_comp_version: 16 boot_cpuid_phys: 0x0 size_dt_strings: 0x3262 size_dt_struct: 0x1baa4 number mem_rsv: 0x1 => fdt rsvmem print index start size ------------------------------------------------ 0 0000000048000000 0000000001000000

    => fdt list / { interrupt-parent = <0x00000001>; #address-cells = <0x00000002>; #size-cells = <0x00000002>; model = "sun50iw9"; compatible = "allwinner,h616", "arm,sun50iw9p1"; 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__ { }; };