FPGA SDK for OpenCL
Brukerveiledning
UG-OCL009
2017.05.08
Sist oppdatert for Intel® Quartus® Prime Design Suite: 17.0
Abonner
Send tilbakemelding
Intel® FPGA SDK for OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Porting Guide
V SoC Development Kit Reference Platform Porting Guide beskriver maskinvare- og programvaredesignen til Intel Cyclone V SoC Development Kit Reference Platform (c5soc) for bruk med Intel Software Development Kit (SDK) for OpenCL Intel ® FPGA SDK for OpenCL ™ Intel Cyclone ® . Før du begynner, anbefaler Intel på det sterkeste at du gjør deg kjent med innholdet i følgende dokumenter:
- Intel FPGA SDK for OpenCLIntel Cyclone V SoC Startveiledning
- Intel FPGA SDK for OpenCL Custom Platform Toolkit brukerveiledning
- Cyclone V Device Handbook, bind 3: Hard Processor System Technical Reference Manual I tillegg, se Cyclone V SoC Development Kit og SoC Embedded Design Suite-siden til Altera webnettstedet for mer informasjon. 1 2
Oppmerksomhet: Intel antar at du har en grundig forståelse av Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide. Cyclone V SoC Development Kit Reference Platform Porting Guide beskriver ikke bruken av SDKs Custom Platform Toolkit for å implementere en tilpasset plattform for Cyclone V SoC Development Kit. Den beskriver bare forskjellene mellom SDK-støtten på Cyclone V SoC Development Kit og en generisk Intel FPGA SDK for OpenCL Custom Platform.
Relaterte lenker
- Intel FPGA SDK for OpenCL Cyclone V SoC Startveiledning
- Intel FPGA SDK for OpenCL Custom Platform Toolkit brukerveiledning
- Cyclone V Device Handbook, bind 3: Teknisk referansehåndbok for hardprosessorsystem
- Cyclone V SoC Development Kit og SoC Embedded Design Suite-siden på Altera webnettstedet
- OpenCL og OpenCL-logoen er varemerker Apple Inc. brukes med tillatelse fra Khronos Group™.
- Intel FPGA SDK for OpenCL er basert på en publisert Khronos-spesifikasjon, og har bestått Khronos Conformance Testing Process. Gjeldende samsvarsstatus finner du på www.khronos.org/conformance.
Intel Corporation. Alle rettigheter forbeholdt. Intel, Intel-logoen, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus og Stratix-ord og -logoer er varemerker for Intel Corporation eller dets datterselskaper i USA og/eller andre land. Intel garanterer ytelsen til sine FPGA- og halvlederprodukter i henhold til gjeldende spesifikasjoner i henhold til Intels standardgaranti, men forbeholder seg retten til å gjøre endringer i produkter og tjenester når som helst uten varsel. Intel påtar seg intet ansvar eller ansvar som oppstår som følge av applikasjonen eller bruken av informasjon, produkter eller tjenester som er beskrevet her, med mindre det er uttrykkelig skriftlig avtalt med Intel. Intel-kunder anbefales å få tak i den nyeste versjonen av enhetsspesifikasjonene før de stoler på publisert informasjon og før de bestiller produkter eller tjenester.
*Andre navn og merker kan gjøres krav på som andres eiendom.
1.1.1 Cyclone V SoC Development Kit Reference Platform Board Varianter
Intel FPGA SDK for OpenCL Cyclone V SoC Development Kit Reference Platform inkluderer to kortvarianter.
- c5soc-kort
Dette standardkortet gir tilgang til to DDR-minnebanker. HPS DDR er tilgjengelig for både FPGA og CPU. FPGA DDR er bare tilgjengelig med FPGA. - c5soc_sharedonly board
Denne kortvarianten inneholder kun HPS DDR-tilkobling. FPGA DDR er ikke tilgjengelig. Denne kortvarianten er mer arealeffektiv fordi mindre maskinvare er nødvendig for å støtte én DDR-minnebank. c5soc_sharedonly-kortet er også en god prototypeplattform for et endelig produksjonskort med en enkelt DDR-minnebank.
For å målrette mot denne brettvarianten når du kompilerer OpenCL-kjernen, inkluderer -board c5soc_sharedonly-alternativet i aoc-kommandoen.
For mer informasjon om –tavlen alternativet for aoc-kommandoen, se Intel FPGA SDK for OpenCL-programmeringsveiledningen.
Relaterte lenker
Kompilere en kjerne for et spesifikt FPGA-kort (–board )
1.1.2 Innhold i Cyclone V SoC Development Kit Reference Platform
Cyclone V SoC Development Kit Reference Platform består av følgende files og kataloger:
File eller Katalog | Beskrivelse |
board_env.xml | eXtensible Markup Language (XML) file som beskriver c5soc til Intel FPGA SDK for OpenCL. |
linux_sd_card_image.tgz | Komprimert SD flash-kortbilde file som inneholder alt en SDK-bruker trenger for å bruke Cyclone V SoC Development Kit med SDK. |
arm32 | Katalog som inneholder følgende: |
1.1.3 Relevante funksjoner i Cyclone V SoC Development Kit
Følgende liste fremhever Cyclone V SoC Development Kit-komponenter og funksjoner som er relevante for Intel FPGA SDK for OpenCL:
- Dual-core ARM Cortex-A9 CPU som kjører 32-bit Linux.
- Advanced eXtensible Interface (AXI) buss mellom HPS og FPGA-kjernestoffet.
- To herdede DDR-minnekontrollere, hver koblet til en 1 gigabyte (GB) DDR3 SDRAM.
— Én DDR-kontroller er bare tilgjengelig for FPGA-kjernen (det vil si FPGA DDR).
— Den andre DDR-kontrolleren er tilgjengelig for både HPS og FPGA (det vil si HPS DDR). Denne delte kontrolleren tillater ledig minnedeling mellom CPU og FPGA-kjernen. - CPU-en kan rekonfigurere FPGA-kjernestoffet.
1.1.3.1 Cyclone V SoC Development Kit Reference Platform Design Mål og beslutninger Intel baserer implementeringen av Cyclone V SoC Development Kit Reference Platform på flere designmål og beslutninger. Intel anbefaler at du vurderer disse målene og beslutningene når du overfører denne referanseplattformen til SoC FPGA-kortet.
Nedenfor er c5soc-designmålene:
- Gi høyest mulig båndbredde mellom kjerner på FPGA og DDR-minnesystemet(e).
- Sørg for at beregninger på FPGA-en (det vil si OpenCL-kjerner) ikke forstyrrer andre CPU-oppgaver som kan inkludere service på periferiutstyr.
- La så mye FPGA-ressurser som mulig for kjerneberegninger i stedet for grensesnittkomponenter.
Nedenfor er designbeslutningene på høyt nivå som er de direkte konsekvensene av Intels designmål:
- Referanseplattformen bruker kun harde DDR-minnekontrollere med den bredest mulige konfigurasjonen (256 bits).
- FPGA-en kommuniserer med HPS DDR-minnekontrolleren direkte, uten å involvere AXI-bussen og L3-svitsjen inne i HPS. Den direkte kommunikasjonen gir best mulig båndbredde til DDR, og forhindrer at FPGA-beregninger forstyrrer kommunikasjonen mellom CPU og dens periferi.
- Scatter-gather direkte minnetilgang (SG-DMA) er ikke en del av FPGA-grensesnittlogikken. I stedet for å overføre store mengder data mellom DDR-minnesystemer, lagre dataene i den delte HPS DDR-en. Direkte tilgang til CPU-minne fra FPGA er mer effektiv enn DMA. Det sparer maskinvareressurser (det vil si FPGA-området) og forenkler Linux-kjernedriveren.
Advarsel: Minneoverføring mellom det delte HPS DDR-systemet og DDR-systemet som kun er tilgjengelig for FPGA er svært treg. Hvis du velger å
overføre minnet på denne måten, bruk det kun til svært små mengder data. - Verten og enheten utfører ikke-DMA-dataoverføring mellom hverandre via HPS-til-FPGA (H2F)-broen, ved bruk av kun en enkelt 32-bits port. Årsaken er at uten DMA kan Linux-kjernen bare gi en enkelt 32-bits lese- eller skriveforespørsel, så det er unødvendig å ha en bredere tilkobling.
- Verten sender kontrollsignaler til enheten via en lett H2F (LH2F) bro.
Fordi kontrollsignaler fra verten til enheten er signaler med lav båndbredde, er en LH2F-bro ideell for oppgaven.
1.2 Portere referanseplattformen til SoC FPGA-kortet
For å portere Cyclone V SoC Development Kit Reference Platform til SoC FPGA-kortet, utfør følgende oppgaver:
- Velg det ene DDR-minnet eller de to DDR-minnet-versjonene av c5soc Reference Platform som utgangspunkt for designet ditt.
- Oppdater pinneplasseringene i ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, der ALTERAOCLSDKROOT er banen til plasseringen av Intel FPGA SDK for OpenCL-installasjon, og er katalognavnet til brettvarianten. c5soc_sharedonly-katalogen er for kortvarianten med ett DDR-minnesystem. c5soc-katalogen er for kortvarianten med to DDR-minnesystemer.
- Oppdater DDR-innstillingene for HPS- og/eller FPGA SDRAM-blokkene i ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Alle Intel FPGA SDK for OpenCL-foretrukket kortdesign må oppnå garantert timing-lukking. Som sådan må plasseringen av designet være timing ren. For å portere c5soc-kortpartisjonen (acl_iface_partition.qxp) til SoC FPGA-kortet, utfør følgende oppgaver:
For detaljerte instruksjoner om å endre og bevare brettpartisjonen, se Quartus
Kapittelet Prime Incremental Compilation for hierarkisk og teambasert design i Quartus Prime Standard Edition-håndboken.
en. Fjern acl_iface_partition.qxp fra katalogen ALTERAOCLSDKROOT/board/c5soc/c5soc.
b. Aktiver acl_iface_region LogicLock™-regionen ved å endre Tcl-kommandoen set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region til set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
c. Kompiler en OpenCL-kjerne for brettet ditt.
d. Juster om nødvendig størrelsen og plasseringen av LogicLock-regionen.
e. Når du er overbevist om at plasseringen av designet er ryddig, eksporterer du den partisjonen som acl_iface_partition.qxp Quartus Prime Exported Partition File.
Som beskrevet i delen Etablering av garantert timingflyt i AIntel FPGA SDK for OpenCL Custom Platform Toolkit brukerveiledning, ved å importere denne .qxp file inn i toppnivådesignet oppfyller du kravet om å gi et brettdesign med en garantert timing lukkingsflyt.
For faktorer som kan påvirke kvaliteten på resultatene (QoR) til den eksporterte partisjonen, se Generelle vurderinger av resultater for den eksporterte brettpartisjonen i Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide.
f. Deaktiver acl_iface_region LogicLock-regionen ved å tilbakestille kommandoen i trinn 2 tilbake til set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - Hvis SoC FPGA-kortet ditt bruker forskjellige pinner og periferi av HPS-blokken, regenerer forhåndslasteren og enhetstrekilden (DTS) file. Hvis du endrer innstillingene for HPS DDR-minnekontrolleren, må du regenerere forhåndslasteren.
- Lag SD-flash-kortbildet.
- Lag din egendefinerte plattform, som inkluderer SD-flashkortbildet.
- Vurder å lage en kjøretidsmiljøversjon av din egendefinerte plattform for bruk med Intel FPGA Runtime Environment (RTE) for OpenCL. RTE-versjonen av den tilpassede plattformen inkluderer ikke maskinvarekataloger og SD-flashkortbildet. Denne tilpassede plattformen lastes inn på SoC FPGA-systemet for å tillate vertsapplikasjoner å kjøre. Derimot er SDK-versjonen av den tilpassede plattformen nødvendig for at SDK-en skal kompilere OpenCL-kjerner.
Tips: Du kan bruke SDK-versjonen av din egendefinerte plattform for RTE. Å redde
plass, fjern SD-flash-kortbildet fra RTE-versjonen av din egendefinerte plattform. - Test din egendefinerte plattform.
Se Testing the Hardware Design-delen av Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide for mer informasjon.
Relaterte lenker
- Testing av maskinvaredesign
- Quartus Prime inkrementell kompilering for hierarkisk og teambasert design
- Etablering av garantert timingflyt
- Generelle vurderinger av resultatkvalitet for den eksporterte brettpartisjonen
1.2.1 Oppdatere en portert referanseplattform
I den gjeldende versjonen av Cyclone V SoC Development Kit Reference Platform er HPS-blokken inne i partisjonen som definerer all ikke-kjernelogikk. Du kan imidlertid ikke eksportere HPS som en del av .qxp file. For å oppdatere en eksisterende tilpasset plattform som du modifiserte fra en tidligere versjon av c5soc, implementer QXP-bevaringsflyten, oppdater SD-flash-kortbildet for å få det siste kjøretidsmiljøet og oppdater board_spec.xml file for å aktivere automigrering.
Altera® SDK for OpenCL versjon 14.1 og utover sonderer board_spec.xml file for styreinformasjon, og implementerer automatiske oppdateringer. Fordi du endrer
design ved å implementere QXP-bevaringsflyten, må du oppdatere board_spec.xml file til formatet i gjeldende versjon. Oppdaterer file lar SDK-en skille mellom ubevarte tilpassede plattformer og de nåværende QXP-baserte tilpassede plattformene. Se Custom Platform Automigration for Forward Compatibility i Intel FPGA SDK for OpenCL Custom Platform Toolkit User Guide for mer informasjon.
- For å implementere QXP-bevaringsflyten i en Cyclone V SoC FPGA-maskinvaredesign som er portert fra en tidligere versjon av c5soc, utfør følgende trinn for å opprette en underpartisjon for å ekskludere HPS fra .qxp file:
en. Før du oppretter en partisjon rundt ikke-kjernelogikken, oppretter du en partisjon rundt HPS-en i .qsf Quartus Prime-innstillingene File.
For eksampde:
# Partisjoner manuelt forekomsten som modellerer den HPS-dedikerte I/O set_instance_assignment -navn PARTITION_HIERARCHY borde_18261 -til "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»
# Angi partisjonen til å være en HPS_PARTITION-type som skal behandles riktig 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
Etter at du har ekskludert HPS fra partisjonen, kan du importere .qxp file og kompiler designet ditt. - Oppdater SD-flashkortbildet med gjeldende versjon av Intel FPGA RTE for OpenCL ved å utføre følgende oppgaver:
en. Monter file fordelingstabell (fat32) og utvidet file system (ext3) partisjoner i det eksisterende bildet som loop-back-enheter. For detaljerte instruksjoner, se trinn 2 i Bygge et SD Flash-kortbilde.
b. Fjern i katalogen /home/root/opencl_arm32_rte files fra forrige versjon av RTE.
c. Last ned og pakk ut gjeldende versjon av RTE i /home/root/opencl_arm32_rte-katalogen.
d. I /driver/versjon.h file for den egendefinerte plattformen, oppdater ACL_DRIVER_VERSION-tilordningen til . (eksample, 16.1.x, der 16.1 er SDK-versjonen, og x er driverversjonen du angir).
e. Bygg opp driveren på nytt.
f. Slett maskinvaremappen(e) til din egendefinerte plattform. Kopier den tilpassede plattformen, sammen med den oppdaterte driveren, til katalogen /home/root/opencl_arm_rte/board.
g. Kopier Altera.icd file fra katalogen /home/root/opencl_arm32_rte og legg den til i katalogen /etc/OpenCL/vendors.
h. Avmonter og test det nye bildet. For detaljerte instruksjoner, se trinn 8 til 11 i Bygge et SD Flash-kortbilde.
Relaterte lenker
- Opprette et SD Flash-kortbilde på side 14
Du har også muligheten til å lage et nytt SD-flash-kortbilde. - Egendefinert plattformautomigrering for foroverkompatibilitet
1.3 Programvarestøtte for delt minne
Delt fysisk minne mellom FPGA og CPU er det foretrukne minnet for OpenCL-kjerner som kjører på SoC FPGA-er. Fordi FPGA har tilgang til delt fysisk minne, i motsetning til delt virtuelt minne, har den ikke tilgang til CPU-ens sidetabeller som kartlegger brukernes virtuelle adresser til fysiske sideadresser.
Når det gjelder maskinvaren, får OpenCL-kjerner tilgang til delt fysisk minne gjennom direkte tilkobling til HPS DDR-hardminnekontrolleren. Med hensyn til programvaren innebærer støtte for delt fysisk minne følgende hensyn:
- Typiske programvareimplementeringer for tildeling av minne på CPU (f.eksample, malloc()-funksjonen) kan ikke tildele en minneregion som FPGA kan bruke.
Minne som malloc()-funksjonen tildeler er sammenhengende i det virtuelle minneadresserommet, men det er usannsynlig at noen underliggende fysiske sider vil være sammenhengende fysisk. Som sådan må verten være i stand til å tildele fysisk sammenhengende minneregioner. Denne muligheten finnes imidlertid ikke i brukerromsapplikasjoner på Linux. Derfor må Linux-kjernedriveren utføre tildelingen. - OpenCL SoC FPGA Linux-kjernedriveren inkluderer mmap()-funksjonen for å tildele delt fysisk minne og kartlegge det inn i brukerområdet. Mmap()-funksjonen bruker standard Linux-kjernekallet dma_alloc_coherent() for å be om fysisk sammenhengende minneregioner for deling med en enhet.
- I standard Linux-kjernen tildeler ikke dma_alloc_coherent() fysisk sammenhengende minne mer enn 0.5 megabyte (MB) i størrelse. For å tillate dma_alloc_coherent() å allokere store mengder fysisk sammenhengende minne, aktiver funksjonen for sammenhengende minneallokator (CMA) i Linux-kjernen og kompiler deretter Linux-kjernen på nytt.
For Cyclone V SoC Development Kit Reference Platform administrerer CMA 512 MB av 1 GB fysisk minne. Du kan øke eller redusere denne verdien, avhengig av hvor mye delt minne programmet krever. Det kan hende at dma_alloc_coherent()-kallet ikke er i stand til å allokere hele 512 MB fysisk sammenhengende minne; den kan imidlertid rutinemessig få omtrent 450 MB minne. - CPU-en kan cache minne som dma_alloc_coherent()-kallet tildeler. Spesielt er skriveoperasjoner fra vertsapplikasjonen ikke synlige for OpenCL-kjernene. Mmap()-funksjonen i OpenCL SoC FPGA Linux-kjernedriveren inneholder også kall til funksjonen pgprot_noncached() eller remap_pf_range() for å deaktivere hurtigbufring for denne minneregionen eksplisitt.
- Etter at dma_alloc_coherent()-funksjonen tildeler det fysisk sammenhengende minnet, returnerer mmap()-funksjonen den virtuelle adressen til begynnelsen av området, som er adressespennet til minnet du tildeler. Vertsapplikasjonen krever denne virtuelle adressen for å få tilgang til minnet. På den annen side krever OpenCL-kjernene fysiske adresser. Linux-kjernedriveren holder styr på kartleggingen av virtuell-til-fysisk adresse. Du kan kartlegge de fysiske adressene som mmap() returnerer til faktiske fysiske adresser ved å legge til en spørring i driveren.
Aocl_mmd_shared_mem_alloc() MMD Application Programming Interface (API)-kallet inneholder følgende spørringer:
en. Mmap()-funksjonen som tildeler minne og returnerer den virtuelle adressen.
b. Den ekstra spørringen som tilordner den returnerte virtuelle adressen til fysisk adresse.
aocl_mmd_shared_mem_alloc() MMD API-kallet returnerer deretter to adresser
– den faktiske returnerte adressen er den virtuelle adressen, og den fysiske adressen går til device_ptr_out.
Note: Driveren kan bare kartlegge de virtuelle adressene som mmap()-funksjonen returnerer til fysiske adresser. Hvis du ber om den fysiske adressen til en annen virtuell peker, returnerer driveren en NULL-verdi.
Advarsel: Intel FPGA SDK for OpenCL kjøretidsbiblioteker antar at det delte minnet er det første minnet som er oppført i board_spec.xml file. Med andre ord, den fysiske adressen som Linux-kjernedriveren får, blir Avalon®-adressen som OpenCL-kjernen sender til HPS SDRAM.
Med hensyn til kjøretidsbiblioteket, bruk clCreateBuffer()-kallet for å tildele det delte minnet som en enhetsbuffer på følgende måte:
- For to-DDR-kortvarianten med både delt og ikke-delt minne, tildeler clCreateBuffer() delt minne hvis du spesifiserer CL_MEM_USE_HOST_PTR-flagget. Bruk av andre flagg får clCreateBuffer() til å tildele buffer i det ikke-delte minnet.
- For ett-DDR-kortvarianten med kun delt minne, tildeler clCreateBuffer() delt minne uavhengig av hvilket flagg du angir.
For øyeblikket styrer 32-bits Linux-støtte på ARM CPU omfanget av støtte for delt minne i SDK-kjøretidsbibliotekene. Med andre ord, kjøretidsbiblioteker kompilert til andre miljøer (f.eksample, x86_64 Linux eller 64-bit Windows) støtter ikke delt minne.
C5soc implementerte ikke heterogent minne for å skille mellom delt og ikke-delt minne av følgende grunner:
1. Historikk—Støtte for heterogen minne var ikke tilgjengelig da støtte for delt minne opprinnelig ble opprettet.
2. Ensartet grensesnitt – Fordi OpenCL er en åpen standard, opprettholder Intel konsistens mellom heterogene dataplattformleverandører. Derfor brukes det samme grensesnittet som andre brettleverandørers arkitekturer for å allokere og bruke delt minne.
1.4 FPGA-rekonfigurasjon
For SoC FPGA-er kan CPU-en rekonfigurere FPGA-kjernestoffet uten å avbryte CPU-ens drift. FPGA Manager-maskinvareblokken som strekker seg over HPS og kjerne-FPGA utfører rekonfigurasjonen. Linux-kjernen inkluderer en driver som gir enkel tilgang til FPGA Manager.
- Til view statusen til FPGA-kjernen, påkaller du cat /sys/class/fpga/fpga0/ status-kommandoen.
Intel FPGA SDK for OpenCL-programverktøyet tilgjengelig med Cyclone V SoC Development Kit Reference Platform bruker dette grensesnittet til å programmere FPGA. Når du omprogrammerer en FPGA-kjerne med en kjørende CPU, utfører programverktøyet alle følgende oppgaver:
1. Før omprogrammering, deaktiver alle kommunikasjonsbroer mellom FPGA og HPS, både H2F- og LH2F-broer.
Aktiver disse broene igjen etter at omprogrammeringen er fullført.
Advarsel: OpenCL-systemet bruker ikke FPGA-til-HPS (F2H)-broen. Se avsnittet HPS-FPGA-grensesnitt i Cyclone V Device Handbook, bind 3: Hard Processor System Technical Reference Manual for mer informasjon.
2. Sørg for at koblingen mellom FPGA og HPS DDR-kontrolleren er deaktivert under omprogrammering.
3. Sørg for at FPGA-avbruddene på FPGA-en er deaktivert under omprogrammering.
Informer også sjåføren om å avvise eventuelle avbrudd fra FPGA under omprogrammering.
Se kildekoden til programverktøyet for detaljer om den faktiske implementeringen.
Advarsel: Ikke endre konfigurasjonen av HPS DDR-kontrolleren når CPU-en kjører.
Å gjøre det kan føre til en fatal systemfeil fordi du kan endre DDR-kontrollerkonfigurasjonen når det er utestående minnetransaksjoner fra CPU. Dette betyr at når CPU-en kjører, kan du ikke omprogrammere FPGA-kjernen med et bilde som bruker HPS DDR i en annen konfigurasjon.
Husk at OpenCL-systemet og Golden Hardware-referansedesignet som er tilgjengelig med Intel SoC FPGA Embedded Design Suite (EDS), setter HPS DDR i en enkelt 256-bits modus.
CPU-systemdeler som grenprediktoren eller sidetabellforhåndshenteren kan utstede DDR-kommandoer selv når det ser ut til at ingenting kjører på prosessoren.
Derfor er oppstartstid det eneste sikre tidspunktet for å angi HPS DDR-kontrollerkonfigurasjonen.
Dette innebærer også at U-boot må ha en rå binær file (.rbf) bilde for å laste inn i minnet. Ellers kan du aktivere HPS DDR med ubrukte porter på FPGA og deretter potensielt endre portkonfigurasjonene etterpå. Av denne grunn inkluderer ikke OpenCL Linux-kjernedriveren lenger logikken som er nødvendig for å angi HPS DDR-kontrollerkonfigurasjonen.
SW3 dual in-line-pakke (DIP)-svitsjer på Cylone V SoC Development Kit kontrollerer den forventede formen til .rbf-bildet (det vil si om file er komprimert og/eller kryptert). C5soc, og Golden Hardware Reference Design som er tilgjengelig med SoC EDS, inkluderer komprimerte, men ukrypterte .rbf-bilder. SW3 DIP-svitsjinnstillingene beskrevet i Intel FPGA SDK for OpenCL Cyclone V SoC Startveiledning samsvarer med denne .rbf-bildekonfigurasjonen.
Relaterte lenker
- HPS-FPGA-grensesnitt
- Konfigurere SW3-bryterne
1.4.1 FPGA-systemarkitekturdetaljer
Støtte for Cyclone V SoC Development Kit Reference Platform er basert på Stratix® V Reference Platform (s5_ref), tilgjengelig med Intel FPGA SDK for OpenCL.
Den generelle organiseringen av c5soc Qsys-systemet og kjernedriveren er veldig lik de i s5_ref.
Følgende FPGA-kjernekomponenter er de samme i både c5soc og s5_ref:
- VERSION_ID blokkering
- Hvilemekanisme
- Minnebankdeler
- Cache snoop-grensesnitt
- Kjerneklokke
- Kontrollregistertilgang (CRA) blokker
1.5 Bygge et SD Flash-kortbilde
Fordi Cyclone V SoC FPGA er et komplett system på en brikke, er du ansvarlig for å levere hele definisjonen av systemet. Intel anbefaler at du leverer den i form av et SD-flashkortbilde. Intel FPGA SDK for OpenCL-bruker kan ganske enkelt skrive bildet til micro SD-flashkortet og SoC FPGA-kortet er klart til bruk.
Endre et eksisterende SD Flash-kortbilde på side 13
Intel anbefaler at du ganske enkelt endrer bildet som er tilgjengelig med Cyclone V SoC Development Kit Reference Platform. Du har også muligheten til å lage et nytt SD-flash-kortbilde.
Opprette et SD Flash-kortbilde på side 14
Du har også muligheten til å lage et nytt SD-flash-kortbilde.
1.5.1 Endre et eksisterende SD Flash-kortbilde
Intel anbefaler at du ganske enkelt endrer bildet som er tilgjengelig med Cyclone V SoC
Referanseplattform for utviklingssett. Du har også muligheten til å lage et nytt SD-flash-kortbilde.
c5soc linux_sd_card_image.tgz-bildet file er tilgjengelig i katalogen ALTERAOCLSDKROOT/board/c5soc, der ALTERAOCLSDKROOT peker på banen til Intel FPGA SDK for OpenCLs installasjonskatalog.
Oppmerksomhet: For å endre SD-flash-kortbildet må du ha root- eller sudo-rettigheter.
- For å dekomprimere $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, kjør kommandoen tar xvfzlinux_sd_card_image.tgz.
- Kompiler hello_world OpenCL examputforming ved hjelp av kundestøtte for tilpasset plattform. Gi nytt navn til .rbf file som Intel FPGA SDK for OpenCL Offline Compiler genererer som opencl.rbf, og plasser den på fat32-partisjonen i SD-flashkortbildet.
Du kan laste ned hello_world example design fra OpenCL Design Examples-siden på Altera webnettstedet. - Plasser .rbf file inn i fat32-partisjonen til flash-kortbildet.
Oppmerksomhet: Fat32-partisjonen må inneholde både zImage file og .rbf file. Uten en .rbf file, vil det oppstå en fatal feil når du setter inn driveren. - Etter at du har opprettet SD-kortbildet, skriver du det til et micro SD-kort ved å påkalle følgende kommando: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- For å teste SD-flash-kortbildet, utfør følgende oppgaver:
en. Sett inn micro SD-flashkortet i SoC FPGA-kortet.
b. Slå på brettet.
c. Påkall aocl-diagnoseverktøykommandoen.
1.5.2 Opprette et SD Flash-kortbilde
Du har også muligheten til å lage et nytt SD-flash-kortbilde. Generiske instruksjoner for å bygge et nytt SD-flash-kortbilde og gjenoppbygge et eksisterende SD-flash-kortbilde er tilgjengelig på GSRD v14.0.2 – SD-kortsiden til RocketBoards.org webnettstedet.
Trinnene nedenfor beskriver prosedyren for å lage linux_sd_card_image.tgz-bildet fra Golden System Reference Design (GSRD) SD-flashkortbilde:
Note:
For å lage bildet fra c5soc-bildet, utfør alle gjeldende oppgaver som er beskrevet i denne prosedyren.
- Last ned og pakk ut GSRD SD-flashkort-bilde versjon 14.0 fra Rocketboards.org.
- Monter file fordelingstabell (fat32) og utvidet file system (ext3) partisjoner i dette bildet som loop-back-enheter. For å montere en partisjon, utfør følgende trinn:
en. Bestem bytestarten til partisjonen i bildet ved å påkalle /sbin/fdisk -lu image_file kommando.
For eksample, partisjon nummer 1 av type W95 FAT har en blokkforskyvning på 2121728. Med 512 byte per blokk er byteforskyvningen 512 byte x 2121728 = 1086324736 byte.
b. Identifiser en ledig sløyfeenhet (f.eksample, /dev/loop0) ved å skrive kommandoen lostup -f.
c. Forutsatt at /dev/loop0 er den frie loop-enheten, tilordne flash-kortbildet til loop-blokkenheten ved å påkalle lossetup /dev/loop0 image_file -0 1086324736 kommando.
d. Monter loop-enheten ved å påkalle mount /dev/loop0 /media/disk1-kommandoen.
Inne i bildet file, /media/disk1 er nå en montert fat32-partisjon.
e. Gjenta trinn a til d for ext3-partisjonen. - Last ned Cyclone V SoC FPGA-versjonen av Intel FPGA Runtime Environment for OpenCL-pakken fra nedlastingssenteret på Altera webnettstedet.
en. Klikk på Last ned-knappen ved siden av Quartus Prime-programvareutgaven.
b. Spesifiser utgivelsesversjonen, operativsystemet og nedlastingsmetoden.
c. Klikk kategorien Ekstra programvare, og velg å laste ned Intel FPGA
Runtime Environment for OpenCL Linux Cyclone V SoC TGZ.
d. Etter at du har lastet ned aocl-rte- .arm32.tgz file, pakk den ut
en katalog du eier. - Plasser den utpakkede aocl-rte- .arm32-katalogen til /home/root/opencl_arm32_rte-katalogen på ext3-partisjonen til bildet file.
- Slett maskinvaremappen(e) til den tilpassede plattformen din, og plasser deretter den tilpassede plattformen i styrets underkatalog til /home/root/ opencl_arm32_rte.
- Opprett init_opencl.sh file i /home/root-katalogen med følgende innhold: eksport ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte eksport AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ eksport PATH=$ALTERAOCLSDKROOT/bin:$PATH eksport LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
SDK-brukeren kjører kilden ./init_opencl.sh-kommandoen for å laste miljøvariablene og OpenCL Linux-kjernedriveren. - Hvis du trenger å oppdatere forhåndslasteren, DTS files, eller Linux-kjernen, trenger du arm-linux-gnueabihf-gcc-kompilatoren fra SoC EDS. Følg instruksjonene skissert i Intel SoC FPGA Embedded Design Suite User Guide for å skaffe programvaren, kompilere dem på nytt og oppdatere den relevante files på den monterte fat32-partisjonen.
Oppmerksomhet: Det er mest sannsynlig at du må oppdatere forhåndslasteren hvis din egendefinerte plattform har annen pin-bruk enn de i c5soc.
Husk: Hvis du rekompilerer Linux-kjernen, kompiler Linux-kjernedriveren på nytt med samme Linux-kjernekilde files. Hvis det er uoverensstemmelse mellom Linux-kjernedriveren og Linux-kjernen, vil ikke driveren lastes. Du må også aktivere CMA.
Se Rekompilere Linux-kjernen for mer informasjon. - Kompiler hello_world OpenCL examputforming ved hjelp av kundestøtte for tilpasset plattform. Gi nytt navn til .rbf file som Intel FPGA SDK for OpenCL Offline Compiler genererer som opencl.rbf, og plasser den på fat32-partisjonen i SD-flashkortbildet.
Du kan laste ned hello_world example design fra OpenCL Design Examples-siden på Altera webnettstedet.
9. Etter at du har lagret alt nødvendig files på flash-kortbildet, påkall følgende kommandoer:
en. synkronisere
b. demonter /media/disk1
c. avmontere hvor er katalognavnet du bruker for å montere ext3-partisjonen i 3 på side 3 (f.eks.ample, /media/disk2).
d. lostup -d /dev/loop0
e. lostup -d /dev/loop1 - Komprimer SD-flash-kortbildet ved å påkalle følgende kommando: tar cvfz .tgz linux_sd_card_image
- Lever den .tgz file inne i rotkatalogen til din egendefinerte plattform.
- For å teste SD-flash-kortbildet, utfør følgende oppgaver:
en. Skriv det resulterende ukomprimerte bildet på et micro SD flash-kort.
b. Sett inn micro SD-flashkortet i SoC FPGA-kortet.
c. Slå på brettet.
d. Påkall aocl-diagnoseverktøykommandoen.
Relaterte lenker
- Intel SoC FPGA Embedded Design Suite brukerveiledning
- OpenCL Design Eksamples-siden på Altera webnettstedet
- Rekompilere Linux-kjernen på side 16
For å aktivere CMA, må du først rekompilere Linux-kjernen. - Spørre enhetsnavnet til FPGA-kortet ditt (diagnose)
1.6 Kompilere Linux-kjernen for Cyclone V SoC FPGA
Før du kjører OpenCL-applikasjoner på Cyclone V SoC FPGA-kortet, må du kompilere Linux-kjernekilden, og kompilere og installere OpenCL Linux-kjernedriveren.
- Rekompilere Linux-kjernen på side 16
For å aktivere CMA, må du først rekompilere Linux-kjernen. - Kompilere og installere OpenCL Linux-kjernedriveren på side 17 Kompilere OpenCL Linux-kjernedriveren mot den kompilerte kjernekilden.
1.6.1 Rekompilere Linux-kjernen
For å aktivere CMA, må du først rekompilere Linux-kjernen.
- Klikk på GSRD v14.0 – Compiling Linux-koblingen på ressurssiden til RocketBoards.org webnettsted for å få tilgang til instruksjoner om nedlasting og gjenoppbygging av Linux-kjernens kildekode.
For bruk med™ Intel FPGA SDK for OpenCL, spesifiser socfpga-3.13-rel14.0 som . - Merk: Byggeprosessen oppretter arch/arm/configs/socfpga_defconfig file. Dette file spesifiserer innstillingene for socfpga-standardkonfigurasjonen.
Legg til følgende linjer nederst på buen/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-konfigurasjonsverdien setter den øvre grensen for det totale antallet fysisk sammenhengende minne tilgjengelig. Du kan øke denne verdien hvis du trenger mer minne. - Oppmerksomhet: Den totale mengden fysisk minne som er tilgjengelig for ARM-prosessoren på SoC FPGA-kortet er 1 GB. Intel anbefaler ikke at du setter CMA manager nær 1 GB.
- Kjør kommandoen make mrproper for å rense den gjeldende konfigurasjonen.
- Kjør kommandoen make ARCH=arm socfpga_deconfig.
ARCH=arm indikerer at du ønsker å konfigurere ARM-arkitekturen.
socfpga_defconfig indikerer at du vil bruke standard socfpga-konfigurasjonen. - Kjør kommandoen eksport CROSS_COMPILE=arm-linux-gnueabihf-.
Denne kommandoen setter CROSS_COMPILE miljøvariabelen til å spesifisere prefikset til ønsket verktøykjede. - Kjør kommandoen make ARCH=arm zImage. Det resulterende bildet er tilgjengelig i arch/arm/boot/zImage file.
- Plasser zImage file inn i fat32-partisjonen til flash-kortbildet. For detaljerte instruksjoner, se Cyclone V SoC FPGA-spesifikke GSRD User Manual på Rocketboards.org.
- Merk: For å sette inn OpenCL Linux-kjernedriveren riktig, last først en SDKgenerated.rbf file på FPGA.
For å lage .rbf file, kompiler en SDK-design f.eksample med Cyclone V SoC Development Kit Reference Platform som målrettet tilpasset plattform.
9. Plasser .rbf file inn i fat32-partisjonen til flash-kortbildet.
OBS: fat32-partisjonen må inneholde både zImage file og .rbf file. Uten en .rbf file, vil det oppstå en fatal feil når du setter inn driveren. - Sett inn det programmerte micro SD-kortet, som inneholder SD-kortbildet du modifiserte eller opprettet tidligere, i Cyclone V SoC Development Kit og slå deretter på SoC FPGA-kortet.
- Bekreft versjonen av den installerte Linux-kjernen ved å kjøre kommandoen uname -r.
- For å bekrefte at du aktiverer CMA vellykket i kjernen, med SoC FPGA-kortet slått på, kjør kommandoen grep init_cma /proc/kallsyms.
CMA er aktivert hvis utgangen ikke er tom. - For å bruke den rekompilerte Linux-kjernen med SDK, kompiler og installer Linux-kjernedriveren.
Relaterte lenker
- Golden System Reference Design (GSRD) brukermanualer
- Bygge et SD Flash-kortbilde på side 13
Fordi Cyclone V SoC FPGA er et komplett system på en brikke, er du ansvarlig for å levere hele definisjonen av systemet.
1.6.2 Kompilere og installere OpenCL Linux-kjernedriveren
Kompiler OpenCL Linux-kjernedriveren mot den kompilerte kjernekilden.
Driverkilden er tilgjengelig i Cyclone V SoC FPGA-versjonen av Intel FPGA Runtime Environment for OpenCL. Sørg i tillegg for at du har lastet inn en Intel FPGA SDK for OpenCL-generert .rbf file inn i FPGA for å forhindre feil installasjon av Linux-kjernemodulen.
- Last ned Cyclone V SoC FPGA-versjonen av Intel FPGA Runtime Environment for OpenCL-pakken fra nedlastingssenteret på Altera webnettstedet.
en. Klikk på Last ned-knappen ved siden av Quartus Prime-programvareutgaven.
b. Spesifiser utgivelsesversjonen, operativsystemet og nedlastingsmetoden.
c. Klikk kategorien Ekstra programvare, og velg å laste ned Intel FPGA
Runtime Environment for OpenCL Linux Cyclone V SoC TGZ.
d. Etter at du har lastet ned aocl-rte- .arm32.tgz file, pakk den ut
en katalog du eier.
Driverkilden er i aocl-rte- .arm32/board/c5soc/ driverkatalog. - For å rekompilere OpenCL Linux-kjernedriveren, sett KDIR-verdien i driverens merkefile til katalogen som inneholder Linux-kjernekilden files.
- Kjør kommandoen eksport CROSS_COMPILE=arm-linux-gnueabihf- for å indikere prefikset til verktøykjeden.
- Kjør kommandoen make clean.
- Kjør kommandoen make for å lage aclsoc_drv.ko file.
- Overfør katalogen opencl_arm32_rte til Cyclone V SoC FPGA-kortet.
Kjører scp -r root@din-ipaddress: kommandoen plasserer kjøretidsmiljøet i katalogen/home/root. - Kjør init_opencl.sh-skriptet du opprettet da du bygde SD-kortbildet.
- Påkall aocl-diagnoseverktøykommandoen. Diagnoseverktøyet vil returnere et bestått resultat etter at du har kjørt init_opencl.sh vellykket.
1.7 Kjente problemer
For øyeblikket er det visse begrensninger på bruken av Intel FPGA SDK for OpenCL med Cyclone V SoC Development Kit Reference Platform.
- Du kan ikke overstyre leverandør- og tavlenavnene som er rapportert av CL_DEVICE_VENDOR- og CL_DEVICE_NAME-strengene i clGetDeviceInfo()-kallet.
- Hvis verten tildeler konstant minne i delt DDR-system (det vil si HPS DDR) og den endrer det konstante minnet etter kjernekjøring, kan dataene i minnet bli utdaterte. Dette problemet oppstår fordi FPGA-kjernen ikke kan snoke etter CPU-til-HPS DDR-transaksjoner.
For å forhindre at påfølgende kjernekjøringer får tilgang til utdaterte data, implementer en av følgende løsninger:
• Ikke modifiser konstant minne etter initialisering.
• Hvis du trenger flere __konstante datasett, oppretter du flere konstante minnebuffere.
• Hvis tilgjengelig, alloker konstant minne i FPGA DDR på akseleratorkortet. - SDK-verktøyet på ARM støtter bare program- og diagnostiseringsverktøykommandoer.
Flash-, installerings- og avinstalleringskommandoene gjelder ikke for Cyclone V SoC Development Kit av følgende årsaker:
en. Installasjonsverktøyet må kompilere aclsoc_drv Linux-kjernedriveren og aktivere den på SoC FPGA. Utviklingsmaskinen må utføre kompileringen; den inneholder imidlertid allerede Linux-kjernekilder for SoC FPGA. Linux-kjernekildene for utviklingsmaskinen er forskjellige fra de for SoC FPGA. Plasseringen av Linux-kjernekildene for SoC FPGA er sannsynligvis ukjent for SDK-brukeren. På samme måte er avinstalleringsverktøyet ikke tilgjengelig for Cyclone V SoC Development Kit.
Det er også utfordrende å levere aclsoc_drv til SoC-kortet fordi standarddistribusjonen av Cyclone V SoC Development Kit ikke inneholder Linux-kjernen, inkludert files eller GNU Compiler Collection (GCC) kompilatoren.
b. Flash-verktøyet krever at du plasserer en .rbf file av en OpenCL-design på FAT32-partisjonen til micro SD-flashkortet. For øyeblikket er ikke denne partisjonen montert når SDK-brukeren slår på brettet. Derfor er den beste måten å oppdatere partisjonen på å bruke en flash-kortleser og utviklingsmaskinen. - Når du bytter mellom Intel FPGA SDK for OpenCL Offline Compiler kjørbar files (.aocx) som tilsvarer forskjellige bordvarianter (det vil si c5soc og c5soc_sharedonly), må du bruke SDK-ens programverktøy for å laste .aocx file for den nye brettvarianten for første gang. Hvis du bare kjører vertsapplikasjonen med en ny brettvariant, men FPGA-en inneholder bildet fra en annen brettvariant, kan det oppstå en fatal feil.
- .qxp file inkluderer ikke grensesnittpartisjonstildelingene fordi Quartus Prime-programvaren konsekvent oppfyller tidskravene til denne partisjonen.
- Når du slår på kortet, er dets medietilgangskontroll (MAC)-adresse satt til et tilfeldig tall. Hvis LAN-policyen ikke tillater denne oppførselen, angir du MAC-adressen ved å utføre følgende oppgaver:
en. Under oppstart av U-Boot, trykk på en hvilken som helst tast for å gå inn i U-Boot-kommandoprompten.
b. Skriv setenv ethaddr 00:07:ed:00:00:03 ved ledeteksten.
Du kan velge hvilken som helst MAC-adresse.
c. Skriv kommandoen saveenv.
d. Start brettet på nytt.
1.8 Dokumentrevisjonshistorikk
Tabell 1.
Dokumentrevisjonshistorikk for Intel FPGA SDK for OpenCL Cyclone V SoC
Development Kit Reference Platform Porting Guide
Dato | Versjon | Endringer |
mai-17 | 2017.05.08 | •Vedlikeholdsfrigjøring. |
oktober 2016 | 2016.10.31 | •Rebranded Altera SDK for OpenCL til Intel FPGA SDK for OpenCL. •Rebranded Altera Offline Compiler til Intel FPGA SDK for OpenCL Offline Compiler. |
mai-16 | 2016.05.02 | •Endret instruksjoner for å bygge og endre et SD-flash-kortbilde. •Endret instruksjoner for rekompilering av Linux-kjernen og OpenCL Linux-kjernedriveren. |
15.-XNUMX | 2015.11.02 | •Vedlikeholdsutgivelse, og endrede forekomster av Quartus II til Quartus Prime. |
mai-15 | 15.0.0 | •I FPGA Reconfiguration, fjernet instruksjonen om å omprogrammere FPGA-kjernen med en . rbf-bilde ved å påkalle katten filenavn>. rbf > /dev/ fpga0-kommandoen fordi denne metoden ikke anbefales. |
Desember-14 | 14.1.0 | •Omdøpt dokumentet til Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. •Oppdaterte omprogrammeringsverktøyet til aocl-programmetfilenavn>.aocx-verktøykommando. •Oppdaterte diagnoseverktøyet til aocl diagnose og aocl diagnose verktøykommando. •Oppdaterte prosedyren i delen Porting the Reference Platform to Your SoC Board for å inkludere instruksjoner om portering og modifisering av c5soc-kortpartisjonen for å lage en timing-clean partisjon for den garanterte timing-lukkingsflyten. •Satt inn emnet Oppdatere en portert referanseplattform for å skissere prosedyrene for følgende oppgaver: 1.Unntatt blokken for hard prosessorsystem (HPS) i brettpartisjonen 2.Oppdatering av SD-flashkortbildet •Oppdaterte delen Building an SD Flash Card Image. Anbefalt å bruke versjon 14.0 av Golden System Reference Design (GSRD)-bildet som utgangspunkt i stedet for bildet som er tilgjengelig med SoC Embedded Design Suite (EDS). •Oppdaterte delen om kompilering av Linux-kjernen og OpenCL Linux-kjernen-driveren: 1.La til instruksjon for å angi CROSS COMPILE-variabelen. 2.Endret kommandoen du kjører for å bekrefte at CMA er aktivert. |
juli-14 | 14.0.0 | •Første utgivelse. |
Dokumenter / Ressurser
![]() |
intel FPGA SDK for OpenCL [pdfBrukerhåndbok FPGA SDK for OpenCL, FPGA SDK, SDK for OpenCL, SDK |