- PetaLinux nudi kernel, stablo uređaja i rootfs spremne za prilagodbu na Zynq/ZynqMP.
- Sam tijek rada kombinira Vivado (XSA), PetaLinux (slika) i Vitis/SDK (aplikacija).
- Stablo uređaja odražava mapu adresa i prekida definiranu u Vivadu.
- UIO/drajveri olakšavaju pristup IP-u; FPGA Manager pojednostavljuje PL iteracije.
Ako imate problema s PetaLinuxom, ne brinite: niste sami. strma krivulja učenjaAli postoji jasan put do razumijevanja kako Vivado, PetaLinux i Vitis rade zajedno i koju ulogu igra svaka komponenta. Ovdje ćete pronaći praktično i organizirano objašnjenje koje će vam pomoći da prijeđete s Vivado dizajna na pokretanje svoje prve aplikacije u Vitisu. Linux preko Zynqa ili Zynq UltraScale+ bez gubitka rezultata u pokušaju.
Mnogi se pitaju je li moguće "živjeti" sam unutar Vitisa. Trebate PetaLinux za kernel, stablo uređaja i rootfs.Tipičan tijek rada koji ćete vidjeti na stvarnim sustavima je: generiranje .xsa datoteke u Vivadu, stvaranje i konfiguriranje PetaLinux projekta (ponekad iz BSP-a), kompajliranje i pakiranje slike (WIC za SD), a zatim izvoz sysroota za razvoj aplikacije u Vitisu ili pomoću vanjskog alata. Kasnije ću objasniti alternative, savjete za izbjegavanje beskrajnih ponovnih izgradnja i što učiniti sa stvarima poput FPGA Managera ili TCF Agenta.
Što je PetaLinux i što uključuje po zadanim postavkama?
PetaLinux je AMD-ova referentna distribucija dizajnirana za njihove SoC-ove i MPSoC-ove, pružajući vam Linux okruženje spremno za prilagodbu. punjači od čizma i optimizirana jezgraUključuje biblioteke i uslužne programe, podršku za C/C++ i alate za otklanjanje pogrešaka. Osim toga, dolazi s opcijama niti, podrškom za FPU i web-baziranim administratorskim poslužiteljem za jednostavnu konfiguraciju mreže i firmvera.
Službeni BSP-ovi obično dolaze s unaprijed napravljenim slikama za pokretanje i konfiguraciju. implementirati i inicijalizirati binarne datoteke u hardver pravi ili u QEMU-uKompletan emulator sustava koji dolazi s PetaLinuxom ubrzava početno testiranje i idealan je za provjeru pokretanja projekta prije nego što se upustite u detalje. aplikacije o vozači.
Preporučeni hardversko-softverski tijekovi rada
U profesionalnim okruženjima koriste se dvije vrste Linux tijeka rada: jedna usmjerena na liniju naredbe od PetaLinuxa i drugog koji integrira Vitis za razvoj aplikacija. generiranje .xsa datoteke i, ako je primjenjivo, bitstream.
Mogu li sve napraviti u Vitisu? Za Linux ne. Vitis je odličan za izradu platformi Kada vam je potrebna prilagođena jezgra, stablo uređaja i rootfs, uobičajeni pristup je: PetaLinux za izgradnju sustava i izvoz SDK-a/sysroota; Vitis ili vanjski alat za kompajliranje i ispravljanje pogrešaka vaše aplikacije.
Od XSA-e do sustava za pokretanje
Minimalni održivi itinerar obično izgleda ovako: .xsa datoteku generirate u Vivadu.Projekt kreirate s petalinux-create (ili počevši od BSP-a), ažurirate hardver u PetaLinuxu s tom .xsa datotekom i prilagođavate konfiguraciju (jezgra, stablo uređaja i rootfs). Zatim ga kompajlirate, pakirate u .wic format i flešujete SD karticu.
S pokretanjem sustava, vrijeme je za aplikaciju. izvoz sysroot/SDK iz PetaLinuxa A u Vitisu stvarate platformu iz .xsa datoteke. Odatle generirate svoj C/C++ aplikacijski projekt koji upućuje na sysroot kako bi se ispravno povezao s rootfs bibliotekama i pokrećete aplikaciju na cilju pomoću tcf-agenta, gdbservera ili vaše željene metode.
Malo upozorenje iz stvarnog života: Vivado/Vitis/PetaLinux verzije Imaju svoje posebnosti. Na primjer, u Vitis Unified 2023.2 prijavljen je problem koji sprječava povezivanje s tcf-agentom, a brzo rješenje bilo je nadogradnja na 2024.1. Uvijek provjerite bilješke o izdanju i, ako je moguće, zamrznite stog alata tijekom projekta.
Dizajn hardvera u Vivadu (Zynq-7000 i Zynq UltraScale+)
Vaš tehnološki temelj je u Vivadovom dizajnu blokova. Dodajte blok „ZYNQ7 Processing System“ (ili njegov ZynqMP ekvivalent) i pokrenite Run Block Automation za povezivanje DRAM-a i takta. Odatle prilagodite što vam je potrebno.
- Omogući vanjske prekide: U PS prilagodbi aktivirajte PS-PL prekide i Zajedničke prekide ako planirate dijeliti IRQ linije između PL perifernih uređaja.
- Sinkronizacija taktova: uobičajena praksa je spajanje FCLK_CLK0 na M_AXI_GP0_ACLK port tako da takt AXI sabirnice bude usklađen s PS taktom.
S PL IP-ovima, oslonite se na automatizaciju. Pokreni automatizaciju povezivanja Pruža AXI međusobne veze i arbitražu, ali imajte na umu: ne povezuje prekide ili sva stabla takta. Za IRQ-ove koristi concat blok i usmjerava svoj izlaz na PS.
- Spojite svaku IRQ liniju vaših perifernih IP adresa na Concat blok.
- Spojite izlaz Concat-a na ulaz prekida PS-a.
Ako vam je potrebna brza memorija u PL-u, dodajte BRAM. Umeci BRAM kontrolera i generatora blokovne memorije, definira broj portova, širinu i kapacitet te, što je vrlo važno, provjerava njihovo mapiranje u Uredniku adresa.
- Provjerite i prilagodite mapu adresa: ne smije biti preklapanja raspona; ako postoje, Vivado sukob boji crvenom bojom.
- Razmotrite i druge glavne uređaje (na primjer, koprocesor u PL-u). Dodjeljivanje adresa je obavezno kako bi se spriječio neuspjeh sinteze.
Za dovršetak dizajna, stvorite HDL omotač za .bd datoteku, sintetizirajte ga i implementirajte. Generiranje bitstreama Može potrajati neko vrijeme, a kada završi, izvozi hardver, uključujući i bit ako želite programirati PL od pokretanja.
Neka korisna pojašnjenja: Izložite PS signale PL-u pomoću EMIO-a Za GPIO ili I2C, ovo je vrlo praktično ako ćete, na primjer, koristiti PYNQ shield. Budite oprezni s integriranim perifernim uređajima: obično su spojeni na fiksne pinove na uređaju i nije ih uvijek moguće zamijeniti fabric IP-ovima bez promjene veza. Ako implementacija ne uspije, provjerite ograničenja (XDC) i dodjele.
Mapiranje stabla uređaja i hardvera
Pitanje od milijun dolara: koliko vas Linux apstrahira? Stablo uređaja Ovo opisuje adrese uređaja, IRQ-ove i kompatibilnosti. Ovo mapiranje nije "dinamičko" pri pokretanju osim ako ne koristite prekrivanja; obično je statično i izvedeno je iz Vivadovog uređivača adresa i DTS-a koji generira PetaLinux.
Kontrolni dio (registri) i podatkovni dio (npr. DMA pristupi) trebaju biti konceptualno i fizički odvojeni. "reg" rasponi i linije prekidaUpravljački program (ili UIO) će koristiti ove informacije za mapiranje memorije i logike prekida. Veličina i poravnanje raspona moraju odgovarati onome što ste definirali u Vivadu.
Ako kompajlirate s PetaLinuxom, DTS fragmenti se obično automatski generiraju iz .xsa datoteke. ažurirajte .xsa datoteku Kada mijenjate hardver (nove IP adrese ili adrese), morate ponovno izgraditi barem stablo uređaja i kernel. Datoteka rootfs ne treba uvijek mijenjati i stoga se datoteka sysroot i dalje može koristiti ako korisničke biblioteke nisu izmijenjene.
Mogućnosti pristupa hardveru iz C/C++
Ne postoji jedan način; odaberite prema stanju vašeg projekta i trudu koji želite posvetiti upravljačkim programima. / dev / mem za MMIO mapiranje, ali se ne preporučuje u produkciji zbog sigurnosti, prenosivosti i prekida.
Srednja alternativa: UIO (U/I korisničkog prostora) Omogućuje vam mapiranje IP regija u korisničkom prostoru i upravljanje prekidima pomoću select/poll. Zahtijeva dodavanje UIO čvorova u stablo uređaja, ali izbjegava pisanje potpunog upravljačkog programa.
Profesionalna opcija je stvaranje upravljačkog programa za znakove ili upravljačkog programa platforme za vašu IP adresu. vozač karaktera Dobivate detaljnu kontrolu nad DMA, IRQ-om, napajanjem i stabilnim sučeljem u /dev, uz poboljšanu integraciju s ekosustavom kernela. Ako vaša IP adresa koristi AXI-DMA ili standardne okvire, oslonite se na postojeće upravljačke programe.
Što se tiče alata: možete koristiti Vitis ili kompajlirati s SDK-om koji je izvezao PetaLinux. petalinux-build –sdk i povežite svoj projekt s tim sysrootom kako biste osigurali da se povezujete s istim bibliotekama kao i rootfs ciljne datoteke. Vitis pojednostavljuje izgradnju platforme iz .xsa datoteke i pokretanje udaljenog otklanjanja pogrešaka.
Otklanjanje pogrešaka i udaljeno izvršavanje
Za pokretanje aplikacije na cilju imate nekoliko opcija. tcf-agent Dobro funkcionira za pokretanje i otklanjanje pogrešaka iz Vita, pod uvjetom da je agent instaliran u rootfs-u (dodajte ga iz petalinux-config -c rootfs) i da nemate sukob verzija.
Alternativno, gdbserver Jednostavno je i robusno. Kopirate svoju binarnu datoteku na cilj, pokrenete `gdbserver :port ./yourapp` i povežete se s hosta koristeći gdb s više arhitektura. Mnogi timovi kombiniraju gdbserver s VS Code Remoteom ili sa skriptama iz Piton.
Kao način da se ide dalje od printf-a, pogledajte tehnike profiliranja i praćenja kernela. profiliranje i tragovi kernela Zynq zajednica podijelila je najbolje prakse za učinkovito otklanjanje pogrešaka koje će vam uštedjeti vrijeme kada greške nisu očite.
Nadogradite hardver bez ponovne izgradnje svega
Normalno je misliti da nas promjena u PL-u prisiljava da "preoblikujemo svijet", ali postoji prostor za manevar. sučelja vidljiva kernelu (adrese, IRQ-ovi, kompatibilnost), rootfs i sysroot obično ostaju aktivni. U tom slučaju možete reprogramirati PL i spremni ste.
Za brzo učitavanje bitstreamova, Linux nudi FPGA Manager framework. fpgautil ili sučelje sysfs/configfs za programiranje PL-a iz korisničkog prostora. To izbjegava regeneriranje cijelih slika i ubrzava logičke iteracije.
Ako promjena hardvera uvodi nove IP adrese ili mijenja raspone/IRQ-ove, onda da: obnavlja stablo uređaja i regenerira BOOT.BIN/image. Unatoč tome, koristi prednost predmemorije stanja kako kompilacija ne bi ponavljala već dovršene zadatke.
Savjeti za ubrzanje izgradnje i postizanje stabilnosti
Najbolji lijek protiv "obnove svega" je prestiž i red. Državno ogledalo i imenik descargas Dijeljeno za Yocto/PetaLinux; to izbjegava ponovno kompajliranje paketa koji se nisu promijenili. To čini veliku razliku na velikim sustavima i internim okruženjima.
Osigurajte ponovljivost: sidrene verzije Vivada/Vitisa/PetaLinuxa I dokumentirajte zakrpe. Ako je moguće, nemojte mijenjati verzije usred projekta osim ako se ne radi o potvrđenoj kritičnoj grešci. A prije prelaska na novu verziju, testirajte je na grani.
QEMU je tvoj saveznik. QEMU Pokrenite sliku u QEMU-u kako biste provjerili ispravno funkcioniraju li rootfs i kernel bez flashanja SD kartice. To ne zamjenjuje stvarni hardver, ali štedi cikluse pokretanja.
Nakon svega navedenog, slika više ne izgleda kao zagonetka. kompletna referentna distribucija (bootloader, kernel, rootfs i alati)Vivado definira fizičku mapu, a Vitis ubrzava aplikaciju i ciklus otklanjanja pogrešaka. Od tada, korištenje Device Tree-a, UIO-a ili upravljačkih programa čini razliku između "Pozdrav svijete" i robusne aplikacije koja besprijekorno koristi vaš hardver.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje pisanjem, a to je ono što ću učiniti na ovom blogu, pokazati vam sve najzanimljivije stvari o gadgetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se snađete u digitalnom svijetu na jednostavan i zabavan način.