Raspberry Pi ใช้ BIOS อะไร?


29

ฉันต้องการเรียนรู้เกี่ยวกับ BIOS บนเมนบอร์ด Raspberry Pi ไบออสเรียกว่าอะไร? มันมีชื่อเฉพาะหรือเรียกว่า BIOS บน Raspberry Pi หรือไม่?


2
ไบออสจัดเก็บซอฟต์แวร์บางอย่างเพื่อควบคุมพีซีของคุณก่อนบู๊ต (ฮาร์ดไดรฟ์ตัวอย่างการตั้งค่าหน่วยความจำ ฯลฯ ) Pi ไม่ได้ใช้ "BIOS" เหมือนในพีซี มันเพิ่งเริ่มต้นชิป Broadcom (CPU, Cache, GPU) โดยใช้เฟิร์มแวร์ที่เขียนขึ้นสำหรับชิปนั้นและส่งตรงไปยังระบบปฏิบัติการ จากนั้นระบบปฏิบัติการจะตรวจจับฮาร์ดแวร์และหน่วยความจำที่รายงานโดย Broadcom สิ่งนี้ทำให้การบูทรวดเร็วจริง ๆ แต่มีเพียง Broadcom เท่านั้นที่รู้วิธีแก้จุดบกพร่องหรือ "ตั้งค่า" คุณสมบัติได้อย่างรวดเร็ว
Piotr Kula

คำตอบ:


32

เฟิร์มแวร์นี้เป็นรหัสที่เป็นกรรมสิทธิ์ของซอร์สซึ่งตั้งโปรแกรมไว้ในโปรเซสเซอร์ SoC (ระบบบนชิป) ซึ่งไม่สามารถแก้ไขได้ เมื่อเปิดเครื่องขึ้นเฟิร์มแวร์จะเริ่ม bootloader บนการ์ด SD ฉันไม่เชื่อว่ามีบริการอื่น ๆ ให้บริการผ่านเฟิร์มแวร์ SoC ดังนั้นจึงไม่ใช่ "BIOS" (ระบบอินพุต / เอาท์พุตพื้นฐาน) จริงๆ หลังจากจุดนี้ทุกอย่างอื่นมาจากการ์ด SD

ตามส่วนซอฟต์แวร์ของwikiลำดับการบู๊ตจะเป็นดังนี้:

  1. First Stage bootloader - ใช้สำหรับเมาท์พาร์ติชันสำหรับบูต FAT32 บนการ์ด SD เพื่อให้สามารถเข้าถึง bootloader ระดับที่สองได้ มันถูกตั้งโปรแกรมไว้ใน SoC ของตัวเองในระหว่างการผลิต RPi และไม่สามารถ reprogrammed โดยผู้ใช้
  2. bootloader ขั้นที่สอง (bootcode.bin) - ใช้เพื่อเรียกข้อมูลเฟิร์มแวร์ GPU จากการ์ด SD โปรแกรมเฟิร์มแวร์แล้วเริ่ม GPU
  3. GPU เฟิร์มแวร์ (start.elf) - เมื่อโหลดแล้วจะทำให้ GPU เริ่มต้นซีพียู ไฟล์เพิ่มเติมคือ fixup.dat ใช้เพื่อกำหนดค่าพาร์ติชัน SDRAM ระหว่าง GPU และ CPU ณ จุดนี้ซีพียูจะถูกปล่อยจากการรีเซ็ตและการถ่ายโอนจะถูกดำเนินการผ่าน
  4. รหัสผู้ใช้ - นี่เป็นหนึ่งในจำนวนไบนารีใด ๆ โดยปกติแล้วจะเป็นเคอร์เนล Linux (โดยปกติจะเป็นชื่อ kernel.img) แต่ก็สามารถเป็น bootloader อีกตัว (เช่น U-Boot) หรือแอปพลิเคชันแบบเปลือยได้

7
ฉันจะเพิ่มเฉพาะ bootloader ขั้นที่ 1 เท่านั้นที่เผาใน ROM ขนาดเล็กภายใน SoC ตามที่กล่าวไว้มันเป็นความรับผิดชอบเพียงอย่างเดียวคือการโหลดbootcode.binจากการ์ด SD นี่คือเหตุผลที่เป็นไปไม่ได้ในการบูต RaspberryPi จากสื่ออื่นที่ไม่ใช่การ์ด SD
Krzysztof Adamski

@TevoD คำตอบที่ดี! ฉันรักรายละเอียดอย่างละเอียด
Devyn Collier Johnson

16

@TevoD เกือบจะถูกต้องในสิ่งที่เขาเขียนไว้ในคำตอบของเขา - RaspberryPi กำลังใช้ไบนารีแหล่งเฟิร์มแวร์ปิดเป็น bootloader รุ่นปัจจุบันสามารถพบได้ที่นี่ ไฟล์สองไฟล์ที่ทำให้เฟิร์มแวร์นั้นคือbootcode.bin(ขั้นตอนที่สอง bootloader) และstart.elf(GPU "เฟิร์มแวร์") สิ่งที่น่าสนใจและเป็นเอกลักษณ์ของ RaspberryPi ก็คือมันเริ่มต้นจากGPU(ชิปกราฟิก) และนี่คือที่ซึ่ง bootloader ทำงานจริง GPUจากนั้นเริ่มต้นARM CPUและรันเคอร์เนล Linux

หลังจากเริ่มใช้งานลินุกซ์แล้วรหัสบนGPUจะไม่ถูกยกเลิกการโหลด แต่มันทำงานเป็นระบบปฏิบัติการที่เรียบง่ายของตัวเองที่เรียกว่าVCOS( Video Core Operating System) เคอร์เนล Linux สื่อสารกับบริการโดยmailbox protocolใช้การขัดจังหวะแบบพิเศษและ (GPU สามารถผลิตการขัดจังหวะ ARM) คุณสามารถอ่านข้อมูลบางอย่างเกี่ยวกับโปรโตคอลที่ใช้สำหรับกล่องจดหมายที่นี่framebuffer GPU มีความรับผิดชอบไม่เพียง แต่สำหรับงานกราฟิกเท่านั้น แต่ยังควบคุมนาฬิกาและสร้างเสียงตัวอย่างเช่น ในเรื่องนี้ GPU เฟิร์มแวร์สามารถพิจารณาสิ่งที่คล้ายกับBIOSจากคอมพิวเตอร์พีซีปกติ คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับไดรเวอร์เคอร์เนล RaspberryPi Linux ที่อ่านได้

นอกจากนี้คุณยังสามารถหาข้อมูลบางอย่างมากขึ้นในการนี้คำตอบ


จุดดี. ฉันกำลังพิจารณาคำถาม BIOS เพื่ออ้างถึงเฟิร์มแวร์ออนบอร์ดอย่างชัดเจนไม่ใช่การ์ด SD และเพิ่มลำดับการบู๊ตสำหรับคำตอบที่สมบูรณ์ยิ่งขึ้น ขอแสดงความนับถือจากที่นั่น +1
Tevo D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.