BIOS хранит некоторое программное обеспечение для управления вашим ПК до его загрузки (пример настройки жесткого диска, памяти и т. Д.). Pi не использует «BIOS», как в ПК. Он просто инициализирует чип Broadcom (CPU, Cache, GPU), используя встроенное ПО, написанное для этого чипа, и передается прямо в операционную систему. Затем ОС обнаруживает оборудование и оперативную память, о которых сообщает Broadcom. Это делает загрузку действительно быстрой, но только Broadcom знает, как отлаживать или «устанавливать» свойства на лету.
Петр Кула
Ответы:
32
Это встроенное программное обеспечение с закрытым исходным кодом, запрограммированное в процессор SoC (система на чипе), которое нельзя изменить. После включения питания прошивка запустит загрузчик на SD-карте. Я не верю, что какие-либо другие сервисы предоставляются через микропрограмму SoC, так что это на самом деле не «BIOS» (базовая система ввода / вывода). После этого все остальное приходит с SD-карты.
Загрузчик первого этапа - используется для установки загрузочного раздела FAT32 на SD-карту, чтобы получить доступ к загрузчику второго уровня. Он запрограммирован в самом SoC во время изготовления RPi и не может быть перепрограммирован пользователем.
Загрузчик второй ступени (bootcode.bin) - используется для получения прошивки графического процессора с SD-карты, программирования прошивки, а затем запуска графического процессора.
Прошивка графического процессора (start.elf) - после загрузки это позволяет графическому процессору запустить процессор. Дополнительный файл fixup.dat используется для настройки раздела SDRAM между графическим процессором и процессором. В этот момент CPU освобождается от сброса, и выполнение передается.
Код пользователя - это может быть любое количество двоичных файлов. По умолчанию это ядро Linux (обычно называемое kernel.img), но это также может быть другой загрузчик (например, U-Boot) или приложение «голыми руками».
Я бы только добавил, что загрузчик 1-го этапа записывается на небольшом ПЗУ внутри 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
Ответы:
Это встроенное программное обеспечение с закрытым исходным кодом, запрограммированное в процессор SoC (система на чипе), которое нельзя изменить. После включения питания прошивка запустит загрузчик на SD-карте. Я не верю, что какие-либо другие сервисы предоставляются через микропрограмму SoC, так что это на самом деле не «BIOS» (базовая система ввода / вывода). После этого все остальное приходит с SD-карты.
Согласно разделу программного обеспечения вики , порядок загрузки следующий:
источник
bootcode.bin
с SD-карты. По этой причине невозможно загрузить RaspberryPi с носителя, отличного от SD-карты.@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.Вы также можете найти больше информации в этом ответе.
источник