intel - logoFPGA SDK pro OpenCL
Uživatelská příručka

UG-OCL009
2017.05.08
Poslední aktualizace pro Intel® Quartus® Prime Design Suite: 17.0

RENPHO RF FM059HS WiFi inteligentní masážní přístroj na nohy - ikona 5Upsat
Smartphone SAMSUNG SM A136UZKZAIO Galaxy A13 5G – ikona 12Odeslat zpětnou vazbu

Intel® FPGA SDK pro OpenCL™ Průvodce portováním referenční platformy Intel® Cyclone®V SoC Development Kit

Průvodce portováním referenční platformy V SoC Development Kit popisuje hardwarový a softwarový návrh referenční platformy Intel Cyclone V SoC Development Kit (c5soc) pro použití s ​​Intel Software Development Kit (SDK) pro OpenCL Intel ® FPGA SDK pro OpenCL ™ Intel Cyclone ®. Než začnete, společnost Intel důrazně doporučuje, abyste se seznámili s obsahem následujících dokumentů:

  1. Intel FPGA SDK pro OpenCLIntel Cyclone V SoC Příručka Začínáme
  2. Uživatelská příručka Intel FPGA SDK pro OpenCL Custom Platform Toolkit
  3. Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual Kromě toho se podívejte na stránku Cyclone V SoC Development Kit a SoC Embedded Design Suite na stránce Altera webpro více informací. 1 2

Pozor: Intel předpokládá, že máte hluboké znalosti o Intel FPGA SDK pro uživatelskou příručku OpenCL Custom Platform Toolkit. Průvodce portováním referenční platformy Cyclone V SoC Development Kit nepopisuje použití sady SDK Custom Platform Toolkit k implementaci vlastní platformy pro Cyclone V SoC Development Kit. Popisuje pouze rozdíly mezi podporou SDK na Cyclone V SoC Development Kit a generickým Intel FPGA SDK pro OpenCL Custom Platform.

Související odkazy

  • Příručka Začínáme Intel FPGA SDK pro OpenCL Cyclone V SoC
  • Uživatelská příručka Intel FPGA SDK pro OpenCL Custom Platform Toolkit
  • Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual
  • Cyclone V SoC Development Kit a stránka SoC Embedded Design Suite na Altera webmísto
  1. OpenCL a logo OpenCL jsou ochranné známky společnosti Apple Inc. používané se svolením společnosti Khronos Group™.
  2. Intel FPGA SDK pro OpenCL je založeno na publikované specifikaci Khronos a prošlo procesem testování shody Khronos. Aktuální stav shody lze nalézt na www.khronos.org/conformance.

Intel Corporation. Všechna práva vyhrazena. Intel, logo Intel, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus a Stratix slova a loga jsou ochranné známky společnosti Intel Corporation nebo jejích dceřiných společností v USA a/nebo jiných zemích. Společnost Intel zaručuje výkon svých FPGA a polovodičových produktů podle aktuálních specifikací v souladu se standardní zárukou společnosti Intel, ale vyhrazuje si právo provádět změny jakýchkoli produktů a služeb kdykoli bez upozornění. Společnost Intel nepřebírá žádnou odpovědnost nebo závazky vyplývající z aplikace nebo použití jakýchkoli informací, produktů nebo služeb zde popsaných, s výjimkou případů, kdy je společnost Intel výslovně písemně odsouhlasena. Zákazníkům společnosti Intel se doporučuje získat nejnovější verzi specifikací zařízení předtím, než se budou spoléhat na jakékoli zveřejněné informace a než zadají objednávky na produkty nebo služby.
*Jiná jména a značky mohou být nárokovány jako vlastnictví jiných.

1.1.1 Varianty desky referenční platformy Cyclone V SoC Development Kit
Intel FPGA SDK pro referenční platformu OpenCL Cyclone V SoC Development Kit obsahuje dvě varianty desek.

  • deska c5soc
    Tato výchozí deska poskytuje přístup ke dvěma paměťovým bankám DDR. HPS DDR je přístupná z FPGA i CPU. FPGA DDR je přístupná pouze přes FPGA.
  • deska c5soc_sharedonly
    Tato varianta desky obsahuje pouze konektivitu HPS DDR. FPGA DDR není přístupná. Tato varianta desky je plošně efektivnější, protože pro podporu jedné paměťové banky DDR je potřeba méně hardwaru. Deska c5soc_sharedonly je také dobrou prototypovou platformou pro finální produkční desku s jedinou paměťovou bankou DDR.
    Chcete-li se při kompilaci jádra OpenCL zaměřit na tuto variantu desky, zahrňte do příkazu aoc volbu -board c5soc_sharedonly.
    Více informací na –desce možnost příkazu aoc, viz Intel FPGA SDK pro OpenCL Programming Guide.

Související odkazy
Kompilace jádra pro konkrétní desku FPGA (–board )
1.1.2 Obsah referenční platformy Cyclone V SoC Development Kit
Referenční platforma Cyclone V SoC Development Kit obsahuje následující files a adresáře:

File nebo Adresář Popis
board_env.xml eXtensible Markup Language (XML) file který popisuje c5soc k Intel FPGA SDK pro OpenCL.
linux_sd_card_image.tgz Komprimovaný obrázek SD flash karty file který obsahuje vše, co uživatel SDK potřebuje k použití Cyclone V SoC Development Kit se sadou SDK.
paže32 Adresář, který obsahuje následující:

1.1.3 Relevantní vlastnosti vývojové sady Cyclone V SoC

Následující seznam zdůrazňuje součásti a funkce Cyclone V SoC Development Kit, které jsou relevantní pro Intel FPGA SDK pro OpenCL:

  • Dvoujádrový procesor ARM Cortex-A9 s 32bitovým Linuxem.
  • Advanced eXtensible Interface (AXI) sběrnice mezi HPS a jádrem FPGA.
  • Dva tvrzené řadiče paměti DDR, každý se připojuje k 1 gigabajtové (GB) DDR3 SDRAM.
    — Jeden řadič DDR je přístupný pouze jádru FPGA (tj. FPGA DDR).
    — Druhý řadič DDR je přístupný pro HPS i FPGA (tj. HPS DDR). Tento sdílený řadič umožňuje sdílení volné paměti mezi CPU a jádrem FPGA.
  • CPU může překonfigurovat jádro FPGA.

1.1.3.1 Cíle a rozhodnutí návrhu referenční platformy Cyclone V SoC Development Kit Společnost Intel zakládá implementaci referenční platformy Cyclone V SoC Development Kit na několika cílech a rozhodnutích návrhu. Společnost Intel doporučuje zvážit tyto cíle a rozhodnutí při portování této referenční platformy na vaši desku SoC FPGA.
Níže jsou uvedeny cíle návrhu c5soc:

  1. Zajistěte nejvyšší možnou šířku pásma mezi jádry na FPGA a paměťovým systémem (systémy) DDR.
  2. Zajistěte, aby výpočty na FPGA (tj. na jádrech OpenCL) nekolidovaly s jinými úlohami CPU, které by mohly zahrnovat servis periferií.
  3. Místo komponent rozhraní ponechejte co nejvíce zdrojů FPGA pro výpočty jádra.

Níže jsou uvedena rozhodnutí o návrhu na vysoké úrovni, která jsou přímými důsledky návrhových cílů společnosti Intel:

  1. Referenční platforma používá pouze řadiče pevných pamětí DDR s nejširší možnou konfigurací (256 bitů).
  2. FPGA komunikuje s řadičem paměti HPS DDR přímo, bez zapojení sběrnice AXI a přepínače L3 uvnitř HPS. Přímá komunikace poskytuje nejlepší možnou šířku pásma pro DDR a zabraňuje tomu, aby výpočty FPGA rušily komunikaci mezi CPU a jeho periferií.
  3. Scatter-gather přímý přístup do paměti (SG-DMA) není součástí logiky rozhraní FPGA. Místo přenosu velkého množství dat mezi paměťovými systémy DDR ukládejte data do sdílené HPS DDR. Přímý přístup k paměti CPU pomocí FPGA je efektivnější než DMA. Šetří hardwarové prostředky (tedy oblast FPGA) a zjednodušuje ovladač linuxového jádra.
    Varování: Přenos paměti mezi sdíleným systémem HPS DDR a systémem DDR, který je přístupný pouze pro FPGA, je velmi pomalý. Pokud se rozhodnete
    přeneste paměť tímto způsobem, používejte ji pouze pro velmi malá množství dat.
  4. Hostitel a zařízení mezi sebou provádějí přenos dat bez DMA prostřednictvím můstku HPS-to-FPGA (H2F) s použitím pouze jediného 32bitového portu. Důvodem je, že bez DMA může linuxové jádro vydat pouze jeden 32bitový požadavek na čtení nebo zápis, takže je zbytečné mít širší připojení.
  5. Hostitel posílá řídicí signály do zařízení přes lehký můstek H2F (LH2F).
    Protože řídicí signály z hostitele do zařízení jsou signály s nízkou šířkou pásma, je pro tento úkol ideální můstek LH2F.

1.2 Portování referenční platformy k vaší desce SoC FPGA
Chcete-li přenést referenční platformu Cyclone V SoC Development Kit na vaši desku SoC FPGA, proveďte následující úkoly:

  1. Jako výchozí bod svého návrhu vyberte verzi referenční platformy c5soc s jednou pamětí DDR nebo dvěma pamětmi DDR.
  2. Aktualizujte umístění pinů v ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, kde ALTERAOCLSDKROOT je cesta k umístění sady Intel FPGA SDK pro instalaci OpenCL a je název adresáře varianty desky. Adresář c5soc_sharedonly je pro deskovou variantu s jedním paměťovým systémem DDR. Adresář c5soc je pro deskovou variantu se dvěma paměťovými systémy DDR.
  3.  Aktualizujte nastavení DDR pro bloky HPS a/nebo FPGA SDRAM v ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
    4. Všechny preferované návrhy desek Intel FPGA SDK pro OpenCL musí dosáhnout zaručeného uzavření časování. Umístění návrhu jako takové musí být načasování čisté. Chcete-li portovat oddíl desky c5soc (acl_iface_partition.qxp) na desku SoC FPGA, proveďte následující úkoly:
    Podrobné pokyny pro úpravu a zachování oddílu desky najdete v Quartus
    Kapitola Přírůstková kompilace Prime pro hierarchický a týmový design v příručce Quartus Prime Standard Edition.
    A. Odeberte acl_iface_partition.qxp z adresáře ALTERAOCLSDKROOT/board/c5soc/c5soc.
    b. Povolte oblast acl_iface_region LogicLock™ změnou příkazu Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region na set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
    C. Zkompilujte OpenCL jádro pro vaši desku.
    d. V případě potřeby upravte velikost a umístění oblasti LogicLock.
    E. Když jste spokojeni s tím, že umístění vašeho návrhu je načasování čisté, exportujte tento oddíl jako exportovaný oddíl acl_iface_partition.qxp Quartus Prime File.
    Jak je popsáno v části Stanovení toku zaručeného časování v uživatelské příručce sady AIntel FPGA SDK pro OpenCL Custom Platform Toolkit, importem tohoto souboru .qxp  file do designu nejvyšší úrovně splníte požadavek na poskytnutí designu desky se zaručeným časovým uzávěrem.
    Faktory, které mohou ovlivnit kvalitu výsledků (QoR) vašeho exportovaného oddílu, najdete v části Obecné aspekty týkající se kvality výsledků pro exportovaný oddíl desky v uživatelské příručce Intel FPGA SDK pro OpenCL Custom Platform Toolkit.
    F. Deaktivujte oblast LogicLock acl_iface_region vrácením příkazu v kroku 2 zpět na set_global_assignment -name LL_ENABLED OFF id_sekce acl_iface_region.
  4. Pokud vaše deska SoC FPGA používá různé piny a periferie bloku HPS, regenerujte preloader a zdroj stromu zařízení (DTS) file. Pokud změníte nastavení řadiče paměti HPS DDR, vygenerujte preloader.
  5. Vytvořte obraz SD flash karty.
  6. Vytvořte si vlastní platformu, která obsahuje obraz SD flash karty.
  7. Zvažte vytvoření verze runtime prostředí vaší vlastní platformy pro použití s ​​Intel FPGA Runtime Environment (RTE) pro OpenCL. Verze RTE vaší vlastní platformy nezahrnuje hardwarové adresáře a obraz SD flash karty. Tato vlastní platforma se načte do systému SoC FPGA, aby umožnila běh hostitelských aplikací. Oproti tomu SDK verze Custom Platform je nezbytná pro SDK ke kompilaci OpenCL jader.
    Tip: Pro RTE můžete použít verzi SDK vaší vlastní platformy. Zachránit
    prostoru, odeberte obraz SD flash karty z RTE verze vaší vlastní platformy.
  8. Otestujte svou vlastní platformu.
    Další informace naleznete v části Testování návrhu hardwaru v uživatelské příručce sady Intel FPGA SDK pro OpenCL Custom Platform Toolkit.

Související odkazy

  • Testování návrhu hardwaru
  • Přírůstková kompilace Quartus Prime pro hierarchický a týmový design
  • Stanovení garantovaného časového toku
  • Obecné aspekty kvality výsledků pro exportovaný oddíl desky

1.2.1 Aktualizace Portované referenční platformy
V aktuální verzi referenční platformy Cyclone V SoC Development Kit je blok HPS uvnitř oddílu, který definuje veškerou nekernelovou logiku. Nemůžete však exportovat HPS jako součást .qxp file. Chcete-li aktualizovat existující vlastní platformu, kterou jste upravili z předchozí verze c5soc, implementujte postup uchování QXP, aktualizujte obraz SD flash karty, abyste získali nejnovější běhové prostředí, a aktualizujte board_spec.xml file pro umožnění automatické migrace.
Altera® SDK pro OpenCL verze 14.1 a novější testuje board_spec.xml file pro informace o desce a implementuje automatické aktualizace. Protože upravíte
design implementací toku uchování QXP, musíte aktualizovat soubor board_spec.xml file do jeho formátu v aktuální verzi. Aktualizace file umožňuje SDK rozlišovat mezi nezachovanými vlastními platformami a aktuálními vlastními platformami založenými na QXP. Další informace naleznete v uživatelské příručce Custom Platform Automigration pro dopřednou kompatibilitu v sadě Intel FPGA SDK pro OpenCL Custom Platform Toolkit.

  1. Chcete-li implementovat tok uchování QXP v hardwarovém návrhu FPGA Cyclone V SoC, který je portován z předchozí verze c5soc, proveďte následující kroky k vytvoření pododdílu pro vyloučení HPS z .qxp. file:
    A. Před vytvořením oddílu kolem nekernelové logiky vytvořte oddíl kolem HPS v nastavení .qsf Quartus Prime. File.
    Napřampten:
    # Ručně rozdělte instanci, která modeluje sadu I/O vyhrazenou HPS přiřazení_instance_název PARTITION_HIERARCHY borde_18261 -na “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_ifacehpshpsio:| system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
    # Nastavte oddíl na typ HPS_PARTITION, aby jej zbytek Quartusu správně zpracoval
    set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id “system_acl_iface_hps_0_hps_io_border:border”
    quartus_cdb top -c top
    –incremental_compilation_export=acl_iface_partition.qxp
    –incremental_compilation_export_partition_name=acl_iface_partition
    –incremental_compilation_export_post_synth=on
    –incremental_compilation_export_post_fit=on
    –incremental_compilation_export_routing=on
    –incremental_compilation_export_flatten=off
    Po vyloučení HPS z oddílu můžete importovat soubor .qxp file a sestavte svůj design.
  2. Aktualizujte obraz SD flash karty aktuální verzí Intel FPGA RTE pro OpenCL provedením následujících úkolů:
    A. Namontujte file alokační tabulka (fat32) a rozšířená file systémové (ext3) oddíly ve stávajícím obrazu jako zařízení se zpětnou smyčkou. Podrobné pokyny naleznete v kroku 2 v části Vytvoření obrazu karty SD Flash.
    b. V adresáři /home/root/opencl_arm32_rte odeberte soubor files z předchozí verze RTE.
    C. Stáhněte a rozbalte aktuální verzi RTE do adresáře /home/root/opencl_arm32_rte.
    d. V /driver/version.h file vaší vlastní platformy aktualizujte přiřazení ACL_DRIVER_VERSION na . (napřample, 16.1.x, kde 16.1 je verze SDK a x je verze ovladače, kterou jste nastavili).
    E. Přestavte ovladač.
    F. Odstraňte hardwarové složky vaší vlastní platformy. Zkopírujte Custom Platform spolu s aktualizovaným ovladačem do adresáře /home/root/opencl_arm_rte/board.
    G. Zkopírujte soubor Altera.icd file z adresáře /home/root/opencl_arm32_rte a přidejte jej do adresáře /etc/OpenCL/vendors.
    h. Odpojte a otestujte nový obraz. Podrobné pokyny naleznete v krocích 8 až 11 v části Vytvoření obrázku SD Flash karty.

Související odkazy

  • Vytvoření obrázku SD Flash karty na straně 14
    Máte také možnost vytvořit nový obrázek SD flash karty.
  • Vlastní automatizace platformy pro dopřednou kompatibilitu

1.3 Softwarová podpora pro sdílenou paměť
Sdílená fyzická paměť mezi FPGA a CPU je preferovanou pamětí pro jádra OpenCL běžící na SoC FPGA. Protože FPGA přistupuje ke sdílené fyzické paměti, na rozdíl od sdílené virtuální paměti, nemá přístup k tabulkám stránek CPU, které mapují virtuální adresy uživatelů na adresy fyzických stránek.
Pokud jde o hardware, jádra OpenCL přistupují ke sdílené fyzické paměti prostřednictvím přímého připojení k řadiči pevné paměti HPS DDR. Pokud jde o software, podpora sdílené fyzické paměti zahrnuje následující úvahy:

  1. Typické softwarové implementace pro alokaci paměti na CPU (napřample, funkce malloc() nemůže přidělit oblast paměti, kterou může FPGA používat.
    Paměť, kterou funkce malloc() alokuje, je souvislá v adresovém prostoru virtuální paměti, ale je nepravděpodobné, že by nějaké základní fyzické stránky byly fyzicky souvislé. Jako takový musí být hostitel schopen alokovat fyzicky souvislé oblasti paměti. Tato schopnost však v aplikacích v uživatelském prostoru na Linuxu neexistuje. Proto musí alokaci provést ovladač linuxového jádra.
  2. Ovladač linuxového jádra OpenCL SoC FPGA obsahuje funkci mmap() pro alokaci sdílené fyzické paměti a její mapování do uživatelského prostoru. Funkce mmap() používá standardní volání linuxového jádra dma_alloc_coherent() k vyžádání fyzicky souvislých oblastí paměti pro sdílení se zařízením.
  3. Ve výchozím linuxovém jádře dma_alloc_coherent() nepřiděluje fyzicky souvislou paměť větší než 0.5 megabajtů (MB). Chcete-li povolit dma_alloc_coherent() alokovat velké množství fyzicky souvislé paměti, povolte funkci alokátoru souvislé paměti (CMA) linuxového jádra a poté znovu zkompilujte linuxové jádro.
    Pro referenční platformu Cyclone V SoC Development Kit spravuje CMA 512 MB z 1 GB fyzické paměti. Tuto hodnotu můžete zvýšit nebo snížit v závislosti na množství sdílené paměti, kterou aplikace vyžaduje. Volání dma_alloc_coherent() nemusí být schopno alokovat celých 512 MB fyzicky souvislé paměti; může však běžně získat přibližně 450 MB paměti.
  4. CPU může vyrovnávací paměť, kterou alokuje volání dma_alloc_coherent() . Zejména operace zápisu z hostitelské aplikace nejsou viditelné pro jádra OpenCL. Funkce mmap() v ovladači linuxového jádra OpenCL SoC FPGA také obsahuje volání funkce pgprot_noncached() nebo remap_pf_range() pro explicitní zakázání ukládání do mezipaměti pro tuto oblast paměti.
  5. Poté, co funkce dma_alloc_coherent() alokuje fyzicky souvislou paměť, funkce mmap() vrátí virtuální adresu na začátek rozsahu, což je rozsah adres paměti, kterou alokujete. Hostitelská aplikace vyžaduje tuto virtuální adresu pro přístup k paměti. Na druhou stranu jádra OpenCL vyžadují fyzické adresy. Ovladač linuxového jádra sleduje mapování virtuální adresy na fyzickou. Fyzické adresy, které mmap() vrací, můžete mapovat na skutečné fyzické adresy přidáním dotazu do ovladače.
    Volání aocl_mmd_shared_mem_alloc() MMD aplikačního programovacího rozhraní (API) zahrnuje následující dotazy:
    A. Funkce mmap(), která přiděluje paměť a vrací virtuální adresu.
    b. Dodatečný dotaz, který mapuje vrácenou virtuální adresu na fyzickou adresu.
    Volání MMD API aocl_mmd_shared_mem_alloc() pak vrátí dvě adresy
    —skutečně vrácená adresa je virtuální adresa a fyzická adresa jde do device_ptr_out.
    Poznámka: Ovladač může mapovat pouze virtuální adresy, které funkce mmap() vrací, na fyzické adresy. Pokud požadujete fyzickou adresu jakéhokoli jiného virtuálního ukazatele, ovladač vrátí hodnotu NULL.

Varování: Intel FPGA SDK pro běhové knihovny OpenCL předpokládá, že sdílená paměť je první pamětí uvedenou v board_spec.xml file. Jinými slovy, fyzická adresa, kterou získá ovladač linuxového jádra, se stane adresou Avalon®, kterou jádro OpenCL předá HPS SDRAM.
S ohledem na běhovou knihovnu použijte volání clCreateBuffer() k přidělení sdílené paměti jako vyrovnávací paměti zařízení následujícím způsobem:

  • U varianty desky se dvěma DDR se sdílenou i nesdílenou pamětí alokuje clCreateBuffer() sdílenou paměť, pokud zadáte příznak CL_MEM_USE_HOST_PTR. Použití jiných příznaků způsobí, že clCreateBuffer() alokuje vyrovnávací paměť v nesdílené paměti.
  • U varianty desky s jednou DDR pouze se sdílenou pamětí přiděluje clCreateBuffer() sdílenou paměť bez ohledu na to, který příznak zadáte.
    V současné době 32bitová podpora Linuxu na ARM CPU řídí rozsah podpory sdílené paměti v běhových knihovnách SDK. Jinými slovy, runtime knihovny kompilované do jiných prostředí (napřample, x86_64 Linux nebo 64bitový Windows) nepodporují sdílenou paměť.
    C5soc neimplementoval heterogenní paměť pro rozlišení sdílené a nesdílené paměti z následujících důvodů:
    1. Historie – podpora heterogenní paměti nebyla k dispozici, když byla podpora sdílené paměti původně vytvořena.
    2. Jednotné rozhraní – Vzhledem k tomu, že OpenCL je otevřený standard, Intel zachovává konzistenci mezi dodavateli heterogenních počítačových platforem. Proto se pro alokaci a používání sdílené paměti používá stejné rozhraní jako architektury jiných výrobců desek.

1.4 Rekonfigurace FPGA
U SoC FPGA může CPU překonfigurovat jádro FPGA bez přerušení činnosti CPU. Hardwarový blok FPGA Manager, který se rozkládá na HPS a jádro FPGA, provádí rekonfiguraci. Linuxové jádro obsahuje ovladač, který umožňuje snadný přístup ke správci FPGA.

  • Na view stav jádra FPGA, vyvolejte příkaz cat /sys/class/fpga/fpga0/ status.
    Obslužný program Intel FPGA SDK pro OpenCL dostupný s referenční platformou Cyclone V SoC Development Kit používá toto rozhraní k programování FPGA. Při přeprogramování jádra FPGA s běžícím CPU provede obslužný program všechny následující úkoly:
    1. Před přeprogramováním deaktivujte všechny komunikační můstky mezi FPGA a HPS, můstky H2F i LH2F.
    Po dokončení přeprogramování tyto mosty znovu povolte.
    Upozornění: Systém OpenCL nepoužívá můstek FPGA-HPS (F2H). Další informace naleznete v části Rozhraní HPS-FPGA v příručce Cyclone V Device Handbook, svazek 3: Technická referenční příručka systému pevného procesoru.
    2. Ujistěte se, že spojení mezi FPGA a řadičem HPS DDR je během přeprogramování deaktivováno.
    3. Ujistěte se, že přerušení FPGA na FPGA jsou během přeprogramování deaktivována.
    Upozorněte také ovladač, aby během přeprogramování odmítl všechna přerušení z FPGA.

Podrobnosti o skutečné implementaci naleznete ve zdrojovém kódu obslužného programu programu.

Varování: Neměňte konfiguraci řadiče HPS DDR, když CPU běží.
Pokud tak učiníte, může to způsobit závažnou systémovou chybu, protože můžete změnit konfiguraci řadiče DDR, když z CPU existují nevyřízené transakce paměti. To znamená, že když CPU běží, nemůžete přeprogramovat jádro FPGA pomocí obrazu, který používá HPS DDR v jiné konfiguraci.
Pamatujte, že systém OpenCL a referenční design Golden Hardware dostupný se sadou Intel SoC FPGA Embedded Design Suite (EDS) nastavuje HPS DDR do jediného 256bitového režimu.
Části systému CPU, jako je prediktor větvení nebo prefetcher tabulky stránek, mohou vydávat příkazy DDR, i když se zdá, že na CPU nic neběží.
Proto je čas spouštění jediným bezpečným časem pro nastavení konfigurace řadiče HPS DDR.
To také znamená, že U-boot musí mít nezpracovaný binární soubor file (.rbf) obrázek k načtení do paměti. V opačném případě můžete povolit HPS DDR s nepoužívanými porty na FPGA a poté potenciálně změnit konfiguraci portů. Z tohoto důvodu ovladač linuxového jádra OpenCL již neobsahuje logiku potřebnou k nastavení konfigurace řadiče HPS DDR.
Přepínače SW3 dual in-line package (DIP) na Cylone V SoC Development Kit ovládají očekávanou podobu obrázku .rbf (tj. file je komprimovaný a/nebo šifrovaný). C5soc a Golden Hardware Reference Design dostupné se SoC EDS zahrnují komprimované, ale nešifrované obrázky .rbf. Nastavení SW3 DIP přepínače popsané v Intel FPGA SDK pro OpenCL Cyclone V SoC Getting Started Guide odpovídá této konfiguraci obrazu .rbf.

Související odkazy

  • Rozhraní HPS-FPGA
  • Konfigurace přepínačů SW3

1.4.1 Podrobnosti o architektuře systému FPGA
Podpora referenční platformy Cyclone V SoC Development Kit je založena na referenční platformě Stratix® V (s5_ref), která je k dispozici s Intel FPGA SDK pro OpenCL.
Celková organizace systému c5soc Qsys a ovladače jádra jsou velmi podobné těm v s5_ref.
Následující základní komponenty FPGA jsou stejné v c5soc i s5_ref:

  • Blok VERSION_ID
  • Odpočinkový mechanismus
  • Dělič paměťové banky
  • Snoop rozhraní mezipaměti
  • Jádrové hodiny
  • Bloky řízení přístupu k registru (CRA).

1.5 Vytvoření obrazu SD Flash karty
Protože Cyclone V SoC FPGA je úplný systém na čipu, odpovídáte za dodání plné definice systému. Intel doporučuje, abyste jej dodali ve formě obrazu SD flash karty. Uživatel Intel FPGA SDK pro OpenCL může jednoduše zapsat obraz na micro SD flash kartu a SoC FPGA deska je připravena k použití.
Úprava existujícího obrázku SD Flash karty na straně 13
Společnost Intel doporučuje jednoduše upravit obraz dostupný s referenční platformou Cyclone V SoC Development Kit. Máte také možnost vytvořit nový obrázek SD flash karty.
Vytvoření obrázku SD Flash karty na straně 14
Máte také možnost vytvořit nový obrázek SD flash karty.

1.5.1 Úprava existujícího obrázku SD Flash karty
Intel doporučuje, abyste jednoduše upravili obraz dostupný s Cyclone V SoC
Referenční platforma vývojové sady. Máte také možnost vytvořit nový obrázek SD flash karty.
Obrázek c5soc linux_sd_card_image.tgz file je k dispozici v adresáři ALTERAOCLSDKROOT/board/c5soc, kde ALTERAOCLSDKROOT ukazuje na cestu k instalačnímu adresáři Intel FPGA SDK pro OpenCL.

Pozor: Chcete-li upravit obrázek SD flash karty, musíte mít oprávnění root nebo sudo.

  1. Chcete-li dekomprimovat soubor $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, spusťte příkaz tar xvfzlinux_sd_card_image.tgz.
  2. Zkompilujte hello_world OpenCL exampnavrhněte pomocí vaší podpory vlastní platformy. Přejmenujte soubor .rbf file který Intel FPGA SDK pro OpenCL Offline Compiler vygeneruje jako opencl.rbf a umístí jej na oddíl fat32 v obrazu SD flash karty.
    Můžete si stáhnout hello_world example design z OpenCL Design Exampna stránce Altera webmísto.
  3. Umístěte soubor .rbf file do oddílu fat32 obrazu flash karty.
    Pozor: Oddíl fat32 musí obsahovat oba zImage file a .rbf file. Bez .rbf file, dojde při vložení ovladače k ​​závažné chybě.
  4. Po vytvoření obrazu karty SD jej zapište na kartu micro SD vyvoláním následujícího příkazu: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. Chcete-li otestovat obraz karty SD flash, proveďte následující úkoly:
    A. Vložte micro SD kartu do desky SoC FPGA.
    b. Zapněte desku.
    C. Vyvolejte příkaz obslužného programu aocl diagnostic.

1.5.2 Vytvoření obrázku SD Flash karty
Máte také možnost vytvořit nový obrázek SD flash karty. Obecné pokyny pro vytvoření nového obrazu SD flash karty a přebudování existujícího obrazu SD flash karty jsou k dispozici na stránce GSRD v14.0.2 – SD Card na RocketBoards.org webmísto.
Níže uvedené kroky popisují postup pro vytvoření obrazu linux_sd_card_image.tgz z obrazu flash karty SD Golden System Reference Design (GSRD):
Poznámka:
Chcete-li vytvořit obraz z obrazu c5soc, proveďte všechny použitelné úlohy popsané v tomto postupu.

  1. Stáhněte a rozbalte obrázek flash karty GSRD SD verze 14.0 z Rocketboards.org.
  2. Namontujte file alokační tabulka (fat32) a rozšířená file systémové (ext3) oddíly v tomto obrazu jako zařízení se zpětnou smyčkou. Chcete-li připojit oddíl, proveďte následující kroky:
    A. Určete bajtový začátek oddílu v obrazu vyvoláním /sbin/fdisk -lu image_file příkaz.
    Napřample, oddíl číslo 1 typu W95 FAT má blokový offset 2121728. Při 512 bajtech na blok je bajtový offset 512 bajtů x 2121728 = 1086324736 bajtů.
    b. Identifikujte zařízení s volnou smyčkou (napřample, /dev/loop0) zadáním příkazu losetup -f.
    C. Za předpokladu, že /dev/loop0 je zařízení s volnou smyčkou, přiřaďte obrázek své flash karty k zařízení s blokem smyčky vyvoláním losetup /dev/loop0 image_file -0 1086324736 příkaz.
    d. Připojte zařízení smyčky vyvoláním příkazu mount /dev/loop0 /media/disk1.
    V rámci obrázku file, /media/disk1 je nyní připojený oddíl fat32.
    E. Opakujte kroky a až d pro oddíl ext3.
  3. Stáhněte si Cyclone V SoC FPGA verzi balíčku Intel FPGA Runtime Environment for OpenCL z Download Center na Altera webmísto.
    A. Klikněte na tlačítko Stáhnout vedle vydání softwaru Quartus Prime.
    b. Zadejte verzi vydání, operační systém a způsob stahování.
    C. Klepněte na kartu Další software a vyberte možnost stažení Intel FPGA
    Runtime prostředí pro OpenCL Linux Cyclone V SoC TGZ.
    d. Po stažení souboru aocl-rte- .arm32.tgz file, rozbalte to
    adresář, který vlastníte.
  4. Umístěte rozbalený aocl-rte- .arm32 do adresáře /home/root/opencl_arm32_rte na oddílu ext3 obrazu file.
  5. Odstraňte hardwarové složky vaší vlastní platformy a poté umístěte vlastní platformu do podadresáře desky /home/root/opencl_arm32_rte.
  6. Vytvořte soubor init_opencl.sh file v adresáři /home/root s následujícím obsahem: 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
    Uživatel sady SDK spustí příkaz source ./init_opencl.sh k načtení proměnných prostředí a ovladače jádra OpenCL Linux.
  7. Pokud potřebujete aktualizovat preloader, DTS files nebo linuxovým jádrem potřebujete kompilátor arm-linux-gnueabihf-gcc ze SoC EDS. Postupujte podle pokynů uvedených v uživatelské příručce Intel SoC FPGA Embedded Design Suite, abyste získali software, znovu jej zkompilovali a aktualizovali příslušné files na připojeném oddílu fat32.
    Pozor: Je velmi pravděpodobné, že budete muset aktualizovat preloader, pokud vaše vlastní platforma používá jiné piny než ty v c5soc.
    Pamatujte: Pokud překompilujete linuxové jádro, znovu zkompilujte ovladač linuxového jádra se stejným zdrojem linuxového jádra files. Pokud dojde k nesouladu mezi ovladačem linuxového jádra a linuxovým jádrem, ovladač se nenačte. Také musíte povolit CMA.
    Další informace naleznete v části Překompilování linuxového jádra.
  8. Zkompilujte hello_world OpenCL exampnavrhněte pomocí vaší podpory vlastní platformy. Přejmenujte soubor .rbf file který Intel FPGA SDK pro OpenCL Offline Compiler vygeneruje jako opencl.rbf a umístí jej na oddíl fat32 v obrazu SD flash karty.
    Můžete si stáhnout hello_world example design z OpenCL Design Exampna stránce Altera webmísto.
    9. Po uložení všeho potřebného files na obrázek flash karty vyvolejte následující příkazy:
    A. synchronizace
    b. odpojit /media/disk1
    C. sesednout kde je název adresáře, který používáte pro připojení oddílu ext3 v 3 na straně 3 (napřample, /media/disk2).
    d. losetup -d /dev/loop0
    E. losetup -d /dev/loop1
  9. Zkomprimujte obraz SD flash karty vyvoláním následujícího příkazu: tar cvfz .tgz linux_sd_card_image
  10. Doručit .tgz file v kořenovém adresáři vaší vlastní platformy.
  11. Chcete-li otestovat obraz karty SD flash, proveďte následující úkoly:
    A. Zapište výsledný nekomprimovaný obrázek na micro SD flash kartu.
    b. Vložte micro SD kartu do desky SoC FPGA.
    C. Zapněte napájení desky.
    d. Vyvolejte příkaz obslužného programu aocl diagnostic.

Související odkazy

  • Uživatelská příručka Intel SoC FPGA Embedded Design Suite
  • OpenCL Design Přampna stránce Altera webmísto
  • Překompilování linuxového jádra na straně 16
    Chcete-li povolit CMA, musíte nejprve znovu zkompilovat jádro Linuxu.
  • Dotaz na název zařízení vaší desky FPGA (diagnostika)

1.6 Kompilace linuxového jádra pro Cyclone V SoC FPGA
Před spuštěním aplikací OpenCL na desce Cyclone V SoC FPGA musíte zkompilovat zdroj linuxového jádra a zkompilovat a nainstalovat ovladač linuxového jádra OpenCL.

  1. Překompilování linuxového jádra na straně 16
    Chcete-li povolit CMA, musíte nejprve znovu zkompilovat jádro Linuxu.
  2. Kompilace a instalace ovladače OpenCL Linux Kernel Driver na straně 17 Zkompilujte ovladač OpenCL Linux Kernel podle zkompilovaného zdroje jádra.

1.6.1 Překompilování linuxového jádra
Chcete-li povolit CMA, musíte nejprve znovu zkompilovat jádro Linuxu.

  1. Klikněte na odkaz GSRD v14.0 – Compiling Linux na stránce Resources na RocketBoards.org webstránky pro přístup k pokynům pro stahování a přestavbu zdrojového kódu linuxového jádra.
    Pro použití s™ Intel FPGA SDK pro OpenCL zadejte socfpga-3.13-rel14.0 jako .
  2. Poznámka: Proces vytváření vytvoří soubor arch/arm/configs/socfpga_defconfig file. Tento file určuje nastavení pro výchozí konfiguraci socfpga.
    Přidejte následující řádky na konec souboru 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=y
    CONFIG_CMA_ALIGNMENT=8
    CONFIG_CMA_AREAS=7
    Konfigurační hodnota CONFIG_CMA_SIZE_MBYTES nastavuje horní limit celkového počtu dostupné fyzicky souvislé paměti. Pokud potřebujete více paměti, můžete tuto hodnotu zvýšit.
  3. Pozor: Celkové množství fyzické paměti dostupné pro procesor ARM na desce SoC FPGA je 1 GB. Společnost Intel nedoporučuje nastavit správce CMA blízko 1 GB.
  4. Spusťte příkaz make mrproper k vyčištění aktuální konfigurace.
  5. Spusťte příkaz make ARCH=arm socfpga_deconfig.
    ARCH=arm znamená, že chcete nakonfigurovat architekturu ARM.
    socfpga_defconfig označuje, že chcete použít výchozí konfiguraci socfpga.
  6. Spusťte příkaz export CROSS_COMPILE=arm-linux-gnueabihf-.
    Tento příkaz nastaví proměnnou prostředí CROSS_COMPILE tak, aby specifikovala předponu požadovaného řetězce nástrojů.
  7. Spusťte příkaz make ARCH=arm zImage. Výsledný obrázek je k dispozici v souboru arch/arm/boot/zImage file.
  8. Umístěte zImage file do oddílu fat32 obrazu flash karty. Podrobné pokyny naleznete v uživatelské příručce GSRD specifické pro FPGA Cyclone V SoC na Rocketboards.org.
  9. Poznámka: Chcete-li správně vložit ovladač jádra OpenCL Linux, nejprve načtěte soubor SDKgenerated.rbf file na FPGA.
    Chcete-li vytvořit soubor .rbf file, sestavte návrh SDK napřample s referenční platformou Cyclone V SoC Development Kit jako cílovou vlastní platformou.
    9. Umístěte .rbf file do oddílu fat32 obrazu flash karty.
    Pozor: Oddíl fat32 musí obsahovat oba zImage file a .rbf file. Bez .rbf file, dojde při vložení ovladače k ​​závažné chybě.
  10. Vložte naprogramovanou micro SD kartu, která obsahuje obraz SD karty, který jste dříve upravili nebo vytvořili, do Cyclone V SoC Development Kit a poté zapněte desku SoC FPGA.
  11. Ověřte verzi nainstalovaného linuxového jádra spuštěním příkazu uname -r.
  12. Chcete-li ověřit, že úspěšně povolíte CMA v jádře při zapnuté desce SoC FPGA, spusťte příkaz grep init_cma /proc/kallsyms.
    CMA je povoleno, pokud výstup není prázdný.
  13. Chcete-li použít rekompilované jádro Linuxu se sadou SDK, zkompilujte a nainstalujte ovladač jádra Linuxu.

Související odkazy

  • Uživatelské příručky Golden System Reference Design (GSRD).
  • Vytvoření obrázku SD Flash karty na straně 13
    Protože Cyclone V SoC FPGA je úplný systém na čipu, odpovídáte za dodání plné definice systému.

1.6.2 Kompilace a instalace ovladače OpenCL Linux Kernel Driver
Zkompilujte ovladač OpenCL Linux kernel proti zkompilovanému zdroji jádra.

Zdroj ovladače je k dispozici ve verzi Cyclone V SoC FPGA prostředí Intel FPGA Runtime Environment for OpenCL. Kromě toho se ujistěte, že jste nahráli sadu Intel FPGA SDK pro soubor .rbf generovaný OpenCL file do FPGA, aby se zabránilo nesprávné instalaci modulu jádra Linuxu.

  1. Stáhněte si Cyclone V SoC FPGA verzi balíčku Intel FPGA Runtime Environment for OpenCL z Download Center na Altera webmísto.
    A. Klikněte na tlačítko Stáhnout vedle vydání softwaru Quartus Prime.
    b. Zadejte verzi vydání, operační systém a způsob stahování.
    C. Klepněte na kartu Další software a vyberte možnost stažení Intel FPGA
    Runtime prostředí pro OpenCL Linux Cyclone V SoC TGZ.
    d. Po stažení souboru aocl-rte- .arm32.tgz file, rozbalte to
    adresář, který vlastníte.
    Zdroj ovladače je v aocl-rte- .arm32/board/c5soc/ adresář ovladače.
  2. Chcete-li znovu zkompilovat ovladač linuxového jádra OpenCL, nastavte hodnotu KDIR v Make ovladačifile do adresáře obsahujícího zdrojový kód linuxového jádra files.
  3. Spuštěním příkazu export CROSS_COMPILE=arm-linux-gnueabihf- označte předponu vašeho řetězce nástrojů.
  4. Spusťte příkaz make clean.
  5. Spusťte příkaz make a vytvořte soubor aclsoc_drv.ko file.
  6. Přeneste adresář opencl_arm32_rte na desku Cyclone V SoC FPGA.
    Spuštění scp -r root@vaše-ipadresa: příkaz umístí běhové prostředí do adresáře/home/root.
  7. Spusťte skript init_opencl.sh, který jste vytvořili při vytváření SD cardimage.
  8.  Vyvolejte příkaz obslužného programu aocl diagnostic. Po úspěšném spuštění init_opencl.sh obslužný program pro diagnostiku vrátí předaný výsledek.

1.7 Známé problémy
V současné době existují určitá omezení pro použití Intel FPGA SDK pro OpenCL s referenční platformou Cyclone V SoC Development Kit.

  1. Nemůžete přepsat názvy dodavatele a desky hlášené řetězci CL_DEVICE_VENDOR a CL_DEVICE_NAME volání clGetDeviceInfo().
  2. Pokud hostitel alokuje konstantní paměť ve sdíleném systému DDR (tj. HPS DDR) a upraví konstantní paměť po spuštění jádra, data v paměti mohou být zastaralá. Tento problém vzniká, protože jádro FPGA nemůže sledovat transakce DDR mezi CPU a HPS.
    Chcete-li zabránit následným spuštěním jádra v přístupu k zastaralým datům, implementujte jedno z následujících řešení:
    • Neupravujte konstantní paměť po její inicializaci.
    • Pokud požadujete více __konstantních datových sad, vytvořte více konstantních vyrovnávacích pamětí.
    • Pokud je k dispozici, přidělte konstantní paměť v FPGA DDR na desce akcelerátoru.
  3. Nástroj SDK na ARM podporuje pouze příkazy programu a diagnostického nástroje.
    Příkazy flash, install a uninstall utility nelze použít pro Cyclone V SoC Development Kit z následujících důvodů:
    A. Instalační nástroj musí zkompilovat ovladač aclsoc_drv linuxového jádra a povolit jej na SoC FPGA. Vývojový stroj musí provést kompilaci; nicméně již obsahuje zdroje linuxového jádra pro SoC FPGA. Zdroje linuxového jádra pro vývojový stroj se liší od zdrojů pro SoC FPGA. Umístění zdrojů linuxového jádra pro SoC FPGA je pravděpodobně neznámé uživateli SDK. Podobně není nástroj pro odinstalaci dostupný také pro Cyclone V SoC Development Kit.
    Doručení aclsoc_drv na desku SoC je také náročné, protože výchozí distribuce Cyclone V SoC Development Kit neobsahuje linuxové jádro. files nebo kompilátor GNU Compiler Collection (GCC).
    b. Flash nástroj vyžaduje umístění .rbf file designu OpenCL na oddíl FAT32 flash karty micro SD. V současné době není tento oddíl připojen, když uživatel SDK zapne desku. Proto je nejlepším způsobem aktualizace oddílu použít čtečku karet flash a vývojový stroj.
  4. Při přepínání mezi spustitelným souborem Intel FPGA SDK pro OpenCL Offline Compiler files (.aocx), které odpovídají různým variantám desky (tj. c5soc a c5soc_sharedonly), musíte k načtení souboru .aocx použít programový nástroj SDK. file pro novou deskovou variantu poprvé. Pokud jednoduše spustíte hostitelskou aplikaci pomocí nové varianty desky, ale FPGA obsahuje obraz z jiné varianty desky, může dojít k fatální chybě.
  5. Soubor .qxp file nezahrnuje přiřazení oddílů rozhraní, protože software Quartus Prime konzistentně splňuje požadavky na časování tohoto oddílu.
  6. Když desku zapnete, její adresa MAC (media access control) se nastaví na náhodné číslo. Pokud vaše zásady LAN toto chování nepovolují, nastavte MAC adresu provedením následujících úkolů:
    A. Během zapínání U-Boot stiskněte libovolnou klávesu pro vstup do příkazového řádku U-Boot.
    b. Do příkazového řádku zadejte setenv ethaddr 00:07:ed:00:00:03.
    Můžete si vybrat libovolnou MAC adresu.
    C. Zadejte příkaz saveenv.
    d. Restartujte desku.

1.8 Historie revizí dokumentu
Tabulka 1.
Dokument Historie revizí sady Intel FPGA SDK pro OpenCL Cyclone V SoC
Průvodce portováním referenční platformy vývojové sady

Datum Verze Změny
Květen-17 2017.05.08 • Uvolnění údržby.
října 2016 2016.10.31 • Přeznačená Altera SDK pro OpenCL na Intel FPGA SDK pro OpenCL.
•Rebrandovaný Altera Offline Compiler na Intel FPGA SDK pro OpenCL Offline Compiler.
Květen-16 2016.05.02 •Upravené pokyny pro vytváření a úpravu obrazu SD flash karty.
•Upravené pokyny pro rekompilaci linuxového jádra a ovladače OpenCL linuxového jádra.
listopadu-15 2015.11.02 • Vydání údržby a změna instancí Quartus II na Quartus Prime.
Květen-15 15.0.0 •V FPGA Reconfiguration odstraněna instrukce pro přeprogramování jádra FPGA
s . rbf obrázek vyvoláním kočky filejméno>. rbf
> /dev/ fpga0 příkaz, protože tato metoda se nedoporučuje.
Prosinec-14 14.1.0 •Přejmenován dokument na Altera Cyclone V SoC Development Kit Reference Platform Porting Guide.
•Aktualizován nástroj pro přeprogramování na program aoclfilenázev>.aocx příkaz utility.
•Aktualizován diagnostický nástroj na diagnostiku aocl a diagnostiku aocl obslužný příkaz.
•Aktualizován postup v části Portování referenční platformy na vaši desku SoC tak, aby obsahoval pokyny k portování a úpravě oddílu desky c5soc za účelem vytvoření oddílu s čistým načasováním pro zaručený tok uzavření načasování.
•Vloženo téma Aktualizace portované referenční platformy s popisem postupů pro následující úlohy:
1.Vyjma bloku systému pevného procesoru (HPS) v oddílu desky
2. Aktualizace obrazu SD flash karty
•Aktualizována sekce Vytvoření obrázku SD Flash karty. Doporučuje se použít verzi 14.0 obrázku Golden System Reference Design (GSRD) jako výchozí bod namísto obrázku dostupného pomocí SoC Embedded Design Suite (EDS).
•Aktualizována sekce Překompilování linuxového jádra a OpenCL Linux Kernel Driver:
1.Přidána instrukce pro nastavení proměnné CROSS COMPILE.
2. Změnil příkaz, který spouštíte, abyste ověřili, že CMA je úspěšně povoleno.
Červenec-14 14.0.0 •První vydání.

Dokumenty / zdroje

intel FPGA SDK pro OpenCL [pdfUživatelská příručka
FPGA SDK pro OpenCL, FPGA SDK, SDK pro OpenCL, SDK

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *