intel - логоFPGA SDK за OpenCL
Ръководство за потребителя

UG-OCL009
2017.05.08
Последна актуализация за Intel® Quartus® Prime Design Suite: 17.0

RENPHO RF FM059HS WiFi интелигентен масажор за крака - икона 5Абонирайте се
SAMSUNG SM A136UZKZAIO Galaxy A13 5G смартфон - икона 12Изпратете обратна връзка

Intel® FPGA SDK за OpenCL™ Intel® Cyclone®V SoC комплект за разработка Референтна платформа Ръководство за пренасяне

V SoC Development Kit Reference Platform Porting Guide описва хардуерния и софтуерен дизайн на Intel Cyclone V SoC Development Kit Reference Platform (c5soc) за използване с Intel Software Development Kit (SDK) за OpenCL Intel ® FPGA SDK за OpenCL ™ Intel Cyclone ® . Преди да започнете, Intel силно препоръчва да се запознаете със съдържанието на следните документи:

  1. Intel FPGA SDK за OpenCLIntel Cyclone V SoC Начално ръководство
  2. Intel FPGA SDK за потребителско ръководство за набор от инструменти за персонализирана платформа OpenCL
  3. Cyclone V Device Handbook, том 3: Техническо справочно ръководство за система с твърд процесор Освен това вижте Cyclone V SoC Development Kit и страницата SoC Embedded Design Suite на Altera webсайт за повече информация. 1

Внимание: Intel приема, че имате задълбочено разбиране на потребителското ръководство на Intel FPGA SDK за OpenCL Custom Platform Toolkit. Cyclone V SoC Development Kit Reference Platform Porting Guide не описва използването на Custom Platform Toolkit на 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 за потребителско ръководство за набор от инструменти за персонализирана платформа OpenCL
  • Наръчник за устройство Cyclone V, том 3: Техническо справочно ръководство за система с твърд процесор
  • Страница Cyclone V SoC Development Kit и SoC Embedded Design Suite на Altera webсайт
  1. OpenCL и логото на OpenCL са търговски марки на Apple Inc., използвани с разрешение на Khronos Group™.
  2. Intel FPGA SDK за OpenCL е базиран на публикувана спецификация на Khronos и е преминал процеса на тестване за съответствие на Khronos. Текущият статус на съответствие може да бъде намерен на www.khronos.org/conformance.

Корпорация Intel. Всички права запазени. Intel, логото на Intel, думите и логата Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus и Stratix са търговски марки на Intel Corporation или нейните дъщерни дружества в САЩ и/или други страни. Intel гарантира производителността на своите FPGA и полупроводникови продукти според настоящите спецификации в съответствие със стандартната гаранция на Intel, но си запазва правото да прави промени на продукти и услуги по всяко време без предизвестие. Intel не поема никаква отговорност или задължения, произтичащи от приложението или използването на каквато и да е информация, продукт или услуга, описани тук, освен в случаите, когато Intel е изрично договорено в писмен вид. Клиентите на Intel се съветват да получат най-новата версия на спецификациите на устройството, преди да разчитат на публикувана информация и преди да направят поръчки за продукти или услуги.
*Други имена и марки могат да бъдат заявени като собственост на други.

1.1.1 Cyclone V SoC комплект за разработка Референтна платформа Варианти на платка
Intel FPGA SDK за референтна платформа OpenCL Cyclone V SoC Development Kit включва два варианта на платка.

  • 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
Референтната платформа за комплект за разработка на Cyclone V SoC се състои от следното 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

Следният списък подчертава компонентите и функциите на Cyclone V SoC Development Kit, които са подходящи за Intel FPGA SDK за OpenCL:

  • Двуядрен процесор ARM Cortex-A9, работещ с 32-битов Linux.
  • Шината за усъвършенстван разширяем интерфейс (AXI) между HPS и основната тъкан на FPGA.
  • Два контролера за заздравена DDR памет, всеки от които се свързва към 1 гигабайт (GB) DDR3 SDRAM.
    — Един DDR контролер е достъпен само за FPGA ядрото (т.е. FPGA DDR).
    — Другият DDR контролер е достъпен както за HPS, така и за FPGA (т.е. HPS DDR). Този споделен контролер позволява безплатно споделяне на памет между процесора и FPGA ядрото.
  • Процесорът може да преконфигурира основната тъкан на FPGA.

1.1.3.1 Cyclone V SoC Development Kit Референтна платформа Цели и решения Intel базира внедряването на Cyclone V SoC Development Kit Reference Platform на няколко дизайнерски цели и решения. Intel препоръчва да вземете предвид тези цели и решения, когато пренасяте тази референтна платформа към вашата SoC FPGA платка.
По-долу са целите на дизайна на c5soc:

  1. Осигурете възможно най-високата честотна лента между ядрата на FPGA и DDR паметта(ите).
  2. Уверете се, че изчисленията на FPGA (т.е. OpenCL ядра) не пречат на други задачи на процесора, които може да включват обслужване на периферни устройства.
  3. Оставете възможно най-много FPGA ресурси за изчисления на ядрото вместо компоненти на интерфейса.

По-долу са дизайнерските решения на високо ниво, които са пряко следствие от дизайнерските цели на Intel:

  1. Референтната платформа използва само твърди DDR контролери за памет с най-широката възможна конфигурация (256 бита).
  2. FPGA комуникира директно с контролера на паметта HPS DDR, без да включва AXI шината и превключвателя L3 вътре в HPS. Директната комуникация осигурява възможно най-добрата честотна лента към DDR и предпазва FPGA изчисленията от намеса в комуникациите между процесора и неговата периферия.
  3. Директният достъп до паметта с разсейване (SG-DMA) не е част от логиката на интерфейса на FPGA. Вместо да прехвърляте големи количества данни между DDR ​​системи с памет, съхранявайте данните в споделения HPS DDR. Директният достъп до паметта на процесора от FPGA е по-ефективен от DMA. Той спестява хардуерни ресурси (т.е. FPGA област) и опростява драйвера на ядрото на Linux.
    Предупреждение: Прехвърлянето на памет между споделената HPS DDR система и DDR системата, която е достъпна само за FPGA, е много бавно. Ако решите да
    прехвърлете паметта по този начин, използвайте я само за много малки количества данни.
  4. Хостът и устройството извършват не-DMA трансфер на данни помежду си чрез моста HPS към FPGA (H2F), като използват само един 32-битов порт. Причината е, че без DMA ядрото на Linux може да издаде само една 32-битова заявка за четене или запис, така че не е необходимо да имате по-широка връзка.
  5. Хостът изпраща контролни сигнали към устройството чрез олекотен H2F (LH2F) мост.
    Тъй като управляващите сигнали от хоста към устройството са сигнали с ниска честотна лента, LH2F мостът е идеален за задачата.

1.2 Пренасяне на референтната платформа към вашата SoC FPGA платка
За да пренесете референтната платформа Cyclone V SoC Development Kit към вашата SoC FPGA платка, изпълнете следните задачи:

  1. Изберете версията с една DDR памет или с две DDR памети на референтната платформа c5soc като отправна точка на вашия дизайн.
  2. Актуализирайте местоположенията на пиновете в ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, където ALTERAOCLSDKROOT е пътят до местоположението на Intel FPGA SDK за OpenCL инсталация и е името на директорията на варианта на платката. Директорията c5soc_sharedonly е за варианта на платката с една DDR памет система. Директорията c5soc е за варианта на платката с две DDR системи памет.
  3.  Актуализирайте настройките на DDR за блоковете HPS и/или FPGA SDRAM в ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
    4. Всички Intel FPGA SDK за OpenCL предпочитани дизайни на платки трябва да постигнат гарантирано затваряне на времето. Като такова, поставянето на дизайна трябва да е точно в момента. За да пренесете дяла на платката c5soc (acl_iface_partition.qxp) към вашата SoC FPGA платка, изпълнете следните задачи:
    За подробни инструкции относно модифицирането и запазването на дяла на дъската вижте Quartus
    Основна инкрементална компилация за йерархичен и базиран на екип дизайн, глава на Наръчника на стандартното издание на Quartus Prime.
    а. Премахнете 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 ядро ​​за вашата дъска.
    д. Ако е необходимо, коригирайте размера и местоположението на областта LogicLock.
    д. Когато сте доволни, че разположението на вашия дизайн е правилно, експортирайте този дял като acl_iface_partition.qxp Quartus Prime Exported Partition File.
    Както е описано в раздела „Установяване на гарантиран синхронизиращ поток“ на AIntel FPGA SDK за потребителско ръководство за набор от инструменти за персонализирана платформа OpenCL, като импортирате този .qxp  file в дизайна от най-високо ниво, вие изпълнявате изискването за осигуряване на дизайн на платка с гарантиран поток на затваряне на времето.
    За фактори, които могат да повлияят на качеството на резултатите (QoR) на вашия експортиран дял, вижте Общите съображения за качеството на резултатите за раздела на експортирания дял на платката в потребителското ръководство на Intel FPGA SDK за потребителски инструментариум на OpenCL платформа.
    f. Деактивирайте региона acl_iface_region LogicLock, като върнете командата в Стъпка 2 обратно към set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region.
  4. Ако вашата SoC FPGA платка използва различни щифтове и периферии на HPS блока, регенерирайте предварителното зареждане и източника на дървото на устройствата (DTS) file. Ако промените настройките на контролера на паметта HPS DDR, генерирайте повторно програмата за предварително зареждане.
  5. Създайте изображение на SD флаш карта.
  6. Създайте своя персонализирана платформа, която включва изображението на SD флаш картата.
  7. Помислете за създаване на версия на среда за изпълнение на вашата персонализирана платформа за използване с Intel FPGA среда за изпълнение (RTE) за OpenCL. RTE версията на вашата персонализирана платформа не включва хардуерни директории и изображение на SD флаш карта. Тази персонализирана платформа се зарежда в SoC FPGA системата, за да позволи на хост приложенията да работят. За разлика от това, SDK версията на Custom Platform е необходима, за да може SDK да компилира OpenCL ядра.
    Съвет: Можете да използвате версията на SDK на вашата персонализирана платформа за RTE. Да запазя
    място, премахнете изображението на SD флаш картата от RTE версията на вашата персонализирана платформа.
  8. Тествайте персонализираната си платформа.
    Обърнете се към раздела Тестване на хардуерния дизайн на потребителското ръководство на Intel FPGA SDK за 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 персонализирани платформи. Обърнете се към Custom Platform Automigration for Forward Compatibility в Intel FPGA SDK за OpenCL Custom Platform Toolkit Ръководство за потребителя за повече информация.

  1. За да приложите потока за запазване на QXP в хардуерен дизайн на Cyclone V SoC FPGA, който е пренесен от предишна версия на c5soc, изпълнете следните стъпки, за да създадете подраздел, за да изключите HPS от .qxp file:
    а. Преди да създадете дял около неядровата логика, създайте дял около 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 отгоре -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=вкл
    –incremental_compilation_export_routing=вкл
    –incremental_compilation_export_flatten=изкл
    След като изключите HPS от дяла, можете да импортирате .qxp file и компилирайте своя дизайн.
  2. Актуализирайте изображението на SD флаш картата с текущата версия на Intel FPGA RTE за OpenCL, като изпълните следните задачи:
    а. Монтирайте file таблица за разпределение (fat32) и разширена file системни (ext3) дялове в съществуващото изображение като устройства с обратна връзка. За подробни инструкции вижте Стъпка 2 в Изграждане на изображение на SD флаш карта.
    b. В директорията /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 е версията на драйвера, която сте задали).
    д. Възстановете драйвера.
    f. Изтрийте папката(ите) на хардуера на вашата персонализирана платформа. Копирайте персонализираната платформа, заедно с актуализирания драйвер, в директорията /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 и CPU е предпочитаната памет за OpenCL ядра, работещи на SoC FPGA. Тъй като FPGA има достъп до споделена физическа памет, за разлика от споделената виртуална памет, тя няма достъп до таблиците на страниците на процесора, които картографират виртуалните адреси на потребителите към адресите на физическите страници.
По отношение на хардуера, OpenCL ядрата имат достъп до споделена физическа памет чрез директна връзка към контролера на твърдата памет HPS DDR. По отношение на софтуера поддръжката на споделена физическа памет включва следните съображения:

  1. Типични софтуерни реализации за разпределяне на памет на процесора (напрample, функцията malloc()) не може да разпредели област на паметта, която FPGA може да използва.
    Паметта, която функцията malloc() разпределя, е непрекъсната в адресното пространство на виртуалната памет, но всички основни физически страници е малко вероятно да бъдат непрекъснати физически. Като такъв, хостът трябва да може да разпределя физически съседни области на паметта. Тази възможност обаче не съществува в приложенията за потребителско пространство на Linux. Следователно драйверът на ядрото на Linux трябва да извърши разпределението.
  2. Драйверът на ядрото на OpenCL SoC FPGA Linux включва функцията mmap() за разпределяне на споделена физическа памет и картографирането й в потребителското пространство. Функцията mmap() използва стандартното извикване на ядрото на Linux dma_alloc_coherent(), за да поиска физически съседни области на паметта за споделяне с устройство.
  3. В ядрото на Linux по подразбиране dma_alloc_coherent() не разпределя физически съседна памет с размер повече от 0.5 мегабайта (MB). За да позволите на dma_alloc_coherent() да разпределя големи количества физически съседна памет, активирайте функцията за разпределение на непрекъсната памет (CMA) на ядрото на Linux и след това прекомпилирайте ядрото на Linux.
    За Cyclone V SoC Development Kit Reference Platform, CMA управлява 512 MB от 1 GB физическа памет. Можете да увеличите или намалите тази стойност в зависимост от количеството споделена памет, което приложението изисква. Извикването dma_alloc_coherent() може да не успее да разпредели пълните 512 MB физически непрекъсната памет; въпреки това може рутинно да получи приблизително 450 MB памет.
  4. Процесорът може да кешира памет, която извикването dma_alloc_coherent() разпределя. По-специално, операциите за запис от хост приложението не са видими за OpenCL ядрата. Функцията mmap() в драйвера на ядрото на OpenCL SoC FPGA Linux също съдържа извиквания към функцията pgprot_noncached() или remap_pf_range() за изрично деактивиране на кеширането за този регион на паметта.
  5. След като функцията dma_alloc_coherent() разпредели физически съседната памет, функцията mmap() връща виртуалния адрес в началото на диапазона, който е обхватът на адресите на паметта, която разпределяте. Хост приложението изисква този виртуален адрес за достъп до паметта. От друга страна, OpenCL ядрата изискват физически адреси. Драйверът на ядрото на Linux следи съпоставянето на виртуален към физически адрес. Можете да картографирате физическите адреси, които mmap() връща към действителните физически адреси, като добавите заявка към драйвера.
    Извикването на aocl_mmd_shared_mem_alloc() MMD интерфейс за програмиране на приложения (API) включва следните заявки:
    а. Функцията mmap(), която разпределя памет и връща виртуалния адрес.
    b. Допълнителната заявка, която преобразува върнатия виртуален адрес към физически адрес.
    След това извикването на 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 CPU управлява степента на поддръжка на споделена памет в библиотеките за изпълнение на SDK. С други думи, библиотеки по време на изпълнение, компилирани в други среди (напрample, x86_64 Linux или 64-битов Windows) не поддържат споделена памет.
    C5soc не внедри хетерогенна памет, за да прави разлика между споделена и несподелена памет поради следните причини:
    1. История—Поддръжката на хетерогенна памет не беше налична, когато първоначално беше създадена поддръжка на споделена памет.
    2. Единен интерфейс – Тъй като OpenCL е отворен стандарт, Intel поддържа последователност между доставчиците на разнородни изчислителни платформи. Следователно, същият интерфейс като архитектурите на други доставчици на платки се използва за разпределяне и използване на споделена памет.

1.4 Преконфигуриране на FPGA
За SoC FPGA, процесорът може да преконфигурира основната тъкан на FPGA, без да прекъсва работата на процесора. Хардуерният блок FPGA Manager, който обхваща HPS и основната FPGA, извършва преконфигурирането. Ядрото на Linux включва драйвер, който позволява лесен достъп до FPGA Manager.

  • до view състоянието на FPGA ядрото, извикайте командата cat /sys/class/fpga/fpga0/ status.
    Помощната програма Intel FPGA SDK за OpenCL, налична с референтната платформа Cyclone V SoC Development Kit, използва този интерфейс за програмиране на FPGA. При препрограмиране на FPGA ядро ​​с работещ процесор, помощната програма изпълнява всички от следните задачи:
    1. Преди препрограмиране деактивирайте всички комуникационни мостове между FPGA и HPS, както H2F, така и LH2F мостове.
    Разрешете отново тези мостове след приключване на препрограмирането.
    Внимание: Системата OpenCL не използва моста FPGA към HPS (F2H). Обърнете се към раздела HPS-FPGA интерфейси в Cyclone V Device Handbook, том 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 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 Reference Platform се основава на Stratix® V Reference Platform (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 Reference Platform. Освен това имате възможност да създадете ново изображение на 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 привилегии.

  1. За да декомпресирате $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, изпълнете командата tar xvfzlinux_sd_card_image.tgz.
  2. Компилирайте hello_world OpenCL exampдизайн с помощта на поддръжката на вашата персонализирана платформа. Преименувайте .rbf file който Intel FPGA SDK за OpenCL Offline Compiler генерира като opencl.rbf, и го поставете в дяла fat32 в изображението на SD флаш картата.
    Можете да изтеглите hello_world example дизайн от OpenCL Design Examples страница на Altera webсайт.
  3. Поставете .rbf file в дяла fat32 на изображението на флаш картата.
    Внимание: Fat32 дялът трябва да съдържа както zImage file и .rbf file. Без .rbf file, ще възникне фатална грешка, когато поставите драйвера.
  4. След като създадете изображението на SD картата, запишете го на микро SD карта, като извикате следната команда: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. За да тествате изображението на вашата SD флаш карта, изпълнете следните задачи:
    а. Поставете micro SD флаш картата в SoC FPGA платката.
    b. Включете захранването на дъската.
    ° С. Извикайте командата за диагностика на 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, изпълнете всички приложими задачи, описани в тази процедура.

  1. Изтеглете и разопаковайте изображението на GSRD SD флаш карта версия 14.0 от Rocketboards.org.
  2. Монтирайте file таблица за разпределение (fat32) и разширена file системни (ext3) дялове в това изображение като устройства с обратна връзка. За да монтирате дял, изпълнете следните стъпки:
    а. Определете началото на байта на дяла в изображението, като извикате /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 команда.
    д. Монтирайте устройството за цикъл, като извикате командата mount /dev/loop0 /media/disk1.
    В рамките на изображението file, /media/disk1 вече е монтиран fat32 дял.
    д. Повторете стъпки от a до d за дял ext3.
  3. Изтеглете Cyclone V SoC FPGA версията на пакета Intel FPGA Runtime Environment за OpenCL от Центъра за изтегляне на Altera webсайт.
    а. Щракнете върху бутона Изтегляне до изданието на софтуера Quartus Prime.
    b. Посочете версията на изданието, операционната система и метода на изтегляне.
    ° С. Щракнете върху раздела Допълнителен софтуер и изберете да изтеглите Intel FPGA
    Среда за изпълнение за OpenCL Linux Cyclone V SoC TGZ.
    д. След като изтеглите aocl-rte- .arm32.tgz file, разопаковайте го на
    директория, която притежавате.
  4. Поставете разопакования aocl-rte- .arm32 директория в директорията /home/root/opencl_arm32_rte на ext3 дяла на изображението file.
  5. Изтрийте папката(ите) на хардуера на вашата персонализирана платформа и след това поставете персонализираната платформа в поддиректорията на борда на /home/root/ opencl_arm32_rte.
  6. Създайте файла init_opencl.sh file в /home/root директория със следното съдържание: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ експортиране PATH=$ALTERAOCLSDKROOT/bin:$PATH експортиране LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
    Потребителят на SDK изпълнява командата източник ./init_opencl.sh, за да зареди променливите на средата и драйвера на ядрото на OpenCL Linux.
  7. Ако трябва да актуализирате програмата за предварително зареждане, 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 ядрото за повече информация.
  8. Компилирайте hello_world OpenCL exampдизайн с помощта на поддръжката на вашата персонализирана платформа. Преименувайте .rbf file който Intel FPGA SDK за OpenCL Offline Compiler генерира като opencl.rbf, и го поставете в дяла fat32 в изображението на SD флаш картата.
    Можете да изтеглите hello_world example дизайн от OpenCL Design Examples страница на Altera webсайт.
    9. След като съхраните всички необходими files върху изображението на флаш картата, извикайте следните команди:
    а. синхронизиране
    b. демонтирайте /media/disk1
    ° С. демонтиране където е името на директорията, която използвате за монтиране на ext3 дял в 3 на страница 3 (напр.ample, /медия/диск2).
    д. losetup -d /dev/loop0
    д. losetup -d /dev/loop1
  9. Компресирайте изображението на SD флаш картата, като извикате следната команда: tar cvfz .tgz linux_sd_card_image
  10. Доставете .tgz file в основната директория на вашата персонализирана платформа.
  11. За да тествате изображението на вашата SD флаш карта, изпълнете следните задачи:
    а. Запишете полученото некомпресирано изображение върху micro SD флаш карта.
    b. Поставете micro SD флаш картата в SoC FPGA платката.
    ° С. Включете захранването на дъската.
    д. Извикайте командата за диагностика на 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.

  1. Прекомпилиране на Linux ядрото на страница 16
    За да активирате CMA, първо трябва да прекомпилирате ядрото на Linux.
  2. Компилиране и инсталиране на драйвера на ядрото на OpenCL Linux на страница 17 Компилирайте драйвера на ядрото на OpenCL Linux спрямо компилирания източник на ядрото.

1.6.1 Прекомпилиране на ядрото на Linux
За да активирате CMA, първо трябва да прекомпилирате ядрото на Linux.

  1. Щракнете върху връзката GSRD v14.0 – Компилиране на Linux на страницата с ресурси на RocketBoards.org webсайт за достъп до инструкции за изтегляне и повторно изграждане на изходния код на ядрото на Linux.
    За използване с™ Intel FPGA SDK за OpenCL, посочете socfpga-3.13-rel14.0 като .
  2. Забележка: Процесът на изграждане създава 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 задава горната граница на общия брой налична физически непрекъсната памет. Можете да увеличите тази стойност, ако имате нужда от повече памет.
  3. Внимание: Общото количество физическа памет, налична за ARM процесора на SoC FPGA платката, е 1 GB. Intel не препоръчва да настроите CMA мениджъра близо до 1 GB.
  4. Изпълнете командата make mrproper, за да почистите текущата конфигурация.
  5. Изпълнете командата make ARCH=arm socfpga_deconfig.
    ARCH=arm показва, че искате да конфигурирате ARM архитектурата.
    socfpga_defconfig показва, че искате да използвате конфигурацията на socfpga по подразбиране.
  6. Изпълнете командата експортиране CROSS_COMPILE=arm-linux-gnueabihf-.
    Тази команда настройва променливата на средата CROSS_COMPILE, за да посочи префикса на желаната верига от инструменти.
  7. Изпълнете командата make ARCH=arm zImage. Полученото изображение е достъпно в arch/arm/boot/zImage file.
  8. Поставете zImage file в дяла fat32 на изображението на флаш картата. За подробни инструкции вижте специфичното за Cyclone V SoC FPGA ръководство за потребителя на GSRD на Rocketboards.org.
  9. Забележка: За да вмъкнете правилно драйвера на ядрото на OpenCL Linux, първо заредете SDKgenerated.rbf file върху FPGA.
    За да създадете .rbf file, компилирайте дизайн на SDK напрample с референтната платформа на комплекта за разработка Cyclone V SoC като целевата персонализирана платформа.
    9. Поставете .rbf file в дяла fat32 на изображението на флаш картата.
    Внимание: дялът fat32 трябва да съдържа както zImage file и .rbf file. Без .rbf file, ще възникне фатална грешка, когато поставите драйвера.
  10. Поставете програмираната микро SD карта, която съдържа изображението на SD картата, което сте модифицирали или създали по-рано, в Cyclone V SoC Development Kit и след това включете SoC FPGA платката.
  11. Проверете версията на инсталираното Linux ядро, като изпълните командата uname -r.
  12. За да проверите дали сте активирали CMA успешно в ядрото, с включена SoC FPGA платка, изпълнете командата grep init_cma /proc/kallsyms.
    CMA е активиран, ако изходът не е празен.
  13. За да използвате прекомпилираното ядро ​​на 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.

  1. Изтеглете Cyclone V SoC FPGA версията на пакета Intel FPGA Runtime Environment за OpenCL от Центъра за изтегляне на Altera webсайт.
    а. Щракнете върху бутона Изтегляне до изданието на софтуера Quartus Prime.
    b. Посочете версията на изданието, операционната система и метода на изтегляне.
    ° С. Щракнете върху раздела Допълнителен софтуер и изберете да изтеглите Intel FPGA
    Среда за изпълнение за OpenCL Linux Cyclone V SoC TGZ.
    д. След като изтеглите aocl-rte- .arm32.tgz file, разопаковайте го на
    директория, която притежавате.
    Източникът на драйвера е в aocl-rte- .arm32/board/c5soc/ директория с драйвери.
  2. За да прекомпилирате драйвера на ядрото на OpenCL Linux, задайте стойността KDIR в Make на драйвераfile към директорията, съдържаща изходния код на ядрото на Linux files.
  3. Изпълнете командата export CROSS_COMPILE=arm-linux-gnueabihf-, за да посочите префикса на вашата верига от инструменти.
  4. Изпълнете командата make clean.
  5. Изпълнете командата make, за да създадете aclsoc_drv.ko file.
  6. Прехвърлете директорията opencl_arm32_rte към платката Cyclone V SoC FPGA.
    Изпълнение на scp -r root@вашият-ipaddress: командата поставя средата за изпълнение в /home/root директорията.
  7. Стартирайте скрипта init_opencl.sh, който създадохте, когато изградихте изображението на SD картата.
  8.  Извикайте командата за диагностика на aocl. Помощната програма за диагностика ще върне успешен резултат, след като изпълните успешно init_opencl.sh.

1.7 Известни проблеми
Понастоящем има определени ограничения за използването на Intel FPGA SDK за OpenCL с референтната платформа Cyclone V SoC Development Kit.

  1. Не можете да замените имената на доставчика и платката, докладвани от низовете CL_DEVICE_VENDOR и CL_DEVICE_NAME на извикването clGetDeviceInfo().
  2. Ако хостът разпредели постоянна памет в споделена DDR система (т.е. HPS DDR) и промени постоянната памет след изпълнение на ядрото, данните в паметта може да остареят. Този проблем възниква, защото ядрото на FPGA не може да подслушва CPU-към-HPS DDR транзакции.
    За да предотвратите последващи изпълнения на ядрото от достъп до остарели данни, приложете едно от следните заобиколни решения:
    • Не променяйте постоянната памет след нейното инициализиране.
    • Ако имате нужда от множество __постоянни набори от данни, създайте множество постоянни буфери на паметта.
    • Ако е налична, разпределете постоянна памет в FPGA DDR на вашата ускорителна платка.
  3. Помощната програма SDK на ARM поддържа само командите на програмата и помощната програма за диагностика.
    Командите на помощната програма за флаш, инсталиране и деинсталиране не са приложими за Cyclone V SoC Development Kit поради следните причини:
    а. Помощната програма за инсталиране трябва да компилира драйвера на ядрото на 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 не съдържа включено ядро ​​на Linux files или компилатора GNU Compiler Collection (GCC).
    b. Помощната програма за флаш изисква поставяне на .rbf file на OpenCL дизайн върху FAT32 дяла на micro SD флаш картата. Понастоящем този дял не се монтира, когато потребителят на SDK включи платката. Следователно най-добрият начин за актуализиране на дяла е да използвате четец на флаш карти и машината за разработка.
  4. Когато превключвате между изпълнимия файл на Intel FPGA SDK за OpenCL Offline Compiler files (.aocx), които съответстват на различни варианти на платка (т.е. c5soc и c5soc_sharedonly), трябва да използвате помощната програма на SDK, за да заредите .aocx file за новия вариант на борда за първи път. Ако просто стартирате хост приложението, като използвате нов вариант на платка, но FPGA съдържа изображение от друг вариант на платка, може да възникне фатална грешка.
  5. .qxp file не включва присвояването на интерфейсен дял, тъй като софтуерът Quartus Prime последователно отговаря на изискванията за време на този дял.
  6. Когато включите захранването на платката, нейният адрес за контрол на достъпа до медия (MAC) е зададен на произволно число. Ако вашата LAN политика не позволява това поведение, задайте MAC адреса, като изпълните следните задачи:
    а. По време на включване на U-Boot натиснете произволен клавиш, за да влезете в командния ред на U-Boot.
    b. Въведете 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 флаш карта.
• Модифицирани инструкции за повторно компилиране на ядрото на 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 диагностика и 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

Референции

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са маркирани *