FPGA SDK за OpenCL
Упатство за употреба
UG-OCL009
2017.05.08
Последно ажурирано за Intel® Quartus® Prime Design Suite: 17.0
Претплатете се
Испрати повратни информации
Интел® FPGA SDK за OpenCL™ Интел® Cyclone®V SoC развојен комплет за референтна платформа за пренесување Водич
Водич за пренос на референтна платформа за развој на V SoC го опишува дизајнот на хардверот и софтверот на референтната платформа Intel Cyclone V SoC Kit за развој (c5soc) за употреба со комплетот за развој на софтвер на Intel (SDK) за OpenCL Intel ® FPGA SDK за OpenCL ™ Intel Cyclone ® . Пред да започнете, Интел силно препорачува да се запознаете со содржината на следните документи:
- Интел FPGA SDK за OpenCLIntel Cyclone V SoC Водич за почеток
- Упатство за корисникот на Интел FPGA SDK за OpenCL прилагодена платформа со алатки
- Прирачник за уред Cyclone V, том 3: Технички референтен прирачник за хард процесорски систем Дополнително, погледнете го комплетот за развој на Cyclone V SoC и страницата со вграден дизајн на SoC на Altera webсајт за повеќе информации. 1 2
Внимание: Интел претпоставува дека имате длабинско разбирање на Intel FPGA SDK за корисничко упатство за прилагодена платформа OpenCL. Водичот за пренос на референтна платформа за развој на комплетот Cyclone V SoC не ја опишува употребата на прилагодената платформа со алатки на SDK за имплементирање на приспособена платформа за комплетот за развој на Cyclone V SoC. Ги опишува само разликите помеѓу поддршката за SDK на комплетот за развој на Cyclone V SoC и генеричкиот Intel FPGA SDK за прилагодена платформа OpenCL.
Поврзани врски
- Интел FPGA SDK за OpenCL Cyclone V SoC Водич за почеток
- Упатство за корисникот на Интел FPGA SDK за OpenCL прилагодена платформа со алатки
- Прирачник за уред 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 Corporation или нејзините подружници во САД и/или други земји. Интел гарантира изведба на своите FPGA и полупроводнички производи според тековните спецификации во согласност со стандардната гаранција на Интел, но го задржува правото да прави промени на сите производи и услуги во секое време без претходна најава. Интел не презема никаква одговорност или одговорност што произлегува од апликацијата или користењето на какви било информации, производ или услуга опишани овде, освен како што е изрично писмено договорено од Интел. На клиентите на Intel им се препорачува да ја добијат најновата верзија на спецификациите на уредот пред да се потпрат на какви било објавени информации и пред да направат нарачки за производи или услуги.
*Други имиња и брендови може да се бараат како сопственост на други.
1.1.1
Интел FPGA SDK за референтна платформа за развој на комплет за развој на OpenCL Cyclone V SoC вклучува две варијанти на табла.
- c5soc табла
Оваа стандардна плоча обезбедува пристап до две DDR мемориски банки. HPS DDR е достапен и од FPGA и од процесорот. FPGA DDR е достапен само преку FPGA. - c5soc_sharedonly табла
Оваа варијанта на плоча содржи само поврзување со HPS DDR. FPGA DDR не е достапен. Оваа варијанта на табла е поефикасна бидејќи е потребен помалку хардвер за поддршка на една DDR мемориска банка. Плочката c5soc_sharedonly е исто така добра платформа за прототип за финална производствена плоча со една DDR мемориска банка.
За да ја насочите оваа варијанта на таблата при составувањето на вашиот OpenCL кернел, вклучете ја опцијата -board c5soc_sharedonly во вашата команда aoc.
За повеќе информации на –табла опција на командата aoc, погледнете во Програмскиот водич за OpenCL на Intel FPGA SDK.
Поврзани врски
Составување кернел за специфична табла FPGA (–табла )
1.1.2 Содржина на референтната платформа за развој на комплетот Cyclone V SoC
Референтната платформа Cyclone V SoC Development Kit се состои од следново fileи директориуми:
File или Директориум | Опис |
board_env.xml | Екстензибилен јазик за означување (XML) file што го опишува c5soc на Intel FPGA SDK за OpenCL. |
linux_sd_card_image.tgz | Слика на компресирана SD флеш картичка file што содржи сè што му е потребно на корисникот на SDK за да го користи комплетот за развој на Cyclone V SoC со SDK. |
рака32 | Директориум кој го содржи следново: |
1.1.3 Релевантни карактеристики на комплетот за развој на Cyclone V SoC
Следната листа ги истакнува компонентите и карактеристиките на кит за развој на Cyclone V SoC што се релевантни за Intel FPGA SDK за OpenCL:
- Процесор со двојадрен ARM Cortex-A9 со 32-битен Linux.
- Напреден екстензибилен интерфејс (AXI) магистрала помеѓу HPS и основната ткаенина FPGA.
- Два зацврстени контролери за DDR меморија, секој од нив се поврзува со DDR1 SDRAM од 3 гигабајт (GB).
— Еден DDR контролер е достапен само до јадрото FPGA (т.е. FPGA DDR).
— Другиот DDR контролер е достапен и за HPS и за FPGA (т.е. HPS DDR). Овој споделен контролер овозможува бесплатно споделување меморија помеѓу процесорот и јадрото FPGA. - Процесорот може да ја реконфигурира основната ткаенина на FPGA.
1.1.3.1. Интел препорачува да ги земете предвид овие цели и одлуки кога ја пренесувате оваа референтна платформа на вашата табла SoC FPGA.
Подолу се дадени целите за дизајн на c5soc:
- Обезбедете највисок можен пропусен опсег помеѓу кернелите на FPGA и DDR мемориските системи.
- Осигурете се дека пресметките на FPGA (т.е. OpenCL кернелите) не се мешаат со други задачи на процесорот што може да вклучуваат сервисирање на периферни уреди.
- Оставете што е можно повеќе FPGA ресурси за пресметки на кернелот наместо компоненти на интерфејсот.
Подолу се дадени дизајнерските одлуки на високо ниво кои се директни последици од дизајнерските цели на Интел:
- Референтната платформа користи само тврди контролери на 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-to-FPGA (H2F), користејќи само една 32-битна порта. Причината е, без DMA, кернелот на Линукс може да издаде само едно барање за читање или запишување од 32 бити, па затоа е непотребно да се има поширока врска.
- Домаќинот испраќа контролни сигнали до уредот преку лесен мост H2F (LH2F).
Бидејќи контролните сигнали од домаќинот до уредот се сигнали со низок опсег, мостот LH2F е идеален за задачата.
1.2 Пренесување на референтната платформа на вашата табла SoC FPGA
За да ја пренесете референтната платформа Cyclone V SoC Development Kit на вашата плочка SoC FPGA, извршете ги следните задачи:
- Изберете ја едната DDR-меморија или верзијата со две DDR-мемории на референтната платформа c5soc како почетна точка на вашиот дизајн.
- Ажурирајте ги локациите на пиновите во 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 за хиерархиски и тимски дизајн поглавје од прирачникот Quartus Prime Standard Edition.
а. Отстранете го acl_iface_partition.qxp од директориумот ALTERAOCLSDKROOT/board/c5soc/c5soc.
б. Овозможете го регионот 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 кернел за вашата табла.
г. Доколку е потребно, прилагодете ја големината и локацијата на регионот LogicLock.
д. Кога сте задоволни дека поставувањето на вашиот дизајн е чисто, извезете ја таа партиција како acl_iface_partition.qxp Quartus Prime Exported Partition File.
Како што е опишано во делот „Воспоставување на гарантиран тајминг проток“ на AIntel FPGA SDK за корисничко упатство за прилагодена платформа OpenCL, со увоз на овој .qxp file во дизајнот на највисоко ниво, го исполнувате барањето за обезбедување дизајн на табла со гарантиран проток на затворање на времето.
За фактори кои би можеле да влијаат на квалитетот на резултатите (QoR) на вашата извезена партиција, погледнете го Општиот квалитет на резултатите Размислувања за делот Извезена партиција на табла во Упатството за корисникот на Интел FPGA SDK за OpenCL прилагодена платформа.
ѓ. Оневозможете го acl_iface_region LogicLock регионот со враќање на командата во чекор 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 на Прилагодената платформа е неопходна за SDK да компајлира OpenCL кернели.
Совет: може да ја користите верзијата SDK на вашата прилагодена платформа за RTE. За да заштедите
простор, отстранете ја сликата на SD флеш-картичката од RTE верзијата на вашата сопствена платформа. - Тестирајте ја вашата сопствена платформа.
За повеќе информации, погледнете во делот Тестирање на дизајн на хардвер на Intel FPGA SDK за OpenCL прилагодена платформа за алатки.
Поврзани врски
- Тестирање на дизајнот на хардверот
- 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 прилагодена платформа со алатки за користење.
- За да го имплементирате протокот на зачувување QXP во хардверски дизајн Cyclone V SoC FPGA што е пренесен од претходната верзија на c5soc, направете ги следните чекори за да креирате подпартиција за да го исклучите HPS од .qxp file:
а. Пред да креирате партиција околу логиката без јадро, креирајте партиција околу HPS во .qsf Quartus Prime Settings File.
За прampле:
# Рачно поделете ја инстанцата што го моделира HPS-посветениот сет_инстанца_назначување -име PARTITION_HIERARCHY borde_18261 -на „system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_0_XNUMX____________| system_acl_iface_hps_XNUMX_hps_io_border:border“ -section_id „system_acl_iface_hps_XNUMX_hps_io_border:border“
# Поставете ја партицијата да биде тип HPS_PARTITION за да биде правилно обработена од остатокот од Quartus
set_global_assignment -име 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=on
–incremental_compilation_export_post_fit=on
–incremental_compilation_export_routing=on
–incremental_compilation_export_flatten=исклучено
Откако ќе го исклучите HPS од партицијата, можете да увезете .qxp file и состави го твојот дизајн. - Ажурирајте ја сликата на SD флеш картичката со тековната верзија на Intel FPGA RTE за OpenCL со извршување на следните задачи:
а. Монтирајте го file табела за распределба (масти32) и проширена file системски (ext3) партиции во постоечката слика како уреди за враќање на јамката. За детални инструкции, погледнете го Чекор 2 во градење слика на SD флеш картичка.
б. Во директориумот /home/root/opencl_arm32_rte, отстранете го files од претходната верзија на RTE.
в. Преземете и отпакувајте ја тековната верзија на RTE во директориумот /home/root/opencl_arm32_rte.
г. Во /driver/version.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 флеш картичка на страница 14
Исто така, имате можност да креирате нова слика на SD флеш картичка. - Прилагодена автомиграција на платформа за напредна компатибилност
1.3 Софтверска поддршка за споделена меморија
Заедничката физичка меморија помеѓу FPGA и процесорот е претпочитаната меморија за OpenCL кернелите што работат на SoC FPGA. Бидејќи FPGA пристапува до споделената физичка меморија, за разлика од споделената виртуелна меморија, таа нема пристап до табелите на страниците на процесорот што ги мапираат виртуелните адреси на корисникот на физички адреси на страници.
Во однос на хардверот, OpenCL кернелите пристапуваат до споделената физичка меморија преку директно поврзување со контролерот за хард меморија HPS DDR. Во однос на софтверот, поддршката за заедничка физичка меморија ги вклучува следните размислувања:
- Типични софтверски имплементации за доделување меморија на процесорот (на прample, функцијата malloc()) не може да додели мемориски регион што може да го користи FPGA.
Меморијата што ја доделува функцијата malloc() е соседна во просторот за адреси на виртуелната меморија, но некои основни физички страници веројатно нема да бидат физички соседни. Како таков, домаќинот мора да може да распредели физички соседни мемориски региони. Сепак, оваа способност не постои во апликациите за кориснички простор на Linux. Затоа, двигателот на кернелот Линукс мора да ја изврши распределбата. - Двигателот на кернелот OpenCL SoC FPGA Linux ја вклучува функцијата mmap() за да се распредели споделената физичка меморија и да се мапира во корисничкиот простор. Функцијата mmap() го користи стандардниот повик на кернелот на Linux dma_alloc_coherent() за да побара физички соседни мемориски региони за споделување со уред.
- Во стандардното јадро на Линукс, dma_alloc_coherent() не доделува физички соседна меморија со големина поголема од 0.5 мегабајти (MB). За да дозволите dma_alloc_coherent() да распределува големи количини на физички соседна меморија, овозможете ја функцијата за распределувач на соседна меморија (CMA) на кернелот Линукс и потоа повторно компајлирајте го кернелот на Линукс.
За референтната платформа Cyclone V SoC Development Kit, CMA управува со 512 MB од 1 GB физичка меморија. Може да ја зголемите или намалите оваа вредност, во зависност од количината на споделена меморија што ја бара апликацијата. Повикот dma_alloc_coherent() можеби нема да може да ги распредели целосните 512 MB физички соседна меморија; сепак, може рутински да добие приближно 450 MB меморија. - Процесорот може да ја кешира меморијата што ја доделува dma_alloc_coherent() повик. Особено, операциите за запишување од апликацијата домаќин не се видливи за OpenCL кернелите. Функцијата mmap() во двигателот на кернелот OpenCL SoC FPGA Linux, исто така, содржи повици до функцијата pgprot_noncached() или remap_pf_range() за експлицитно да се оневозможи кеширањето за овој регион од меморијата.
- Откако функцијата dma_alloc_coherent() ќе ја распредели физичката соседна меморија, функцијата mmap() ја враќа виртуелната адреса на почетокот на опсегот, што е адресен опсег на меморијата што ја доделувате. Апликацијата домаќин бара оваа виртуелна адреса за пристап до меморијата. Од друга страна, OpenCL кернелите бараат физички адреси. Возачот на кернелот на Linux го следи мапирањето на адресата од виртуелно-физичко. Можете да ги мапирате физичките адреси што mmap() ги враќа на вистинските физички адреси со додавање барање на двигателот.
Повикот aocl_mmd_shared_mem_alloc() MMD апликативен програмски интерфејс (API) ги вклучува следните прашања:
а. Функцијата mmap() која доделува меморија и ја враќа виртуелната адреса.
б. Дополнително барање што ја мапира вратената виртуелна адреса на физичка адреса.
Повикот aocl_mmd_shared_mem_alloc() MMD API потоа враќа две адреси
— вистинската вратена адреса е виртуелната адреса, а физичката адреса оди на 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 Реконфигурација на FPGA
За SoC FPGA, процесорот може да ја реконфигурира основната ткаенина на FPGA без да ја прекине работата на процесорот. Хардверскиот блок FPGA Manager што се протега на HPS и јадрото FPGA ја врши реконфигурацијата. Линукс кернелот вклучува драјвер кој овозможува лесен пристап до FPGA менаџерот.
- На view статусот на јадрото FPGA, повикајте ја командата за статус cat /sys/class/fpga/fpga0/.
Програмската алатка за Intel FPGA SDK за OpenCL достапна со референтната платформа Cyclone V SoC Development Kit го користи овој интерфејс за програмирање на FPGA. Кога репрограмирате FPGA јадро со вклучен процесор, програмската алатка ги извршува сите од следниве задачи:
1. Пред репрограмирање, оневозможете ги сите комуникациски мостови помеѓу FPGA и HPS, и H2F и LH2F мостовите.
Повторно вклучете ги овие мостови откако ќе заврши репрограмирањето.
Внимание: OpenCL системот не го користи мостот FPGA-to-HPS (F2H). Погледнете во делот HPS-FPGA Interfaces во Прирачникот за уред Cyclone V, Том 3: Технички референтен прирачник за хард процесорски систем за повеќе информации.
2. Осигурете се дека врската помеѓу FPGA и HPS DDR контролерот е оневозможена за време на репрограмирањето.
3. Осигурете се дека прекините на FPGA на FPGA се оневозможени за време на репрограмирањето.
Исто така, известете го возачот да одбие какви било прекини од FPGA за време на репрограмирањето.
Консултирајте го изворниот код на програмската алатка за детали за вистинската имплементација.
Предупредување: Не менувајте ја конфигурацијата на HPS DDR контролерот кога работи процесорот.
Тоа може да предизвика фатална системска грешка бидејќи може да ја промените конфигурацијата на DDR контролерот кога има извонредни мемориски трансакции од процесорот. Ова значи дека кога процесорот работи, не можете да го репрограмирате јадрото FPGA со слика што користи 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 контролерот.
SW3 dual in-line пакетот (DIP) го вклучува комплетот за развој на Cylone V SoC ја контролира очекуваната форма на сликата .rbf (односно дали file е компресирана и/или шифрирана). C5soc и златниот хардверски референтен дизајн достапен со SoC EDS, вклучуваат компресирани, но нешифрирани слики .rbf. Поставките на SW3 DIP прекинувачот опишани во Интел FPGA SDK за OpenCL Cyclone V SoC Getting Started Guide се совпаѓаат со оваа конфигурација на сликата .rbf.
Поврзани врски
- HPS-FPGA интерфејси
- Конфигурирање на SW3 прекинувачите
1.4.1 Детали за архитектурата на системот FPGA
Поддршката за референтната платформа за развој на кит за развој на Cyclone V SoC се базира на референтната платформа 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 е целосен систем на чип, вие сте одговорни за доставување на целосната дефиниција на системот. Интел препорачува да го испорачате во форма на слика на SD флеш картичка. Корисникот на Intel FPGA SDK за OpenCL може едноставно да ја запише сликата на флеш-картичката micro SD и плочата SoC FPGA е подготвена за употреба.
Измена на постоечка слика на SD флеш картичка на страница 13
Интел препорачува едноставно да ја менувате сликата достапна со референтната платформа Cyclone V SoC Development Kit. Исто така, имате можност да креирате нова слика на SD флеш картичка.
Креирање слика на SD флеш картичка на страница 14
Исто така, имате можност да креирате нова слика на SD флеш картичка.
1.5.1 Измена на постоечка слика на SD флеш картичка
Интел препорачува едноставно да ја менувате сликата достапна со 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 компајлер го генерира како opencl.rbf и ставете го на fat32 партицијата во сликата на SD флеш картичката.
Можете да го преземете hello_world example design од OpenCL Design Examples страницата на Altera webсајт. - Ставете го .rbf file во fat32 партицијата на сликата на флеш картичката.
Внимание: Поделбата fat32 мора да ги содржи и zImage file и .rbf file. Без .rbf file, ќе се појави фатална грешка кога ќе го вметнете драјверот. - Откако ќе ја креирате сликата на SD-картичката, напишете ја на микро SD-картичка со повикување на следнава команда: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- За да ја тестирате сликата на вашата SD флеш картичка, извршете ги следниве задачи:
а. Вметнете ја micro SD флеш-картичката во плочката SoC FPGA.
б. Напојувајте ја таблата.
в. Повикајте ја командата за помошна алатка за дијагностицирање aocl.
1.5.2 Креирање слика на SD флеш картичка
Исто така, имате можност да креирате нова слика на SD флеш картичка. Генеричките упатства за создавање нова слика на SD флеш-картичка и обнова на постоечка слика на SD флеш-картичка се достапни на страницата GSRD v14.0.2 – SD-картичка на RocketBoards.org webсајт.
Чекорите подолу ја опишуваат постапката за креирање на сликата linux_sd_card_image.tgz од сликата на SD флеш картичката Golden System Reference Design (GSRD):
Забелешка:
За да ја креирате сликата од сликата c5soc, извршете ги сите применливи задачи наведени во оваа постапка.
- Преземете и отпакувајте ја верзијата 14.0 на сликата на GSRD SD флеш картичката од Rocketboards.org.
- Монтирајте го file табела за распределба (масти32) и проширена file системски (ext3) партиции на оваа слика како уреди за враќање на јамката. За да монтирате партиција, извршете ги следниве чекори:
а. Одредете го бајтниот почеток на партицијата во сликата со повикување на /sbin/fdisk -lu image_file команда.
За прample, партицијата број 1 од типот W95 FAT има блок поместување од 2121728. Со 512 бајти по блок, поместувањето на бајти е 512 бајти x 2121728 = 1086324736 бајти.
б. Идентификувајте уред со слободна јамка (на прample, /dev/loop0) со внесување на командата losetup -f.
в. Претпоставувајќи дека /dev/loop0 е уред со бесплатна јамка, доделете ја сликата на вашата флеш-картичка на блок-уредот за јамка со повикување на losttup /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 за 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 со следнава содржина: извезете ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte извезете AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ извоз PATH=$ALTERAOCLSDKROOT/bin:$PATH извоз LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/домаќин/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
Корисникот на SDK ја извршува изворната команда ./init_opencl.sh за да ги вчита променливите на околината и двигателот на кернелот OpenCL Linux. - Ако треба да го ажурирате однапред вчитувачот, DTS files, или кернелот на Linux, потребен ви е компајлерот arm-linux-gnueabihf-gcc од SoC EDS. Следете ги упатствата наведени во упатството за корисникот на Intel SoC FPGA Embedded Design Suite за да го купите софтверот, да го прекомпајлирате и да го ажурирате соодветниот files на монтираната преграда fat32.
Внимание: Најверојатно е дека треба да го ажурирате однапред вчитувачот ако вашата прилагодена платформа има различни употреби на пинови од оние во c5soc.
Запомнете: ако го прекомпајлирате кернелот на Линукс, повторно компајлирајте го двигателот на кернелот на Линукс со истиот извор на кернелот на Линукс fileс. Ако има несовпаѓање помеѓу двигателот на кернелот на Линукс и кернелот на Линукс, драјверот нема да се вчита. Исто така, мора да го овозможите CMA.
Погледнете во Прекомпајлирање на кернелот на Linux за повеќе информации. - Компајлирајте го hello_world OpenCL exampдизајнирајте користејќи ја вашата поддршка за прилагодена платформа. Преименувајте го .rbf file што Intel FPGA SDK за OpenCL Offline компајлер го генерира како opencl.rbf и ставете го на fat32 партицијата во сликата на SD флеш картичката.
Можете да го преземете hello_world example design од OpenCL Design Examples страницата на Altera webсајт.
9. Откако ќе ги складирате сите потребни files на сликата на флеш картичката, повикајте ги следните команди:
а. синхронизирај
б. демонтирај /media/disk1
в. демонтирај каде е името на директориумот што го користите за монтирање на ext3 партицијата во 3 на страница 3 (на прample, /media/disk2).
г. losttup -d /dev/loop0
д. losttup -d /dev/loop1 - Компресирајте ја сликата на SD флеш картичката со повикување на следнава команда: tar cvfz .tgz linux_sd_card_image
- Доставете го .тгз file внатре во root директориумот на вашата прилагодена платформа.
- За да ја тестирате сликата на вашата SD флеш картичка, извршете ги следниве задачи:
а. Напишете ја добиената некомпресирана слика на микро SD флеш картичка.
б. Вметнете ја micro SD флеш-картичката во плочката SoC FPGA.
в. Напојувајте ја таблата.
г. Повикајте ја командата за помошна алатка за дијагностицирање aocl.
Поврзани врски
- Упатство за корисникот на Intel SoC FPGA Embedded Design Suite
- OpenCL Дизајн Пр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 Прекомпајлирање на кернелот на Линукс
За да го овозможите CMA, прво мора да го прекомпајлирате кернелот на Linux.
- Кликнете на врската GSRD v14.0 – Компилирање Линукс на страницата Ресурси на RocketBoards.org webстраница за пристап до инструкции за преземање и обнова на изворниот код на кернелот на Linux.
За употреба со™ Intel FPGA SDK за OpenCL, наведете socfpga-3.13-rel14.0 како . - Забелешка: процесот на градење создава arch/arm/configs/socfpga_defconfig file. Ова file ги одредува поставките за стандардната конфигурација socfpga.
Додајте ги следните линии на дното на лакот/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=y
CONFIG_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
Конфигурациската вредност CONFIG_CMA_SIZE_MBYTES ја поставува горната граница на вкупниот број на достапна физички соседна меморија. Може да ја зголемите оваа вредност ако ви треба повеќе меморија. - Внимание: Вкупната количина на физичка меморија достапна за ARM процесорот на SoC FPGA плочата е 1 GB. Интел не препорачува да го поставите CMA менаџерот блиску до 1 GB.
- Извршете ја командата make mrproper за да ја исчистите тековната конфигурација.
- Извршете ја командата make ARCH=arm socfpga_deconfig.
ARCH=arm покажува дека сакате да ја конфигурирате архитектурата на ARM.
socfpga_defconfig покажува дека сакате да ја користите стандардната конфигурација socfpga. - Извршете ја командата за извоз 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 како насочена прилагодена платформа.
9. Ставете го .rbf file во fat32 партицијата на сликата на флеш картичката.
Внимание: партицијата fat32 мора да ги содржи и zImage file и .rbf file. Без .rbf file, ќе се појави фатална грешка кога ќе го вметнете драјверот. - Вметнете ја програмираната micro SD-картичка, која ја содржи сликата на SD-картичката што сте ја модифицирале или креирале претходно, во комплетот за развој на Cyclone V SoC и потоа вклучете ја плочката 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 Runtime Environment за OpenCL. Дополнително, проверете дали сте вчитале Intel FPGA SDK за OpenCL генериран .rbf file во FPGA за да се спречи неправилна инсталација на модулот за кернелот Linux.
- Преземете ја верзијата Cyclone V SoC FPGA на Intel FPGA Runtime Environment за 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 во директориумот што го содржи изворот на кернелот на Линукс files.
- Извршете ја командата за извоз CROSS_COMPILE=arm-linux-gnueabihf- за да го означите префиксот на вашиот синџир на алатки.
- Извршете ја командата направи чиста.
- Извршете ја командата 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.
- Не можете да ги отфрлите имињата на продавачот и таблата пријавени од низите CL_DEVICE_VENDOR и CL_DEVICE_NAME од повикот clGetDeviceInfo().
- Ако домаќинот издвојува константна меморија во споделен DDR систем (т.е. HPS DDR) и ја модифицира константната меморија по извршувањето на кернелот, податоците во меморијата може да станат застарени. Овој проблем се јавува затоа што јадрото FPGA не може да ги прислушува трансакциите DDR од процесорот во HPS.
За да спречите пристап до застарени податоци последователни егзекуции на кернелот, имплементирајте една од следниве решенија:
• Не менувајте постојана меморија по нејзината иницијализација.
• Ако ви требаат повеќе __константни сетови на податоци, креирајте повеќе константни мемориски бафери.
• Доколку е достапно, доделете константна меморија во 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 не содржи кернелот на Linux вклучува files или компајлерот на GNU Compiler Collection (GCC).
б. Алатката за блиц бара поставување .rbf file со дизајн OpenCL на FAT32 партицијата на micro SD флеш-картичката. Во моментов, оваа партиција не е монтирана кога корисникот на SDK ја напојува плочката. Затоа, најдобриот начин за ажурирање на партицијата е да користите читач на флеш картички и машина за развој. - Кога се префрлате помеѓу Intel FPGA SDK за OpenCL Offline компајлер извршна files (.aocx) кои одговараат на различни варијанти на таблата (т.е. c5soc и c5soc_sharedonly), мора да ја користите програмската алатка на SDK за да го вчитате .aocx file за новата варијанта на табла за прв пат. Ако едноставно ја стартувате апликацијата домаќин користејќи нова варијанта на табла, но FPGA ја содржи сликата од друга варијанта на таблата, може да се појави фатална грешка.
- На .qxp file не ги вклучува задачите за партиции за интерфејс бидејќи софтверот Quartus Prime постојано ги исполнува временските барања на оваа партиција.
- Кога ќе ја вклучите плочката, нејзината адреса за контрола на пристап до медиуми (MAC) е поставена на случаен број. Ако вашата политика за LAN не го дозволува ова однесување, поставете ја 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 Offline компајлер во Intel FPGA SDK за OpenCL Offline компајлер. |
мај-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. • Ја ажурираше алатката за репрограмирање на програмата aoclfileиме>.команда за услужна помош aocx. •Ажурирана дијагностичката алатка за aocl дијагностика и aocl дијагностика команда за комунални услуги. •Ја ажуриравме процедурата во делот Пренесување на референтната платформа на вашата табла на 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 |