Programiranje i trajno pokretanje

Postoje dva različita cilja programiranja:

Na Windowsu pokrenite korake naredbenog retka na ovoj stranici iz WSL/Ubuntu Basha, osim ako je izričito navedeno drukčije. Preglednik i postavljanje Windows USB upravljačkih programa i dalje se odvijaju na Windows strani; pokretanje priloženog Windows .exe iz WSL-a ne čini PowerShell ili cmd.exe projektnom build ljuskom.

Privremeno učitavanje FPGA-a

Uobičajena naredba za nestabilno programiranje FPGA-a idealna je pri ispitivanju novog bitstreama. Odmah konfigurira ECP5, ali se konfiguracija gubi kada se ukloni napajanje.

Za ULX3S, preglednički FPGA WebUSB flasher može izvršiti ovo privremeno učitavanje izravno iz datoteke .bit ili kompatibilne .svf datoteke putem US1. Preglednik ispituje fizički ECP5 JTAG ID, provjerava da .bit datoteka cilja istu FPGA inačicu, izvršava Project Trellis slijed za programiranje SRAM-a i odmah pokreće novu sliku.

WebUSB flasher ne mijenja trajni SPI flash. Na Windowsu izravan pristup FT231X-u zahtijeva upravljački program WinUSB. Isti WinUSB binding potvrđeno radi i s projektnim ULX3S OpenOCD/GDB putem, pa tijek rada za otklanjanje pogrešaka sam po sebi ne zahtijeva prebacivanje na libusbK. Prije promjene USB bindinga pogledajte matricu kompatibilnosti upravljačkih programa u vodiču za flasher.

Trajna FPGA konfiguracija

Za samostalnu instalaciju upišite provjereni FPGA bitstream u konfiguracijski SPI flash na ULX3S-u. Pri sljedećem uključivanju ECP5 se sam konfigurira iz flash memorije.

Predviđeni samostalni slijed jest:

  1. ECP5 se konfigurira iz SPI flasha.

  2. Block RAM se inicijalizira slikom rezidentnog Hazard3 monitora.

  3. Hazard3 se pokreće bez računala domaćina.

  4. Monitor inicijalizira SDRAM i micro-SD sučelje.

  5. DOOM.IMG i DOOM.WAD čitaju se sa SD kartice.

  6. Doom se pokreće na HDMI-ju.

ULX4M-LD: privremeno učitavanje FPGA-a

Kada je Tigard spojen na ULX4M-LD JTAG, openFPGALoader može novu ECP5 konfiguraciju učitati izravno u SRAM bez zamjene trajne korisničke slike:

./bin/openFPGALoader.exe \
    -c tigard \
    ./build/fpga_ulx4m_ld.bit

Ovo je privremeno učitavanje. Isključivanje napajanja ili ponovna konfiguracija FPGA-a uklanja ga, pa je prikladno za provjeru kandidata prije trajnog upisa.

ULX4M-LD: trajno DFU programiranje

ULX4M-LD koristi svoj Micro-B USB DFU bootloader za pohranu trajnog korisničkog bitstreama u SPI flash. Ta korisnička slika ostaje sačuvana nakon isključivanja napajanja. Windows DFU uređaj obično vidi kao VID:PID 1d50:614b uz WinUSB. Ta USB veza odvojena je od vanjskog Tigard JTAG/UART adaptera.

Važno

Uobičajeno Hazard3-Doom programiranje ažurira korisnički bitstream, a ne sam DFU bootloader. Zamjena bootloadera vrlo je neuobičajena i treba biti rezervirana za razvoj bootloadera ili oporavak nedostajućeg/oštećenog bootloadera. Za taj odvojeni postupak i oporavak pogledajte Rad DFU bootloadera i oporavak.

Za ulazak u provjereni DFU način oporavka/programiranja:

  1. Isključite napajanje.

  2. Držite PCB BTN3 (neke verzije pločice mogu koristiti druge tipke!).

  3. Spojite ULX4M Micro-B USB kabel.

  4. Pričekajte da se enumerira VID:PID 1d50:614b, zatim otpustite BTN3.

BTN3 je potreban samo za odabir DFU-a pri pokretanju; ne treba ga držati tijekom prijenosa. Kada priložene Windows izvršne datoteke pokrećete izravno iz WSL-a, upotrijebite chmod +x ./bin/openFPGALoader.exe ./bin/dfu-util.exe ako Bash prijavi Permission denied.

Provjerena naredba za programiranje je:

./bin/openFPGALoader.exe --dfu \
    --vid 0x1d50 --pid 0x614b --altsetting 0 \
    ./build/fpga_ulx4m_ld.bit

DFU alternativna postavka 0 područje je korisničkog bitstreama; ULX4M bootloader čuva vlastito zaštićeno područje ispod regije korisničke slike. Tijekom početnog puštanja u rad ispravno zapisana slika nije se počela izvršavati dok bootloaderu nije izričito naređeno da napusti DFU. Upotrijebite:

./bin/dfu-util.exe -a 0 -e

Ova naredba -e ne preuzima niti briše FPGA podatke. Ona traži prijelaz bootloadera koji pokreće već pohranjenu korisničku sliku. Provjerena sekvenca dala je UART izlaz odmah nakon -e.

Ta je razlika važna pri dijagnostici. Ako je ECP5 IDCODE vidljiv preko Tigarda, ali UART šuti i OpenOCD prijavljuje dtmcontrol is 0, provjerite je li pločica još u DFU-u prije mijenjanja JTAG ožičenja ili Hazard3 RTL-a. Pogledajte JTAG debugiranje.

Trajno hladno pokretanje zaseban je korak kvalifikacije od „DFU zapis + odmah izvrši”. Najprije provjerite kandidata pomoću dfu-util -a 0 -e i DDR testova kvalifikacije, a zatim normalno ponašanje pločice nakon uključivanja napajanja. Sam uspješan DFU prijenos nije dokaz da je hladno pokretanje kvalificirano.

ULX4M-LD kvalificirana kontrolna slika

Trenutačno hardverski kvalificirana razvojna kontrolna točka je seed-2 routing s Hazard3 na 40 MHz i LiteDRAM na 60 MHz, dokumentiran u Profili pločica. SHA256 lokalno testiranog bitstreama bio je:

294602982dfc4a9906961f2e8b6f43de925d8c11a7e5e6bb0f5e392965a868de

Nakon programiranja i izlaska iz DFU-a upotrijebite s u monitoru kako biste potvrdili da je LiteDRAM spreman, zatim pokrenite q prije nego novu generiranu sliku smatrate DDR-kvalificiranom zamjenom.

Upozorenje

Provjerite bitstream prije nego ga postavite kao uobičajenu samostalnu sliku. Za ULX4M-LD to uključuje i statički timing i stvarne DDR testove; sam nextpnr PASS nije dovoljan.

Za sadržaj SD kartice i dijagnostiku pokretanja pogledajte Hladno pokretanje s micro-SD kartice.

Reference implementacije