พื้นหลังบางส่วน
สิ่งที่สำคัญที่สุดที่คุณควรรู้คือการที่ 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 ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ