Який BIOS використовує Raspberry Pi?


29

Я хочу дізнатися про BIOS на материнській платі Raspberry Pi. Як називається BIOS? Він має конкретне ім’я або його просто називають BIOS на Raspberry Pi?


2
BIOS зберігає деяке програмне забезпечення для управління вашим ПК перед завантаженням (приклад встановлення жорсткого диска, пам'ять тощо). Pi не використовує "BIOS", як у ПК. Він просто ініціалізує мікросхем Broadcom (процесор, кеш, графічний процесор), використовуючи прошивку, написану для цього чіпа, і передається прямо в операційну систему. Потім ОС виявляє обладнання та оперативні повідомлення, про які повідомляє Broadcom. Це робить завантаження дійсно швидким, але лише Broadcom знає, як відладжувати або «встановлювати» властивості на льоту.
Пьотр Кула

Відповіді:


32

Прошивка - це власний код із закритим кодом, запрограмований на процесор SoC (Система на чіпі), який неможливо змінити. Після включення програмного забезпечення буде запущено завантажувач на SD-карту. Я не вірю, що будь-які інші послуги надаються через прошивку SoC, тому це насправді не є "BIOS" (базовою системою вводу / виводу). Після цього все інше виходить із SD-карти.

Відповідно до програмного розділу вікі , порядок завантаження такий:

  1. Завантажувач першого ступеня - використовується для встановлення завантажувального розділу FAT32 на SD-карту, щоб можна було отримати доступ до завантажувача другого ступеня. Він запрограмований у сам SoC під час виготовлення RPi і не може бути перепрограмований користувачем.
  2. Завантажувач другого ступеня (bootcode.bin) - використовується для отримання мікропрограмного забезпечення GPU з SD-карти, програмування мікропрограмного забезпечення та запуску GPU.
  3. Прошивка графічного процесора (start.elf) - Після завантаження це дозволяє GPU запускати процесор. Додатковий файл fixup.dat використовується для налаштування розділу SDRAM між графічним процесором та процесором. У цей момент процесор звільняється від скидання і виконання передається.
  4. Код користувача - Це може бути один із будь-якої кількості двійкових файлів. За замовчуванням це ядро ​​Linux (зазвичай його називають kernel.img), але воно також може бути іншим завантажувачем (наприклад, U-Boot) або додатком з голими кістками.

7
Я хотів би лише додати, що завантажувач першого ступеня спалюється на невеликому ПЗУ всередині SoC. Як вже було сказано, відповідальність - це завантаження bootcode.binз SD-карти. З цієї причини неможливо завантажувати RaspberryPi з іншого, ніж SD-карти.
Кшиштоф Адамський

@TevoD, приємна відповідь! Я люблю ретельні деталі.
Девін Коллер Джонсон

16

@TevoD майже правий у тому, що написав у своїй відповіді - RaspberryPi використовує бінарний прошивку із закритим кодом як завантажувач. Поточну версію можна знайти тут . Два файли, що створюють прошивку, це bootcode.bin(завантажувач 2-го ступеня) та start.elf("прошивка" GPU). Що цікаво і досить унікально для RaspberryPi, це те, що він починається з GPU(графічний чіп), і саме тут завантажувач фактично працює. GPUпотім запускає ARM CPUта запускає ядро ​​Linux.

Після запуску Linux, код увімкнено GPUне завантажується. Замість цього він працює, це власна проста ОС, що називається VCOS( Video Core Operating System). Ядро Linux спілкується зі своїми службами, використовуючи спеціальні mailbox protocolта використовуючи переривання (GPU може виробляти переривання ARM). Ви можете прочитати деякі відомості про протокол поштової скриньки , використовуваного для framebuffer тут . Графічний процесор відповідає не тільки за графічні речі - він також контролює годинники і, наприклад, видає аудіо. У зв'язку з цим прошивку GPU можна вважати чимось схожим на BIOSзвичайні комп'ютери ПК. Ви можете знайти більше інформації про це читання драйверів ядра RaspberryPi Linux.

Ви також можете знайти більше інформації в цій відповіді.


Влучне зауваження. Я розглядав питання BIOS як явне посилання на вбудовану прошивку, а не SD-карту, і додав замовлення на завантаження для більш повної відповіді. Ваш, звичайно, бере звідти. +1
Tevo D
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.