Raspberry Pi: are BIOS?

BIOS Raspberry Pi

Unii utilizatori Mă întreb dacă Raspberry Pi are BIOS sau UEFI, ca și alte computere, deoarece UEFI, după cum știți, este acceptat și pe computerele bazate pe Arm, așa cum este cazul cu acest SBC atât de popular și ieftin. Dar adevărul este că băieții zmeură au optat pentru o altă soluție alternativă.

Aici veți afla care este acea soluție și motivele pentru care nu folosește acest firmware, pe lângă faptul că vă arată cum sunt făcute unele configurații pe Raspberry Pi când nu există un meniu de configurare ca pe computere...

De ce Raspberry Pi nu folosește BIOS/UEFI?

Zmeură Pi 4

După cum știți, BIOS sau UEFI este un firmware care este prezent într-o multitudine de computere, atât desktop-uri, laptop-uri, AIO, servere, stații de lucru etc. Cu toate acestea, nu este pe Raspberry Pi, în ciuda faptului că este un SBC (Single Board Computer), spre deosebire de alte SBC-uri x86 care folosesc acest firmware pentru procesul de pornire și verificarea sistemului. Și nu pentru că Raspberry Pi este bazat pe ARM, deoarece multe computere ARM au și BIOS/UEFI.

Pe de altă parte, trebuie spus că acest firmware este conceput astfel încât cizma mai usor de pe mediul de stocare in care se afla sistemul de operare, pe langa faptul ca poti controla multe alte setari. Aici ne dă indicii de ce Raspberry Pi nu folosește BIOS. Pe de o parte, pentru că poate porni numai dispozitive de pe același mediu, cum ar fi cardurile SD, și nu în alte moduri. Și pe de altă parte pentru că numărul de periferice și funcții dintr-un Raspberry Pi sunt mai limitate.

Cu toate acestea, acesta nu este în întregime un motiv pentru a nu utiliza BIOS sau UEFI. De fapt, dacă analizăm cu atenție, cel SoC-ul ARM al Raspberry Pi folosește propriul firmware intern pentru a porni procesorul într-o stare corespunzătoare și restul sistemului fără a fi nevoie de un cip BIOS separat. Dar... atunci de ce nu poți accesa BIOS Setup sau meniul BIOS? Pe de o parte, pentru că acest firmware este foarte limitat și nu la fel de complex ca BIOS/UEFI, deci un meniu de configurare a parametrilor ar fi lipsit de sens, iar pe de altă parte, din cauza a ceea ce s-a menționat anterior, că poate porni doar de pe un mediu de stocare implicit. , la fel ca și cardul SD.

Dezvoltatorii Raspberry Pi au preferat din acest motiv să folosească acest firmware de bază pentru inițializare și pornire de pe un card SD, în loc să utilizeze un cip rom cu firmware mai complex instalat pe PCB. Și este că, dacă te uiți, nici dispozitivele mobile nu au BIOS/UEFI, deoarece pot porni doar Android (sau alt sistem de operare), din memoria internă.

În acest fel, pe de o parte, acel cip suplimentar de pe placă este salvat și, pe de altă parte, este eliminată și necesitatea includerii memoriei flash pentru stocare. ar face Raspberry Pi mai scump. Trebuie să cumpărați cardul SD separat.

Cu toate acestea, trebuie spus că în Raspberry Pi 3 a fost adăugat suport experimental pentru pornire de pe un suport USB care trebuie activat în mod explicit și nu poate fi dezactivat. Acesta este inclus în firmware-ul încorporat al SoC-ului noii versiuni, dar acest lucru a fost puțin mai complicat, motiv pentru care probabil au decis inițial să înceapă cu chestii ușoare și să folosească bootarea doar de pe carduri de memorie SD.

Ce folosea Raspberry Pi în schimb?

Rasbperry Pi 4 Power

Raspberry Pi nu are un BIOS sau UEFI așa cum se înțelege în lumea PC-urilor, de exemplu, dar are un firmware cu sursă închisă în SoC, așa cum am menționat mai sus. Acest cip este proiectat de compania Broadcom, care furnizează BCM-urile acestor plăci Raspberry Pi Foundation.

În SoC (Sistem pe un cip) Acesta integrează un procesor ARM Cortex-A Series, un GPU VideoCore, un DSP pentru procesarea semnalului digital, memorie SDRAM partajată de procesor și GPU și controlere precum USB etc. In plus, include si o memorie ROM in care este integrat firmware-ul despre care vorbim si care este necesar pentru bootare.

procedura de pornire

L pași care urmează acest firmware sunt:

  1. Acest firmware are grijă porniți bootloader-ul a sistemului de operare care se află pe cardul SD. După cum știți, bootloader-ul montează partiția FAT32 a cardului de memorie SD și trece la a doua etapă de pornire, care este programată în SoC și nu poate fi modificată.
  2. În a doua etapă, un fișier cunoscut ca bootcode.bin, în care firmware-ul GPU este pregătit și pornit. Acest fișier poate fi stocat doar pe cardul SD, astfel încât prioritatea de pornire nu poate fi schimbată ca într-un BIOS/UEFI convențional al unui computer și va porni doar de acolo. Cu toate acestea, după cum am spus, pe Pi 3 a fost adăugată și capacitatea de pornire de pe USB.
  3. Urmează apoi o a treia etapă în care se folosește fișierul start.elf, care pornește CPU, și un fișier numit fixup.dat, care este folosit pentru a crea partiția necesară în SDRAM, astfel încât să poată începe să fie utilizat. de CPU și GPU.
  4. În cele din urmă, este executat codul utilizatorului, care sunt de obicei binare executabile sau imagini ale fișierului Kernel Linux, cum ar fi kernel.img, sau din alte sisteme de operare acceptate de Raspberry Pi, și așa pornește sistemul de operare pentru a-l putea folosi...

După cum ați văzut, este un proces simplu, dar oarecum ciudat dacă îl comparăm cu un PC sau alte computere. Și este că, în cazul Raspberry Pi, în loc să pornească procesorul, ca în alte cazuri, GPU pornește mai întâi. De fapt, acest GPU Broadcomo se va ocupa de executarea unui fel de sistem de operare încorporat în SoC care este foarte simplu, dar necesar pentru a funcționa. Este cunoscut ca VCOS (Video Core Operating System) și va comunica cu Linux. Acest lucru este foarte rar, dar adevărul este că GPU-ul lui Pi nu se ocupă doar de grafică și de pornire, ci se ocupă și de sistem de control ceas și sunet.

În principiu, spunând acestea, se pare că nu putem face nimic modifica configurația de pornireDar adevărul este că nu este în totalitate așa. Și este că există un fișier numit config.txt care se află în directorul /boot/ al sistemului și dacă este deschis cu un editor de text, conținutul acestuia poate fi ușor modificat pentru a modifica boot-ul și a-l configura cu anumiți parametri. .

acest fișierul config.txt va fi citit de GPU după pornirea nucleului ARM și conține instrucțiuni pentru ca SoC să știe ce să facă în timpul pornirii sistemului. De exemplu, putem modifica memoria dedicată din ea, reîmprospătarea memoriei, dezactivarea accesului la cache-ul L2, modificarea configurației CMA, activarea sau dezactivarea LED-ului camerei, modificarea opțiunilor modului video, codec-urile, unele opțiuni de pornire, overclockare etc.

Acest fișier are un sintaxă destul de ciudat, așa că trebuie respectat pentru a evita problemele la pornire. Și dacă doriți mai multe informații despre el, puteți citeste wiki-ul pe care ti-l las in acest link.

Schimbați prioritatea de pornire pe Raspberry Pi

NOOBS config.txt

Cand schimbi ordinea de boot sau prioritatea pe un PC totul este foarte simplu, trebuie doar sa intri in BIOS/UEFI, iar in fila Boot gasesti parametrii pe care ii poti varia pentru a boota de pe hard disk, un mediu optic , USB, rețea etc. In schimb, pe Raspberry Pi nu este atât de ușor. În mod implicit, va porni întotdeauna sistemul de operare de pe cardul de memorie SD introdus în SBC. De fapt, chiar și după versiunea 3, dacă sunt introduse atât un card SD, cât și un stick USB, sistemul va încărca mai întâi de pe SD. Dacă SD-ul este scos și rămâne doar USB-ul, atunci se va face prin USB.

Dar această ordine poate fi modificată. pentru asta trebuie începe raspbian, de exemplu, și faceți următoarele:

  • Deschideți configurarea Raspberry Pi cu comanda:
sudo raspi-config
  • Accesați secțiunea „Opțiuni avansate”. (atentie, meniul este in engleza)
  • Apoi, în această secțiune, apăsați ENTER pe opțiunea „Boot Order”.
  • Ar trebui să vedeți acum trei opțiuni diferite din care să alegeți:
    • Pornirea cardului SD- În mod implicit, această opțiune este deja activată pe dispozitivul dvs. Raspberry Pi și dacă introduceți un card SD și USB simultan, sistemul va folosi cardul SD ca opțiune de pornire implicită, dacă nu îl eliminați.
    • boot USB: Dacă doriți să utilizați USB ca dispozitiv principal pentru pornire, puteți selecta această opțiune, care funcționează atunci când aveți un dispozitiv USB introdus în Raspberry Pi. În caz contrar, nu ar trebui să introduceți un card SD pentru a porni sistemul.
    • pornire în rețea: Această opțiune de pornire este utilă dacă cardul SD Raspberry Pi nu funcționează din anumite motive sau dacă există o problemă cu sistemul de operare. În acest caz, va folosi instrumentul Imager pentru a reinstala sistemul pe cardul SD.

Odată ce ai terminat, poți reporniți raspberry pi pentru a aplica modificările...

Diagnosticați problemele cu Raspberry Pi (POST)

În cele din urmă, veți ști că într-un BIOS/UEFI există un pas numit POST care se efectuează înainte de pornirea sistemului de operare și care va verifica starea diferitelor componente. Dacă totul este OK, va porni sistemul de operare. Dar dacă detectează orice problemă, se oprește și afișează un mesaj de eroare pe ecran sau emite un cod sonor sonor pentru a identifica care este problema.

Nici asta pe Raspberry Pi nu există. Cu toate acestea, firmware-ul SoC are o metodă de a încerca să semnalizeze problemele care pot fi prezente pentru o diagnosticare ușoară. Și asta prin LED-ul său de putere. De exemplu, pentru Raspberry Pi 4, codurile luminoase pe care le emite LED-ul pentru a indica probleme sunt:

sclipiri lungi clipiri scurte Stare
0 3 Eșec general în timpul pornirii
0 4 start*.elf nu a fost găsit
0 7 Imaginea kernelului nu a fost găsită
0 8 Eroare SDRAM
0 9 SDRAM insuficientă
0 10 în stare HALT
2 1 Partiția nu este FAT (nu este acceptată)
2 2 Nu s-a putut citi partiția
2 3 partiție extinsă non-FAT
2 4 Hash sau semnătura nu se potrivesc
3 1 Eroare SPI-EEPROM
3 2 SPI EEPROM protejat la scriere
3 3 Eroare I2C
4 4 Tipul de placă nu este acceptat
4 5 eroare fatală de firmware
4 6 Tastați A Rata de ardere
4 7 Rată de aprindere de tip B

Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.