intel - logotypFPGA SDK för OpenCL
Användarhandbok

UG-OCL009
2017.05.08
Senast uppdaterad för Intel® Quartus® Prime Design Suite: 17.0

RENPHO RF FM059HS WiFi Smart Foot Massager - ikon 5Prenumerera
SAMSUNG SM A136UZKZAIO Galaxy A13 5G Smartphone - ikon 12Skicka feedback

Intel® FPGA SDK för OpenCL™ Intel® Cyclone®V SoC Development Kit Referensguide för plattformsportering

V SoC Development Kit Reference Platform Porting Guide beskriver hårdvaru- och mjukvarudesignen för Intel Cyclone V SoC Development Kit Reference Platform (c5soc) för användning med Intel Software Development Kit (SDK) för OpenCL Intel ® FPGA SDK för OpenCL ™ Intel Cyclone ® . Innan du börjar rekommenderar Intel starkt att du bekantar dig med innehållet i följande dokument:

  1. Intel FPGA SDK för OpenCLIntel Cyclone V SoC Komma igång Guide
  2. Intel FPGA SDK för OpenCL Custom Platform Toolkit Användarhandbok
  3. Cyclone V Device Handbook, Volym 3: Teknisk referensmanual för hårdprocessorsystem. Se dessutom sidan Cyclone V SoC Development Kit och SoC Embedded Design Suite på Altera webwebbplats för mer information. 1 2

Uppmärksamhet: Intel förutsätter att du har en djupgående förståelse för Intel FPGA SDK för OpenCL Custom Platform Toolkit User Guide. Cyclone V SoC Development Kit Reference Platform Porting Guide beskriver inte användningen av SDK:s Custom Platform Toolkit för att implementera en anpassad plattform för Cyclone V SoC Development Kit. Den beskriver bara skillnaderna mellan SDK-stödet på Cyclone V SoC Development Kit och en generisk Intel FPGA SDK för OpenCL Custom Platform.

Relaterade länkar

  • Intel FPGA SDK för OpenCL Cyclone V SoC Komma igång Guide
  • Intel FPGA SDK för OpenCL Custom Platform Toolkit Användarhandbok
  • Cyclone V Device Handbook, Volym 3: Teknisk referensmanual för hårdprocessorsystem
  • Sidan Cyclone V SoC Development Kit och SoC Embedded Design Suite på Altera webplats
  1. OpenCL och OpenCL-logotypen är varumärken som Apple Inc. används med tillstånd från Khronos Group™.
  2. Intel FPGA SDK för OpenCL är baserad på en publicerad Khronos-specifikation och har klarat Khronos Conformance Testing Process. Aktuell överensstämmelsestatus finns på www.khronos.org/conformance.

Intel Corporation. Alla rättigheter reserverade. Intel, Intels logotyp, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus och Stratix ord och logotyper är varumärken som tillhör Intel Corporation eller dess dotterbolag i USA och/eller andra länder. Intel garanterar prestanda för sina FPGA- och halvledarprodukter enligt gällande specifikationer i enlighet med Intels standardgaranti, men förbehåller sig rätten att göra ändringar i alla produkter och tjänster när som helst utan föregående meddelande. Intel tar inget ansvar eller ansvar som uppstår till följd av applikationen eller användningen av någon information, produkt eller tjänst som beskrivs här, förutom vad som uttryckligen har godkänts skriftligen av Intel. Intel-kunder rekommenderas att skaffa den senaste versionen av enhetsspecifikationerna innan de förlitar sig på någon publicerad information och innan de beställer produkter eller tjänster.
*Andra namn och varumärken kan göras anspråk på att vara andras egendom.

1.1.1 Cyclone V SoC Development Kit Reference Platform Board Varianter
Intel FPGA SDK för OpenCL Cyclone V SoC Development Kit Reference Platform innehåller två kortvarianter.

  • c5soc-kort
    Detta standardkort ger åtkomst till två DDR-minnesbanker. HPS DDR är tillgänglig för både FPGA och CPU. FPGA DDR är endast tillgänglig med FPGA.
  • c5soc_sharedonly board
    Denna kortvariant innehåller endast HPS DDR-anslutning. FPGA DDR är inte tillgänglig. Denna kortvariant är mer yteffektiv eftersom mindre hårdvara krävs för att stödja en DDR-minnesbank. c5soc_sharedonly-kortet är också en bra prototypplattform för ett slutgiltigt produktionskort med en enda DDR-minnesbank.
    För att rikta in dig på denna kortvariant när du kompilerar din OpenCL-kärna, inkludera alternativet -board c5soc_sharedonly i ditt aoc-kommando.
    För mer information om –tavlan alternativ för aoc-kommandot, se Intel FPGA SDK för OpenCL Programming Guide.

Relaterade länkar
Kompilera en kärna för ett specifikt FPGA-kort (–board )
1.1.2 Innehållet i referensplattformen för Cyclone V SoC Development Kit
Cyclone V SoC Development Kit Reference Platform består av följande files och kataloger:

File eller Katalog Beskrivning
board_env.xml eXtensible Markup Language (XML) file som beskriver c5soc till Intel FPGA SDK för OpenCL.
linux_sd_card_image.tgz Komprimerad bild på SD-flashkort file som innehåller allt en SDK-användare behöver för att använda Cyclone V SoC Development Kit med SDK.
arm32 Katalog som innehåller följande:

1.1.3 Relevanta funktioner i Cyclone V SoC Development Kit

Följande lista belyser komponenterna och funktionerna i Cyclone V SoC Development Kit som är relevanta för Intel FPGA SDK för OpenCL:

  • Dual-core ARM Cortex-A9 CPU som kör 32-bitars Linux.
  • Advanced eXtensible Interface (AXI) buss mellan HPS och FPGA-kärntyget.
  • Två härdade DDR-minneskontroller, var och en ansluten till ett 1 gigabyte (GB) DDR3 SDRAM.
    — En DDR-kontroller är endast tillgänglig för FPGA-kärnan (det vill säga FPGA DDR).
    — Den andra DDR-styrenheten är tillgänglig för både HPS och FPGA (det vill säga HPS DDR). Denna delade kontroller tillåter ledig minnesdelning mellan CPU:n och FPGA-kärnan.
  • CPU:n kan konfigurera om FPGA-kärntyget.

1.1.3.1 Cyclone V SoC Development Kit Referensplattform Designmål och beslut Intel baserar implementeringen av Cyclone V SoC Development Kit Reference Platform på flera designmål och beslut. Intel rekommenderar att du överväger dessa mål och beslut när du porterar denna referensplattform till ditt SoC FPGA-kort.
Nedan är designmålen för c5soc:

  1. Ge högsta möjliga bandbredd mellan kärnor på FPGA och DDR-minnessystem.
  2. Se till att beräkningar på FPGA (det vill säga OpenCL-kärnor) inte stör andra CPU-uppgifter som kan inkludera service kring kringutrustning.
  3. Lämna så mycket FPGA-resurser som möjligt för kärnberäkningar istället för gränssnittskomponenter.

Nedan är designbesluten på hög nivå som är de direkta konsekvenserna av Intels designmål:

  1. Referensplattformen använder endast hårda DDR-minneskontroller med bredast möjliga konfiguration (256 bitar).
  2. FPGA kommunicerar direkt med HPS DDR-minneskontrollern, utan att involvera AXI-bussen och L3-switchen inuti HPS. Den direkta kommunikationen ger bästa möjliga bandbredd till DDR och hindrar FPGA-beräkningar från att störa kommunikationen mellan CPU:n och dess periferi.
  3. Scatter-gather Direct Memory Access (SG-DMA) är inte en del av FPGA-gränssnittslogiken. Istället för att överföra stora mängder data mellan DDR-minnessystem, lagra data i den delade HPS DDR. Direkt åtkomst till CPU-minne av FPGA är effektivare än DMA. Det sparar hårdvaruresurser (det vill säga FPGA-området) och förenklar Linux-kärndrivrutinen.
    Varning: Minnesöverföringen mellan det delade HPS DDR-systemet och DDR-systemet som endast är tillgängligt för FPGA är mycket långsam. Om du väljer att
    överför minne på detta sätt, använd det endast för mycket små mängder data.
  4. Värden och enheten utför icke-DMA-dataöverföring mellan varandra via HPS-till-FPGA-bryggan (H2F) med endast en enda 32-bitarsport. Anledningen är att utan DMA kan Linux-kärnan bara utfärda en enda 32-bitars läs- eller skrivbegäran, så det är onödigt att ha en bredare anslutning.
  5. Värden skickar styrsignaler till enheten via en lätt H2F (LH2F) brygga.
    Eftersom kontrollsignaler från värden till enheten är signaler med låg bandbredd är en LH2F-brygga idealisk för uppgiften.

1.2 Portera referensplattformen till ditt SoC FPGA-kort
För att porta Cyclone V SoC Development Kit Reference Platform till ditt SoC FPGA-kort, utför följande uppgifter:

  1. Välj ett DDR-minne eller två DDR-minnesversioner av c5soc Reference Platform som utgångspunkt för din design.
  2. Uppdatera stiftplatserna i ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, där ALTERAOCLSDKROOT är sökvägen till platsen för Intel FPGA SDK för OpenCL-installation, och är katalognamnet på styrelsevarianten. Katalogen c5soc_sharedonly är för kortvarianten med ett DDR-minnessystem. c5soc-katalogen är för kortvarianten med två DDR-minnessystem.
  3.  Uppdatera DDR-inställningarna för HPS- och/eller FPGA SDRAM-blocken i ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
    4. Alla Intel FPGA SDK för OpenCL-föredragna kortdesigner måste uppnå garanterad timing-stängning. Som sådan måste placeringen av designen vara timing ren. För att porta c5soc-kortpartitionen (acl_iface_partition.qxp) till ditt SoC FPGA-kort, utför följande uppgifter:
    För detaljerade instruktioner om hur du ändrar och bevarar kortpartitionen, se Quartus
    Prime Incremental Compilation för hierarkisk och teambaserad design kapitel i Quartus Prime Standard Edition Handbook.
    a. Ta bort acl_iface_partition.qxp från katalogen ALTERAOCLSDKROOT/board/c5soc/c5soc.
    b. Aktivera acl_iface_region LogicLock™-regionen genom att ändra Tcl-kommandot set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region till set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
    c. Kompilera en OpenCL-kärna för ditt kort.
    d. Justera vid behov storleken och platsen för LogicLock-regionen.
    e. När du är övertygad om att placeringen av din design är timing ren, exportera den partitionen som acl_iface_partition.qxp Quartus Prime Exported Partition File.
    Som beskrivs i avsnittet Etablera garanterat timingflöde i AIntel FPGA SDK för OpenCL Custom Platform Toolkit User Guide, genom att importera denna .qxp  file i toppnivådesignen uppfyller du kravet på att tillhandahålla en bräddesign med ett garanterat timing-stängningsflöde.
    För faktorer som kan påverka kvaliteten på resultaten (QoR) för din exporterade partition, se Allmänna överväganden om resultatkvalitet för avsnittet Exporterad kortpartition i Intel FPGA SDK för OpenCL Custom Platform Toolkit User Guide.
    f. Inaktivera acl_iface_region LogicLock-regionen genom att återställa kommandot i steg 2 tillbaka till set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region.
  4. Om ditt SoC FPGA-kort använder olika stift och periferier av HPS-blocket, återskapa förladdaren och enhetsträdkällan (DTS) file. Om du ändrar inställningarna för HPS DDR-minneskontrollern, återskapa förladdaren.
  5. Skapa SD-flashkortets bild.
  6. Skapa din anpassade plattform, som inkluderar SD-flashkortets bild.
  7. Överväg att skapa en körtidsmiljöversion av din anpassade plattform för användning med Intel FPGA Runtime Environment (RTE) för OpenCL. RTE-versionen av din anpassade plattform inkluderar inte hårdvarukataloger och SD-flashkortsbilden. Denna anpassade plattform laddas in på SoC FPGA-systemet för att tillåta värdapplikationer att köras. Däremot är SDK-versionen av den anpassade plattformen nödvändig för att SDK:n ska kompilera OpenCL-kärnor.
    Tips: Du kan använda SDK-versionen av din anpassade plattform för RTE. Att spara
    utrymme, ta bort SD-flash-kortbilden från RTE-versionen av din anpassade plattform.
  8. Testa din anpassade plattform.
    Se avsnittet Testa maskinvarudesignen i användarhandboken för Intel FPGA SDK för OpenCL Custom Platform Toolkit för mer information.

Relaterade länkar

  • Testa hårdvarudesignen
  • Quartus Prime inkrementell sammanställning för hierarkisk och teambaserad design
  • Upprättande av garanterat tidsflöde
  • Allmänna överväganden om resultatkvalitet för den exporterade brädpartitionen

1.2.1 Uppdatera en portad referensplattform
I den nuvarande versionen av Cyclone V SoC Development Kit Reference Platform är HPS-blocket inuti partitionen som definierar all icke-kärnlogik. Du kan dock inte exportera HPS som en del av .qxp file. För att uppdatera en befintlig anpassad plattform som du modifierade från en tidigare version av c5soc, implementera QXP-bevarandeflödet, uppdatera SD-flashkortsavbildningen för att få den senaste runtime-miljön och uppdatera board_spec.xml file för att aktivera automigrering.
Altera® SDK för OpenCL version 14.1 och senare undersöker board_spec.xml file för styrelseinformation och implementerar automatiska uppdateringar. Eftersom du ändrar
design genom att implementera QXP-bevarandeflödet måste du uppdatera board_spec.xml file till dess format i den aktuella versionen. Uppdaterar file tillåter SDK:n att skilja mellan obevarade anpassade plattformar och de nuvarande QXP-baserade anpassade plattformarna. Se Custom Platform Automigration for Forward Compatibility i Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide för mer information.

  1. För att implementera QXP-bevarandeflödet i en Cyclone V SoC FPGA-hårdvarudesign som är portad från en tidigare version av c5soc, utför följande steg för att skapa en underpartition för att utesluta HPS från .qxp file:
    a. Innan du skapar en partition runt icke-kärnlogiken, skapa en partition runt HPS i .qsf Quartus Prime-inställningarna File.
    Till exempelampde:
    # Partitionera manuellt instansen som modellerar den HPS-dedikerade I/O set_instance_assignment -name PARTITION_HIERARCHY borde_18261 -till "system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_0_iface_hpsio|system_acl_0_hps_hpsio: system_acl_iface_hps_0_hps_io_border:border" -section_id "system_acl_iface_hps_XNUMX_hps_io_border:border"
    # Ställ in partitionen att vara en HPS_PARTITION-typ som ska behandlas korrekt av resten av Quartus
    set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id "system_acl_iface_hps_0_hps_io_border:border"
    quartus_cdb topp -c topp
    –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=på
    –incremental_compilation_export_flatten=av
    När du har uteslutit HPS från partitionen kan du importera .qxp file och kompilera din design.
  2. Uppdatera SD-kortbilden med den aktuella versionen av Intel FPGA RTE för OpenCL genom att utföra följande uppgifter:
    a. Montera file fördelningstabell (fat32) och utökad file systempartitioner (ext3) i den befintliga bilden som återkopplingsenheter. För detaljerade instruktioner, se steg 2 i Skapa en SD Flash-kortbild.
    b. Ta bort katalogen /home/root/opencl_arm32_rte files från den tidigare versionen av RTE.
    c. Ladda ner och packa upp den aktuella versionen av RTE till katalogen /home/root/opencl_arm32_rte.
    d. I den /driver/version.h file för din anpassade plattform, uppdatera ACL_DRIVER_VERSION-tilldelningen till . (till exempelample, 16.1.x, där 16.1 är SDK-versionen och x är drivrutinsversionen som du ställer in).
    e. Bygg om drivrutinen.
    f. Ta bort hårdvarumapp(ar) på din anpassade plattform. Kopiera den anpassade plattformen, tillsammans med den uppdaterade drivrutinen, till katalogen /home/root/opencl_arm_rte/board.
    g. Kopiera Altera.icd file från katalogen /home/root/opencl_arm32_rte och lägg till den i katalogen /etc/OpenCL/vendors.
    h. Avmontera och testa den nya bilden. För detaljerade instruktioner, se steg 8 till 11 i Skapa en SD Flash-kortbild.

Relaterade länkar

  • Skapa en SD Flash-kortbild på sidan 14
    Du har också möjlighet att skapa en ny SD-flashkortbild.
  • Anpassad plattformsautomatik för framåtkompatibilitet

1.3 Programvarustöd för delat minne
Delat fysiskt minne mellan FPGA och CPU är det föredragna minnet för OpenCL-kärnor som körs på SoC FPGA. Eftersom FPGA:n har tillgång till delat fysiskt minne, i motsats till delat virtuellt minne, har den inte tillgång till CPU:ns sidtabeller som mappar användarnas virtuella adresser till fysiska sidadresser.
När det gäller hårdvaran får OpenCL-kärnor tillgång till delat fysiskt minne genom direktanslutning till HPS DDR-hårdminneskontrollern. När det gäller programvaran innebär stöd för delat fysiskt minne följande överväganden:

  1. Typiska programvaruimplementationer för att allokera minne på CPU (example, funktionen malloc()) kan inte allokera en minnesregion som FPGA kan använda.
    Minne som malloc()-funktionen allokerar är angränsande i det virtuella minnesadressutrymmet, men några underliggande fysiska sidor kommer sannolikt inte att vara angränsande fysiskt. Som sådan måste värden kunna allokera fysiskt sammanhängande minnesregioner. Denna förmåga finns dock inte i användarutrymmesapplikationer på Linux. Därför måste Linux-kärndrivrutinen utföra allokeringen.
  2. OpenCL SoC FPGA Linux-kärndrivrutinen inkluderar mmap()-funktionen för att allokera delat fysiskt minne och mappa det till användarutrymmet. Mmap()-funktionen använder standard Linux-kärnanropet dma_alloc_coherent() för att begära fysiskt sammanhängande minnesregioner för delning med en enhet.
  3. I standard Linux-kärnan allokerar inte dma_alloc_coherent() fysiskt sammanhängande minne som är större än 0.5 megabyte (MB). För att tillåta dma_alloc_coherent() att allokera stora mängder fysiskt sammanhängande minne, aktivera funktionen Contiguous Memory Allocator (CMA) i Linux-kärnan och kompilera sedan om Linux-kärnan.
    För Cyclone V SoC Development Kit Reference Platform hanterar CMA 512 MB av 1 GB fysiskt minne. Du kan öka eller minska detta värde, beroende på mängden delat minne som programmet kräver. Anropet dma_alloc_coherent() kanske inte kan allokera hela 512 MB fysiskt sammanhängande minne; den kan dock rutinmässigt få cirka 450 MB minne.
  4. CPU:n kan cacheminne som dma_alloc_coherent()-anropet allokerar. I synnerhet är skrivoperationer från värdapplikationen inte synliga för OpenCL-kärnorna. Mmap()-funktionen i OpenCL SoC FPGA Linux-kärndrivrutinen innehåller också anrop till funktionen pgprot_noncached() eller remap_pf_range() för att explicit inaktivera cachning för denna minnesregion.
  5. Efter att funktionen dma_alloc_coherent() allokerar det fysiskt sammanhängande minnet, returnerar funktionen mmap() den virtuella adressen till början av intervallet, vilket är adressspannet för minnet du allokerar. Värdapplikationen kräver denna virtuella adress för att komma åt minnet. Å andra sidan kräver OpenCL-kärnorna fysiska adresser. Linux-kärndrivrutinen håller reda på den virtuella-till-fysiska adressmappingen. Du kan mappa de fysiska adresserna som mmap() returnerar till faktiska fysiska adresser genom att lägga till en fråga i drivrutinen.
    Anropet aocl_mmd_shared_mem_alloc() MMD Application Programming Interface (API) innehåller följande frågor:
    a. Mmap()-funktionen som allokerar minne och returnerar den virtuella adressen.
    b. Den extra frågan som mappar den returnerade virtuella adressen till fysisk adress.
    MMD API-anropet aocl_mmd_shared_mem_alloc() returnerar sedan två adresser
    —den faktiska returnerade adressen är den virtuella adressen, och den fysiska adressen går till device_ptr_out.
    Notera: Drivrutinen kan bara mappa de virtuella adresser som funktionen mmap() returnerar till fysiska adresser. Om du begär den fysiska adressen till någon annan virtuell pekare, returnerar drivrutinen ett NULL-värde.

Varning: Intel FPGA SDK för OpenCL runtime-bibliotek antar att det delade minnet är det första minnet som listas i board_spec.xml file. Med andra ord, den fysiska adressen som Linux-kärndrivrutinen erhåller blir Avalon®-adressen som OpenCL-kärnan skickar till HPS SDRAM.
Med avseende på runtime-biblioteket, använd anropet clCreateBuffer() för att allokera det delade minnet som en enhetsbuffert på följande sätt:

  • För två-DDR-kortvarianten med både delat och icke-delat minne, allokerar clCreateBuffer() delat minne om du anger flaggan CL_MEM_USE_HOST_PTR. Användning av andra flaggor gör att clCreateBuffer() allokerar buffert i det icke-delade minnet.
  • För en-DDR-kortvarianten med endast delat minne, allokerar clCreateBuffer() delat minne oavsett vilken flagga du anger.
    För närvarande styr 32-bitars Linux-stöd på ARM CPU omfattningen av stöd för delat minne i SDK-runtime-biblioteken. Med andra ord, runtime-bibliotek kompilerade till andra miljöer (till exempelample, x86_64 Linux eller 64-bitars Windows) stöder inte delat minne.
    C5soc implementerade inte heterogent minne för att skilja mellan delat och icke-delat minne av följande skäl:
    1. Historik—Stöd för heterogent minne var inte tillgängligt när stödet för delat minne ursprungligen skapades.
    2. Enhetligt gränssnitt – Eftersom OpenCL är en öppen standard, upprätthåller Intel överensstämmelse mellan heterogena datorplattformsleverantörer. Därför används samma gränssnitt som andra kortleverantörers arkitekturer för att allokera och använda delat minne.

1.4 FPGA-omkonfiguration
För SoC FPGA:er kan CPU:n konfigurera om FPGA-kärntyget utan att avbryta CPU:ns drift. FPGA Manager-hårdvarublocket som går över HPS:en och kärn-FPGA:n utför omkonfigureringen. Linuxkärnan innehåller en drivrutin som möjliggör enkel åtkomst till FPGA Manager.

  • Till view statusen för FPGA-kärnan, anropa cat /sys/class/fpga/fpga0/ statuskommandot.
    Intel FPGA SDK för OpenCL-programverktyget som är tillgängligt med Cyclone V SoC Development Kit Reference Platform använder detta gränssnitt för att programmera FPGA. När du programmerar om en FPGA-kärna med en körande CPU, utför programverktyget alla följande uppgifter:
    1. Före omprogrammering, inaktivera alla kommunikationsbryggor mellan FPGA och HPS, både H2F- och LH2F-bryggor.
    Återaktivera dessa bryggor efter att omprogrammeringen är klar.
    Observera: OpenCL-systemet använder inte FPGA-till-HPS (F2H)-bryggan. Se avsnittet HPS-FPGA-gränssnitt i Cyclone V Device Handbook, Volym 3: Teknisk referenshandbok för hårdprocessorsystem för mer information.
    2. Se till att länken mellan FPGA och HPS DDR-styrenheten är inaktiverad under omprogrammering.
    3. Se till att FPGA-avbrotten på FPGA är inaktiverade under omprogrammering.
    Meddela även föraren att avvisa eventuella avbrott från FPGA under omprogrammering.

Se källkoden för programverktyget för detaljer om den faktiska implementeringen.

Varning: Ändra inte konfigurationen av HPS DDR-kontrollern när processorn är igång.
Om du gör det kan det orsaka ett allvarligt systemfel eftersom du kan ändra DDR-styrenhetens konfiguration när det finns utestående minnestransaktioner från CPU:n. Det betyder att när processorn är igång får du inte programmera om FPGA-kärnan med en bild som använder HPS DDR i en annan konfiguration.
Kom ihåg att OpenCL-systemet och referensdesignen för Golden Hardware som finns tillgänglig med Intel SoC FPGA Embedded Design Suite (EDS), ställer in HPS DDR i ett enda 256-bitarsläge.
CPU-systemdelar som grenprediktorn eller sidtabellsförhämtaren kan utfärda DDR-kommandon även när det verkar som att ingenting körs på CPU:n.
Därför är starttid den enda säkra tiden för att ställa in HPS DDR-kontrollerkonfigurationen.
Detta innebär också att U-boot måste ha en rå binär file (.rbf) bild för att ladda in i minnet. Annars kanske du aktiverar HPS DDR med oanvända portar på FPGA och sedan eventuellt ändrar portkonfigurationerna efteråt. Av denna anledning innehåller OpenCL Linux-kärndrivrutinen inte längre den logik som krävs för att ställa in HPS DDR-kontrollerkonfigurationen.
SW3 dual in-line-paketet (DIP) omkopplare på Cylone V SoC Development Kit styr den förväntade formen av .rbf-bilden (det vill säga om file är komprimerad och/eller krypterad). C5soc, och Golden Hardware Reference Design som är tillgänglig med SoC EDS, inkluderar komprimerade men okrypterade .rbf-bilder. SW3 DIP-switchinställningarna som beskrivs i Intel FPGA SDK för OpenCL Cyclone V SoC Getting Started Guide matchar denna .rbf-bildkonfiguration.

Relaterade länkar

  • HPS-FPGA-gränssnitt
  • Konfigurera SW3-omkopplarna

1.4.1 FPGA-systemarkitekturdetaljer
Stödet för Cyclone V SoC Development Kit Reference Platform är baserat på Stratix® V Reference Platform (s5_ref), tillgänglig med Intel FPGA SDK för OpenCL.
Den övergripande organisationen av c5soc Qsys-systemet och kärndrivrutinen är mycket lika de i s5_ref.
Följande FPGA-kärnkomponenter är desamma i både c5soc och s5_ref:

  • VERSION_ID block
  • Vilomekanism
  • Minnesbanksavdelare
  • Cache snoop gränssnitt
  • Kärnklocka
  • Kontrollregisteråtkomst (CRA) block

1.5 Skapa en SD Flash-kortbild
Eftersom Cyclone V SoC FPGA är ett komplett system på ett chip, är du ansvarig för att leverera hela definitionen av systemet. Intel rekommenderar att du levererar den i form av en SD-flashkortbild. Intel FPGA SDK för OpenCL-användare kan helt enkelt skriva bilden till micro SD-flashkortet och SoC FPGA-kortet är klart att användas.
Ändra en befintlig SD Flash-kortbild på sidan 13
Intel rekommenderar att du helt enkelt ändrar bilden som är tillgänglig med Cyclone V SoC Development Kit Reference Platform. Du har också möjlighet att skapa en ny SD-flashkortbild.
Skapa en SD Flash-kortbild på sidan 14
Du har också möjlighet att skapa en ny SD-flashkortbild.

1.5.1 Ändra en befintlig SD Flash-kortbild
Intel rekommenderar att du helt enkelt ändrar bilden som är tillgänglig med Cyclone V SoC
Referensplattform för utvecklingskit. Du har också möjlighet att skapa en ny SD-flashkortbild.
c5soc linux_sd_card_image.tgz-bilden file är tillgänglig i katalogen ALTERAOCLSDKROOT/board/c5soc, där ALTERAOCLSDKROOT pekar på sökvägen till Intel FPGA SDK för OpenCL:s installationskatalog.

Uppmärksamhet: För att ändra SD-flashkortsbilden måste du ha root- eller sudo-behörighet.

  1. För att dekomprimera $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, kör kommandot tar xvfzlinux_sd_card_image.tgz.
  2. Kompilera hello_world OpenCL exampdesign med hjälp av din Custom Platform-support. Byt namn på .rbf file som Intel FPGA SDK för OpenCL Offline Compiler genererar som opencl.rbf, och placera den på fat32-partitionen i SD-flashkortsbilden.
    Du kan ladda ner hello_world example design från OpenCL Design Examples sida på Altera webplats.
  3. Placera .rbf file i fat32-partitionen av flash-kortbilden.
    Uppmärksamhet: Fat32-partitionen måste innehålla både zImage file och .rbf file. Utan en .rbf file, kommer ett allvarligt fel att inträffa när du sätter i drivrutinen.
  4. När du har skapat SD-kortbilden skriver du den till ett micro SD-kort genom att anropa följande kommando: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. För att testa din SD-flashkortbild, utför följande uppgifter:
    a. Sätt in micro SD-flashkortet i SoC FPGA-kortet.
    b. Slå på brädan.
    c. Anropa kommandot aocl diagnose utility.

1.5.2 Skapa en SD Flash-kortbild
Du har också möjlighet att skapa en ny SD-flashkortbild. Generiska instruktioner om hur du bygger en ny SD-flash-kortbild och återskapar en befintlig SD-flashkortbild finns på sidan GSRD v14.0.2 – SD-kort på RocketBoards.org webplats.
Stegen nedan beskriver proceduren för att skapa linux_sd_card_image.tgz-bilden från Golden System Reference Design (GSRD) SD-flashkortbild:
Notera:
För att skapa bilden från c5soc-bilden, utför alla tillämpliga uppgifter som beskrivs i denna procedur.

  1. Ladda ner och packa upp GSRD SD-flashkort-bildversion 14.0 från Rocketboards.org.
  2. Montera file fördelningstabell (fat32) och utökad file system (ext3) partitioner i den här bilden som loop-back-enheter. För att montera en partition, utför följande steg:
    a. Bestäm bytestarten för partitionen i bilden genom att anropa /sbin/fdisk -lu image_file kommando.
    Till exempelample, partition nummer 1 av typen W95 FAT har en blockoffset på 2121728. Med 512 byte per block är byteoffset 512 byte x 2121728 = 1086324736 byte.
    b. Identifiera en fri loop-enhet (t.example, /dev/loop0) genom att skriva kommandot lostup -f.
    c. Förutsatt att /dev/loop0 är den fria loop-enheten, tilldela din flash-kortbild till loopblockenheten genom att anropa lossetup /dev/loop0 image_file -0 1086324736 kommando.
    d. Montera loopenheten genom att anropa kommandot mount /dev/loop0 /media/disk1.
    Inuti bilden file, /media/disk1 är nu en monterad fat32-partition.
    e. Upprepa steg a till d för ext3-partitionen.
  3. Ladda ner Cyclone V SoC FPGA-versionen av Intel FPGA Runtime Environment for OpenCL-paketet från nedladdningscentret på Altera webplats.
    a. Klicka på knappen Ladda ner bredvid Quartus Prime-programvaruversionen.
    b. Ange versionsversionen, operativsystemet och nedladdningsmetoden.
    c. Klicka på fliken Ytterligare programvara och välj att ladda ner Intel FPGA
    Runtime Environment för OpenCL Linux Cyclone V SoC TGZ.
    d. När du har laddat ner aocl-rte- .arm32.tgz file, packa upp den till
    en katalog som du äger.
  4. Placera den uppackade aocl-rte- .arm32-katalogen till katalogen /home/root/opencl_arm32_rte på ext3-partitionen av bilden file.
  5. Ta bort hårdvarumapparna för din anpassade plattform och placera sedan den anpassade plattformen i kortets underkatalog för /home/root/ opencl_arm32_rte.
  6. Skapa init_opencl.sh file i katalogen /home/root med följande innehåll: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
    SDK-användaren kör kommandot source ./init_opencl.sh för att ladda miljövariablerna och OpenCL Linux-kärndrivrutinen.
  7. Om du behöver uppdatera förladdaren, DTS files, eller Linux-kärnan, behöver du arm-linux-gnueabihf-gcc-kompilatorn från SoC EDS. Följ instruktionerna som beskrivs i Intel SoC FPGA Embedded Design Suite User Guide för att skaffa programvaran, kompilera om dem och uppdatera relevant files på den monterade fat32-partitionen.
    Uppmärksamhet: Det är mest troligt att du behöver uppdatera förladdaren om din anpassade plattform har annan pinanvändning än de i c5soc.
    Kom ihåg: Om du kompilerar om Linux-kärnan, kompilera om Linux-kärndrivrutinen med samma Linux-kärnkälla files. Om det finns en oöverensstämmelse mellan Linux-kärndrivrutinen och Linux-kärnan, kommer drivrutinen inte att laddas. Du måste också aktivera CMA.
    Se Återkompilera Linux-kärnan för mer information.
  8. Kompilera hello_world OpenCL exampdesign med hjälp av din Custom Platform-support. Byt namn på .rbf file som Intel FPGA SDK för OpenCL Offline Compiler genererar som opencl.rbf, och placera den på fat32-partitionen i SD-flashkortsbilden.
    Du kan ladda ner hello_world example design från OpenCL Design Examples sida på Altera webplats.
    9. När du har lagrat alla nödvändiga files på flash-kortbilden, anropa följande kommandon:
    a. synkronisera
    b. avmontera /media/disk1
    c. avmontera där är katalognamnet du använder för att montera ext3-partitionen i 3 på sidan 3 (t.ex.ample, /media/disk2).
    d. lostup -d /dev/loop0
    e. lostup -d /dev/loop1
  9. Komprimera SD-flashkortets bild genom att anropa följande kommando: tar cvfz .tgz linux_sd_card_image
  10. Leverera .tgz file i rotkatalogen på din anpassade plattform.
  11. För att testa din SD-flashkortbild, utför följande uppgifter:
    a. Skriv den resulterande okomprimerade bilden på ett micro SD-flashkort.
    b. Sätt in micro SD-flashkortet i SoC FPGA-kortet.
    c. Slå på brädan.
    d. Anropa kommandot aocl diagnose utility.

Relaterade länkar

  • Användarhandbok för Intel SoC FPGA Embedded Design Suite
  • OpenCL Design Examples sida på Altera webplats
  • Återkompilera Linux-kärnan på sidan 16
    För att aktivera CMA måste du först kompilera om Linux-kärnan.
  • Fråga efter enhetsnamnet på ditt FPGA-kort (diagnos)

1.6 Kompilera Linux-kärnan för Cyclone V SoC FPGA
Innan du kör OpenCL-applikationer på Cyclone V SoC FPGA-kortet måste du kompilera Linux-kärnkällan och kompilera och installera OpenCL Linux-kärndrivrutinen.

  1. Återkompilera Linux-kärnan på sidan 16
    För att aktivera CMA måste du först kompilera om Linux-kärnan.
  2. Kompilera och installera OpenCL Linux-kärndrivrutinen på sidan 17 Kompilera OpenCL Linux-kärndrivrutinen mot den kompilerade kärnkällan.

1.6.1 Omkompilera Linux-kärnan
För att aktivera CMA måste du först kompilera om Linux-kärnan.

  1. Klicka på länken GSRD v14.0 – Compiling Linux på sidan Resurser på RocketBoards.org webwebbplats för att få åtkomst till instruktioner om att ladda ner och bygga om Linux-kärnans källkod.
    För användning med™ Intel FPGA SDK för OpenCL, ange socfpga-3.13-rel14.0 som .
  2. Obs: Byggprocessen skapar bågen/armen/configs/socfpga_defconfig file. Detta file anger inställningarna för socfpga standardkonfiguration.
    Lägg till följande rader längst ner på bågen/armen/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-konfigurationsvärdet anger den övre gränsen för det totala antalet fysiskt sammanhängande minne som är tillgängligt. Du kan öka detta värde om du behöver mer minne.
  3. Uppmärksamhet: Den totala mängden fysiskt minne som är tillgängligt för ARM-processorn på SoC FPGA-kortet är 1 GB. Intel rekommenderar inte att du ställer in CMA-hanteraren nära 1 GB.
  4. Kör kommandot make mrproper för att rensa den aktuella konfigurationen.
  5. Kör kommandot make ARCH=arm socfpga_deconfig.
    ARCH=arm indikerar att du vill konfigurera ARM-arkitekturen.
    socfpga_defconfig indikerar att du vill använda standard socfpga-konfigurationen.
  6. Kör kommandot export CROSS_COMPILE=arm-linux-gnueabihf-.
    Detta kommando ställer in miljövariabeln CROSS_COMPILE för att specificera prefixet för den önskade verktygskedjan.
  7. Kör kommandot make ARCH=arm zImage. Den resulterande bilden är tillgänglig i arch/arm/boot/zImage file.
  8. Placera zImage file i fat32-partitionen av flash-kortbilden. För detaljerade instruktioner, se den Cyclone V SoC FPGA-specifika GSRD User Manual på Rocketboards.org.
  9. Obs: För att korrekt infoga OpenCL Linux-kärndrivrutinen, ladda först en SDKgenerated.rbf file på FPGA.
    För att skapa .rbf file, kompilera en SDK-design example med Cyclone V SoC Development Kit Reference Platform som målinriktad Custom Platform.
    9. Placera .rbf file i fat32-partitionen av flash-kortbilden.
    Observera: fat32-partitionen måste innehålla både zImage file och .rbf file. Utan en .rbf file, kommer ett allvarligt fel att inträffa när du sätter i drivrutinen.
  10. Sätt in det programmerade micro SD-kortet, som innehåller SD-kortbilden som du modifierade eller skapade tidigare, i Cyclone V SoC Development Kit och slå sedan på SoC FPGA-kortet.
  11. Verifiera versionen av den installerade Linuxkärnan genom att köra kommandot uname -r.
  12. För att verifiera att du aktiverar CMA framgångsrikt i kärnan, med SoC FPGA-kortet påslaget, kör kommandot grep init_cma /proc/kallsyms.
    CMA är aktiverat om utgången inte är tom.
  13. För att använda den omkompilerade Linux-kärnan med SDK:n, kompilera och installera Linux-kärndrivrutinen.

Relaterade länkar

  • Användarmanualer för Golden System Reference Design (GSRD).
  • Skapa en SD Flash-kortbild på sidan 13
    Eftersom Cyclone V SoC FPGA är ett komplett system på ett chip, är du ansvarig för att leverera hela definitionen av systemet.

1.6.2 Kompilera och installera OpenCL Linux Kernel Driver
Kompilera OpenCL Linux-kärndrivrutinen mot den kompilerade kärnkällan.

Drivrutinkällan är tillgänglig i Cyclone V SoC FPGA-versionen av Intel FPGA Runtime Environment för OpenCL. Se dessutom till att du har laddat en Intel FPGA SDK för OpenCL-genererad .rbf file in i FPGA för att förhindra felaktig installation av Linux-kärnmodulen.

  1. Ladda ner Cyclone V SoC FPGA-versionen av Intel FPGA Runtime Environment for OpenCL-paketet från nedladdningscentret på Altera webplats.
    a. Klicka på knappen Ladda ner bredvid Quartus Prime-programvaruversionen.
    b. Ange versionsversionen, operativsystemet och nedladdningsmetoden.
    c. Klicka på fliken Ytterligare programvara och välj att ladda ner Intel FPGA
    Runtime Environment för OpenCL Linux Cyclone V SoC TGZ.
    d. När du har laddat ner aocl-rte- .arm32.tgz file, packa upp den till
    en katalog som du äger.
    Drivrutinskällan finns i aocl-rte- .arm32/board/c5soc/ drivrutinskatalog.
  2. För att kompilera om OpenCL Linux-kärndrivrutinen, ställ in KDIR-värdet i drivrutinen Makefile till katalogen som innehåller Linux-kärnkällan files.
  3. Kör kommandot export CROSS_COMPILE=arm-linux-gnueabihf- för att ange prefixet för din verktygskedja.
  4. Kör kommandot make clean.
  5. Kör kommandot make för att skapa aclsoc_drv.ko file.
  6. Överför katalogen opencl_arm32_rte till Cyclone V SoC FPGA-kortet.
    Kör scp -r root@din-ipaddress: kommandot placerar runtime-miljön i katalogen/home/root.
  7. Kör init_opencl.sh-skriptet som du skapade när du byggde SD-kortbilden.
  8.  Anropa kommandot aocl diagnose utility. Diagnosverktyget kommer att returnera ett godkänt resultat efter att du kört init_opencl.sh framgångsrikt.

1.7 Kända problem
För närvarande finns det vissa begränsningar för användningen av Intel FPGA SDK för OpenCL med Cyclone V SoC Development Kit Reference Platform.

  1. Du kan inte åsidosätta leverantörs- och kortnamnen som rapporterats av CL_DEVICE_VENDOR- och CL_DEVICE_NAME-strängarna i clGetDeviceInfo()-anropet.
  2. Om värden allokerar konstant minne i delat DDR-system (det vill säga HPS DDR) och den modifierar det konstanta minnet efter körning av kärnan, kan data i minnet bli inaktuella. Det här problemet uppstår eftersom FPGA-kärnan inte kan snoka efter CPU-till-HPS DDR-transaktioner.
    För att förhindra att efterföljande kärnkörningar kommer åt föråldrad data, implementera en av följande lösningar:
    • Modifiera inte konstantminnet efter dess initialisering.
    • Om du behöver flera __konstanta datamängder, skapa flera konstanta minnesbuffertar.
    • Om tillgängligt, allokera konstant minne i FPGA DDR på ditt acceleratorkort.
  3. SDK-verktyget på ARM stöder bara program- och diagnostiseringskommandon.
    Kommandona för att flasha, installera och avinstallera verktyget är inte tillämpliga på Cyclone V SoC Development Kit av följande skäl:
    a. Installationsverktyget måste kompilera aclsoc_drv Linux-kärndrivrutinen och aktivera den på SoC FPGA. Utvecklingsmaskinen måste utföra kompileringen; den innehåller dock redan Linux-kärnkällor för SoC FPGA. Linux-kärnkällorna för utvecklingsmaskinen skiljer sig från dem för SoC FPGA. Platsen för Linux-kärnkällorna för SoC FPGA är sannolikt okänd för SDK-användaren. På samma sätt är avinstallationsverktyget inte tillgängligt för Cyclone V SoC Development Kit.
    Det är också en utmaning att leverera aclsoc_drv till SoC-kortet eftersom standarddistributionen av Cyclone V SoC Development Kit inte innehåller Linux-kärnan inklusive files eller GNU Compiler Collection (GCC) kompilatorn.
    b. Flash-verktyget kräver att du placerar en .rbf file av en OpenCL-design på FAT32-partitionen på micro SD-flashkortet. För närvarande är denna partition inte monterad när SDK-användaren startar kortet. Därför är det bästa sättet att uppdatera partitionen att använda en flash-kortläsare och utvecklingsmaskinen.
  4. När du växlar mellan Intel FPGA SDK för OpenCL Offline Compiler körbar files (.aocx) som motsvarar olika kortvarianter (det vill säga c5soc och c5soc_sharedonly), måste du använda SDK:s programverktyg för att ladda .aocx file för den nya brädvarianten för första gången. Om du helt enkelt kör värdapplikationen med en ny kortvariant men FPGA innehåller bilden från en annan kortvariant, kan ett allvarligt fel inträffa.
  5. .qxp file inkluderar inte gränssnittspartitionstilldelningarna eftersom Quartus Prime-programvaran konsekvent uppfyller tidskraven för denna partition.
  6. När du slår på kortet är dess MAC-adress (Media Access Control) inställd på ett slumptal. Om din LAN-policy inte tillåter detta beteende, ställ in MAC-adressen genom att utföra följande uppgifter:
    a. Under uppstart av U-Boot, tryck på valfri tangent för att öppna U-Boot-kommandoprompten.
    b. Skriv setenv ethaddr 00:07:ed:00:00:03 vid kommandotolken.
    Du kan välja vilken MAC-adress som helst.
    c. Skriv kommandot saveenv.
    d. Starta om brädet.

1.8 Dokumentets revisionshistorik
Tabell 1.
Dokumentrevisionshistorik för Intel FPGA SDK för OpenCL Cyclone V SoC
Referensguide för utvecklingskit för plattformportering

Datum Version Ändringar
maj-17 2017.05.08 •Underhållsfrigöring.
oktober 2016 2016.10.31 •Ommärkt Altera SDK för OpenCL till Intel FPGA SDK för OpenCL.
•Ommärkt Altera Offline Compiler till Intel FPGA SDK för OpenCL Offline Compiler.
maj-16 2016.05.02 •Ändrade instruktioner om att bygga och ändra en bild på ett SD-flashkort.
•Ändrade instruktioner för att kompilera om Linux-kärnan och OpenCL Linux-kärndrivrutinen.
november-15 2015.11.02 •Underhållsversion och ändrade instanser av Quartus II till Quartus Prime.
maj-15 15.0.0 •I FPGA Reconfiguration, tog bort instruktionen att omprogrammera FPGA-kärnan
med en . rbf-bild genom att anropa katten filenamn>. rbf
> /dev/ fpga0-kommandot eftersom den här metoden inte rekommenderas.
december-14 14.1.0 •Döpte om dokumentet till Altera Cyclone V SoC Development Kit Reference Platform Porting Guide.
•Uppdaterade omprogrammeringsverktyget till aocl-programmetfilenamn>.aocx verktygskommando.
•Uppdaterade diagnostikverktyget till aocl diagnose och aocl diagnose verktygskommando.
•Uppdaterade proceduren i avsnittet Portera referensplattformen till ditt SoC-kort för att inkludera instruktioner om portering och modifiering av c5soc-kortpartitionen för att skapa en timing-clean-partition för det garanterade timing-stängningsflödet.
•Infogade ämnet Uppdatering av en portad referensplattform för att beskriva procedurerna för följande uppgifter:
1.Utom hårdprocessorsystemet (HPS) blocket i kortpartitionen
2.Uppdatera SD-flashkortets bild
•Uppdaterade avsnittet Building an SD Flash Card Image. Rekommenderas att använda version 14.0 av Golden System Reference Design (GSRD)-bilden som utgångspunkt istället för bilden som är tillgänglig med SoC Embedded Design Suite (EDS).
•Uppdaterade avsnittet Återkompilera Linux-kärnan och OpenCL Linux Kernel-drivrutinen:
1. Lade till instruktion för att ställa in CROSS COMPILE-variabeln.
2.Ändrade kommandot du kör för att verifiera att CMA har aktiverats.
juli-14 14.0.0 •Initial release.

Dokument/resurser

intel FPGA SDK för OpenCL [pdf] Användarhandbok
FPGA SDK för OpenCL, FPGA SDK, SDK för OpenCL, SDK

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *