Raspberry Pi: heeft het BIOS?

Raspberry Pi-BIOS

Sommige gebruikers vraag me af of de Raspberry Pi BIOS of UEFI heeft, net als andere computers, aangezien UEFI, zoals u weet, ook wordt ondersteund op Arm-gebaseerde computers, zoals het geval is met deze SBC zo populair en goedkoop. Maar de waarheid is dat de frambozenjongens voor een andere alternatieve oplossing hebben gekozen.

Hier leest u wat die oplossing is en waarom maakt geen gebruik van deze firmware, naast het laten zien hoe sommige configuraties worden gemaakt op de Raspberry Pi wanneer er geen Setup-menu is zoals op computers...

Waarom gebruikt de Raspberry Pi geen BIOS/UEFI?

Framboos Pi 4

Zoals u weet, de BIOS of UEFI is een firmware die aanwezig is in een veelheid aan computers, zowel desktops, laptops, AIO, servers, werkstations, etc. Het staat echter niet op de Raspberry Pi, ondanks dat het een SBC (Single Board Computer) is, in tegenstelling tot andere x86 SBC's die deze firmware wel gebruiken voor het opstartproces en systeemcontrole. En het is niet omdat de Raspberry Pi ARM-gebaseerd is, aangezien veel ARM-computers ook BIOS/UEFI hebben.

Aan de andere kant moet gezegd worden dat deze firmware zo is ontworpen de laars gemakkelijker vanaf het opslagmedium waar het besturingssysteem zich bevindt, naast het kunnen beheren van vele andere instellingen. Hier geeft hij ons aanwijzingen waarom de Raspberry Pi geen BIOS gebruikt. Enerzijds omdat het alleen apparaten kan opstarten vanaf hetzelfde medium, zoals SD-kaarten, en niet op andere manieren. En anderzijds omdat het aantal randapparatuur en functies in een Raspberry Pi beperkter is.

Dit is echter niet helemaal een reden om geen BIOS of UEFI te gebruiken. In feite, als we zorgvuldig analyseren, de De ARM SoC van de Raspberry Pi gebruikt zijn eigen interne firmware om de CPU in een goede staat op te starten en de rest van het systeem zonder dat een aparte BIOS-chip nodig is. Maar... waarom heb je dan geen toegang tot de BIOS Setup of het BIOS-menu? Enerzijds omdat deze firmware erg beperkt is, en niet zo complex als de BIOS/UEFI, dus een menu om parameters te configureren zinloos zou zijn, en anderzijds, vanwege wat eerder vermeld is, dat het alleen kan opstarten vanaf een standaard opslagmedium. , net als de SD-kaart.

De ontwikkelaars van de Raspberry Pi hebben om deze reden er de voorkeur aan gegeven deze basisfirmware te gebruiken voor initialisatie en opstarten vanaf een SD-kaart in plaats van een rom-chip met complexere firmware geïnstalleerd op de printplaat. En het is dat, als je kijkt, mobiele apparaten ook geen BIOS / UEFI hebben, omdat ze alleen Android (of een ander besturingssysteem) kunnen opstarten vanuit het interne geheugen.

Op deze manier wordt aan de ene kant die extra chip op het bord bespaard, en aan de andere kant vervalt ook de noodzaak om flashgeheugen op te nemen voor opslag. zou de Raspberry Pi duurder maken. Je moet de SD-kaart apart kopen.

Wel moet gezegd worden dat er in de Raspberry Pi 3 experimentele ondersteuning voor is toegevoegd opstarten vanaf USB-media die expliciet moet worden ingeschakeld en niet kan worden uitgeschakeld. Dit is opgenomen in de ingebouwde firmware van de SoC van de nieuwe versie, maar dit was een beetje ingewikkelder, wat waarschijnlijk de reden is waarom ze in eerste instantie besloten om te beginnen met de gemakkelijke dingen en alleen opstarten vanaf SD-geheugenkaarten te gebruiken.

Wat gebruikte de Raspberry Pi in plaats daarvan?

Rasbperry Pi 4 Power

De Raspberry Pi heeft geen BIOS of UEFI zoals bijvoorbeeld in de pc-wereld wordt begrepen, maar wel een closed source-firmware in de SoC zoals ik hierboven vermeldde. Deze chip is ontworpen door het bedrijf Broadcom, dat de BCM's levert aan deze Raspberry Pi Foundation-borden.

In de SoC (systeem op een chip) Het integreert een ARM Cortex-A-serie CPU, een VideoCore GPU, een DSP voor digitale signaalverwerking, SDRAM-geheugen gedeeld door de CPU en GPU, en controllers zoals USB, enz. Daarnaast bevat het ook een ROM-geheugen waarin de firmware waar we het over hebben is geïntegreerd en dat is nodig voor het opstarten.

startprocedure

De gevolgd die volgt op deze firmware zijn:

  1. Deze firmware zorgt voor bootloader starten van het besturingssysteem dat op de SD-kaart staat. Zoals u weet, koppelt de bootloader de FAT32-partitie van de SD-geheugenkaart en gaat naar de tweede opstartfase, die is geprogrammeerd in de SoC en niet kan worden gewijzigd.
  2. In de tweede fase wordt een bestand dat bekend staat als bootcode.bin, waarin de GPU-firmware wordt voorbereid en gestart. Dit bestand kan alleen op de SD-kaart worden opgeslagen, dus de opstartprioriteit kan niet worden gewijzigd zoals in een conventioneel BIOS/UEFI van een pc, en het zal alleen vanaf daar opstarten. Zoals ik al zei, werd op de Pi 3 echter ook experimenteel de mogelijkheid toegevoegd om vanaf USB op te starten.
  3. Dan komt een derde fase waarin gebruik wordt gemaakt van het start.elf-bestand, dat de CPU opstart, en een bestand met de naam fixup.dat, dat wordt gebruikt om de noodzakelijke partitie in de SDRAM aan te maken, zodat het kan worden gebruikt. door de CPU en de GPU.
  4. Ten slotte wordt de gebruikerscode uitgevoerd, meestal de uitvoerbare binaire bestanden of afbeeldingen van het Linux-kernel, zoals kernel.img, of van andere besturingssystemen die door de Raspberry Pi worden ondersteund, en dit is hoe het besturingssysteem opstart zodat je het kunt gebruiken...

Zoals je hebt gezien, is het een eenvoudig proces, maar enigszins vreemd als we het vergelijken met een pc of andere computers. En het is dat, in het geval van de Raspberry Pi, in plaats van de CPU te starten, zoals in andere gevallen, GPU start eerst op. In feite zal deze Broadcomo GPU verantwoordelijk zijn voor het uitvoeren van een soort ingebed besturingssysteem in de SoC dat heel eenvoudig is, maar noodzakelijk om te functioneren. Het staat bekend als VCOS (Video Core Operating System) en het zal communiceren met Linux. Dit is zeer zeldzaam, maar de waarheid is dat de GPU van de Pi niet alleen verantwoordelijk is voor graphics en starten, maar ook voor besturingssysteem klok en audio.

In principe, dit gezegd hebbende, lijkt het erop dat we er weinig aan kunnen doen de opstartconfiguratie wijzigenMaar de waarheid is dat het niet helemaal zo is. En het is dat er een bestand is met de naam config.txt dat zich in de map /boot/ van het systeem bevindt en als het wordt geopend met een teksteditor, kan de inhoud ervan eenvoudig worden gewijzigd om het opstarten te wijzigen en het met bepaalde parameters te configureren .

Oosten config.txt-bestand het wordt gelezen door de GPU na het starten van de ARM-kernel en het bevat instructies voor de SoC om te weten wat te doen tijdens het opstarten van het systeem. We kunnen bijvoorbeeld het speciale geheugen erin wijzigen, het geheugen vernieuwen, de toegang tot de L2-cache uitschakelen, de CMA-configuratie wijzigen, de camera-LED in- of uitschakelen, de videomodusopties, codecs, sommige opties opstarten, overklokken, enz.

Dit bestand heeft een syntaxis nogal eigenaardig, dus het moet worden gerespecteerd om problemen bij het opstarten te voorkomen. En wil je er meer informatie over, dan kan dat lees de wiki die ik je in deze link achterlaat.

Wijzig de opstartprioriteit op de Raspberry Pi

NOOBS-config.txt

Wanneer u de opstartvolgorde of prioriteit op een pc wijzigt, is het allemaal heel eenvoudig, u hoeft alleen het BIOS/UEFI in te voeren en op het tabblad Opstarten vindt u de parameters die u kunt variëren om op te starten vanaf de harde schijf, een optische medium, USB, netwerk, enz. In plaats van, op de Raspberry Pi is het niet zo eenvoudig. Standaard wordt het besturingssysteem altijd opgestart vanaf de SD-geheugenkaart die in de SBC is geplaatst. Zelfs na versie 3, als er zowel een SD-kaart als een USB-stick is geplaatst, zal het systeem nog steeds eerst opstarten vanaf SD. Als de SD wordt verwijderd en alleen de USB overblijft, gebeurt dit via de USB.

Maar deze volgorde kan worden gewijzigd. daarvoor moet je raspbian beginnen, bijvoorbeeld, en doe het volgende:

  • Open de Raspberry Pi-setup met het commando:
sudo raspi-config
  • Ga naar het gedeelte "Geavanceerde opties". (let op, het menu is in het Engels)
  • Druk vervolgens in dit gedeelte op ENTER bij de optie "Boot Order".
  • U zou nu drie verschillende opties moeten zien om uit te kiezen:
    • SD-kaart opstarten- Deze optie is standaard al ingeschakeld op uw Raspberry Pi-apparaat en als u tegelijkertijd een SD-kaart en USB plaatst, gebruikt het systeem de SD-kaart als standaard opstartoptie, tenzij u deze verwijdert.
    • usb-opstart: Als u USB wilt gebruiken als het primaire apparaat om op te starten, kunt u deze optie selecteren, die werkt wanneer u een USB-apparaat in de Raspberry Pi hebt gestoken. Anders moet u geen SD-kaart plaatsen om het systeem op te starten.
    • netwerk opstarten: Deze opstartoptie is handig als uw Raspberry Pi SD-kaart om de een of andere reden niet werkt of als er een probleem is met uw besturingssysteem. In dat geval zal het gebruik maken van de Imager-tool om het systeem opnieuw op de SD-kaart te installeren.

Als je klaar bent, kan het start de Raspberry Pi opnieuw op om de wijzigingen toe te passen...

Diagnose Raspberry Pi-problemen (POST)

Ten slotte weet u dat er in een BIOS/UEFI een stap is genaamd POST die wordt uitgevoerd voordat het besturingssysteem opstart en die de status van de verschillende componenten controleert. Als alles in orde is, wordt het besturingssysteem gestart. Maar als het een probleem detecteert, stopt het en geeft een foutmelding op het scherm weer of laat een hoorbare piepcode horen om vast te stellen wat het probleem is.

Dit bestaat op de Raspberry Pi ook niet. De SoC-firmware heeft echter een methode om problemen die kunnen optreden te markeren voor een eenvoudige diagnose. En dat komt door de power-LED. Voor de Raspberry Pi 4 zijn de lichtcodes die de LED uitzendt om problemen aan te geven bijvoorbeeld:

lange flitsen korte flitsen Status
0 3 Algemene storing tijdens het opstarten
0 4 start*.elf niet gevonden
0 7 Kernelafbeelding niet gevonden
0 8 SDRAM-fout
0 9 onvoldoende SDRAM
0 10 in HALT-toestand
2 1 De partitie is niet FAT (niet ondersteund)
2 2 Kan partitie niet lezen
2 3 niet-FAT uitgebreide partitie
2 4 Hash of handtekening komen niet overeen
3 1 SPI-EEPROM-fout
3 2 SPI EEPROM schrijfbeveiligd
3 3 I2C-fout
4 4 Bordtype niet ondersteund
4 5 fatale firmwarefout
4 6 Typ een misfire
4 7 Type B ontstekingsfout

Wees de eerste om te reageren

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.