พื้นหลังบางส่วน
สิ่งที่สำคัญที่สุดที่คุณควรรู้คือการที่ RaspberryPi เป็นสัตว์แปลกที่ARM CPU
เป็น CPU ไม่สำคัญ - VideoCore GPU
มันเป็นเพียงร่วมกับหน่วยประมวลผล เมื่อ RaspberryPi เริ่มทำงานจะมีการอ่าน GPU blob จากการ์ด SD ไปยังแคช L2 และดำเนินการ รหัสนี้แล้วนำขึ้นทุกอุปกรณ์ต่อพ่วงที่สำคัญ (RAM, นาฬิกา ฯลฯ ) ARM CPU
และเริ่มต้น จากนั้น bootloader ขั้นที่ 2 หรือระบบปฏิบัติการบางตัวสามารถทำงานARM CPU
ได้
GPU blob ไม่ได้เป็นเพียง bootloader จริงๆแล้วมันเป็นระบบปฏิบัติการ (Video Core OS) ด้วยตัวเอง องค์ประกอบที่สำคัญบางอย่างของระบบไม่สามารถเข้าถึงได้โดยตรงโดย ARM CPU และต้องสื่อสารกับGPU
(โดยใช้mailbox
ระบบการส่งข้อความ) เพื่อใช้งาน มีเอกสารบางส่วนเกี่ยวกับสิ่งนี้ที่มีอยู่ ตอนนี้Video Core OS
( VCOS
) ถูกขยายเวลาโดยพนักงานของ Broadcom เพื่อเปิดใช้งานคุณสมบัติที่ต้องการโดยLinux
เคอร์เนลRISC OS
หรือบางครั้งแม้แต่ระบบปฏิบัติการอดิเรกบางอย่าง ไม่มีเอกสารที่ดีคือเกี่ยวกับเรื่องนี้ แต่คุณจะต้องขุดในRaspberryPi forum
,github
และสถานที่อื่น ๆ เพื่อค้นหาข้อมูลเกี่ยวกับเรื่องนี้ แต่มันอยู่ตรงนั้น .. และมีบางคนที่เขียนรหัสโลหะเปลือยของตัวเองหรือแม้แต่ระบบปฏิบัติการบน RaspberryPi เพื่อช่วยเหลือคุณ และแน่นอนว่ามีรหัสโอเพ่นซอร์สมากมายเช่นเคอร์เนล Linux ของ RasbperryPi
VideoCore เป็นกรรมสิทธิ์ไม่มีเอกสารอย่างเป็นทางการและเครื่องมือในการพัฒนา ดังนั้นหากคุณไม่ต้องการใช้ความพยายามมากคุณไม่สามารถเขียนVCOS
ด้วยรหัสของคุณเองได้ มี แต่ความพยายามที่จะทำวิศวกรรมย้อนกลับวิดีโอหลักคุณสามารถหาข้อมูลบางอย่างที่นี่
ปัญหาอีกประการหนึ่งคือUSB
กองซ้อนโดย Synopsys เป็นกรรมสิทธิ์และอีกครั้งไม่มีเอกสารประกอบและดูเหมือนว่าแม้เอกสารจะยากที่จะใช้งานได้อย่างน่าเชื่อถือ แต่อีกครั้งรหัสสามารถใช้ได้ (Linux kernel, u-boot, CSUD ) การใช้ความสามารถด้านกราฟิกขั้นสูงVideo Core
อาจเป็นเรื่องยาก - มีซอร์สโค้ดโอเพนซอร์สสำหรับไลบรารีกราฟิก แต่มีไว้สำหรับARM
ด้านข้างเท่านั้น
ที่ถูกกล่าวว่ามันเป็นไปได้ที่จะทำให้RISC OS
พอร์ตจากข้อมูลที่มีอยู่ (ยังไม่ชัดเจนสำหรับฉันถ้าพวกเขาใช้ข้อมูลที่สาธารณชนเข้าถึงได้เท่านั้น) บางคนกำลังเขียนใหม่ (เป็นอิสระจาก Broadcom) เคอร์เนล Linux สำหรับการฉีดมี เป็นFreeBSD
พอร์ต 'U-boot` และอื่น ๆ ดังนั้นจึงเป็นไปได้ในการเขียนระบบปฏิบัติการของคุณเอง มันไม่ง่ายอย่างที่คิด
เป้าหมายของคุณ
หมายเลข 1
เท่าที่ฉันรู้ไม่มีทางที่ SoC สามารถเริ่มต้นในอีกทางหนึ่งได้มากกว่าที่อธิบายไว้ ดังนั้นขั้นตอนแรก bootloader SD card
จะต้องมีใน และต้องเป็นGPU
เลขฐานสองไม่ใช่ARM
เลขฐานสองซึ่งเป็นปัญหาอื่น และไม่มีแฟลชออนบอร์ดใน RaspberryPi ซึ่งเป็นปัญหาเช่นกัน
หมายเลข 2
ปัญหาหลักคือไม่มี on-board flash
บน RaspberryPi คุณสามารถเพิ่มหนึ่งและมันสามารถเปิดใช้งานใน bootloader ของคุณ (ซึ่งจะต้องเป็น bootloader ขั้นที่ 2 แล้ว) อย่างไรก็ตามการเขียนไดรเวอร์ USB อาจเป็นปัญหาได้
หมายเลข 3, 4, 5
นี่ไม่น่าจะมีปัญหาอะไรมาก ส่วนใหญ่เป็นอุปกรณ์ต่อพ่วง (อย่างน้อยผู้ที่สามารถเข้าถึงARM
) มีเอกสารที่นี่ Bootloader ที่มีอยู่ช่วยให้คุณสามารถกำหนดค่า SoC ได้ง่ายขึ้น คุณสามารถดูรหัสและเอกสารได้ที่นี่และที่นี่
ทางเลือก
ฉันไม่ทราบว่าบอร์ดอื่นใดดีเท่ากับ RaspberryPi ดังนั้นจึงเป็นการยากที่จะแนะนำอะไรบางอย่าง แต่คุณอาจดูโครงการที่เป็นผู้ใหญ่เช่น OMAP Beagleboard / Beaglebone / Pandaboardหรือคุณสามารถติดตามการพัฒนาบอร์ดใหม่เช่น Allwinner CubieboardหรือPCduino ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ