[LNIV Xilinx](index.html) | [Vivado](vivado.htm) | [blokovni diagram](vivado-blok.htm) | [komponente IP](vivado-ip.htm) | [AXI IP](vivado-axi.htm) | SW # Programiranje procesorja na Xilinx Zynq Razvoj programskih aplikacij za ARM procesorje poteka v orodjih: * [SDK](sdk.htm) za **Vivado 2019** ali starejše različice oz. * Vitis za **Vivado 2020** in novejše Programska oprema na Zynq SoC uporablja periferne enote v programirljivi logiki, ki so običajno opisane in prevedene z orodjem Vivado. Specifikacijo HW izvozimo v Vivadu z: File > Export > Export Hardware (kljukica na Include bistream) v obliki datoteke XSA (Xilinx Support Archive). ## Vitis V orodju Xilinx Vitis 2020 najprej nastavimo mapo v kateri bo programski projekt (Workspace), nato izberemo Create Application Project, kliknemo Next in zavihek Create a new platform from hardware (XSA). Dodamo datoteko XSA (npr. design_1_wrapper.xsa), ki smo jo izvozili iz Vivada. ![](./img/vitis-start.png) Pri vprašanju o vrsti projekta potrdimo privzete nastavitve (aplikacija brez OS, Hello World). Prevajanje knjižnic in aplikacijskih datotek izvedemo s klikom na Build v orodni vrstici. ![](./img/vitis-build.png) Vzorčno aplikacijo nadomestimo z lastno, ki komunicira s perifernimi enotami. Primer aplikacije za grafiko VGA z [objekti](vivado-vgaobj.htm): ```c #include "sleep.h" int main() { int *xp=(int *)0x43c00000; int *yp=(int *)0x43c00004; int x=80,y=200; int xinc=2; int yinc=1; *yp=y; *xp=x; while(1) { x += xinc; if (xinc>0 && x>750) xinc=-2; if (xinc<0 && x<50) xinc=2; y += yinc; if (yinc>0 && y>550) yinc=-1; if (yinc<0 && y<50) yinc=1; *yp=y; *xp=x; usleep(3000); } return 0; } ``` Ko aplikacijo prevedemo, jo naložimo na razvojni sistem z Run As > Launch Hardware ![](./img/vitis-launch.png)