RaspberryPi-LOGO

RaspberryPi KMS HDMI izhodni grafični gonilnik

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-PRODACT-IMG

Kolofon

2020-2023 Raspberry Pi Ltd (prej Raspberry Pi (Trading) Ltd.) Ta dokumentacija je licencirana pod licenco Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). datum gradnje: 2023-02-10 različica gradnje: githash: c65fe9c-clean

Pravno obvestilo o zavrnitvi odgovornosti

TEHNIČNE PODATKE IN PODATKE O ZANESLJIVOSTI ZA IZDELKE RASPBERRY PI (VKLJUČNO S PODATKOVNIMI LISTI), KI SO OBČASNO SPREMENJENI (»VIRI«), ZAGOTAVLJA RASPBERRY PI LTD (»RPL«) »KAKRŠNE SO« IN VSE IZRECNE ALI NAZNAČENE GARANCIJE, VKLJUČNO, VENDAR NE OMEJENO NAZNAČENA JAMSTVA ZA PRODAJO IN PRIMERNOST ZA DOLOČEN NAMEN SE ZAVRAČAJO. DO NAJVEČJEGA OBSEGA, KI GA DOVOLJUJE VELJAVNA ZAKONODAJA, RPL V NOBENEM PRIMERU NE ODGOVARJA ​​ZA KAKRŠNO KOLI NEPOSREDNO, POSREDNO, NAKLJUČNO, POSEBNO, EKSEMPLARNO ALI POSLEDIČNO ŠKODO (VKLJUČNO, VENDAR NE OMEJENO NA NABAVO NADOMESTNEGA BLAGA ALI STORITEV). ICES; IZGUBA UPORABE PODATKOV Ali dobiček ali poslovne prekinitve), ne glede na to TAKŠNE ŠKODE. RPL si pridržuje pravico do kakršnih koli izboljšav, izboljšav, popravkov ali kakršnih koli drugih sprememb VIROV ali katerih koli izdelkov, opisanih v njih, kadar koli in brez predhodnega obvestila. VIRI so namenjeni usposobljenim uporabnikom z ustrezno ravnjo oblikovalskega znanja. Uporabniki so izključno odgovorni za svojo izbiro in uporabo VIROV ter kakršno koli uporabo izdelkov, opisanih v njih. Uporabnik se strinja, da bo RPL odškodoval in odvezal odgovornost za vse obveznosti, stroške, škodo ali druge izgube, ki izhajajo iz njihove uporabe VIROV. RPL uporabnikom daje dovoljenje za uporabo VIROV izključno v povezavi z izdelki Raspberry Pi. Vsaka druga uporaba VIROV je prepovedana. Nobena licenca ni podeljena nobenemu drugemu RPL ali drugi pravici intelektualne lastnine tretjih oseb. VISOKO TVEGANE DEJAVNOSTI. Izdelki Raspberry Pi niso zasnovani, izdelani ali namenjeni za uporabo v nevarnih okoljih, ki zahtevajo varno delovanje, kot je delovanje jedrskih objektov, navigacijskih ali komunikacijskih sistemov letal, nadzor zračnega prometa, oborožitveni sistemi ali aplikacije, ki so kritične za varnost (vključno s podporo za življenje). sistemov in drugih medicinskih pripomočkov), pri katerih bi okvara izdelkov lahko povzročila neposredno smrt, telesne poškodbe ali resno fizično ali okoljsko škodo (»Dejavnosti z visokim tveganjem«). RPL izrecno zavrača vsako izrecno ali implicitno garancijo primernosti za dejavnosti z visokim tveganjem in ne prevzema nobene odgovornosti za uporabo ali vključitev izdelkov Raspberry Pi v dejavnosti z visokim tveganjem. Za izdelke Raspberry Pi veljajo standardni pogoji RPL. Določba VIROV s strani RPL ne razširja ali drugače spreminja standardnih pogojev RPL, vključno z, vendar ne omejeno na, zavrnitvami odgovornosti in jamstvi, izraženimi v njih.

Zgodovina različic dokumenta

RaspberryPi-KMS-HDMI-izhodni-grafični gonilnik-FIG-1

Obseg dokumenta

Ta dokument velja za naslednje izdelke Raspberry Pi

RaspberryPi-KMS-HDMI-izhodni-grafični gonilnik-FIG-2

Uvod

Z uvedbo grafičnega gonilnika KMS (Kernel Mode Setting) se Raspberry Pi Ltd odmika od podedovanega nadzora vdelane programske opreme video izhodnega sistema in se približuje bolj odprtokodnemu grafičnemu sistemu. Vendar je to prineslo svoje izzive. Ta dokument je namenjen pomoči pri kakršnih koli težavah, ki se lahko pojavijo pri prehodu na nov sistem. Ta bela knjiga predpostavlja, da Raspberry Pi uporablja Raspberry Pi OS in je popolnoma posodobljen z najnovejšo vdelano programsko opremo in jedri.

Terminologija

DRM-ji: Direct Rendering Manager, podsistem jedra Linuxa, ki se uporablja za komunikacijo z grafičnimi procesnimi enotami (GPE). Uporablja se v sodelovanju s FKMS in KMS.
DVI: Predhodnik HDMI, vendar brez zvočnih zmogljivosti. Na voljo so kabli in adapterji HDMI v DVI za povezavo naprave Raspberry Pi z zaslonom, opremljenim z DVI.
EDID: Razširjeni identifikacijski podatki zaslona. Format metapodatkov za prikazovalne naprave za opis njihovih zmogljivosti video viru. Struktura podatkov EDID vključuje ime proizvajalca in serijsko številko, vrsto izdelka, fizično velikost zaslona in čase, ki jih podpira zaslon, skupaj z nekaterimi manj uporabnimi podatki. Nekateri zasloni imajo lahko okvarjene bloke EDID, kar lahko povzroči težave, če zaslonski sistem teh napak ne obravnava.
FKMS (vc4-fkms-v3d): Lažna nastavitev načina jedra. Čeprav vdelana programska oprema še vedno nadzoruje strojno opremo nizke ravni (nprample, vrata HDMI (High-Definition Multimedia Interface), Display Serial Interface (DSI) itd., standardne knjižnice Linuxa se uporabljajo v samem jedru. FKMS se privzeto uporablja v Busterju, vendar je zdaj opuščen v korist KMS v Bullseyeju.
HDMI: Multimedijski vmesnik visoke ločljivosti je lastniški avdio/video vmesnik za prenos nestisnjenih video podatkov ter stisnjenih ali nestisnjenih digitalnih avdio podatkov.
HPD: Hotplug detekcija. Fizična žica, ki jo uveljavlja povezana prikazovalna naprava, da pokaže, da je prisotna.
KMS: Nastavitev načina jedra; glej https://www.kernel.org/doc/html/latest/gpu/drm-kms.html za več podrobnosti. Na Raspberry Pi je vc4-kms-v3d gonilnik, ki implementira KMS in se pogosto imenuje "gonilnik KMS". Podedovani grafični sklad: grafični sklad, ki je v celoti implementiran v blob vdelane programske opreme VideoCore, ki ga razkriva gonilnik okvirnega medpomnilnika Linux. Starejši grafični sklad je bil do nedavnega uporabljen v večini naprav Raspberry Pi Ltd; zdaj ga postopoma nadomešča (F)KMS/DRM.

Sistem HDMI in grafični gonilniki

Naprave Raspberry Pi za video izhod uporabljajo standard HDMI, ki je zelo pogost na sodobnih LCD monitorjih in televizorjih. Raspberry Pi 3 (vključno z Raspberry Pi 3B+) in starejše naprave imajo eno samo vrata HDMI, ki omogoča izhod 1920 × 1200 pri 60 Hz z uporabo priključka HDMI polne velikosti. Raspberry Pi 4 ima dva mikro priključka HDMI in omogoča izhod 4K na obeh vratih. Odvisno od nastavitve so vrata HDMI 0 na Raspberry Pi 4 zmožna do 4kp60, vendar ste pri uporabi dveh izhodnih naprav 4K omejeni na p30 na obeh napravah. Sklad grafične programske opreme, ne glede na različico, je odgovoren za preverjanje lastnosti priključenih naprav HDMI in ustrezno nastavitev sistema HDMI. Podedovani in skladi FKMS uporabljajo vdelano programsko opremo v grafičnem procesorju VideoCore za preverjanje prisotnosti in lastnosti HDMI. Nasprotno KMS uporablja popolnoma odprtokodno izvedbo na strani ARM. To pomeni, da sta kodni osnovi za oba sistema popolnoma različni in v nekaterih okoliščinah lahko to povzroči različno vedenje med obema pristopoma. Naprave HDMI in DVI se identificirajo z izvorno napravo z delom metapodatkov, imenovanim blok EDID. To prebere izvorna naprava iz prikazovalne naprave prek povezave I2C in to je popolnoma pregledno za končnega uporabnika, saj to počne grafični sklad. Blok EDID vsebuje veliko informacij, vendar se uporablja predvsem za določanje, katere ločljivosti zaslon podpira, tako da lahko Raspberry Pi nastavite za izpis ustrezne ločljivosti.

Kako se obravnava HDMI med zagonom

Ob prvem vklopu gre Raspberry Pi skozi številne stages, znan kot boot stages:

  1. Prvi-stage, zagonski nalagalnik na osnovi ROM-a zažene VideoCore GPE.
  2. Drugi-stage zagonski nalagalnik (to je bootcode.bin na kartici SD v napravah pred Raspberry Pi 4 in v SPI EEPROM na Raspberry Pi 4):
    1. Na Raspberry Pi 4, drugi-stagZagonski nalagalnik bo zagnal sistem HDMI, vprašal zaslon za možne načine in nato ustrezno nastavil zaslon. Na tej točki se zaslon uporablja za zagotavljanje osnovnih diagnostičnih podatkov.
    2. Diagnostični zaslon zagonskega nalagalnika (od 07. decembra 2022 dalje) bo prikazal status vseh priključenih zaslonov (ali je prisoten Hotplug Detect (HPD) in ali je bil na zaslonu obnovljen blok EDID).
  3. Vdelana programska oprema VideoCore (start.elf) se naloži in zažene. To bo prevzelo nadzor nad sistemom HDMI, prebralo blok EDID z vseh priključenih zaslonov in prikazalo mavrični zaslon na teh zaslonih.
  4. Jedro Linuxa se zažene
    1. Med zagonom jedra bo KMS prevzel nadzor nad sistemom HDMI iz vdelane programske opreme. Še enkrat se blok EDID prebere z vseh priključenih zaslonov in te informacije se uporabijo za nastavitev konzole in namizja Linux.

Možne težave in simptomi

Najpogostejši simptom okvare, ki se pojavi pri prehodu na KMS, je prvotno dober zagon, pri čemer se prikaže zaslon zagonskega nalagalnika in nato mavrični zaslon, ki mu po nekaj sekundah sledi zaslon, ki postane črn in se ne vklopi več. Točka, ko zaslon postane črn, je pravzaprav točka med postopkom zagona jedra, ko gonilnik KMS prevzame zagon zaslona iz vdelane programske opreme. Raspberry Pi trenutno deluje v vseh pogledih, razen za izhod HDMI, tako da če je SSH omogočen, bi se morali v napravo prijaviti po tej poti. Zelena lučka LED za dostop do kartice SD običajno občasno utripa. Možno je tudi, da sploh ne boste videli izhoda HDMI; brez prikaza zagonskega nalagalnika in brez mavričnega zaslona. To je običajno mogoče pripisati napaki strojne opreme.

Diagnosticiranje napake

Sploh ni HDMI izhoda
Možno je, da se naprava sploh ni zagnala, vendar to ni v pristojnosti te bele knjige. Ob predpostavki, da je opaženo vedenje težava z zaslonom, je pomanjkanje izhoda HDMI med katerim koli delom postopka zagona običajno posledica napake strojne opreme. Obstaja več možnih možnosti:

  • Pokvarjen kabel HDMI
  • Poskusi z novim kablom. Nekateri kabli, še posebej zelo poceni, morda ne vsebujejo vseh potrebnih komunikacijskih linij (npr. hotplug), da Raspberry Pi uspešno zazna zaslon.
  • Okvarjena vrata HDMI na Raspberry Pi
  • Če uporabljate Raspberry Pi 4, poskusite z drugimi vrati HDMI.
  • Okvarjena vrata HDMI na monitorju
  • Včasih se lahko vrata HDMI na monitorju ali televizorju obrabijo. Poskusite z drugimi vrati, če jih naprava ima.
  • Redko lahko prikazovalna naprava zagotovi podatke EDID le, ko je vklopljena ali ko so izbrana pravilna vrata. Za preverjanje se prepričajte, da je naprava vklopljena in da so izbrana pravilna vhodna vrata.
  • Prikazovalna naprava ne uveljavlja linije za zaznavanje vroče vtičnice

Začetni izpis, nato zaslon postane črn
Če se zaslon pojavi, a nato med zagonom jedra Linuxa ugasne, obstaja več možnih vzrokov in ti so običajno povezani s težavo pri branju EDID iz prikazovalne naprave. Kot je razvidno iz zgornjega razdelka, ki obravnava zagonsko zaporedje, se EDID med postopkom zagona bere na več različnih točkah in vsako od teh branj opravi drugačna programska oprema. Končno branje, ko KMS prevzame, izvede nespremenjena predhodna koda jedra Linuxa in to ne obravnava okvarjenih formatov EDID tako dobro kot prejšnja programska oprema vdelane programske opreme. Zato lahko zaslon preneha delovati pravilno, ko KMS prevzame nadzor. Obstaja več načinov za potrditev, ali KMS ne uspe prebrati EDID, in dva od teh sta naslednja.
Preverite diagnostični zaslon zagonskega nalagalnika (samo Raspberry Pi 4)

OPOMBA
Diagnostika zagonskega nalagalnika zahteva najnovejši zagonski nalagalnik. Po teh navodilih lahko nadgradite na najnovejšo različico: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Odstranite kartico SD in ponovno zaženite Raspberry Pi. Pritisnite ESC na zaslonu za namestitev operacijskega sistema in diagnostični zaslon bi se moral prikazati na prikazovalniku. Na zaslonu mora biti vrstica, ki se začne z display: — nprample:

  • zaslon: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=ni #0

Ta izhod iz Raspberry Pi 4 kaže, da je sistem zaznal zaslon HDMI na vratih HDMI 0, uveljavljeno je zaznavanje vroče vtičnice in EDID je bil prebran v redu. Na vratih HDMI 1 ni bilo najdenega ničesar.

Preverite, ali je sistem KMS zaznal EDID
Če želite to preveriti, se boste morali prijaviti v napravo Raspberry Pi prek SSH iz drugega računalnika. SSH je mogoče omogočiti pri ustvarjanju slike kartice SD z Raspberry Pi Imager z uporabo možnosti naprednih nastavitev. Omogočanje SSH na kartici SD, ki je že posneta, je nekoliko bolj zapleteno: za dodajanje boste morali uporabiti drug računalnik file z imenom ssh na zagonsko particijo. Zamenjajte kartico SD v originalnem Raspberry Pi in ga vklopite. To bi moralo omogočiti SSH z naslovom IP, ki ga dodeli DHCP. Ko ste prijavljeni, v poziv terminala vnesite naslednje, da prikažete vsebino katerega koli zaznanega EDID (morda boste morali spremeniti HDMI-A-1 v HDMI-A-2, odvisno od tega, na katera vrata HDMI na Raspberry Pi je priključena prikazovalna naprava do): cat /sys/class/drm/card?-HDMI-A-1/edid Če ni map z imenom card?-HDMI-A-1 ali podobnim, je verjetno, da z zaslona ni mogoče prebrati nobenega EDID-ja napravo.

OPOMBA
V primeru, da je EDID uspešno prebran, obstaja uporabna virtualna file v isti mapi, imenovani načini, ki ob prikazu prikazuje vse možne načine, za katere EDID trdi, da jih naprava podpira.

Omilitve

Napaka zaznavanja vroče vtičnice Če vdelana programska oprema in KMS ne najdeta priključenega monitorja, gre lahko za napako pri zaznavi vroče vtičnice — tj. Raspberry Pi ne ve, da je bila naprava priključena, zato ne preveri EDID. To je lahko posledica slabega kabla ali prikazovalne naprave, ki ne izvaja pravilno vroče priključitve. Zaznavanje hotplug lahko vsilite tako, da spremenite ukazno vrstico jedra file (cmdline.txt), ki je shranjen v zagonski particiji SD kartice Raspberry Pi OS. To lahko urejate file v drugem sistemu z uporabo urejevalnika, ki vam je ljubši. Na konec cmdline.txt dodajte naslednje file: video=HDMI-A-1:1280×720@60D Če uporabljate druga vrata HDMI, zamenjajte HDMI-A-1 s HDMI-A-2. Določite lahko tudi drugačno ločljivost in hitrost sličic, vendar se prepričajte, da ste izbrali tiste, ki jih podpira prikazovalna naprava.

OPOMBA
Dokumentacijo o nastavitvah ukazne vrstice jedra za video lahko najdete tukaj: https://www.kernel.org/doc/Documentation/fb/modedb.txt

OPOZORILO
Starejši grafični skladi so podpirali uporabo vnosa config.txt za nastavitev zaznavanja hotplug, vendar v času pisanja to ne deluje s KMS. Morda bo podprt v prihodnjih izdajah vdelane programske opreme. Vnos v config.txt je hdmi_force_hotplug in lahko določite posebna vrata HDMI, za katera velja hotplug, z uporabo hdmi_force_hotplug:0=1 ali hdmi_force_hotplug:1=1. Upoštevajte, da se nomenklatura za KMS nanaša na vrata HDMI kot 1 in 2, medtem ko Raspberry Pi uporablja 0 in 1.

Težave z EDID
Manjšina prikazovalnih naprav ne more vrniti EDID, če so izklopljene ali ko je izbran napačen AV vhod. To je lahko težava, če sta Raspberry Pi in zaslonske naprave na istem razdelilniku in se naprava Raspberry Pi zažene hitreje kot zaslon. Pri napravah, kot je ta, boste morda morali ročno vnesti EDID. Še bolj nenavadno je, da imajo nekatere prikazovalne naprave bloke EDID, ki so slabo formatirani in jih sistem KMS EDID ne more razčleniti. V teh okoliščinah je mogoče prebrati EDID iz naprave s podobno ločljivostjo in jo uporabiti. V obeh primerih naslednja navodila določajo, kako prebrati EDID iz prikazovalne naprave in konfigurirati KMS za njegovo uporabo, namesto da KMS poskuša neposredno zaslišati napravo.

Kopiranje EDID v a file
Ustvarjanje a file Vsebovanje metapodatkov EDID iz nič običajno ni izvedljivo, uporaba obstoječega pa je veliko lažja. Na splošno je mogoče pridobiti EDID iz prikazovalne naprave in ga shraniti na SD kartico Raspberry Pi, tako da ga lahko uporablja KMS namesto pridobivanja EDID iz prikazovalne naprave. Najlažja možnost tukaj je zagotoviti, da je prikazovalna naprava pripravljena in delujoča ter na pravilnem vhodu AV in da je Raspberry Pi pravilno zagnal sistem HDMI. Iz terminala lahko zdaj kopirate EDID v a file z naslednjim ukazom: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Če iz nekega razloga EDID ni prisoten, lahko napravo zaženete v -KMS način, ki se uspe zagnati z namizja ali konzole, nato kopirajte EDID, ki ga bo vdelana programska oprema (upajmo) uspešno prebrala v file.

  1. Zagon v starejšem grafičnem načinu.
    1. Uredite config.txt na zagonski particiji, pri čemer pazite, da zaženete urejevalnik s sudo, in spremenite vrstico, ki pravi dtoverlay=vc4-kms-v3d v #dtoverlay=vc4-kms-v3d.
    2. Znova zaženite.
  2. Zdaj bi se moralo prikazati namizje ali prijavna konzola.
    1. S terminalom kopirajte EDID iz priključene prikazovalne naprave v a file z naslednjim ukazom:
  • tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/

Uporaba a fileEDID, ki temelji na EDID, namesto da bi zasliševal prikazovalno napravo. Uredite /boot/cmdline.txt, pri čemer pazite, da zaženete urejevalnik s sudo, in v ukazno vrstico jedra dodajte naslednje: drm.edid_firmware=myedid.dat EDID lahko uporabite za posebna vrata HDMI, kot sledi: drm.edid_firmware=HDMI-A-1:myedid.dat Po potrebi se znova zaženite v načinu KMS, tako da naredite naslednje:

  1. Uredite config.txt v zagonski particiji, pazite, da zaženete urejevalnik s sudo, in spremenite vrstico, ki pravi #dtoverlay=vc4-kms-v3d v dtoverlay=vc4-kms-v3d.
  2. Znova zaženite.

OPOMBA
Če uporabljate a file-temelji na EDID, vendar imate še vedno težave z vročo priključitvijo, lahko vsilite zaznavanje vroče priključitve tako, da v ukazno vrstico jedra dodate naslednje: video=HDMI-A-1:D.

Dokumenti / Viri

RaspberryPi KMS HDMI izhodni grafični gonilnik [pdfUporabniški priročnik
KMS, HDMI izhodni grafični gonilnik, KMS HDMI izhod, grafični gonilnik, KMS HDMI izhodni grafični gonilnik, gonilnik

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *