RaspberryPi-LOGO

RaspberryPi KMS HDMI-lähtögrafiikkaohjain

RaspberryPi-KMS-HDMI-lähtö-Grafiikka-ohjain-TUOTTE-IMG

Colophon

2020-2023 Raspberry Pi Ltd (aiemmin Raspberry Pi (Trading) Ltd.) Tämä dokumentaatio on lisensoitu Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) -lisenssillä. rakennuspäivämäärä: 2023-02-10 rakennusversio: githash: c65fe9c-clean

Oikeudellinen vastuuvapauslauseke

RASPBERRY PI LTD ("RPL") TOIMITTAA RASPBERRY PI LTD ("RPL") "SELLAISENAAN" TEKNISET JA LUOTETTAVUUSTIEDOT RASPBERRY PI -TUOTTEISTA (TUOTTEET MUKAAN MUKAAN MUKAAN MUKAAN TUOTTEELLE) MUUTTAMISEENA ("RESURSSIT") TOTEUTTAVAT OLETETUT TAKUUT MYYNTIKELPOISUUDESTA JA TIETTYYN TARKOITUKSEEN SOVELTUVUUDESTA. SOVELLETTAVAN LAIN SALLITTAMAAN SUURIMMAAN RPL EI MISSÄÄN TAPAUKSESSA OLE VASTUUSSA MISTÄÄN SUORISTA, EPÄSUORISTA, SATUNNAISISTA, ESIMERKKEISTÄ TAI VÄLILLISISTÄ VAHINGOISTA (MUKAAN LUKIEN, MUUTTA EI RAJOITETTUA PALVELUN KÄYTTÖÄ; , TIEDOT Tai voitot; SELLAISISTA VAHINGOISTA. RPL varaa oikeuden tehdä parannuksia, parannuksia, korjauksia tai muita muutoksia RESURSSeihin tai niissä kuvattuihin tuotteisiin milloin tahansa ja ilman erillistä ilmoitusta. RESURSSIT on tarkoitettu ammattitaitoisille käyttäjille, joilla on sopiva suunnitteluosaaminen. Käyttäjät ovat yksin vastuussa RESURSSIEN valinnasta ja käytöstä sekä niissä kuvattujen tuotteiden käytöstä. Käyttäjä sitoutuu korvaamaan ja pitämään RPL:n vastuuttomana kaikista vastuista, kustannuksista, vahingoista tai muista menetyksistä, jotka johtuvat hänen RESURSSIEN käytöstä. RPL antaa käyttäjille luvan käyttää RESURSSEJA ainoastaan ​​Raspberry Pi -tuotteiden yhteydessä. Kaikki muu RESURSSIEN käyttö on kiellettyä. Mitään lisenssiä ei myönnetä muille RPL:lle tai muille kolmannen osapuolen immateriaalioikeuksille. KORKEAN RISKIN TOIMINTA. Raspberry Pi -tuotteita ei ole suunniteltu, valmistettu tai tarkoitettu käytettäviksi vaarallisissa ympäristöissä, jotka edellyttävät vikaturvallista toimintaa, kuten ydinlaitosten, lentokoneiden navigointi- tai viestintäjärjestelmien, lennonjohdon, asejärjestelmien tai turvallisuuden kannalta kriittisten sovellusten (mukaan lukien elämän ylläpitäminen) toiminnassa. järjestelmät ja muut lääkinnälliset laitteet), joissa tuotteiden vikaantuminen voi johtaa suoraan kuolemaan, henkilövahinkoon tai vakaviin fyysisiin tai ympäristövahinkoihin ("korkean riskin toiminnot"). RPL kiistää nimenomaisesti kaikki nimenomaiset tai epäsuorat takuut soveltuvuudesta suuren riskin toimintaan eikä ota vastuuta Raspberry Pi -tuotteiden käytöstä tai sisällyttämisestä suuren riskin toimintaan. Raspberry Pi -tuotteet toimitetaan RPL:n vakioehtojen alaisina. RPL:n tarjoamat RESURSSIT eivät laajenna tai muutoin muuta RPL:n vakioehtoja, mukaan lukien, mutta ei rajoittuen, niissä ilmaistut vastuuvapauslausekkeet ja takuut.

Asiakirjan versiohistoria

RaspberryPi-KMS-HDMI-lähtö-grafiikka-ohjain-KUVA-1

Asiakirjan laajuus

Tämä asiakirja koskee seuraavia Raspberry Pi -tuotteita

RaspberryPi-KMS-HDMI-lähtö-grafiikka-ohjain-KUVA-2

Johdanto

KMS (Kernel Mode Setting) -grafiikkaohjaimen käyttöönoton myötä Raspberry Pi Ltd on siirtymässä pois videon ulostulojärjestelmän vanhasta laiteohjelmistoohjauksesta ja kohti avoimempaa grafiikkajärjestelmää. Tämä on kuitenkin tuonut mukanaan omat haasteensa. Tämän asiakirjan tarkoituksena on auttaa kaikissa ongelmissa, joita saattaa ilmetä uuteen järjestelmään siirtyessä. Tässä oppaassa oletetaan, että Raspberry Pi käyttää Raspberry Pi OS -käyttöjärjestelmää ja että se on täysin ajan tasalla uusimpien laiteohjelmistojen ja ytimien kanssa.

Terminologia

DRM: Direct Rendering Manager, Linux-ytimen alijärjestelmä, jota käytetään kommunikoimaan grafiikkasuoritusyksiköiden (GPU) kanssa. Käytetään yhteistyössä FKMS:n ja KMS:n kanssa.
DVI: HDMI:n edeltäjä, mutta ilman ääniominaisuuksia. Saatavilla on HDMI–DVI-kaapeleita ja sovittimia Raspberry Pi -laitteen liittämiseksi DVI-varustettuun näyttöön.
EDID: Laajennettu näytön tunnistustiedot. Näyttölaitteiden metatietomuoto, joka kuvaa niiden ominaisuuksia videolähteelle. EDID-tietorakenne sisältää valmistajan nimen ja sarjanumeron, tuotetyypin, fyysisen näytön koon ja näytön tukemat ajoitukset sekä joitain vähemmän hyödyllisiä tietoja. Joissakin näytöissä voi olla viallisia EDID-lohkoja, mikä voi aiheuttaa ongelmia, jos näyttöjärjestelmä ei käsittele näitä vikoja.
FKMS (vc4-fkms-v3d): Fake Kernel Mode -asetus. Vaikka laiteohjelmisto edelleen ohjaa matalan tason laitteistoa (esimample, High-Definition Multimedia Interface (HDMI) -portit, Display Serial Interface (DSI) jne., Linuxin vakiokirjastoja käytetään itse ytimessä. FKMS on oletuksena käytössä Busterissa, mutta se on nyt poistettu käytöstä Bullseyen KMS:n sijaan.
HDMI: High-Definition Multimedia Interface on patentoitu audio/videoliitäntä pakkaamattoman videodatan ja pakatun tai pakkaamattoman digitaalisen äänidatan lähettämiseen.
HPD: Hotplug-tunnistus. Fyysinen johto, jonka liitetty näyttölaite väittää osoittamaan, että se on olemassa.
KMS: Ytimen tilan asetus; katso https://www.kernel.org/doc/html/latest/gpu/drm-kms.html Lisätietoja. Raspberry Pi:ssä vc4-kms-v3d on ohjain, joka toteuttaa KMS:n, ja sitä kutsutaan usein "KMS-ohjaimeksi". Vanha grafiikkapino: Grafiikkapino, joka on toteutettu kokonaan VideoCore-laiteohjelmistoblobissa, jonka Linux-kehyspuskuriohjain paljastaa. Vanhaa grafiikkapinoa on käytetty useimmissa Raspberry Pi Ltd:n laitteissa viime aikoihin asti; se korvataan nyt vähitellen (F)KMS/DRM:llä.

HDMI-järjestelmä ja näytönohjaimet

Raspberry Pi -laitteet käyttävät HDMI-standardia, joka on hyvin yleinen nykyaikaisissa LCD-näytöissä ja televisioissa, videolähtöön. Raspberry Pi 3:ssa (mukaan lukien Raspberry Pi 3B+) ja aiemmissa laitteissa on yksi HDMI-portti, joka pystyy tuottamaan 1920 × 1200 @60Hz ulostuloa täysikokoisen HDMI-liittimen avulla. Raspberry Pi 4:ssä on kaksi mikro-HDMI-porttia, ja se pystyy tuottamaan 4K-lähtöä molemmissa porteissa. Raspberry Pi 0:n HDMI 4 -portti pystyy asetuksista riippuen jopa 4kp60:een, mutta käytettäessä kahta 4K-lähtölaitetta molemmissa laitteissa on vain p30. Grafiikkaohjelmistopino on versiosta riippumatta vastuussa liitettyjen HDMI-laitteiden ominaisuuksien tiedustelemisesta ja HDMI-järjestelmän asianmukaisesta asettamisesta. Sekä Legacy- että FKMS-pinot käyttävät VideoCore-grafiikkaprosessorin laiteohjelmistoa HDMI:n läsnäolon ja ominaisuuksien tarkistamiseen. Sitä vastoin KMS käyttää täysin avoimen lähdekoodin ARM-puolen toteutusta. Tämä tarkoittaa, että näiden kahden järjestelmän koodipohjat ovat täysin erilaiset, ja joissakin olosuhteissa tämä voi johtaa erilaiseen käyttäytymiseen näiden kahden lähestymistavan välillä. HDMI- ja DVI-laitteet tunnistavat itsensä lähdelaitteelle käyttämällä metadataa, jota kutsutaan EDID-lohkoksi. Lähdelaite lukee tämän näyttölaitteesta I2C-yhteyden kautta, ja tämä on täysin läpinäkyvää loppukäyttäjälle, koska se tapahtuu grafiikkapinossa. EDID-lohko sisältää paljon tietoa, mutta sitä käytetään ensisijaisesti määrittämään, mitä resoluutioita näyttö tukee, joten Raspberry Pi voidaan asettaa antamaan sopiva resoluutio.

Miten HDMI:tä käsitellään käynnistyksen aikana

Kun Raspberry Pi käynnistetään ensimmäisen kerran, se käy läpi useita stages, joka tunnetaan nimellä boot stages:

  1. Ensimmäiset stage, ROM-pohjainen käynnistyslatain käynnistää VideoCore GPU:n.
  2. Second-stage bootloader (tämä on bootcode.bin SD-kortilla Raspberry Pi 4:ää edeltävissä laitteissa ja SPI EEPROMissa Raspberry Pi 4:ssä):
    1. Raspberry Pi 4:ssä toinen-stagBootloader käynnistää HDMI-järjestelmän, kyselee näytöstä mahdollisia tiloja ja määrittää sitten näytön asianmukaisesti. Tässä vaiheessa näyttöä käytetään perusdiagnostiikkatietojen näyttämiseen.
    2. Käynnistyslataimen diagnostiikkanäyttö (07 alkaen) näyttää liitettyjen näyttöjen tilan (onko Hotplug Detect (HPD) olemassa ja onko EDID-esto palautettu näytöstä).
  3. VideoCore-laiteohjelmisto (start.elf) ladataan ja suoritetaan. Tämä ottaa HDMI-järjestelmän hallinnan, lukee EDID-lohkon kaikista liitetyistä näytöistä ja näyttää sateenkaarinäytön näillä näytöillä.
  4. Linux-ydin käynnistyy
    1. Ytimen käynnistyksen aikana KMS ottaa HDMI-järjestelmän hallinnan laiteohjelmistolta. Jälleen kerran EDID-lohko luetaan kaikista liitetyistä näytöistä, ja näitä tietoja käytetään Linux-konsolin ja työpöydän asettamiseen.

Mahdolliset ongelmat ja oireet

Yleisin KMS:ään siirryttäessä koettu vikaoire on aluksi hyvä käynnistys, jolloin käynnistyslataimen näyttö ja sitten sateenkaarinäyttö tulevat näkyviin, minkä jälkeen näyttö muuttuu muutaman sekunnin kuluttua mustaksi eikä palaa takaisin. Kohta, jossa näyttö pimenee, on itse asiassa se piste ytimen käynnistyksen aikana, jolloin KMS-ohjain ottaa näytön ohjauksen laiteohjelmistolta. Raspberry Pi toimii tällä hetkellä kaikilta osin paitsi HDMI-lähtöä, joten jos SSH on käytössä, sinun pitäisi pystyä kirjautumaan laitteeseen tätä reittiä pitkin. Vihreä SD-kortin käytön LED-valo vilkkuu yleensä ajoittain. On myös mahdollista, että et näe HDMI-lähtöä ollenkaan; ei käynnistyslataimen näyttöä eikä sateenkaarinäyttöä. Tämä voi yleensä johtua laitteistovioista.

Vian diagnosointi

Ei HDMI-lähtöä ollenkaan
On mahdollista, että laite ei ole käynnistynyt ollenkaan, mutta tämä ei kuulu tämän valkoisen kirjan toimialaan. Olettaen, että havaittu käyttäytyminen on näyttöongelma, HDMI-lähdön puuttuminen käynnistysprosessin missä tahansa osassa johtuu yleensä laitteistovioista. Mahdollisia vaihtoehtoja on useita:

  • Viallinen HDMI-kaapeli
  • Kokeile uutta kaapelia. Jotkut kaapelit, varsinkin erittäin halvat, eivät välttämättä sisällä kaikkia tarvittavia tietoliikennelinjoja (esim. hotplug), jotta Raspberry Pi pystyisi tunnistamaan näytön.
  • Raspberry Pi:ssä viallinen HDMI-portti
  • Jos käytät Raspberry Pi 4:ää, kokeile toista HDMI-porttia.
  • Viallinen HDMI-portti näytössä
  • Joskus näytön tai television HDMI-portti voi kulua loppuun. Kokeile toista porttia, jos laitteessa on sellainen.
  • Harvoin näyttölaite voi tarjota EDID-tietoja vain, kun se on päällä tai kun oikea portti on valittu. Tarkistaaksesi, että laite on päällä ja että oikea tuloportti on valittuna.
  • Näyttölaite ei käytä hotplug-tunnistuslinjaa

Alkutulostus, sitten näyttö pimenee
Jos näyttö tulee esiin, mutta sammuu sitten Linux-ytimen käynnistyksen aikana, on olemassa useita mahdollisia syitä, ja ne liittyvät yleensä ongelmaan lukea EDID näyttölaitteesta. Kuten yllä olevasta käynnistysjärjestystä käsittelevästä osiosta voidaan nähdä, EDID luetaan useissa eri kohdissa käynnistysprosessin aikana, ja jokainen luku suoritetaan eri ohjelmistolla. Lopullinen luku, kun KMS ottaa vallan, suoritetaan muuttumattomana ylävirran Linux-ytimen koodilla, eikä se käsittele viallisia EDID-muotoja samoin kuin aiempaa laiteohjelmistoa. Tästä syystä näyttö voi lakata toimimasta oikein, kun KMS ottaa vallan. On olemassa useita tapoja varmistaa, eikö KMS pysty lukemaan EDID:tä, ja kaksi näistä ovat seuraavat.
Tarkista käynnistyslataimen diagnostiikkanäyttö (vain Raspberry Pi 4)

HUOM
Käynnistyslataimen diagnostiikka vaatii viimeisimmän käynnistyslataimen. Voit päivittää uusimpaan versioon näiden ohjeiden avulla: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Poista SD-kortti ja käynnistä Raspberry Pi uudelleen. Paina ESC Asenna käyttöjärjestelmä -näytössä, ja diagnostiikkanäytön pitäisi ilmestyä näyttölaitteeseen. Näytössä tulee olla rivi, joka alkaa näytöllä: — esimampseuraavat:

  • näyttö: DISP0: HDMI HPD=1 EDID=ok #2 NÄYTTÖ1: HPD=0 EDID=ei mitään #0

Tämä Raspberry Pi 4:n lähtö osoittaa, että järjestelmä havaitsi HDMI-näytön HDMI-portissa 0, hotplug-tunnistus on vahvistettu ja EDID luettiin OK. HDMI-portista 1 ei löytynyt mitään.

Tarkista, onko KMS-järjestelmä havainnut EDID:n
Tämän tarkistamiseksi sinun on kirjauduttava sisään Raspberry Pi -laitteeseen SSH:n kautta toisesta tietokoneesta. SSH voidaan ottaa käyttöön, kun luodaan SD-korttikuva Raspberry Pi Imager -sovelluksella käyttämällä Lisäasetukset-asetuksia. SSH:n ottaminen käyttöön SD-kortilla, joka on jo kuvattu, on hieman monimutkaisempaa: sinun on lisättävä file nimeltä ssh käynnistysosioon. Vaihda SD-kortti alkuperäiseen Raspberry Pi:hen ja käynnistä se. Tämän pitäisi ottaa käyttöön SSH DHCP:n osoittamalla IP-osoitteella. Kun olet kirjautunut sisään, kirjoita seuraava päätekehotteeseen näyttääksesi minkä tahansa havaitun EDID:n sisällön (sinun on ehkä vaihdettava HDMI-A-1 HDMI-A-2:ksi riippuen siitä, mihin Raspberry Pi:n HDMI-porttiin näyttölaite on kytketty to): cat /sys/class/drm/card?-HDMI-A-1/edid Jos kansioita, joiden nimi on card?-HDMI-A-1 tai vastaava, ei ole mahdollista lukea EDID:tä näytöltä laite.

HUOM
Jos EDID on luettu onnistuneesti, on olemassa hyödyllinen virtuaali file samassa kansiossa, nimeltään moodit, joka näyttää kaikki mahdolliset tilat, joita EDID vaatii laitteen tukemaan.

Lievennykset

Hotplug-tunnistusvirhe Jos sekä laiteohjelmisto että KMS eivät löydä liitettyä näyttöä, kyseessä voi olla hotplug-tunnistusvirhe – eli Raspberry Pi ei tiedä, että laite on kytketty, joten se ei tarkista EDID:tä. Tämä voi johtua huonosta kaapelista tai näyttölaitteesta, joka ei kiinnitä hotplug-liitäntää oikein. Voit pakottaa hotplug-tunnistuksen muuttamalla ytimen komentoriviä file (cmdline.txt), joka on tallennettu Raspberry Pi OS SD-kortin käynnistysosioon. Voit muokata tätä file toisessa järjestelmässä käyttämällä haluamaasi editoria. Lisää seuraava teksti cmdline.txt-tiedoston loppuun file: video=HDMI-A-1:1280×720@60D Jos käytät toista HDMI-porttia, vaihda HDMI-A-1 HDMI-A-2:lla. Voit myös määrittää eri resoluution ja kuvanopeuden, mutta varmista, että valitset sellaiset, joita näyttölaite tukee.

HUOM
Videon ytimen komentoriviasetusten dokumentaatio löytyy täältä: https://www.kernel.org/doc/Documentation/fb/modedb.txt

VAROITUS
Vanhemmat grafiikkapinot tukivat config.txt-merkinnän käyttöä hotplug-tunnistuksen asettamiseen, mutta kirjoitushetkellä tämä ei toimi KMS:n kanssa. Sitä voidaan tukea tulevissa laiteohjelmistoversioissa. Config.txt-merkintä on hdmi_force_hotplug, ja voit määrittää tietyn HDMI-portin, jota hotplug käyttää, käyttämällä joko hdmi_force_hotplug:0=1 tai hdmi_force_hotplug:1=1. Huomaa, että KMS:n nimikkeistö viittaa HDMI-portteihin 1 ja 2, kun taas Raspberry Pi käyttää 0 ja 1.

EDID-ongelmia
Pieni osa näyttölaitteista ei pysty palauttamaan EDID-tunnusta, jos ne sammutetaan tai kun väärä AV-tulo on valittu. Tämä voi olla ongelma, kun Raspberry Pi ja näyttölaitteet ovat samassa jatkojohdossa ja Raspberry Pi -laite käynnistyy nopeammin kuin näyttö. Tällaisissa laitteissa saatat joutua antamaan EDID-tunnuksen manuaalisesti. Vielä epätavallisempaa on, että joissakin näyttölaitteissa on huonosti muotoiltuja EDID-lohkoja, joita KMS EDID -järjestelmä ei voi jäsentää. Näissä olosuhteissa voi olla mahdollista lukea EDID laitteesta, jolla on samanlainen resoluutio ja käyttää sitä. Kummassakin tapauksessa seuraavissa ohjeissa kerrotaan, kuinka EDID luetaan näyttölaitteesta ja määritetään KMS käyttämään sitä sen sijaan, että KMS yrittäisi kysellä laitetta suoraan.

EDID:n kopioiminen a file
Luodaan a file EDID-metatietojen sisällyttäminen tyhjästä ei yleensä ole mahdollista, ja olemassa olevan tiedon käyttäminen on paljon helpompaa. Yleensä on mahdollista hankkia EDID näyttölaitteesta ja tallentaa se Raspberry Pi:n SD-kortille, jotta KMS voi käyttää sitä sen sijaan, että saisi EDID:n näyttölaitteelta. Helpoin vaihtoehto tässä on varmistaa, että näyttölaite on käynnissä ja oikealla AV-tulolla ja että Raspberry Pi on käynnistänyt HDMI-järjestelmän oikein. Voit nyt kopioida EDID:n päätteestä kohtaan a file seuraavalla komennolla: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Jos EDID-tunnusta ei jostain syystä ole, voit käynnistää laitteen ei- -KMS-tila, joka onnistuu käynnistymään työpöydälle tai konsoliin, ja kopioi sitten EDID, jonka laiteohjelmisto (toivottavasti) lukee onnistuneesti file.

  1. Käynnistä vanhaan grafiikkatilaan.
    1. Muokkaa käynnistysosion config.txt-tiedostoa, varmista, että käytät editori sudon avulla, ja muuta rivi, jossa lukee dtoverlay=vc4-kms-v3d, muotoon #dtoverlay=vc4-kms-v3d.
    2. Käynnistä uudelleen.
  2. Työpöydän tai kirjautumiskonsolin pitäisi nyt ilmestyä.
    1. Kopioi EDID liitetyltä näyttölaitteelta päätteellä a file seuraavalla komennolla:
  • tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/

Käyttämällä a file-pohjainen EDID näyttölaitteen kyselyn sijaan Muokkaa tiedostoa /boot/cmdline.txt, varmista, että suoritat editorin sudon avulla ja lisää ytimen komentoriville seuraava: drm.edid_firmware=myedid.dat Voit käyttää EDID:tä tietty HDMI-portti seuraavasti: drm.edid_firmware=HDMI-A-1:myedid.dat Käynnistä tarvittaessa takaisin KMS-tilaan seuraavasti:

  1. Muokkaa käynnistysosiossa olevaa config.txt-tiedostoa, varmista, että suoritat editorin sudon avulla ja muuta #dtoverlay=vc4-kms-v3d-rivi muotoon dtoverlay=vc4-kms-v3d.
  2. Käynnistä uudelleen.

HUOM
Jos käytät a file-pohjainen EDID, mutta sinulla on edelleen ongelmia hotplugin kanssa, voit pakottaa hotplug-tunnistuksen lisäämällä seuraavan ytimen komentoriville: video=HDMI-A-1:D.

Asiakirjat / Resurssit

RaspberryPi KMS HDMI-lähtögrafiikkaohjain [pdfKäyttöopas
KMS, HDMI-lähtögrafiikkaohjain, KMS HDMI-lähtö, grafiikkaohjain, KMS HDMI-lähtögrafiikkaohjain, ohjain

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *