[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.

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.

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
