Някои потребители Чудя се дали Raspberry Pi има BIOS или UEFI, подобно на други компютри, тъй като UEFI, както знаете, се поддържа и на базирани на Arm компютри, какъвто е случаят с този SBC е толкова популярен и евтин. Но истината е, че малиновците избраха друго алтернативно решение.
Тук ще научите какво е това решение и причините за това не използва този фърмуер, освен че ви показва как се правят някои конфигурации на Raspberry Pi, когато няма меню за настройка, както е на компютрите...
Защо Raspberry Pi не използва BIOS/UEFI?
Както знаете, BIOS или UEFI е фърмуер който присъства в множество компютри, както настолни компютри, лаптопи, AIO, сървъри, работни станции и т.н. Той обаче не е на Raspberry Pi, въпреки че е SBC (едноплатков компютър), за разлика от други x86 SBC, които използват този фърмуер за процеса на зареждане и проверка на системата. И това не е защото Raspberry Pi е базиран на ARM, тъй като много ARM компютри също имат BIOS/UEFI.
От друга страна, трябва да се каже, че този фърмуер е проектиран така, че багажника по-лесно от носителя за съхранение, където се намира операционната система, в допълнение към възможността да контролирате много други настройки. Тук той ни дава улики защо Raspberry Pi не използва BIOS. От една страна, защото може да зарежда устройства само от същия носител, като SD карти, а не по други начини. И от друга страна, защото броят на периферните устройства и функциите в Raspberry Pi са по-ограничени.
Това обаче не е напълно причина да не използвате BIOS или UEFI. Всъщност, ако анализираме внимателно, ARM SoC на Raspberry Pi използва свой собствен вътрешен фърмуер за зареждане на процесора в правилно състояние и останалата част от системата без необходимост от отделен BIOS чип. Но... тогава защо не можете да влезете в менюто BIOS Setup или BIOS? От една страна, тъй като този фърмуер е много ограничен и не е толкова сложен като BIOS/UEFI, така че менюто за конфигуриране на параметри би било безсмислено, а от друга, поради споменатото по-рано, че може да стартира само от носител за съхранение по подразбиране, както и SD картата.
Поради тази причина разработчиците на Raspberry Pi са предпочели да използват този основен фърмуер за инициализация и зареждане от SD карта, вместо да използват rom чип с по-сложен фърмуер, инсталиран на печатната платка. И това е, че ако погледнете, мобилните устройства също нямат BIOS / UEFI, тъй като те могат да стартират само Android (или друга операционна система) от вътрешна памет.
По този начин от една страна се спестява онзи допълнителен чип на платката, а от друга отпада и необходимостта от включване на флаш памет за съхранение. ще направи Raspberry Pi по-скъп. Трябва да закупите SD картата отделно.
Въпреки това трябва да се каже, че в Raspberry Pi 3 беше добавена експериментална поддръжка зареждане от USB носител който трябва да бъде изрично активиран и не може да бъде деактивиран. Това е включено във вградения фърмуер на SoC на новата версия, но беше малко по-сложно, което вероятно е причината първоначално да решат да започнат с лесните неща и да използват зареждане само от SD карти с памет.
Какво използва Raspberry Pi вместо това?
Raspberry Pi няма BIOS или UEFI, както се разбира в света на компютъра, например, но има фърмуер със затворен код в SoC, както споменах по-горе. Този чип е проектиран от компанията Broadcom, която доставя BCM за тези дъски на Raspberry Pi Foundation.
В SoC (система на чип) Той интегрира ARM Cortex-A Series CPU, VideoCore GPU, DSP за цифрова обработка на сигнали, SDRAM памет, споделена от CPU и GPU, и контролери като USB и др. В допълнение, той включва и ROM памет, в която е интегриран фърмуерът, за който говорим, и който е необходим за зареждане.
стартова процедура
Лос PASOS които следват този фърмуер са:
- Този фърмуер се грижи за стартирайте буутлоудъра на операционната система, която е на SD картата. Както знаете, буутлоудърът монтира FAT32 дяла на SD картата с памет и преминава към втория етап на зареждане, който е програмиран в SoC и не може да бъде модифициран.
- Във втория етап файл, известен като bootcode.bin, в който се подготвя и стартира фърмуера на GPU. Този файл може да се съхранява само на SD картата, така че приоритетът на зареждане не може да бъде променен, както в конвенционален BIOS/UEFI на компютър, и той ще се зарежда само от там. Въпреки това, както казах, на Pi 3 възможността за зареждане от USB също беше експериментално добавена.
- След това идва трети етап, в който се използва файлът start.elf, който стартира процесора, и файл, наречен fixup.dat, който се използва за създаване на необходимия дял в SDRAM, така че да може да започне да се използва от CPU и GPU.
- Накрая се изпълнява потребителският код, който обикновено са изпълними двоични файлове или изображения на Linux ядро, като kernel.img, или от други операционни системи, поддържани от Raspberry Pi, и ето как операционната система се зарежда, за да можете да я използвате...
Както видяхте, това е прост процес, но малко странен, ако го сравним с компютър или други компютри. И това е, че в случая на Raspberry Pi, вместо да стартира процесора, както в други случаи, Първо зарежда GPU. Всъщност този графичен процесор на Broadcomo ще отговаря за изпълнението на един вид вградена операционна система в SoC, която е много проста, но необходима за функциониране. Тя е известна като VCOS (Video Core Operating System) и ще комуникира с Linux. Това е много рядко, но истината е, че графичният процесор на Pi не отговаря само за графиката и стартирането, но и за часовник и аудио система за управление.
По принцип, след като казахме това, изглежда, че няма какво да направим промяна на конфигурацията за зарежданеНо истината е, че не е съвсем така. И това е, че има файл, наречен config.txt, който се намира в директорията /boot/ на системата и ако се отвори с текстов редактор, съдържанието му може лесно да се модифицира, за да се промени зареждането и да се конфигурира с определени параметри .
това файл config.txt той ще бъде прочетен от GPU след стартиране на ARM ядрото и съдържа инструкции за SoC, за да знае какво да прави по време на зареждане на системата. Например, можем да модифицираме специалната памет в него, опресняването на паметта, да деактивираме достъпа до L2 кеша, да променим конфигурацията на CMA, да активираме или деактивираме светодиода на камерата, да променим опциите за видео режим, кодеци, някои опции за зареждане, овърклок и т.н.
Този файл има a синтаксис доста странно, така че трябва да се спазва, за да се избегнат проблеми при стартиране. И ако искате повече информация за това, можете прочетете уикито, което ви оставям в тази връзка.
Променете приоритета на зареждане на Raspberry Pi
Когато промените реда или приоритета на зареждане на компютър, всичко е много просто, просто трябва да влезете в BIOS/UEFI и в раздела Boot можете да намерите параметрите, които можете да промените, за да стартирате от твърдия диск, оптичен носител , USB, мрежа и др. Вместо, на Raspberry Pi не е толкова лесно. По подразбиране винаги ще стартира операционната система от SD картата с памет, поставена в SBC. Всъщност, дори след версия 3, ако са поставени и SD карта, и USB памет, системата пак ще стартира първо от SD. Ако SD се премахне и остане само USB, тогава ще стане през USB.
Но този ред може да бъде променен. за това трябва стартирайте raspbian, например, и направете следното:
- Отворете настройката на Raspberry Pi с командата:
sudo raspi-config
- Отидете в секцията „Разширени опции“. (забележете, менюто е на английски)
- След това, в рамките на този раздел, натиснете ENTER на опцията "Boot Order".
- Сега трябва да видите три различни опции за избор:
- Стартиране на SD карта- По подразбиране тази опция вече е активирана на вашето устройство Raspberry Pi и ако поставите SD карта и USB едновременно, системата ще използва SD картата като опция за зареждане по подразбиране, освен ако не я премахнете.
- USB стартиране: Ако искате да използвате USB като основно устройство за зареждане, можете да изберете тази опция, която работи, когато имате USB устройство, поставено в Raspberry Pi. В противен случай не трябва да поставяте SD карта, за да стартирате системата.
- мрежово зареждане: Тази опция за зареждане е полезна, ако вашата Raspberry Pi SD карта не работи по някаква причина или ако има проблем с вашата операционна система. В този случай ще използва инструмента Imager, за да преинсталира системата на SD картата.
След като сте готови, можете рестартирайте raspberry pi за прилагане на промените...
Диагностициране на проблеми с Raspberry Pi (POST)
И накрая, ще знаете, че в BIOS/UEFI има стъпка, наречена POST, която се извършва преди зареждане на операционната система и която ще провери състоянието на различните компоненти. Ако всичко е наред, ще стартира операционната система. Но ако открие някакъв проблем, той спира и показва съобщение за грешка на екрана или издава звуков сигнал, за да идентифицира какъв е проблемът.
Това на Raspberry Pi също не съществува. Въпреки това, фърмуерът на SoC има метод да се опита да маркира проблеми, които могат да възникнат за лесна диагностика. И това е чрез неговия светодиод за захранване. Например за Raspberry Pi 4 светлинните кодове, които светодиодът излъчва, за да покаже проблеми, са:
дълги светкавици | кратки проблясъци | Статус |
---|---|---|
0 | 3 | Обща повреда по време на стартиране |
0 | 4 | start*.elf не е намерен |
0 | 7 | Изображението на ядрото не е намерено |
0 | 8 | SDRAM грешка |
0 | 9 | недостатъчно SDRAM |
0 | 10 | в състояние HALT |
2 | 1 | Дялът не е FAT (не се поддържа) |
2 | 2 | Неуспешно четене на дяла |
2 | 3 | non-FAT разширен дял |
2 | 4 | Хешът или подписът не съвпадат |
3 | 1 | SPI-EEPROM грешка |
3 | 2 | SPI EEPROM защитен от запис |
3 | 3 | I2C грешка |
4 | 4 | Типът платка не се поддържа |
4 | 5 | фатална грешка на фърмуера |
4 | 6 | Тип A Прекъсване на запалването |
4 | 7 | Тип B Прекъсване на запалването |