SDK ПЛИС для OpenCL
Руководство пользователя
UG-OCL009
2017.05.08
Последнее обновление для Intel® Quartus® Prime Design Suite: 17.0
Подписаться
Отправить отзыв
Intel® FPGA SDK для OpenCL™ Intel® Cyclone®V SoC Development Kit Справочное руководство по переносу платформы
Руководство по портированию эталонной платформы V SoC Development Kit описывает аппаратное и программное обеспечение эталонной платформы Intel Cyclone V SoC Development Kit (c5soc) для использования с Intel Software Development Kit (SDK) для OpenCL Intel ® FPGA SDK для OpenCL ™ Intel Cyclone ® . Прежде чем начать, корпорация Intel настоятельно рекомендует ознакомиться с содержанием следующих документов:
- Intel FPGA SDK для OpenCLIntel Cyclone V SoC Руководство по началу работы
- Руководство пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit
- Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual Кроме того, обратитесь к странице Cyclone V SoC Development Kit и SoC Embedded Design Suite на странице webсайт для получения дополнительной информации. 1 2
Внимание: Корпорация Intel предполагает, что вы хорошо разбираетесь в руководстве пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit. Справочное руководство по портированию платформы Cyclone V SoC Development Kit не описывает использование пользовательского набора инструментов платформы SDK для реализации пользовательской платформы для Cyclone V SoC Development Kit. Он описывает только различия между поддержкой SDK в комплекте разработки Cyclone V SoC и общим SDK Intel FPGA для пользовательской платформы OpenCL.
Ссылки по теме
- Intel FPGA SDK для OpenCL Cyclone V SoC Руководство по началу работы
- Руководство пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit
- Справочник по устройству Cyclone V, том 3: Техническое справочное руководство по жесткой процессорной системе
- Страница Cyclone V SoC Development Kit и SoC Embedded Design Suite на Altera webсайт
- OpenCL и логотип OpenCL являются товарными знаками Apple Inc., используемыми с разрешения Khronos Group™.
- Intel FPGA SDK для OpenCL основан на опубликованной спецификации Khronos и прошел процесс тестирования на соответствие Khronos. Текущий статус соответствия можно найти по адресу www.khronos.org/conformance.
Корпорация Интел. Все права защищены. Intel, логотип Intel, слова и логотипы Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus и Stratix являются товарными знаками корпорации Intel или ее дочерних компаний в США и/или других странах. Корпорация Intel гарантирует производительность своих FPGA и полупроводниковых продуктов в соответствии с текущими спецификациями в соответствии со стандартной гарантией Intel, но оставляет за собой право вносить изменения в любые продукты и услуги в любое время без предварительного уведомления. Intel не принимает на себя никакой ответственности или обязательств, возникающих в связи с применением или использованием какой-либо информации, продуктов или услуг, описанных в настоящем документе, за исключением случаев, когда это прямо согласовано с корпорацией Intel в письменной форме. Клиентам Intel рекомендуется получить последнюю версию спецификаций устройств, прежде чем полагаться на какую-либо опубликованную информацию и размещать заказы на продукты или услуги.
*Другие названия и бренды могут быть заявлены как собственность других лиц.
1.1.1 Комплект для разработки SoC Cyclone V, варианты эталонной платы платформы
Intel FPGA SDK для эталонной платформы OpenCL Cyclone V SoC Development Kit включает два варианта платы.
- c5soc доска
Эта плата по умолчанию обеспечивает доступ к двум банкам памяти DDR. HPS DDR доступен как для FPGA, так и для ЦП. FPGA DDR доступна только для FPGA. - доска c5soc_sharedonly
Этот вариант платы содержит только подключение HPS DDR. FPGA DDR недоступен. Этот вариант платы более эффективен по площади, поскольку для поддержки одного банка памяти DDR требуется меньше оборудования. Плата c5soc_sharedonly также является хорошей платформой для прототипирования окончательной серийной платы с одним банком памяти DDR.
Чтобы использовать этот вариант платы при компиляции ядра OpenCL, включите параметр -board c5soc_sharedonly в команду aoc.
Для получения дополнительной информации о –board вариант команды aoc, см. Руководство по программированию Intel FPGA SDK для OpenCL.
Ссылки по теме
Компиляция ядра для конкретной платы ПЛИС (–board )
1.1.2 Содержание эталонной платформы Cyclone V SoC Development Kit
Эталонная платформа Cyclone V SoC Development Kit состоит из следующих компонентов: files и каталоги:
File или Каталог | Описание |
board_env.xml | Расширяемый язык разметки (XML) file который описывает c5soc для Intel FPGA SDK для OpenCL. |
linux_sd_card_image.tgz | Сжатый образ флэш-карты SD file который содержит все, что нужно пользователю SDK для использования Cyclone V SoC Development Kit с SDK. |
рука32 | Каталог, который содержит следующее: |
1.1.3 Важные функции комплекта разработки Cyclone V SoC
В следующем списке перечислены компоненты и функции комплекта разработки Cyclone V SoC, относящиеся к Intel FPGA SDK для OpenCL:
- Двухъядерный процессор ARM Cortex-A9 под управлением 32-разрядной версии Linux.
- Шина Advanced eXtensible Interface (AXI) между HPS и базовой структурой FPGA.
- Два усиленных контроллера памяти DDR, каждый из которых подключается к 1 гигабайту (ГБ) DDR3 SDRAM.
— Один контроллер DDR доступен только для ядра FPGA (то есть FPGA DDR).
— Другой контроллер DDR доступен как для HPS, так и для FPGA (то есть HPS DDR). Этот общий контроллер позволяет свободно распределять память между ЦП и ядром ПЛИС. - ЦП может реконфигурировать структуру ядра FPGA.
1.1.3.1 Эталонная платформа комплекта разработки SoC Cyclone V Цели и решения при проектировании Intel основывает реализацию эталонной платформы комплекта разработки SoC Cyclone V на нескольких проектных целях и решениях. Корпорация Intel рекомендует учитывать эти цели и решения при переносе этой эталонной платформы на плату SoC FPGA.
Ниже приведены цели разработки c5soc:
- Обеспечьте максимально возможную пропускную способность между ядрами на FPGA и системой(ами) памяти DDR.
- Убедитесь, что вычисления на FPGA (то есть ядрах OpenCL) не мешают другим задачам ЦП, которые могут включать обслуживание периферийных устройств.
- Оставьте как можно больше ресурсов FPGA для вычислений ядра вместо компонентов интерфейса.
Ниже приведены проектные решения высокого уровня, которые являются прямым следствием целей проектирования Intel:
- Эталонная платформа использует только жесткие контроллеры памяти DDR с максимально возможной конфигурацией (256 бит).
- FPGA взаимодействует с контроллером памяти HPS DDR напрямую, без задействования шины AXI и коммутатора L3 внутри HPS. Прямая связь обеспечивает максимально возможную пропускную способность для DDR и не позволяет вычислениям FPGA мешать обмену данными между ЦП и его периферией.
- Прямой доступ к памяти с разбросом и сбором (SG-DMA) не является частью логики интерфейса FPGA. Вместо передачи больших объемов данных между системами памяти DDR храните данные в общей HPS DDR. Прямой доступ к памяти процессора с помощью FPGA более эффективен, чем прямой доступ к памяти. Это экономит аппаратные ресурсы (то есть площадь FPGA) и упрощает драйвер ядра Linux.
Предупреждение: Передача памяти между общей системой HPS DDR и системой DDR, доступной только для FPGA, происходит очень медленно. Если вы решите
передавайте память таким образом, используйте ее только для очень небольших объемов данных. - Хост и устройство выполняют передачу данных без DMA между собой через мост HPS-to-FPGA (H2F), используя только один 32-битный порт. Причина в том, что без DMA ядро Linux может выдать только один 32-битный запрос на чтение или запись, поэтому нет необходимости в более широком соединении.
- Хост отправляет управляющие сигналы на устройство через облегченный мост H2F (LH2F).
Поскольку управляющие сигналы от хоста к устройству являются сигналами с низкой пропускной способностью, мост LH2F идеально подходит для этой задачи.
1.2 Портирование эталонной платформы на вашу плату SoC FPGA
Чтобы перенести эталонную платформу Cyclone V SoC Development Kit на вашу плату SoC FPGA, выполните следующие задачи:
- Выберите версию эталонной платформы c5soc с одной или двумя памятью DDR в качестве отправной точки вашего проекта.
- Обновите расположение выводов в файле ALTERAOCLSDKROOT/board/c5soc/. /top.qsf file, где ALTERAOCLSDKROOT — путь к расположению Intel FPGA SDK для установки OpenCL, а имя каталога варианта платы. Каталог c5soc_sharedonly предназначен для варианта платы с одной системой памяти DDR. Каталог c5soc предназначен для варианта платы с двумя системами памяти DDR.
- Обновите настройки DDR для блоков HPS и/или FPGA SDRAM в папке ALTERAOCLSDKROOT/board/c5soc/. /system.qsys file.
4. Все предпочтительные конструкции плат Intel FPGA SDK для OpenCL должны обеспечивать гарантированное закрытие времени. Таким образом, размещение дизайна должно быть четким по времени. Чтобы перенести раздел платы c5soc (acl_iface_partition.qxp) на плату SoC FPGA, выполните следующие задачи:
Подробные инструкции по изменению и сохранению раздела платы см. в документации Quartus.
Глава Prime Incremental Compilation for Hierarchical and Team-Based Design в Руководстве Quartus Prime Standard Edition.
а. Удалите файл acl_iface_partition.qxp из каталога ALTERAOCLSDKROOT/board/c5soc/c5soc.
б. Включите область LogicLock™ acl_iface_region, изменив команду Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region на set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
в. Скомпилируйте ядро OpenCL для вашей платы.
д. При необходимости отрегулируйте размер и расположение области LogicLock.
е. Когда вы убедитесь, что размещение вашего дизайна соответствует времени, экспортируйте этот раздел как acl_iface_partition.qxp Quartus Prime Exported Partition. File.
Как описано в разделе «Создание гарантированного потока синхронизации» в руководстве пользователя AIntel FPGA SDK для OpenCL Custom Platform Toolkit, импортировав этот файл .qxp file в дизайн верхнего уровня, вы выполняете требование предоставления дизайна платы с гарантированным потоком закрытия по времени.
Факторы, которые могут повлиять на качество результатов (QoR) экспортированного раздела, см. в разделе «Общие вопросы качества результатов для экспортированного раздела платы» в руководстве пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit.
ф. Отключите область LogicLock acl_iface_region, вернув команду на шаге 2 обратно к set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - Если ваша плата SoC FPGA использует другие контакты и периферию блока HPS, повторно создайте предварительный загрузчик и источник дерева устройств (DTS). file. Если вы измените настройки контроллера памяти HPS DDR, повторно создайте предварительный загрузчик.
- Создайте образ флэш-карты SD.
- Создайте свою пользовательскую платформу, которая включает в себя образ SD-флэш-карты.
- Рассмотрите возможность создания версии среды выполнения вашей пользовательской платформы для использования с Intel FPGA Runtime Environment (RTE) для OpenCL. Версия RTE вашей пользовательской платформы не включает каталоги оборудования и образ флэш-карты SD. Эта настраиваемая платформа загружается в систему SoC FPGA, чтобы разрешить запуск хост-приложений. Напротив, SDK-версия Custom Platform необходима SDK для компиляции ядер OpenCL.
Совет: вы можете использовать SDK-версию вашей пользовательской платформы для RTE. Сохранить
пространство, удалите образ флэш-карты SD из версии RTE вашей пользовательской платформы. - Протестируйте свою пользовательскую платформу.
Дополнительную информацию см. в разделе «Тестирование конструкции оборудования» в руководстве пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit.
Ссылки по теме
- Тестирование дизайна оборудования
- Инкрементная компиляция Quartus Prime для иерархического и командного проектирования
- Установление гарантированного временного потока
- Общие рекомендации по качеству результатов для экспортированного раздела платы
1.2.1 Обновление перенесенной эталонной платформы
В текущей версии эталонной платформы Cyclone V SoC Development Kit блок HPS находится внутри раздела, определяющего всю неядерную логику. Однако вы не можете экспортировать HPS как часть файла .qxp. file. Чтобы обновить существующую пользовательскую платформу, которую вы изменили из предыдущей версии c5soc, внедрите процесс сохранения QXP, обновите образ флэш-карты SD, чтобы получить последнюю среду выполнения, и обновите board_spec.xml. file чтобы включить автоматическую миграцию.
Altera® SDK для OpenCL версии 14.1 и выше исследует board_spec.xml file для информации о плате и реализует автоматические обновления. Поскольку вы модифицируете
дизайн путем реализации потока сохранения QXP, вы должны обновить board_spec.xml file в его формат в текущей версии. Обновление file позволяет SDK отличать несохраненные пользовательские платформы от текущих пользовательских платформ на основе QXP. Дополнительную информацию см. в разделе «Автомиграция настраиваемой платформы для обеспечения прямой совместимости» в руководстве пользователя Intel FPGA SDK для OpenCL Custom Platform Toolkit.
- Чтобы реализовать процесс сохранения QXP в аппаратном дизайне FPGA SoC Cyclone V, перенесенном из предыдущей версии c5soc, выполните следующие шаги, чтобы создать подраздел, чтобы исключить HPS из .qxp. file:
а. Прежде чем создавать раздел вокруг неядерной логики, создайте раздел вокруг HPS в настройках .qsf Quartus Prime. File.
Напримерampль:
# Вручную разделите экземпляр, который моделирует выделенный HPS ввод-вывод set_instance_assignment -name PARTITION_HIERARCHY borde_18261 -to «system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_hps_0_hps_io:hps_io| system_acl_iface_hps_0_hps_io_border:border» -section_id «system_acl_iface_hps_0_hps_io_border:border»
# Установить раздел как тип HPS_PARTITION, чтобы остальная часть Quartus правильно обрабатывала его
set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id «system_acl_iface_hps_0_hps_io_border:border»
quartus_cdb сверху -c сверху
–incremental_compilation_export=acl_iface_partition.qxp
–incremental_compilation_export_partition_name=acl_iface_partition
–incremental_compilation_export_post_synth=на
–incremental_compilation_export_post_fit=on
–incremental_compilation_export_routing=on
–incremental_compilation_export_flatten=выкл.
После того, как вы исключите HPS из раздела, вы можете импортировать .qxp file и скомпилируйте свой дизайн. - Обновите образ флэш-карты SD с помощью текущей версии Intel FPGA RTE для OpenCL, выполнив следующие задачи:
а. Установите file таблица размещения (fat32) и расширенная file системные (ext3) разделы в существующем образе в качестве петлевых устройств. Подробные инструкции см. в шаге 2 раздела «Создание образа SD-флеш-карты».
б. В каталоге /home/root/opencl_arm32_rte удалите fileс предыдущей версии RTE.
в. Загрузите и распакуйте текущую версию RTE в каталог /home/root/opencl_arm32_rte.
д. в /драйвер/версия.h file вашей пользовательской платформы, обновите назначение ACL_DRIVER_VERSION на . (напримерample, 16.1.x, где 16.1 — версия SDK, а x — версия драйвера, которую вы установили).
е. Восстановите драйвер.
ф. Удалите аппаратные папки вашей пользовательской платформы. Скопируйте пользовательскую платформу вместе с обновленным драйвером в каталог /home/root/opencl_arm_rte/board.
грамм. Скопируйте Altera.icd file из каталога /home/root/opencl_arm32_rte и добавьте его в каталог /etc/OpenCL/vendors.
час Размонтируйте и протестируйте новый образ. Подробные инструкции см. в шагах с 8 по 11 раздела «Создание образа SD-флеш-карты».
Ссылки по теме
- Создание образа SD Flash Card на стр. 14
У вас также есть возможность создать новый образ флэш-карты SD. - Автоматическая миграция пользовательских платформ для прямой совместимости
1.3 Программная поддержка разделяемой памяти
Общая физическая память между FPGA и ЦП является предпочтительной памятью для ядер OpenCL, работающих на SoC FPGA. Поскольку FPGA обращается к общей физической памяти, а не к общей виртуальной памяти, она не имеет доступа к таблицам страниц ЦП, которые отображают виртуальные адреса пользователей в адреса физических страниц.
Что касается аппаратного обеспечения, ядра OpenCL получают доступ к общей физической памяти через прямое подключение к контроллеру жесткой памяти HPS DDR. Что касается программного обеспечения, поддержка общей физической памяти требует следующих соображений:
- Типичные программные реализации для выделения памяти на ЦП (например,ample, функция malloc()) не может выделить область памяти, которую может использовать ПЛИС.
Память, которую выделяет функция malloc(), является непрерывной в адресном пространстве виртуальной памяти, но любые нижележащие физические страницы вряд ли будут непрерывными физически. Таким образом, хост должен иметь возможность выделять физически непрерывные области памяти. Однако эта возможность отсутствует в приложениях пользовательского пространства в Linux. Следовательно, драйвер ядра Linux должен выполнять выделение. - Драйвер ядра OpenCL SoC FPGA Linux включает функцию mmap() для выделения общей физической памяти и отображения ее в пространстве пользователя. Функция mmap() использует стандартный вызов ядра Linux dma_alloc_coherent() для запроса физически смежных областей памяти для совместного использования с устройством.
- В ядре Linux по умолчанию dma_alloc_coherent() не выделяет физически непрерывную память размером более 0.5 мегабайт (МБ). Чтобы позволить dma_alloc_coherent() выделять большие объемы физически непрерывной памяти, включите функцию распределения непрерывной памяти (CMA) ядра Linux, а затем перекомпилируйте ядро Linux.
Для эталонной платформы Cyclone V SoC Development Kit CMA управляет 512 МБ из 1 ГБ физической памяти. Вы можете увеличить или уменьшить это значение в зависимости от объема общей памяти, который требуется приложению. Вызов dma_alloc_coherent() может оказаться не в состоянии выделить полные 512 МБ физически непрерывной памяти; однако обычно он может получить примерно 450 МБ памяти. - ЦП может кэшировать память, которую выделяет вызов dma_alloc_coherent(). В частности, операции записи из хост-приложения не видны ядрам OpenCL. Функция mmap() в драйвере ядра OpenCL SoC FPGA Linux также содержит вызовы функции pgprot_noncached() или remap_pf_range() для явного отключения кэширования для этой области памяти.
- После того, как функция dma_alloc_coherent() выделяет физически непрерывную память, функция mmap() возвращает виртуальный адрес в начало диапазона, который является диапазоном адресов выделенной памяти. Хост-приложению требуется этот виртуальный адрес для доступа к памяти. С другой стороны, для ядер OpenCL требуются физические адреса. Драйвер ядра Linux отслеживает сопоставление виртуальных и физических адресов. Вы можете сопоставить физические адреса, которые возвращает mmap(), с реальными физическими адресами, добавив запрос к драйверу.
Вызов интерфейса прикладного программирования (API) aocl_mmd_shared_mem_alloc() MMD включает следующие запросы:
а. Функция mmap(), которая выделяет память и возвращает виртуальный адрес.
б. Дополнительный запрос, который сопоставляет возвращенный виртуальный адрес с физическим адресом.
Затем вызов API MMD aocl_mmd_shared_mem_alloc() возвращает два адреса.
— фактически возвращаемый адрес является виртуальным адресом, а физический адрес относится к device_ptr_out.
Примечание: Драйвер может отображать только виртуальные адреса, возвращаемые функцией mmap(), на физические адреса. Если вы запрашиваете физический адрес любого другого виртуального указателя, драйвер возвращает значение NULL.
Предупреждение: Intel FPGA SDK для библиотек времени выполнения OpenCL предполагает, что общая память является первой памятью, указанной в board_spec.xml. file. Другими словами, физический адрес, который получает драйвер ядра Linux, становится адресом Avalon®, который ядро OpenCL передает в HPS SDRAM.
Что касается библиотеки времени выполнения, используйте вызов clCreateBuffer() для выделения разделяемой памяти в качестве буфера устройства следующим образом:
- Для варианта с двумя платами DDR как с общей, так и с общей памятью clCreateBuffer() выделяет общую память, если вы укажете флаг CL_MEM_USE_HOST_PTR. Использование других флагов приводит к тому, что clCreateBuffer() выделяет буфер в неразделяемой памяти.
- Для варианта с одной платой DDR и только общей памятью функция clCreateBuffer() выделяет общую память независимо от того, какой флаг вы укажете.
В настоящее время поддержка 32-разрядной версии Linux на ЦП ARM определяет степень поддержки общей памяти в библиотеках среды выполнения SDK. Другими словами, библиотеки времени выполнения, скомпилированные для других сред (например,ample, x86_64 Linux или 64-битная Windows) не поддерживают общую память.
C5soc не реализовал гетерогенную память, чтобы различать разделяемую и неразделяемую память по следующим причинам:
1. История — поддержка гетерогенной памяти была недоступна, когда изначально создавалась поддержка общей памяти.
2. Единый интерфейс. Поскольку OpenCL является открытым стандартом, корпорация Intel обеспечивает согласованность между поставщиками разнородных вычислительных платформ. Таким образом, для выделения и использования общей памяти используется тот же интерфейс, что и в архитектурах других производителей плат.
1.4 Реконфигурация ПЛИС
Для SoC FPGA ЦП может реконфигурировать структуру ядра ПЛИС, не прерывая работу ЦП. Аппаратный блок FPGA Manager, который охватывает HPS и ядро FPGA, выполняет реконфигурацию. Ядро Linux включает драйвер, обеспечивающий легкий доступ к диспетчеру FPGA.
- К view состояние ядра FPGA вызовите команду cat /sys/class/fpga/fpga0/status.
Программная утилита Intel FPGA SDK для OpenCL, доступная с эталонной платформой Cyclone V SoC Development Kit, использует этот интерфейс для программирования FPGA. При перепрограммировании ядра ПЛИС с работающим ЦП утилита программы выполняет все следующие задачи:
1. Перед перепрограммированием отключите все коммуникационные мосты между FPGA и HPS, оба моста H2F и LH2F.
Повторно включите эти мосты после завершения перепрограммирования.
Внимание: система OpenCL не использует мост FPGA-to-HPS (F2H). Обратитесь к разделу Интерфейсы HPS-FPGA в Справочнике по устройствам Cyclone V, том 3: Техническое справочное руководство по системе аппаратных процессоров для получения дополнительной информации.
2. Убедитесь, что связь между FPGA и контроллером HPS DDR отключена во время перепрограммирования.
3. Убедитесь, что прерывания FPGA на FPGA отключены во время перепрограммирования.
Кроме того, уведомите драйвер об отклонении любых прерываний от FPGA во время перепрограммирования.
Обратитесь к исходному коду утилиты программы для получения подробной информации о фактической реализации.
Предупреждение: Не изменяйте конфигурацию контроллера HPS DDR при работающем ЦП.
Это может привести к неустранимой системной ошибке, поскольку вы можете изменить конфигурацию контроллера DDR, когда есть невыполненные транзакции памяти от ЦП. Это означает, что при работающем ЦП нельзя перепрограммировать ядро ПЛИС с помощью образа, использующего HPS DDR в другой конфигурации.
Помните, что система OpenCL и эталонный проект Golden Hardware, доступный в комплекте Intel SoC FPGA Embedded Design Suite (EDS), устанавливает для HPS DDR одиночный 256-битный режим.
Части системы ЦП, такие как предсказатель ветвлений или предварительная выборка таблицы страниц, могут выдавать команды DDR, даже если кажется, что на ЦП ничего не работает.
Таким образом, время загрузки — единственное безопасное время для установки конфигурации контроллера HPS DDR.
Это также означает, что U-boot должен иметь необработанный двоичный файл. file (.rbf) изображение для загрузки в память. В противном случае вы можете включить HPS DDR с неиспользуемыми портами на FPGA, а затем потенциально изменить конфигурацию портов. По этой причине драйвер ядра OpenCL Linux больше не включает логику, необходимую для установки конфигурации контроллера HPS DDR.
Переключатели двойного встроенного пакета (DIP) SW3 в комплекте разработки SoC Cylone V управляют ожидаемой формой образа .rbf (т. е. file сжат и/или зашифрован). C5soc и Golden Hardware Reference Design, доступные с SoC EDS, включают сжатые, но незашифрованные образы .rbf. Настройки DIP-переключателя SW3, описанные в Intel FPGA SDK для OpenCL Cyclone V SoC, Руководство по началу работы, соответствуют этой конфигурации образа .rbf.
Ссылки по теме
- Интерфейсы HPS-FPGA
- Настройка коммутаторов SW3
1.4.1 Детали системной архитектуры FPGA
Поддержка эталонной платформы Cyclone V SoC Development Kit основана на эталонной платформе Stratix® V (s5_ref), доступной с Intel FPGA SDK для OpenCL.
Общая организация системы c5soc Qsys и драйвера ядра очень похожи на таковые в s5_ref.
Следующие основные компоненты FPGA одинаковы как в c5soc, так и в s5_ref:
- блок VERSION_ID
- Механизм отдыха
- Разделитель банка памяти
- Кэширующий интерфейс
- Часы ядра
- Блоки управления доступом к регистру (CRA)
1.5 Создание образа SD Flash Card
Поскольку Cyclone V SoC FPGA представляет собой полноценную систему на кристалле, вы несете ответственность за предоставление полного определения системы. Intel рекомендует поставлять его в виде образа флэш-карты SD. Пользователь Intel FPGA SDK для OpenCL может просто записать образ на флэш-карту micro SD, и плата SoC FPGA готова к использованию.
Изменение образа существующей флэш-карты SD на стр. 13
Корпорация Intel рекомендует просто изменить образ, доступный на эталонной платформе Cyclone V SoC Development Kit. У вас также есть возможность создать новый образ флэш-карты SD.
Создание образа SD Flash Card на стр. 14
У вас также есть возможность создать новый образ флэш-карты SD.
1.5.1 Изменение существующего образа SD Flash Card
Intel рекомендует просто изменить образ, доступный с Cyclone V SoC.
Эталонная платформа комплекта разработки. У вас также есть возможность создать новый образ флэш-карты SD.
Образ c5soc linux_sd_card_image.tgz file доступен в каталоге ALTERAOCLSDKROOT/board/c5soc, где ALTERAOCLSDKROOT указывает путь к Intel FPGA SDK для каталога установки OpenCL.
Внимание: Чтобы изменить образ флэш-карты SD, у вас должны быть привилегии root или sudo.
- Чтобы распаковать $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, запустите команду tar xvfzlinux_sd_card_image.tgz.
- Скомпилируйте пример hello_world OpenCL.ampдизайн с использованием поддержки вашей пользовательской платформы. Переименуйте .rbf file который Intel FPGA SDK для автономного компилятора OpenCL создает как opencl.rbf, и поместите его в раздел fat32 в образе флэш-карты SD.
Вы можете скачать приложение hello_world exampДизайн от OpenCL Design Exampстраница на Altera webсайт. - Поместите .rbf file в раздел фат32 образа флешки.
Внимание: Раздел fat32 должен содержать как zImage, file и .rbf file. Без .rbf file, при вставке драйвера произойдет фатальная ошибка. - После создания образа SD-карты запишите его на карту micro SD, выполнив следующую команду: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Чтобы протестировать образ флэш-карты SD, выполните следующие задачи:
а. Вставьте флэш-карту micro SD в плату SoC FPGA.
б. Включите плату.
в. Вызовите команду утилиты диагностики aocl.
1.5.2 Создание образа SD Flash карты
У вас также есть возможность создать новый образ флэш-карты SD. Общие инструкции по созданию нового образа SD-флеш-карты и восстановлению существующего образа SD-флэш-карты доступны на странице GSRD v14.0.2 — SD-карта на сайте RocketBoards.org. webсайт.
Шаги ниже описывают процедуру создания образа linux_sd_card_image.tgz из образа SD-карты Golden System Reference Design (GSRD):
Примечание:
Чтобы создать образ из образа c5soc, выполните все применимые задачи, описанные в этой процедуре.
- Загрузите и распакуйте образ флэш-карты GSRD SD версии 14.0 с сайта Rocketboards.org.
- Смонтируйте file таблица размещения (fat32) и расширенная file системные (ext3) разделы в этом образе как петлевые устройства. Чтобы смонтировать раздел, выполните следующие действия:
а. Определите начало байта раздела в образе, вызвав /sbin/fdisk -lu image_file команда.
Напримерample, раздел номер 1 типа W95 FAT имеет смещение блока 2121728. При 512 байтах на блок смещение байтов составляет 512 байт x 2121728 = 1086324736 байт.
б. Определите устройство со свободной петлей (например,ample, /dev/loop0), введя команду lossup -f.
в. Предполагая, что /dev/loop0 является устройством свободного цикла, назначьте образ вашей флэш-карты устройству блока цикла, вызвав команду lossup /dev/loop0 image_file -0 1086324736 команда.
д. Смонтируйте петлевое устройство, вызвав команду mount /dev/loop0 /media/disk1.
Внутри изображения file, /media/disk1 теперь является смонтированным разделом FAT32.
е. Повторите шаги с a по d для раздела ext3. - Загрузите версию Cyclone V SoC FPGA пакета Intel FPGA Runtime Environment for OpenCL из Центра загрузки на сайте Altera. webсайт.
а. Нажмите кнопку «Загрузить» рядом с выпуском программного обеспечения Quartus Prime.
б. Укажите версию выпуска, операционную систему и способ загрузки.
в. Перейдите на вкладку «Дополнительное программное обеспечение» и выберите загрузку Intel FPGA.
Среда выполнения для OpenCL Linux Cyclone V SoC TGZ.
д. После загрузки aocl-rte- .arm32.tgz file, распакуйте его в
каталог, которым вы владеете. - Поместите распакованный aocl-rte- .arm32 в каталог /home/root/opencl_arm32_rte в разделе ext3 образа file.
- Удалите аппаратную папку (папки) вашей пользовательской платформы, а затем поместите пользовательскую платформу в подкаталог платы /home/root/opencl_arm32_rte.
- Создайте init_opencl.sh file в каталоге /home/root со следующим содержимым: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
Пользователь SDK запускает команду source ./init_opencl.sh для загрузки переменных среды и драйвера ядра OpenCL Linux. - Если вам нужно обновить предварительный загрузчик, DTS files или ядра Linux вам понадобится компилятор arm-linux-gnueabihf-gcc из SoC EDS. Следуйте инструкциям, изложенным в Руководстве пользователя Intel SoC FPGA Embedded Design Suite, чтобы приобрести программное обеспечение, перекомпилировать его и обновить соответствующие компоненты. files на смонтированном разделе FAT32.
Внимание: Скорее всего, вам нужно обновить предварительный загрузчик, если ваша пользовательская платформа использует другие контакты, чем в c5soc.
Помните: если вы перекомпилируете ядро Linux, перекомпилируйте драйвер ядра Linux с тем же исходным кодом ядра Linux. fileс. Если есть несоответствие между драйвером ядра Linux и ядром Linux, драйвер не загрузится. Кроме того, вы должны включить CMA.
Дополнительные сведения см. в разделе Перекомпиляция ядра Linux. - Скомпилируйте пример hello_world OpenCL.ampдизайн с использованием поддержки вашей пользовательской платформы. Переименуйте .rbf file который Intel FPGA SDK для автономного компилятора OpenCL создает как opencl.rbf, и поместите его в раздел fat32 в образе флэш-карты SD.
Вы можете скачать приложение hello_world exampДизайн от OpenCL Design Exampстраница на Altera webсайт.
9. После того, как вы сохраните все необходимое files на образ флэш-карты, вызовите следующие команды:
а. синхронизировать
б. размонтировать /носитель/диск1
в. размонтировать где это имя каталога, которое вы используете для монтирования раздела ext3 в 3 на стр. 3 (например,ample, /media/disk2).
д. Losetup -d /dev/loop0
е. Losetup -d /dev/loop1 - Сожмите образ флэш-карты SD, выполнив следующую команду: tar cvfz .tgz linux_sd_card_image
- Доставить .tgz file внутри корневого каталога вашей пользовательской платформы.
- Чтобы протестировать образ флэш-карты SD, выполните следующие задачи:
а. Запишите полученный несжатый образ на карту памяти micro SD.
б. Вставьте флэш-карту micro SD в плату SoC FPGA.
в. Включите плату.
д. Вызовите команду утилиты диагностики aocl.
Ссылки по теме
- Руководство пользователя Intel SoC FPGA Embedded Design Suite
- OpenCL Дизайн Exampстраница на Altera webсайт
- Перекомпиляция ядра Linux на стр. 16
Чтобы включить CMA, вы должны сначала перекомпилировать ядро Linux. - Запрос имени устройства вашей платы FPGA (диагностика)
1.6 Компиляция ядра Linux для Cyclone V SoC FPGA
Перед запуском приложений OpenCL на плате Cyclone V SoC FPGA необходимо скомпилировать исходный код ядра Linux, а также скомпилировать и установить драйвер ядра OpenCL Linux.
- Перекомпиляция ядра Linux на стр. 16
Чтобы включить CMA, вы должны сначала перекомпилировать ядро Linux. - Компиляция и установка драйвера ядра OpenCL Linux на стр. 17 Скомпилируйте драйвер ядра OpenCL Linux с скомпилированным исходным кодом ядра.
1.6.1 Перекомпиляция ядра Linux
Чтобы включить CMA, вы должны сначала перекомпилировать ядро Linux.
- Щелкните ссылку GSRD v14.0 — Compiling Linux на странице ресурсов RocketBoards.org. webсайт для доступа к инструкциям по загрузке и сборке исходного кода ядра Linux.
Для использования с Intel FPGA SDK для OpenCL укажите socfpga-3.13-rel14.0 в качестве . - Примечание. В процессе сборки создается файл arch/arm/configs/socfpga_defconfig. file. Этот file указывает параметры конфигурации по умолчанию для socfpga.
Добавьте следующие строки в конец файла arch/arm/configs/socfpga_defconfig. file.
CONFIG_MEMORY_ISOLATION=y
CONFIG_CMA=у
CONFIG_DMA_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_SIZE_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=y
КОНФИГ_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
Значение конфигурации CONFIG_CMA_SIZE_MBYTES устанавливает верхний предел общего количества доступной физически непрерывной памяти. Вы можете увеличить это значение, если вам требуется больше памяти. - Внимание: Общий объем физической памяти, доступной процессору ARM на плате SoC FPGA, составляет 1 ГБ. Intel не рекомендует устанавливать диспетчер CMA близко к 1 ГБ.
- Запустите команду make mrproper, чтобы очистить текущую конфигурацию.
- Запустите команду make ARCH=arm socfpga_deconfig.
ARCH=arm указывает, что вы хотите настроить архитектуру ARM.
socfpga_defconfig указывает, что вы хотите использовать конфигурацию socfpga по умолчанию. - Запустите команду export CROSS_COMPILE=arm-linux-gnueabihf-.
Эта команда устанавливает переменную среды CROSS_COMPILE для указания префикса нужной цепочки инструментов. - Запустите команду make ARCH=arm zImage. Полученный образ доступен в папке arch/arm/boot/zImage file.
- Поместите zImage file в раздел фат32 образа флешки. Подробные инструкции см. в Руководстве пользователя GSRD для Cyclone V SoC FPGA на сайте Rocketboards.org.
- Примечание. Чтобы правильно вставить драйвер ядра OpenCL Linux, сначала загрузите SDKgenerated.rbf. file на ПЛИС.
Чтобы создать .rbf file, скомпилируйте дизайн SDK example с эталонной платформой комплекта разработки SoC Cyclone V в качестве целевой пользовательской платформы.
9. Поместите .rbf file в раздел фат32 образа флешки.
Внимание: раздел FAT32 должен содержать как zImage file и .rbf file. Без .rbf file, при вставке драйвера произойдет фатальная ошибка. - Вставьте запрограммированную карту micro SD, которая содержит образ SD-карты, который вы изменили или создали ранее, в комплект для разработки SoC Cyclone V, а затем включите плату SoC FPGA.
- Проверьте версию установленного ядра Linux, выполнив команду uname -r.
- Чтобы убедиться, что вы успешно включили CMA в ядре при включенной плате SoC FPGA, выполните команду grep init_cma /proc/kallsyms.
CMA включается, если вывод не пустой. - Чтобы использовать перекомпилированное ядро Linux с SDK, скомпилируйте и установите драйвер ядра Linux.
Ссылки по теме
- Golden System Reference Design (GSRD) Руководства пользователя
- Создание образа SD Flash Card на стр. 13
Поскольку Cyclone V SoC FPGA представляет собой полноценную систему на кристалле, вы несете ответственность за предоставление полного определения системы.
1.6.2 Компиляция и установка драйвера ядра OpenCL Linux
Скомпилируйте драйвер ядра OpenCL Linux с скомпилированным исходным кодом ядра.
Исходный код драйвера доступен в версии Cyclone V SoC FPGA среды выполнения Intel FPGA для OpenCL. Кроме того, убедитесь, что вы загрузили Intel FPGA SDK для сгенерированного OpenCL файла .rbf. file в FPGA, чтобы предотвратить неправильную установку модуля ядра Linux.
- Загрузите версию Cyclone V SoC FPGA пакета Intel FPGA Runtime Environment for OpenCL из Центра загрузки на сайте Altera. webсайт.
а. Нажмите кнопку «Загрузить» рядом с выпуском программного обеспечения Quartus Prime.
б. Укажите версию выпуска, операционную систему и способ загрузки.
в. Перейдите на вкладку «Дополнительное программное обеспечение» и выберите загрузку Intel FPGA.
Среда выполнения для OpenCL Linux Cyclone V SoC TGZ.
д. После загрузки aocl-rte- .arm32.tgz file, распакуйте его в
каталог, которым вы владеете.
Источник драйвера находится в aocl-rte- .arm32/board/c5soc/директория драйвера. - Чтобы перекомпилировать драйвер ядра OpenCL Linux, установите значение KDIR в драйвере Make.file в каталог, содержащий исходный код ядра Linux files.
- Запустите команду export CROSS_COMPILE=arm-linux-gnueabihf-, чтобы указать префикс вашей цепочки инструментов.
- Запустите команду make clean.
- Запустите команду make, чтобы создать файл aclsoc_drv.ko. file.
- Перенесите каталог opencl_arm32_rte на плату Cyclone V SoC FPGA.
Запуск scp -r root@ваш-ipaddress: Команда помещает среду выполнения в каталог /home/root. - Запустите сценарий init_opencl.sh, который вы создали при сборке образа SD-карты.
- Вызовите команду утилиты диагностики aocl. Утилита диагностики вернет положительный результат после успешного запуска init_opencl.sh.
1.7 известных проблем
В настоящее время существуют определенные ограничения на использование Intel FPGA SDK для OpenCL с эталонной платформой Cyclone V SoC Development Kit.
- Вы не можете переопределить имена поставщиков и плат, сообщаемые строками CL_DEVICE_VENDOR и CL_DEVICE_NAME вызова clGetDeviceInfo().
- Если хост выделяет постоянную память в общей системе DDR (то есть HPS DDR) и изменяет постоянную память после выполнения ядра, данные в памяти могут устареть. Эта проблема возникает из-за того, что ядро FPGA не может отслеживать DDR-транзакции CPU-HPS.
Чтобы последующие выполнения ядра не обращались к устаревшим данным, реализуйте одно из следующих обходных решений:
• Не модифицируйте постоянную память после ее инициализации.
• Если вам требуется несколько наборов данных __constant, создайте несколько буферов постоянной памяти.
• Если доступно, выделите постоянную память в FPGA DDR на плате ускорителя. - Утилита SDK на ARM поддерживает только команды программы и диагностики.
Утилитные команды прошивки, установки и удаления неприменимы к комплекту разработки Cyclone V SoC по следующим причинам:
а. Утилита установки должна скомпилировать драйвер ядра Linux aclsoc_drv и включить его на SoC FPGA. Компьютер разработки должен выполнить компиляцию; однако он уже содержит исходники ядра Linux для SoC FPGA. Исходные коды ядра Linux для машины разработки отличаются от исходных кодов для SoC FPGA. Расположение исходных кодов ядра Linux для SoC FPGA, вероятно, неизвестно пользователю SDK. Точно так же утилита удаления также недоступна для комплекта разработки Cyclone V SoC.
Кроме того, доставка aclsoc_drv на плату SoC является сложной задачей, поскольку стандартный дистрибутив Cyclone V SoC Development Kit не содержит ядра Linux. files или компилятор GNU Compiler Collection (GCC).
б. Утилита flash требует размещения файла .rbf file конструкции OpenCL на раздел FAT32 флэш-карты micro SD. В настоящее время этот раздел не монтируется, когда пользователь SDK включает плату. Поэтому лучший способ обновить раздел — использовать устройство для чтения карт памяти и компьютер для разработки. - При переключении между исполняемым файлом Intel FPGA SDK для OpenCL Offline Compiler files (.aocx), которые соответствуют разным вариантам платы (то есть c5soc и c5soc_sharedonly), вы должны использовать программную утилиту SDK для загрузки .aocx file для нового варианта платы впервые. Если вы просто запустите хост-приложение, используя новый вариант платы, но FPGA содержит образ от другого варианта платы, может произойти фатальная ошибка.
- .qxp file не включает назначения разделов интерфейса, потому что программное обеспечение Quartus Prime постоянно соответствует временным требованиям этого раздела.
- Когда вы включаете плату, ее адрес управления доступом к среде (MAC) устанавливается на случайное число. Если политика вашей локальной сети не разрешает такое поведение, установите MAC-адрес, выполнив следующие задачи:
а. Во время включения U-Boot нажмите любую клавишу, чтобы войти в командную строку U-Boot.
б. Введите setenv ethaddr 00:07:ed:00:00:03 в командной строке.
Вы можете выбрать любой MAC-адрес.
в. Введите команду saveenv.
д. Перезагрузите плату.
1.8 История изменений документа
Таблица 1.
История изменений документа Intel FPGA SDK для OpenCL Cyclone V SoC
Справочное руководство по переносу платформы для комплекта разработки
Дата | Версия | Изменения |
Май-17 | 2017.05.08 | • Техническое обслуживание. |
октябрь 2016 г. | 2016.10.31 | • Altera SDK для OpenCL переименован в Intel FPGA SDK для OpenCL. • Автономный компилятор Altera переименован в Intel FPGA SDK для автономного компилятора OpenCL. |
Май-16 | 2016.05.02 | • Изменены инструкции по сборке и модификации образа SD flash карты. • Изменены инструкции по перекомпиляции ядра Linux и драйвера ядра Linux OpenCL. |
Ноябрь-15 | 2015.11.02 | • Техническая версия и экземпляры Quartus II заменены на Quartus Prime. |
Май-15 | 15.0.0 | • В реконфигурации FPGA удалена инструкция по перепрограммированию ядра FPGA. с . изображение rbf, вызывая кота fileимя>. РБФ > /dev/fpga0, потому что этот метод не рекомендуется. |
Декабрь-14 | 14.1.0 | • Документ переименован в Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. • Обновлена утилита reprogram для программы aocl.fileслужебная команда name>.aocx. • Обновлена диагностическая утилита для диагностики aocl и диагностики aocl. команда утилиты. • Обновлена процедура в разделе «Перенос эталонной платформы на вашу плату SoC», чтобы включить инструкции по переносу и изменению раздела платы c5soc для создания раздела с чистой синхронизацией для гарантированного потока закрытия синхронизации. • Добавлен раздел «Обновление перенесенной эталонной платформы», в котором описаны процедуры для следующих задач: 1. За исключением блока жесткого процессора (HPS) в разделе платы. 2.Обновление образа SD флешки •Обновлен раздел Создание образа SD Flash Card. Рекомендуется использовать образ Golden System Reference Design (GSRD) версии 14.0 в качестве отправной точки вместо образа, доступного в комплекте SoC Embedded Design Suite (EDS). • Обновлен раздел «Перекомпиляция ядра Linux и драйвера ядра Linux OpenCL»: 1.Добавлена инструкция для установки переменной CROSS COMPILE. 2. Изменена команда, которую вы запускаете, чтобы убедиться, что CMA успешно включен. |
Июль-14 | 14.0.0 | •Изначальный выпуск. |
Документы/Ресурсы
![]() |
Intel FPGA SDK для OpenCL [pdf] Руководство пользователя FPGA SDK для OpenCL, FPGA SDK, SDK для OpenCL, SDK |