Raspberry Pi hangi BIOS'u kullanıyor?


29

Bir Raspberry Pi anakartındaki BIOS hakkında bilgi edinmek istiyorum. BIOS adı ne? Belirli bir adı var mı ya da Ahududu Pi'de BIOS mu deniyor?


2
BIOS, bilgisayarınızı önyüklemeden önce kontrol etmek için bazı yazılımlar depolar (örnek kurulum sabit diski, bellek vb.). Pi bilgisayardaki gibi bir "BIOS" kullanmaz. Sadece bu yonga için yazılmış ürün yazılımını kullanarak Broadcom yongasını (CPU, Cache, GPU) başlatıyor ve doğrudan İşletim sistemine geçiyor. İşletim sistemi daha sonra Broadcom tarafından bildirilen donanımı ve koçu algılar. Bu, önyüklemeyi gerçekten hızlı yapar, ancak yalnızca Broadcom anında özellikleri nasıl hata ayıklayacağını veya "ayarlayacağını" bilir.
Piotr Kula

Yanıtlar:


32

Üretici yazılımı, değiştirilemeyen SoC (Çip Üzerine Sistem) işlemcisine programlanmış kapalı kaynak kodlu bir koddur. Açılışta bellenim, SD kartta bir önyükleyici başlatır. Başka hiçbir hizmetin SoC yazılımı aracılığıyla sağlandığına inanmıyorum, bu yüzden aslında bir "BIOS" (Temel Giriş / Çıkış Sistemi) değil. Bu noktadan sonra her şey SD karttan geliyor.

Wiki'nin yazılım bölümüne göre açılış sırası aşağıdaki gibidir:

  1. Birinci kademe bootloader - Bu, FAT32 boot bölümünü SD karta monte etmek için kullanılır, böylece ikinci kademe bootloader'a erişilebilir. RPI üretimi sırasında SoC'nin kendisine programlanır ve bir kullanıcı tarafından yeniden programlanamaz.
  2. İkinci kademe bootloader (bootcode.bin) - GPU bellenimini SD karttan almak, bellenimi programlamak ve ardından GPU'yu başlatmak için kullanılır.
  3. GPU bellenimi (start.elf) - Bir kere yüklendiğinde, bu GPU'nun CPU'yu başlatmasını sağlar. GPU ve CPU arasındaki SDRAM bölümünü yapılandırmak için fixup.dat adlı ek bir dosya kullanılır. Bu noktada, CPU sıfırlamadan serbest bırakılır ve yürütme devredilir.
  4. Kullanıcı kodu - Bu, herhangi bir sayıda ikili dosyadan biri olabilir. Varsayılan olarak, Linux çekirdeğidir (genellikle kernel.img olarak adlandırılır), ancak başka bir bootloader (örn. U-Boot) veya çıplak kemik uygulaması da olabilir.

7
Sadece 1 aşamalı bootloader'ın SoC içindeki küçük ROM'da yandığını eklerdim. Belirtildiği gibi, sadece sorumluluk bootcode.binSD karttan yükleniyor . Bu, RaspberryPi'yi SD kart dışındaki bir ortamdan önyüklemenin imkansız olmasının nedenidir.
Krzysztof Adamski

@TevoD, güzel cevap! Tüm detayları seviyorum.
Devyn Collier Johnson,

16

@TevoD, cevabında yazdığı konuda neredeyse haklıdır - RaspberryPi, kapalı kaynaklı bellenim ikili dosyasını bootloader olarak kullanıyor. Güncel sürüm burada bulunabilir . Firmware'i yapan iki dosya bootcode.bin(2. aşama bootloader) ve start.elf(GPU "firmware"). RaspberryPi için ilginç ve benzersiz olan şey, onun baştan başlaması GPU(grafik yongası) ve aslında bootloader'ın çalıştığı yer. GPUsonra başlar ARM CPUve Linux çekirdeğini çalıştırır.

Ancak Linux başlatıldıktan sonra, kod açık GPUdeğil. Bunun yerine VCOS( Video Core Operating System) adında basit bir işletim sistemi çalışıyor . Linux çekirdeği, hizmetleri ile özel mailbox protocolve kesintileri kullanarak iletişim kurar (GPU, ARM kesmeleri üretebilir). framebuffer Burada kullanılan posta kutusu protokolü hakkında bazı bilgileri okuyabilirsiniz . GPU sadece grafik eşyalardan sorumlu değildir - aynı zamanda örneğin saatleri de kontrol eder ve ses üretir. Bu bağlamda, GPU bellenimi, BIOSnormal PC bilgisayarlarına benzer bir şey olarak kabul edilebilir . Bu okuma hakkında daha fazla bilgiyi RaspberryPi Linux çekirdek sürücüleri bulabilirsiniz.

Ayrıca bu cevapta daha fazla bilgi bulabilirsiniz .


İyi bir nokta. BIOS sorusunun açıkça SD Kart yerine yerleşik bellenime atıfta bulunduğunu düşünüyordum ve önyükleme sırasını daha eksiksiz bir cevap için ekledi. Seninki kesinlikle oradan alır. +1
Tevo D
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.