Динамически сгенерируйте деревья устройств, которые включают узлы для сгенерированного ядра IP HDL Coder™ при помощи рабочего процесса генерации Ядра IP HDL Coder. Сгенерированное дерево устройств также включает узлы для ваших периферийных устройств платы, ядер IP исходного проекта и интерфейсов исходного проекта, которые получают доступ к системе обработки (PS) вашей целевой программируемой пользователем вентильной матрицы (FPGA) или системы на чипе (SoC) плата. Программируйте свою требуемую плату со сгенерированным деревом устройств и потоком битов.
Дерево устройств является структурой данных, которая описывает аппаратные устройства к операционной системе, работающей на требуемой плате. Ядро операционной системы использует описание дерева устройств, чтобы управлять доступными аппаратными устройствами. Например, операционная система использует дерево устройств, чтобы загрузить драйвер правильного устройства для данного аппаратного устройства.
Дерево устройств имеет древовидный формат структуры данных, состоящий из узлов и свойств. Изображение показывает эти компоненты дерева устройств.
В дереве устройств:
Узлы представляют устройства в системе.
Каждому узлу задали свойства как пары значения свойства, которые описывают характеристики устройства.
Каждый узел имеет точно один родительский элемент, за исключением корневого узла, который не имеет никакого родительского элемента. Корневой узел определяется при помощи наклонной черты вправо.
Это изображение показывает дерево устройств в качестве примера. Левая сторона показывает исходный файл дерева устройств. Правая сторона показывает концептуальную схему древовидной структуры с узлами и свойствами. Имена полей представляют имена узла, и текст в поле представляет пары значения свойства узлов.
Когда вы развертываете оборудование/разработку ПО в устройство SoC, дерево устройств сообщает PS о ядрах IP, доступных в потоке битов. Ядра IP появляются к PS как устройства, к которым можно получить доступ из программного обеспечения при помощи драйверов устройств. Поэтому дерево устройств и поток битов должны синхронизироваться.
Можно сгенерировать узлы дерева устройств, соответствующие сгенерированному ядру IP при помощи рабочего процесса генерации ядра IP. Рабочий процесс сохраняет дерево устройств и поток битов в синхронизации путем обновления дерева устройств каждый раз, когда ядро IP изменяется.
Включить генерацию узлов дерева устройств для HDL Coder сгенерировало ядра IP, HDL Coder разделяет дерево устройств на три отличных сегмента:
Сегмент Board — узлы Дерева устройств, соответствующие закрепленному оборудованию на вашей плате, такие как периферийные устройства центрального процессора (CPU) и процессора. Дерево устройств платы обычно получается от поставщика платы.
Сегмент исходного проекта — узлы Дерева устройств, соответствующие ядрам IP в вашем исходном проекте. Этот сегмент дерева устройств обычно создается, когда вы создаете исходный проект.
Сегмент HDL Coder IP Core — узлы Дерева устройств, соответствующие ядру IP, сгенерированы HDL Coder. Этот сегмент дерева устройств не должен быть создан, когда это может быть динамически сгенерировано HDL Coder.
Это изображение показывает плату SoC со своими сегментами дерева отдельного устройства.
Когда вы развертываете свой проект в цель, HDL Coder автоматически комбинирует эти сегменты вместе в полное дерево устройств, которое используется, чтобы программировать цель. Эти разделы обходят вас посредством процесса регистрации и генерации различных сегментов вашего дерева устройств.
Укажите дерево устройств платы к своему пользовательскому проекту платы при помощи adddevice tree
и adddevice treeIncludeDirectory
методы hdlcoder.Board
объект. Для получения дополнительной информации смотрите hdlcoder.Board
, addDeviceTree
, и addDeviceTreeIncludeDirectory
.
Это изображение показывает дерево устройств платы, указанное вашей пользовательской плате.
Укажите фрагмент исходного проекта своего дерева устройств при авторской разработке исходного проекта при помощи adddevice tree
и adddevice treeIncludeDirectory
методы hdlcoder.ReferenceDesign
объект. Чтобы указать дерево устройств, ваш исходный проект должен содержать IP системы обработки. Включите HasProcessingSystem
свойство hdlcoder.ReferenceDesign
объект. Смотрите hdlcoder.ReferenceDesign
, addDeviceTree
, и addDeviceTreeIncludeDirectory
.
Это изображение показывает исходный проект для дерева устройств, указанного к вашему пользовательскому исходному проекту.
Во время рабочего процесса генерации ядра IP HDL Coder генерирует ядро IP и вставляет его в ваш исходный проект. HDL Coder может также сгенерировать соответствующие узлы дерева устройств для этого ядра IP и объединить их с деревьями устройств исходного проекта и платой. Сгенерируйте узел дерева устройств для своего ядра IP при помощи рабочего процесса генерации ядра IP HDL Coder. Включите GenerateIPCoredevice treeNodes
свойство hdlcoder.ReferenceDesign
объект сгенерировать узлы дерева устройств для вашего ядра IP.
Это изображение показывает исходный проект для дерева устройств при генерации и добавлении, что узлы дерева устройств включены для ядра IP.
Чтобы включить генерацию дерева правильного устройства для вашего ядра IP, необходимо указать релевантную информацию для интерфейсов исходного проекта, которые соединяются с системой обработки. Включите генерацию узлов дерева устройств путем указывания информации для интерфейсов, которые соединяются с PS на целевом устройстве. Интерфейсы задают ссылки на другие узлы дерева устройств. Чтобы включить генерацию дерева устройств для ведомого интерфейса AXI4, включите HasProcessorConnection
свойство и задает значение для device treeBusNode
свойство addAXI4SlaveInterface
метод для hdlcoder.ReferenceDesign
объект. Смотрите addAXI4SlaveInterface
. Включите генерацию дерева устройств для интерфейса AXI4 Stream путем включения HasDMAConnection
и определение значений для device treeMasterChannelDMANode
и device treeSlaveChannelDMANode
. Смотрите addAXI4StreamInterface
.
Это изображение показывает, что генерация узла дерева устройств включила для Ядра IP ведомое устройство AXI4 и потоковые интерфейсы AXI4.
Загрузите сгенерированное дерево устройств и поток битов для вашей пользовательской платы, исходного проекта и ядра IP к целевому устройству при помощи рабочего процесса генерации ядра IP HDL Coder. Рабочий процесс генерации ядра IP компилирует плату, исходный проект и деревья основного устройства IP в дерево единого устройства и затем программирует их на целевое устройство наряду со сгенерированным потоком битов. Это изображение показывает сгенерированное дерево устройств и поток битов, запрограммированный на целевое устройство.
Во время загрузки HDL Coder использует компилятор дерева устройств на требуемой плате, чтобы объединить дерево устройств платы, дерево устройств исходного проекта и дерево основного устройства IP. HDL Coder затем копирует скомпилированные файлы дерева устройств назад в ваш хост - компьютер.
Следующие файлы дерева устройств сгенерированы во время рабочего процесса Генерации Ядра IP:
devicetree_<model-name>.dtb
— Бинарный файл дерева устройств раньше программировал плату. Этот файл сгенерирован компилятором дерева устройств.
devicetree_<model-name>.dts
— Файл дерева исходного устройства, предоставленный как вход компилятору дерева устройств. Этот файл сгенерирован HDL Coder.
devicetree_<model-name>.output.dts
— Объединенный исходный файл, который содержит информацию для дерева устройств платы, дерева устройств исходного проекта и вашего дерева основного устройства IP. Этот файл может использоваться для отладки и сгенерирован компилятором дерева устройств.
<ip-core-name>.dtsi
: Сегмент ядра IP дерева устройств. Этот файл сгенерирован HDL Coder.
Изображение показывает местоположение папки сгенерированных файлов дерева устройств для демонстрационного ядра IP.
Изображение показывает ваш файл исходного проекта с интерфейсными деталями. Слева пример файла исходного проекта с интерфейсными деталями. Справа сгенерированный файл дерева устройств.
addDeviceTree
| addDeviceTreeIncludeDirectory
| addDeviceTree
| addDeviceTreeIncludeDirectory
| HasDMAConnection | DeviceTreeMasterChannelDMANode | DeviceTreeSlaveChannelDMANode