I2CDriver HDMI sučelje
Hazard3-Doom uključuje interaktivno I2C dijagnostičko sučelje nadahnuto I2CDriverom Jamesa Bowmana. Izvorni I2CDriver firmware napisan je u MyForthu. Hazard3-Doom ponovno koristi postojeći FPGA SAO I2C kontroler projekta za transakcije na sabirnici i prikazuje sučelje u stilu I2CDrivera preko postojećeg 320x200 indeksiranog HDMI puta.
Značajku prvenstveno implementiraju:
src/i2cdriver_hdmi.c
src/i2cdriver_hdmi.h
src/sao_console.c
Rezidentni monitor mora se ponovno izgraditi i učitati nakon promjene tih datoteka. Za softverske promjene I2CDriver HDMI-ja nije potrebna ponovna sinteza FPGA-a sve dok aktivni bitstream već pruža kompatibilni SAO most i izravno indeksirano HDMI sučelje.
Pokretanje sučelja
Najprije se vratite u rezidentni monitor. Ako Doom radi, pritisnite Ctrl-X.
Zatim unesite jednu od naredbi:
i2c gui
ili:
sao gui
Uspješno pokretanje ispisuje:
Starting I2CDriver HDMI...
I2CDriver HDMI active. S scan, P probe, R read, W write, X recover, 1/4 speed, C clear, Q exit.
HDMI prikaz prelazi na zaslon Hazard3 I2CDrivera. Dok je sučelje aktivno, UART tipke upravljaju HDMI aplikacijom umjesto uobičajenim naredbenim retkom monitora.
Kontrole
Tipka |
Operacija |
Opis |
|---|---|---|
|
Skeniranje |
Ispituje uobičajene 7-bitne I2C adrese od |
|
Ispitivanje |
Traži jednu 7-bitnu heksadecimalnu adresu i provjerava vraća li ACK. |
|
Čitanje registra |
Traži adresu uređaja i 8-bitni registar, zatim izvodi čitanje jednog bajta registra uz ponovljeni START. |
|
Pisanje registra |
Traži adresu uređaja, 8-bitni registar i jedan podatkovni bajt, zatim zapisuje taj registar. |
|
Oporavak |
Pokreće operaciju oporavka sabirnice u FPGA SAO mostu. Upotrijebite je kada SDA/SCL ili ciljni uređaj izgledaju zaglavljeni. |
|
100 kHz |
Odabire uobičajenu I2C brzinu sabirnice od 100 kHz. |
|
400 kHz |
Odabire fast-mode postavku. Uz Hazard3 sistemski takt od 50 MHz, cjelobrojni djelitelj daje približno 403 kHz. |
|
Brisanje |
Briše toplinsku kartu, povijest transakcija i logički trag. Time se ne resetira priključeni I2C uređaj. |
|
Izlaz |
Vraća upravljanje UART-om rezidentnom monitoru i vraća SAO sabirnicu na 100 kHz. |
|
Izlaz |
Alternativna tipka za izlaz dok je GUI aktivan. |
|
Odustani/izlaz |
Odustaje od upita za operand. Kada nema aktivnog upita, |
Heksadecimalni upiti
P, R i W prikupljaju heksadecimalne operande izravno u HDMI
korisničkom sučelju. Nemojte unositi prefiks 0x.
Ispitivanje adrese 0x54:
P
54
Enter
Čitanje registra 0x00 s uređaja 0x54:
R
5400
Enter
Pisanje vrijednosti 0x80 u registar 0x04 na uređaju 0x54:
W
540480
Enter
Tijekom unosa operanada Backspace/Delete uređuje unos, Enter izvršava potpunu naredbu, a Esc je poništava.
Upozorenje
W mijenja stanje priključenog uređaja. Prije pisanja pogledajte
dokumentaciju registara ciljnog uređaja. Čitanje također može imati nuspojave
na uređajima s registrima tipa read-to-clear ili FIFO.
Toplinska karta adresa
Toplinska karta vizualno pokriva cijeli 7-bitni adresni prostor, ali uobičajeni
raspon skeniranja je od 0x08 do 0x77. Adrese izvan tog raspona rezervirane
su ili na drugi način neprikladne za uobičajeno skeniranje.
Adresa koja vrati ACK dobiva maksimalnu toplinu koja zatim postupno blijedi. Tako su nedavno aktivni uređaji uočljivi bez trajnog označavanja zastarjelih odgovora.
Uređaj izvan raspona skeniranja i dalje se može izričito ispitati ako to dopušta
osnovni SAO probe API. Nemojte pretpostaviti da će se uređaj na rezerviranoj
adresi pojaviti u rezultatima skeniranja S.
Dnevnik transakcija
Dnevnik transakcija na desnoj strani bilježi nedavne GUI operacije, uključujući
ispitivanje, čitanje, pisanje, oporavak, skeniranje i promjenu brzine. Dnevnik je
lokalno dijagnostičko stanje; C ga briše bez promjene priključenog uređaja.
Logički trag
Donji HDMI panel prikazuje SDA i SCL kao logički trag transakcije. Taj trag sintetiziran je iz transakcija koje Hazard3 pokrene preko SAO mosta. Koristan je za vizualizaciju strukture protokola, primjerice:
START
address + WRITE ACK
register ACK
repeated START
address + READ ACK
data master NACK
STOP
Za skeniranje S trenutačna implementacija zadržava trag ispitivanja posljednje
adrese koja je vratila ACK. Ako jedan uređaj odgovori na 0x54, zadržani trag
skeniranja prikazuje START, adresni bajt 0xA8 s ACK-om i STOP.
Trag nije električno snimanje bridova SDA/SCL-a. API SAO-a visoke razine također javlja ukupni rezultat transakcije, a ne točnu fazu bajta koja je uzrokovala NACK, pa neuspjeli višebajtni logički trag ne može uvijek odrediti točnu ACK poziciju koja je zakazala.
Stanje pasivnog snimanja
Izvorni I2CDriver ima vremenski osjetljivu implementaciju pasivnog snimanja u
firmware/capture.fs. Hazard3-Doom trenutačno ne implementira odgovarajući
pasivni sniffer u softveru.
Pravi pasivni analizator trebao bi biti implementiran kao FPGA logika koja uzorkuje SDA i SCL neovisno o Hazard3 CPU-u i smješta dekodirane događaje/vremenske oznake u FIFO. HDMI C sučelje zatim može prikazati te snimljene podatke. Dok takav FIFO ne postoji, podnožje namjerno opisuje prikaz kao inicirani promet, a ne kao pasivno snimanje.
Oporavak sabirnice
X poziva postojeću operaciju oporavka SAO mosta umjesto ručnog bit-banganja
SDA/SCL-a iz C-a. Tako električno vremensko upravljanje i vlasništvo ostaju u
FPGA kontroleru sabirnice.
Upotrijebite oporavak kada je uređaj prekinut usred transakcije, SDA ostane nisko ili sabirnica prestane odgovarati nakon priključivanja dok je sustav uključen. Ispravna sabirnica obično ne zahtijeva oporavak.
HDMI prikaz
Sučelje iscrtava indeksirani okvir 320x200 i prenosi ga u neaktivni interni EBR framebuffer putem izravnog HDMI registarskog puta. Softver odabire banku suprotnu aktivnom internom framebufferu, a zatim traži zamjenu tijekom vertical blankinga. To je isti koncept dvostrukog međuspremnika koji koristi brzi Doom prikazni put.
Izlazak iz GUI-ja ne rekonstruira okvir koji je bio vidljiv prije ulaska. Posljednji okvir analizatora može ostati na HDMI-ju sve dok Doom ili druga video-operacija monitora ne prikaže novi okvir. UART naredbeni redak monitora mjerodavan je znak da je GUI završen.
Web Serial snimka zaslona
Web Serial konzola u pregledniku može snimiti trenutačni I2CDriver HDMI zaslon kada aktivni GUI implementira dogovor o mogućnosti snimke zaslona. GUI presreće rezervirane kontrolne bajtove prije uobičajene obrade tipki/upita, pa se zahtjev za zaslonom ne tumači kao I2C naredba.
Trenutačni izvori snimke zaslona mogu se serijalizirati kao 320x200 ili
400x240. Svaki H3SNIP1 piksel je 8-bitni indeks palete. Najprije se šalje
16 stavki GUI palete, a preostale stavke palete su nula.
Pogledajte Web Serial konzola i HDMI snimka zaslona za točan upit sposobnosti 0x1c, 0x06 ACK,
zahtjev za snimanje 0x1d, veličine payloada, RGB332 format, ponašanje timeouta
i rekonstrukciju PNG-a.
Tijek izgradnje i ispitivanja
Za softverske promjene implementacije I2CDriver HDMI-ja:
./scripts/build.sh
./scripts/load-firmware.sh ./build/hazard3-boot-monitor.elf
Prije ispitivanja GUI-ja potvrdite uobičajeni SAO put:
sao info
sao scan
i2c gui
Koristan slijed provjere unutar GUI-ja je:
S
P 54 Enter
4
S
1
Q
Zamijenite 54 poznatim uređajem na priključenoj SAO sabirnici.
Ako se i2c gui prijavi kao nepoznata naredba, pločica pokreće stariji
rezidentni monitor čak i ako noviji ELF monitora postoji na disku. Ponovno
izgradite i učitajte build/hazard3-boot-monitor.elf prije otklanjanja
poteškoća u samom GUI-ju.
Odnos prema izvornom I2CDriveru
Ova značajka prenosi koristan model interakcije umjesto prevođenja svake hardverski specifične funkcije iz originalne pločice. Verzija Hazard3-Dooma trenutačno obuhvaća aktivno master skeniranje, ispitivanje, jednobajtno čitanje i pisanje registara, toplinsku aktivnost, povijest transakcija, logičke tragove, oporavak sabirnice i odabir 100/400 kHz.
Hardverski specifična analogna mjerenja izvornog I2CDrivera, hardver s preklopivim pull-up otpornicima, binarni host protokol i pravo pasivno snimanje nisu implicitno dostupni kroz ovo C sučelje.
I2CDriver se distribuira pod BSD 3-Clause licencom. Sačuvajte materijale projekta za atribuciju/licenciranje trećih strana pri kopiranju ili redistribuciji koda izvedenog iz njega.