BIOS apa yang digunakan Raspberry Pi?

29

Saya ingin belajar tentang BIOS pada motherboard Raspberry Pi. Apa nama BIOS itu? Apakah itu memiliki nama tertentu atau hanya disebut BIOS pada Raspberry Pi?

Devyn Collier Johnson
sumber
2
BIOS menyimpan beberapa perangkat lunak untuk mengontrol PC Anda sebelum melakukan boot (mis. Pengaturan hard drive, memori, dll.). Pi tidak menggunakan "BIOS" seperti di PC. Ini hanya menginisialisasi chip Broadcom (CPU, Cache, GPU) menggunakan firmware yang ditulis untuk chip itu dan langsung menuju sistem Operasi. OS kemudian mendeteksi perangkat keras dan ram yang dilaporkan oleh Broadcom. Ini membuat boot sangat cepat tetapi hanya Broadcom yang tahu cara men-debug atau "mengatur" properti dengan cepat.
Piotr Kula

Jawaban:

32

Firmware adalah kode berpemilik sumber tertutup yang diprogram ke dalam prosesor SoC (System on a Chip), yang tidak dapat dimodifikasi. Saat dinyalakan, firmware akan memulai bootloader pada kartu SD. Saya tidak percaya bahwa layanan lain disediakan melalui firmware SoC, jadi itu bukan "BIOS" (Basic Input / Output System) per se. Setelah titik ini segala sesuatu yang lain berasal dari kartu SD.

Menurut software bagian dari wiki , urutan boot adalah sebagai berikut:

  1. Bootloader tahap pertama - Ini digunakan untuk memasang partisi boot FAT32 pada kartu SD sehingga bootloader tahap kedua dapat diakses. Ini diprogram ke dalam SoC sendiri selama pembuatan RPi dan tidak dapat diprogram ulang oleh pengguna.
  2. Bootloader tahap kedua (bootcode.bin) - Ini digunakan untuk mengambil firmware GPU dari kartu SD, memprogram firmware, lalu memulai GPU.
  3. Firmware GPU (start.elf) - Setelah dimuat, ini memungkinkan GPU untuk memulai CPU. File tambahan, fixup.dat, digunakan untuk mengkonfigurasi partisi SDRAM antara GPU dan CPU. Pada titik ini, CPU dilepaskan dari reset dan eksekusi ditransfer.
  4. Kode pengguna - Ini bisa menjadi salah satu dari sejumlah binari. Secara default, ini adalah kernel Linux (biasanya bernama kernel.img), tetapi juga bisa menjadi bootloader lain (mis. U-Boot), atau aplikasi tanpa tulang.
Tevo D
sumber
7
Saya hanya akan menambahkan bahwa bootloader tahap 1 dibakar pada ROM kecil di dalam SoC. Seperti disebutkan, itu hanya tanggung jawab memuat bootcode.bindari kartu SD. Ini adalah alasan mengapa tidak mungkin untuk mem-boot RaspberryPi dari media selain kartu SD.
Krzysztof Adamski
@TevoD, jawaban yang bagus! Saya suka detail menyeluruh.
Devyn Collier Johnson
16

@TevoD hampir benar dalam apa yang ia tulis dalam jawabannya - RaspberryPi menggunakan binary firmware sumber tertutup sebagai bootloader. Versi saat ini dapat ditemukan di sini . Dua file yang membuat firmware adalah bootcode.bin(bootloader tahap 2) dan start.elf("firmware" GPU). Yang menarik dan cukup unik untuk RaspberryPi adalah mulai dari GPU(chip grafis) dan ini adalah tempat bootloader berjalan. GPUkemudian mulai ARM CPUdan jalankan kernel Linux.

Namun, setelah Linux dimulai, kode aktif GPUtidak diturunkan. Sebaliknya itu menjalankan OS sederhana itu sendiri, yang disebut VCOS( Video Core Operating System). Kernel Linux berkomunikasi dengan layanannya mailbox protocolmenggunakan interupsi khusus dan menggunakan (GPU dapat menghasilkan interupsi ARM). Anda dapat membaca beberapa informasi tentang protokol kotak surat yang digunakan di framebuffer sini . GPU bertanggung jawab tidak hanya untuk hal-hal grafis - GPU juga mengontrol jam dan menghasilkan audio, misalnya. Dalam hal ini, firmware GPU dapat dianggap sesuatu yang mirip dengan BIOSdari komputer PC normal. Anda dapat menemukan informasi lebih lanjut tentang ini membaca driver kernel RaspberryPi Linux.

Anda juga dapat menemukan lebih banyak informasi dalam jawaban ini .

Krzysztof Adamski
sumber
Poin bagus. Saya sedang mempertimbangkan pertanyaan BIOS untuk secara eksplisit merujuk pada firmware onboard, bukan SD Card, dan menambahkan urutan boot untuk jawaban yang lebih lengkap. Anda tentu mengambilnya dari sana. +1
Tevo D