Xilinx Zynq

By Jozef Mlích - Last updated: Pondělí, Leden 7, 2013 - Save & Share - Leave a Comment

Tento článek se zabývá deskou Zynq od Kalifornské firmy Xilinx. Tato deska velmi zajímavým způsobem propojuje programování software a vytváření příslušných hardwarových komponent.

Konkrétně v jednom pouzdře je současně procesor ARM Cortex A9 a programovatelné pole (FPGA) z rodiny Xilinx 7 (a to buď Artix-7 nebo Kintex-7). Procesor je dvoujádro z rodiny ARMv7 běžící na 800 MHz, podporuje NEON instrukce a má k dispozici 512 MB DDR3. Na následujícím obrázku je schémátko systému.

 

Xilinx Zynq – Schéma

Na Zynqu lze spouštět buď vlastní operační systém, RTOS nebo Linux. Tyto varianty lze současně kombinovat, a to tak, že na jednom ARMovém jádru běží jeden systém a na druhém ARMovém jádru běží druhý systém.

Xilinx dodáva k Zynqu referenční design (TRD – Targeted Reference Design), který ukazuje možnosti tohoto zařízení a současně slouží jako návod k tomu, jak pro něj začít s vývojem. TRD implementuje Sobelův detektor hran. Jedná se o jednu ze základních úloh počítačového zpracování obrazu, která je velmi dobře paralelizovatelná. Její výpočet je v tomto případě akcelerován pomocí implementace v FPGA. Řízení výpočtu je implementováno v C a C++ a běží na Linuxu. Uživatelské rozhraní demonstrační aplikace je vytvořeno v Qt.

Start systému probíhá následujícím způsobem. Přepínačem na desce se zvolí start systému z SD karty. Karta musí mít formát FAT32, startuje se z prvního diskového oddílu (partition) karty, ostatní oddíly jsou ignorovány. Na kartě je připraven soubor BOOT.bin, ve kterém jsou zabaleny počáteční bitstream (ssssssss.bit, kde jméno souboru může být různé) a dva zavaděče. První zavaděč (FSBL – First Stage Boot Loader, soubor zynq_FSBL.elf) naprogramuje FPGA pomocí bitstreamu a spustí druhý zavaděč (U-boot, soubor u-boot.bin). Ten z karty načte jádro, initramfs a device tree.

Xilinx Zynq ZC702 – fotografie

Initramfs v tomto případě slouží přímo jako rootfs, na rozdíl od „velkých linuxů“, kde initramfs slouží jenom do doby, než je připraven rootfs. Do tohoto souborového systému se následně připojí souborový systém FAT32 /dev/mmcblk0p1 karty do /mnt a z něj se připojí do /usr/lib/qt ext2 obsahující všechny knihovny potřebné k běhu Qt.

Jednou z důležitých částí startu systému je Device Tree. Tento strom popisuje propojení hardware respektive připojení jednotlivých zařízení k procesoru. Umožňuje oddělit jádro od tohoto popisu, to by mělo umožnit použití stejného jádra pro spoustu různých SoC. Současně by to mělo do jisté míry zabránit zbytečnému začleňování změn specifických pro tyto SoC.

V případě Zynqu je navíc potřeba tento Device Tree upravovat podle toho, co je v FPGA. Úplně nové periferní zařízení bude samozřejmě vyžadovat i další zásahy do linuxového jádra. Jedná se konkrétně o vytvoření ovladače pro tento nový hardware.

Další zajímavostí je možnost rekonfigurovat FPGA online z Linuxu. Pro tyto účely je v systému QSPI / MTD zařízení, které umožňuje kompletní nebo částečnou rekonfiguraci programovatelného pole. Dynamická rekonfigurace je ovšem komplikovaná tím, že dokumentace formátu bitstreamu není veřejná.

Po drobných úpravách lze na Zynqu spustit i Debian nebo ubuntu. Samotný Zynq lze pořídit ve čtyřech různých variantách. Jeho cena se pohybuje kolem 800 USD. Zynq má také menšího bratříčka, který se jmenuje ZedBoard. Jeho cena se pohybuje od 300 USD.

Zajímavostí využívající Zynq se jeví vývojový počítač Parallella od společnosti Adapteva, který v rámci Kickstarter projektu stál 99$.

Sdílejte:

Share this:

Posted in Openmobility • Tags: , , Top Of Page

Write a comment


Yandex Mail.ru Google LiveJournal myOpenId Flickr claimId Blogger Wordpress OpenID Yahoo Technorati Vidoop Verisign AOL