FPGA SDK для OpenCL
Посібник користувача
UG-OCL009
2017.05.08
Останнє оновлення для Intel® Quartus® Prime Design Suite: 17.0
Підпишіться
Надіслати відгук
Intel® FPGA SDK для OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Porting Guide
V SoC Development Kit Reference Platform Guide Porting Guide описує дизайн апаратного та програмного забезпечення Intel Cyclone V SoC Development Kit Reference Platform (c5soc) для використання з Intel Software Development Kit (SDK) для OpenCL Intel ® FPGA SDK для OpenCL ™ Intel Cyclone ® . Перш ніж почати, Intel наполегливо рекомендує ознайомитися зі змістом таких документів:
- Intel FPGA SDK для OpenCLIntel Cyclone V SoC Посібник із початку роботи
- Посібник користувача Intel FPGA SDK for OpenCL Custom Platform Toolkit
- Довідник із пристроїв Cyclone V, том 3: Технічний довідковий посібник із системи жорсткого процесора Крім того, зверніться до сторінки Cyclone V SoC Development Kit і SoC Embedded Design Suite на сторінці Altera 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 Development Kit і загальним Intel FPGA SDK для спеціальної платформи OpenCL.
Пов'язані посилання
- Intel FPGA SDK для OpenCL Cyclone V SoC Посібник із початку роботи
- Посібник користувача Intel FPGA SDK for 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, логотип Intel, слова та логотипи Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus і Stratix є товарними знаками корпорації Intel або її дочірніх компаній у США та/або інших країнах. Intel гарантує роботу своїх FPGA та напівпровідникових продуктів відповідно до поточних специфікацій відповідно до стандартної гарантії Intel, але залишає за собою право вносити зміни в будь-які продукти та послуги в будь-який час без попередження. Корпорація Intel не бере на себе жодної відповідальності чи зобов’язань, що виникають у зв’язку із застосуванням або використанням будь-якої інформації, продукту чи послуги, описаних у цьому документі, за винятком випадків, чітко наданих корпорацією Intel у письмовій формі. Клієнтам Intel рекомендується отримати останню версію специфікацій пристрою, перш ніж покладатися на будь-яку опубліковану інформацію та перед тим, як розміщувати замовлення на продукти чи послуги.
*Інші назви та бренди можуть бути власністю інших осіб.
1.1.1 Варіанти плати Cyclone V SoC Development Kit Reference Platform Platform
Intel FPGA SDK for OpenCL Cyclone V SoC Development Kit Reference Platform включає два варіанти плати.
- дошка c5soc
Ця стандартна плата забезпечує доступ до двох банків пам'яті DDR. HPS DDR доступний як FPGA, так і ЦП. FPGA DDR доступна лише через FPGA. - c5soc_shareonly дошка
Цей варіант плати містить лише підключення HPS DDR. FPGA DDR недоступна. Цей варіант плати є більш ефективним, оскільки для підтримки одного банку пам’яті DDR потрібно менше обладнання. Плата c5soc_sharedonly також є хорошою платформою для створення прототипів для кінцевої плати з одним банком пам’яті DDR.
Щоб націлити цей варіант плати під час компіляції ядра OpenCL, додайте параметр -board c5soc_sharedonly у свою команду aoc.
Для отримання додаткової інформації на дошці параметр команди aoc див. у посібнику з програмування Intel FPGA SDK для OpenCL.
Пов'язані посилання
Компіляція ядра для певної плати FPGA (–плата )
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. |
arm32 | Каталог, який містить наступне: |
1.1.3 Відповідні функції Cyclone V SoC Development Kit
У наведеному нижче списку висвітлено компоненти та функції Cyclone V SoC Development Kit, які стосуються Intel FPGA SDK для OpenCL:
- Двоядерний процесор ARM Cortex-A9 під керуванням 32-бітної ОС Linux.
- Шина вдосконаленого розширюваного інтерфейсу (AXI) між HPS і основною структурою FPGA.
- Два посилених контролери пам'яті DDR, кожен з яких підключається до 1 гігабайта (ГБ) DDR3 SDRAM.
— Один контролер DDR доступний лише для ядра FPGA (тобто FPGA DDR).
— Інший контролер DDR доступний як для HPS, так і для FPGA (тобто HPS DDR). Цей спільний контролер дозволяє вільний обмін пам'яттю між центральним процесором і ядром FPGA. - Центральний процесор може переналаштувати структуру ядра FPGA.
1.1.3.1 Cyclone V SoC Development Kit Reference Platform Цілі та рішення Intel ґрунтується на реалізації еталонної платформи Cyclone V SoC Development Kit на кількох цілях і рішеннях проектування. 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 більш ефективний, ніж DMA. Це економить апаратні ресурси (тобто область FPGA) і спрощує драйвер ядра Linux.
УВАГА: Передача пам’яті між спільною системою HPS DDR і системою DDR, яка доступна лише для FPGA, дуже повільна. Якщо ви вирішите
передайте пам’ять таким чином, використовуйте її лише для дуже невеликих обсягів даних. - Хост і пристрій виконують між собою передачу даних без DMA через міст HPS-FPGA (H2F), використовуючи лише один 32-розрядний порт. Причина полягає в тому, що без DMA ядро Linux може видати лише один 32-розрядний запит на читання або запис, тому немає необхідності мати ширше з’єднання.
- Хост надсилає керуючі сигнали на пристрій через легкий міст H2F (LH2F).
Оскільки керуючі сигнали від хоста до пристрою є сигналами з низькою пропускною здатністю, міст LH2F ідеально підходить для цього завдання.
1.2 Перенесення еталонної платформи на вашу плату FPGA SoC
Щоб перенести еталонну платформу Cyclone V SoC Development Kit на вашу плату SoC FPGA, виконайте такі завдання:
- Виберіть версію еталонної платформи c5soc з однією пам’яттю DDR або з двома модулями пам’яті 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 для ієрархічного та командного проектування розділу Quartus Prime Standard Edition Handbook.
a. Видаліть acl_iface_partition.qxp з каталогу ALTERAOCLSDKROOT/board/c5soc/c5soc.
b. Увімкніть область acl_iface_region LogicLock™, змінивши команду 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 для своєї плати.
d. Якщо необхідно, відкоригуйте розмір і розташування області LogicLock.
д. Коли ви переконаєтеся, що розміщення вашого дизайну є правильним, експортуйте цей розділ як acl_iface_partition.qxp Quartus Prime Exported Partition File.
Як описано в розділі «Встановлення гарантованого потоку синхронізації» посібника користувача AIntel FPGA SDK for OpenCL Custom Platform Toolkit, шляхом імпорту цього .qxp file у дизайн верхнього рівня, ви виконуєте вимогу щодо забезпечення дизайну плати з гарантованим потоком закриття часу.
Щоб дізнатися про фактори, які можуть вплинути на якість результатів (QoR) вашого експортованого розділу, зверніться до розділу «Загальні міркування щодо якості результатів для експортованого розділу плати» в посібнику користувача Intel FPGA SDK для набору інструментів спеціальної платформи OpenCL.
f. Вимкніть область 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 (RTE) для OpenCL. Версія RTE вашої спеціальної платформи не містить каталогів обладнання та образу флеш-карти SD. Ця спеціальна платформа завантажується в систему SoC FPGA, щоб дозволити запускати хост-додатки. На відміну від цього, версія SDK спеціальної платформи необхідна для SDK для компіляції ядер OpenCL.
Порада. Ви можете використовувати версію SDK вашої спеціальної платформи для RTE. Зберегти
простору, видаліть образ флеш-карти SD із версії RTE вашої спеціальної платформи. - Перевірте свою спеціальну платформу.
Додаткову інформацію див. у розділі Testing the Hardware Design посібника користувача Intel FPGA SDK for OpenCL Custom Platform Toolkit.
Пов'язані посилання
- Тестування дизайну обладнання
- Додаткова компіляція Quartus Prime для ієрархічного та командного проектування
- Встановлення гарантованого потоку часу
- Загальні міркування щодо якості результатів для експортованого розділу дошки
1.2.1 Оновлення перенесеної довідкової платформи
У поточній версії Cyclone V SoC Development Kit Reference Platform блок 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. Для отримання додаткової інформації зверніться до Automigration Custom Platform Toolkit for Forward Compatibility у посібнику користувача Intel FPGA SDK for OpenCL Custom Platform Toolkit.
- Щоб реалізувати потік збереження QXP в апаратному дизайні Cyclone V SoC FPGA, який перенесено з попередньої версії c5soc, виконайте наступні кроки, щоб створити підрозділ, щоб виключити HPS із .qxp. file:
a. Перш ніж створювати розділ навколо неядерної логіки, створіть розділ навколо HPS у налаштуваннях .qsf Quartus Prime File.
наприкладampле:
# Вручну розділіть примірник, який моделює HPS-dedicated I/O 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 top -c top
–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=увімкнено
–incremental_compilation_export_flatten=вимк
Після виключення HPS із розділу можна імпортувати .qxp file і скомпілюйте свій дизайн. - Оновіть образ флеш-карти SD поточною версією Intel FPGA RTE для OpenCL, виконавши такі завдання:
a. Змонтуйте file таблиця розподілу (fat32) і розширена file системні (ext3) розділи в існуючому образі як пристрої з петлею. Щоб отримати докладні інструкції, зверніться до кроку 2 у Створення образу флеш-карти SD.
b. У каталозі /home/root/opencl_arm32_rte видаліть fileз попередньої версії RTE.
в. Завантажте та розпакуйте поточну версію RTE у каталог /home/root/opencl_arm32_rte.
d. В /driver/version.h file вашої спеціальної платформи оновіть призначення ACL_DRIVER_VERSION на . (наприклад,ample, 16.1.x, де 16.1 – це версія SDK, а x – встановлена вами версія драйвера).
д. Відновити драйвер.
f. Видаліть папку(и) апаратного забезпечення вашої спеціальної платформи. Скопіюйте спеціальну платформу разом із оновленим драйвером до каталогу /home/root/opencl_arm_rte/board.
g. Скопіюйте файл Altera.icd file з каталогу /home/root/opencl_arm32_rte та додайте його до каталогу /etc/OpenCL/vendors.
ч. Відключіть і протестуйте новий образ. Щоб отримати докладні інструкції, зверніться до кроків 8–11 у розділі Створення образу флеш-карти SD.
Пов'язані посилання
- Створення зображення флеш-карти SD на сторінці 14
У вас також є можливість створити новий образ флеш-карти SD. - Автоматична міграція спеціальної платформи для прямої сумісності
1.3 Програмна підтримка спільної пам'яті
Спільна фізична пам’ять між FPGA і CPU є бажаною пам’яттю для ядер OpenCL, що працюють на SoC FPGA. Оскільки FPGA отримує доступ до спільної фізичної пам’яті, на відміну від спільної віртуальної пам’яті, вона не має доступу до таблиць сторінок центрального процесора, які відображають віртуальні адреси користувачів у фізичні адреси сторінок.
Що стосується апаратного забезпечення, ядра OpenCL отримують доступ до спільної фізичної пам’яті через пряме підключення до жорсткого контролера пам’яті HPS DDR. Що стосується програмного забезпечення, підтримка спільної фізичної пам’яті передбачає такі міркування:
- Типові реалізації програмного забезпечення для розподілу пам’яті на ЦП (наприклад,ample, функція malloc() не може виділити область пам’яті, яку може використовувати FPGA.
Пам’ять, яку виділяє функція 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 Reference Platform 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) MMD aocl_mmd_shared_mem_alloc() містить такі запити:
a. Функція mmap(), яка виділяє пам’ять і повертає віртуальну адресу.
b. Додатковий запит, який зіставляє повернуту віртуальну адресу з фізичною адресою.
Потім виклик 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-bit Windows) не підтримують спільну пам’ять.
C5soc не реалізував гетерогенну пам’ять, щоб розрізняти спільну та незагальну пам’ять з таких причин:
1. Історія — підтримка гетерогенної пам’яті була недоступна, коли спочатку було створено підтримку спільної пам’яті.
2. Уніфікований інтерфейс. Оскільки OpenCL є відкритим стандартом, Intel підтримує узгодженість між постачальниками різнорідних обчислювальних платформ. Таким чином, для виділення та використання спільної пам’яті використовується той самий інтерфейс, що й архітектури інших постачальників плат.
1.4 Реконфігурація FPGA
Для SoC FPGA ЦП може переконфігурувати структуру ядра FPGA без переривання роботи ЦП. Апаратний блок FPGA Manager, який поєднує HPS і основну FPGA, виконує реконфігурацію. Ядро Linux містить драйвер, який забезпечує легкий доступ до менеджера FPGA.
- до view стан ядра FPGA, викликайте команду cat /sys/class/fpga/fpga0/ status.
Програмна утиліта Intel FPGA SDK для OpenCL, яка доступна разом із Cyclone V SoC Development Kit Reference Platform, використовує цей інтерфейс для програмування FPGA. Під час перепрограмування ядра FPGA із запущеним ЦП утиліта виконує всі наступні завдання:
1. Перед перепрограмуванням вимкніть усі мости зв’язку між FPGA та HPS, як H2F, так і LH2F.
Повторно ввімкніть ці мости після завершення перепрограмування.
Увага: система OpenCL не використовує міст FPGA-HPS (F2H). Для отримання додаткової інформації зверніться до розділу «Інтерфейси HPS-FPGA» у Довіднику з пристроїв Cyclone V, Том 3: Технічний довідковий посібник із системи жорсткого процесора.
2. Переконайтеся, що зв’язок між FPGA та контролером HPS DDR вимкнено під час перепрограмування.
3. Переконайтеся, що переривання FPGA на FPGA вимкнено під час перепрограмування.
Крім того, повідомте драйверу відхиляти будь-які переривання від FPGA під час перепрограмування.
Зверніться до вихідного коду утиліти програми, щоб дізнатися більше про фактичну реалізацію.
УВАГА: Не змінюйте конфігурацію контролера HPS DDR, коли ЦП працює.
Це може спричинити фатальну системну помилку, оскільки ви можете змінити конфігурацію контролера DDR, коли є незавершені транзакції пам’яті від ЦП. Це означає, що під час роботи центрального процесора ви не можете перепрограмувати ядро FPGA за допомогою образу, який використовує HPS DDR в іншій конфігурації.
Пам’ятайте, що система OpenCL і еталонний дизайн Golden Hardware, доступний із пакетом вбудованих проектів Intel SoC FPGA (EDS), встановлюють HPS DDR в один 256-бітний режим.
Частини системи ЦП, такі як предиктор розгалужень або засіб попередньої вибірки таблиці сторінок, можуть видавати команди DDR, навіть якщо здається, що на ЦП нічого не запущено.
Таким чином, час завантаження є єдиним безпечним часом для встановлення конфігурації контролера HPS DDR.
Це також означає, що U-boot повинен мати вихідний двійковий файл file (.rbf) зображення для завантаження в пам’ять. В іншому випадку ви можете ввімкнути HPS DDR з невикористаними портами на FPGA, а потім потенційно змінити конфігурацію портів. З цієї причини драйвер ядра OpenCL Linux більше не включає логіку, необхідну для встановлення конфігурації контролера HPS DDR.
Дворядний пакет SW3 (DIP) вмикає Cylone V SoC Development Kit для контролю очікуваної форми зображення .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
Оскільки Cyclone V SoC FPGA є повноцінною системою на кристалі, ви несете відповідальність за надання повного визначення системи. Intel рекомендує надати його у вигляді образу флеш-карти SD. Користувач Intel FPGA SDK для OpenCL може просто записати зображення на флеш-карту micro SD, і плата SoC FPGA готова до використання.
Змінення наявного зображення флеш-карти SD на сторінці 13
Intel рекомендує просто змінити образ, доступний за допомогою довідкової платформи Cyclone V SoC Development Kit. У вас також є можливість створити новий образ флеш-карти SD.
Створення зображення флеш-карти SD на сторінці 14
У вас також є можливість створити новий образ флеш-карти SD.
1.5.1 Змінення наявного образу флеш-карти SD
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 exampпроектування файлів із використанням підтримки вашої спеціальної платформи. Перейменуйте .rbf file який Intel FPGA SDK для OpenCL Offline Compiler генерує як opencl.rbf, і розмістіть його в розділі fat32 в образі флеш-карти SD.
Ви можете завантажити hello_world exampдизайн файлу з OpenCL Design Examples на сторінці Altera webсайт. - Розмістіть .rbf file у розділ fat32 образу флеш-карти.
Увага: Розділ fat32 має містити як zImage file і .rbf file. Без .rbf file, виникне фатальна помилка, коли ви вставите драйвер. - Після створення образу SD-карти запишіть його на картку micro SD, викликавши таку команду: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Щоб перевірити образ флеш-карти SD, виконайте такі завдання:
a. Вставте флеш-карту micro SD у плату SoC FPGA.
b. Увімкніть дошку.
в. Викличте команду утиліти діагностики aocl.
1.5.2 Створення образу флеш-карти SD
У вас також є можливість створити новий образ флеш-карти SD. Загальні інструкції щодо створення нового образу флеш-карти SD і відновлення існуючого образу флеш-карти SD доступні на сторінці GSRD v14.0.2 – SD Card на 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) розділи в цьому образі як пристрої з петлею. Щоб змонтувати розділ, виконайте наступні кроки:
a. Визначте початок байтів розділу в образі, викликавши /sbin/fdisk -lu image_file команда.
наприкладample, розділ номер 1 типу W95 FAT має зсув блоку 2121728. З 512 байтами на блок зміщення байтів становить 512 байт x 2121728 = 1086324736 байт.
b. Визначте пристрій вільного контуру (наприклад,ample, /dev/loop0), ввівши команду losetup -f.
в. Припускаючи, що /dev/loop0 є пристроєм вільного циклу, призначте образ флеш-карти пристрою блоку циклу, викликавши losetup /dev/loop0 image_file -0 1086324736 команда.
d. Змонтуйте пристрій циклу, викликавши команду mount /dev/loop0 /media/disk1.
Всередині зображення file, тепер /media/disk1 є змонтованим розділом fat32.
д. Повторіть кроки від a до d для розділу ext3. - Завантажте версію Cyclone V SoC FPGA середовища виконання Intel FPGA для пакета OpenCL із Центру завантажень на Altera webсайт.
a. Натисніть кнопку Завантажити поруч із програмою Quartus Prime edition.
b. Вкажіть версію випуску, операційну систему та спосіб завантаження.
в. Перейдіть на вкладку «Додаткове програмне забезпечення» та виберіть для завантаження Intel FPGA
Середовище виконання для OpenCL Linux Cyclone V SoC TGZ.
d. Після завантаження 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/ експорт 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 exampпроектування файлів із використанням підтримки вашої спеціальної платформи. Перейменуйте .rbf file який Intel FPGA SDK для OpenCL Offline Compiler генерує як opencl.rbf, і розмістіть його в розділі fat32 в образі флеш-карти SD.
Ви можете завантажити hello_world exampдизайн файлу з OpenCL Design Examples на сторінці Altera webсайт.
9. Після ви зберігаєте все необхідне files на зображенні флеш-карти викличте такі команди:
a. синхронізація
b. відключити /media/disk1
в. демонтувати де це ім'я каталогу, яке ви використовуєте для монтування розділу ext3 у 3 на сторінці 3 (наприклад,ample, /media/disk2).
d. losetup -d /dev/loop0
д. losetup -d /dev/loop1 - Стисніть образ флеш-карти SD, викликавши таку команду: tar cvfz .tgz linux_sd_card_image
- Доставте .tgz file у кореневому каталозі вашої спеціальної платформи.
- Щоб перевірити образ флеш-карти SD, виконайте такі завдання:
a. Запишіть отримане нестисне зображення на флеш-карту micro SD.
b. Вставте флеш-карту micro SD у плату SoC FPGA.
в. Увімкніть дошку.
d. Викличте команду утиліти діагностики aocl.
Пов'язані посилання
- Посібник користувача Intel SoC FPGA Embedded Design Suite
- OpenCL Design Прamples на сторінці 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=y
CONFIG_DMA_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_SIZE_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=р
CONFIG_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 у розділ fat32 образу флеш-карти. Докладні інструкції див. у посібнику користувача GSRD Cyclone V SoC FPGA на Rocketboards.org.
- Примітка. Щоб правильно вставити драйвер ядра OpenCL Linux, спочатку завантажте файл SDKgenerated.rbf file на FPGA.
Щоб створити файл .rbf file, скомпілюйте проект SDK напрampз базовою платформою Cyclone V SoC Development Kit як цільовою спеціальною платформою.
9. Розмістіть .rbf file у розділ fat32 образу флеш-карти.
Увага: Розділ fat32 повинен містити обидва zImage file і .rbf file. Без .rbf file, виникне фатальна помилка, коли ви вставите драйвер. - Вставте запрограмовану картку micro SD, яка містить образ SD-карти, який ви змінили або створили раніше, у Cyclone V SoC Development Kit, а потім увімкніть плату SoC FPGA.
- Перевірте версію встановленого ядра Linux, виконавши команду uname -r.
- Щоб переконатися, що ви успішно ввімкнули CMA в ядрі, коли плата SoC FPGA увімкнена, виконайте команду grep init_cma /proc/kallsyms.
CMA увімкнено, якщо вихідні дані не порожні. - Щоб використовувати перекомпільоване ядро Linux із SDK, скомпілюйте та встановіть драйвер ядра Linux.
Пов'язані посилання
- Посібники користувача Golden System Reference Design (GSRD).
- Створення образу флеш-карти SD на сторінці 13
Оскільки Cyclone V SoC FPGA є повноцінною системою на кристалі, ви несете відповідальність за надання повного визначення системи.
1.6.2 Компіляція та встановлення драйвера ядра OpenCL Linux
Скомпілюйте драйвер ядра OpenCL Linux із скомпільованим джерелом ядра.
Джерело драйвера доступне у версії Cyclone V SoC FPGA середовища виконання Intel FPGA для OpenCL. Крім того, переконайтеся, що ви завантажили Intel FPGA SDK для файлу .rbf, створеного OpenCL file в FPGA, щоб запобігти неправильному встановленню модуля ядра Linux.
- Завантажте версію Cyclone V SoC FPGA середовища виконання Intel FPGA для пакета OpenCL із Центру завантажень на Altera webсайт.
a. Натисніть кнопку Завантажити поруч із програмою Quartus Prime edition.
b. Вкажіть версію випуску, операційну систему та спосіб завантаження.
в. Перейдіть на вкладку «Додаткове програмне забезпечення» та виберіть для завантаження Intel FPGA
Середовище виконання для OpenCL Linux Cyclone V SoC TGZ.
d. Після завантаження 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@your-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 не може стежити за транзакціями CPU-HPS DDR.
Щоб запобігти подальшим виконанням ядра з доступу до застарілих даних, застосуйте один із наведених нижче способів вирішення проблеми.
• Не змінюйте постійну пам'ять після її ініціалізації.
• Якщо вам потрібні кілька наборів даних __constant, створіть кілька буферів постійної пам'яті.
• Якщо доступно, виділіть постійну пам’ять у FPGA DDR на платі прискорювача. - Утиліта SDK на ARM підтримує лише команди програми та утиліти діагностики.
Команди утиліти flash, install і uninstall не застосовуються до Cyclone V SoC Development Kit з таких причин:
a. Утиліта встановлення має скомпілювати драйвер ядра Linux aclsoc_drv і включити його на SoC FPGA. Машина розробки повинна виконати компіляцію; однак він уже містить вихідні коди ядра Linux для SoC FPGA. Вихідні коди ядра Linux для машини розробки відрізняються від вихідних кодів для SoC FPGA. Розташування вихідних кодів ядра Linux для SoC FPGA, ймовірно, невідоме користувачеві SDK. Подібним чином утиліта видалення також недоступна для Cyclone V SoC Development Kit.
Крім того, доставка aclsoc_drv на плату SoC є складною, оскільки дистрибутив Cyclone V SoC Development Kit за замовчуванням не містить ядра Linux files або компілятор GNU Compiler Collection (GCC).
b. Утиліта Flash вимагає розміщення .rbf file дизайну OpenCL на розділ FAT32 флеш-карти micro SD. Наразі цей розділ не монтується, коли користувач SDK вмикає плату. Тому найкращим способом оновлення розділу є використання пристрою для читання флеш-карт і машини розробки. - Під час перемикання між виконуваним файлом Intel FPGA SDK для OpenCL Offline Compiler files (.aocx), які відповідають різним варіантам плати (тобто c5soc і c5soc_shareonly), ви повинні використовувати програмну утиліту SDK, щоб завантажити .aocx file для нового варіанту плати вперше. Якщо ви просто запускаєте головну програму, використовуючи новий варіант плати, але FPGA містить зображення з іншого варіанту плати, може статися фатальна помилка.
- .qxp file не включає призначення розділів інтерфейсу, оскільки програмне забезпечення Quartus Prime постійно відповідає вимогам щодо часу для цього розділу.
- Коли ви вмикаєте плату, її MAC-адреса встановлюється на випадкове число. Якщо ваша політика локальної мережі не дозволяє таку поведінку, установіть MAC-адресу, виконавши такі завдання:
a. Під час увімкнення U-Boot натисніть будь-яку клавішу, щоб відкрити командний рядок U-Boot.
b. Введіть setenv ethaddr 00:07:ed:00:00:03 у командному рядку.
Ви можете вибрати будь-яку MAC-адресу.
в. Введіть команду saveenv.
d. Перезавантажте плату.
1.8 Історія перегляду документа
Таблиця 1.
Історія версій документа Intel FPGA SDK для OpenCL Cyclone V SoC
Посібник із портування довідкової платформи Development Kit
Дата | Версія | Зміни |
травня-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. •Змінені інструкції щодо перекомпіляції ядра Linux і драйвера ядра OpenCL Linux. |
Листопад-15 | 2015.11.02 | •Технічний випуск і змінені екземпляри Quartus II на Quartus Prime. |
травня-15 | 15.0.0 | • У переналаштуванні FPGA видалено інструкцію щодо перепрограмування ядра FPGA з . зображення rbf, викликавши кота fileім'я>. rbf > Команда /dev/ fpga0, оскільки цей метод не рекомендований. |
Грудень-14 | 14.1.0 | • Перейменовано документ на Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. • Оновлено утиліту перепрограмування до програми aoclfilename>.aocx службова команда. • Оновлено діагностичну утиліту до aocl diagnose та aocl diagnose утиліта команда. • Оновлено процедуру в розділі «Перенесення еталонної платформи на вашу плату SoC», щоб включити інструкції щодо перенесення та модифікації розділу плати c5soc для створення розділу, чистого від часу, для гарантованого потоку закриття часу. • Додано тему Оновлення перенесеної довідкової платформи, щоб окреслити процедури для таких завдань: 1. За винятком блоку жорсткого процесора (HPS) у розділі плати 2.Оновлення образу флеш-карти SD • Оновлено розділ «Створення образу флеш-карти SD». Рекомендовано використовувати версію 14.0 образу Golden System Reference Design (GSRD) як початкову точку замість образу, доступного з SoC Embedded Design Suite (EDS). •Оновлено розділ Перекомпіляція ядра Linux і драйвер ядра OpenCL Linux: 1. Додана інструкція для встановлення змінної CROSS COMPILE. 2. Змінено команду, яку ви запускаєте, щоб перевірити, чи успішно ввімкнено CMA. |
липень-14 | 14.0.0 | • Початковий випуск. |
Документи / Ресурси
![]() |
Intel FPGA SDK для OpenCL [pdfПосібник користувача FPGA SDK для OpenCL, FPGA SDK, SDK для OpenCL, SDK |