Bazı arka plan
Bilmeniz gereken en önemli şey, RaspberryPi'nin ARM CPU
ana CPU olmayan garip bir canavar olduğudur - sadece bir yardımcı işlemci VideoCore GPU
. RaspberryPi başladığında, SD karttan L2 önbelleğine bir GPU bloğu okunur ve yürütülür. Bu kod daha sonra tüm önemli çevre birimlerini (RAM, saatler vb.) Getirir ve başlatır ARM CPU
. Sonra 2. aşama bootloader veya bazı işletim sisteminin kendisi çalıştırılabilir ARM CPU
.
GPU blob sadece bir bootloader değil. Aslında kendi başına bir işletim sistemi (Video Core OS). Sistemin bazı önemli unsurlarına ARM CPU tarafından doğrudan erişilemiyor ve bunları kullanmak için iletişim kurması gerekiyor GPU
( mailbox
mesajlaşma sistemini kullanarak ). Orada kısmi belgeler bu mevcut hakkında. Şimdi Video Core OS
( VCOS
), zaman zaman Linux
çekirdeklerin ve RISC OS
hatta bazı hobi işletim sistemlerinin ihtiyaç duyduğu özellikleri sağlamak için Broadcom çalışanları tarafından zaman zaman genişletiliyor . Hiçbir iyi dokümantasyon ancak bu konuda yok, kazmak zorunda kalacak RaspberryPi forum
,github
ve bununla ilgili bilgi bulmak için muhtemelen başka yerler. Ama orada .. bir yerlerde. Ve size yardım etmek için kendi metal kodlarını yazan ve hatta RaspberryPi'deki işletim sistemlerini yazan birkaç kişi var. Ve tabii ki birçok açık kaynak kod - RasbperryPi's Linux çekirdeği.
VideoCore tescillidir, resmi bir dokümantasyon ve geliştirme aracı yoktur. Çok fazla çaba harcamak istemiyorsanız VCOS
, kendi kodunuzla yeniden yazamazsınız . Bununla birlikte, Video Çekirdeğini tersine çevirmek için biraz çaba var, burada bazı bilgileri bulabilirsiniz .
Diğer bir problem ise, USB
Synopsys'in yığınının münhasır olması ve yine bunun için bir dokümantasyon olmaması ve dokümantasyonda bile güvenilir bir şekilde uygulanması zor görünüyor. Fakat yine de, kod kullanılabilir (Linux çekirdeği, u-boot, CSUD ). Gelişmiş grafik yeteneklerini kullanmak Video Core
da zor olabilir - grafik kitaplıkları için bazı açık kaynak kodları vardır , ancak bu yalnızca ARM
taraf içindir.
Bununla birlikte, RISC OS
limanı mevcut bilgilerden elde etmek mümkündü (ancak herkesin erişimine açık olan bilgiyi kullanıyorlarsa, bu bana tamamen açık değil) olsa da, bazı insanlar ana hat için Linux çekirdeğini yeniden yazıyor (Broadcom'dan bağımsız olarak). bir FreeBSD
liman, 'U-boot' ve diğerleri. Bu yüzden kendi işletim sisteminizi yazmak kesinlikle mümkün. Olabileceği kadar kolay değil.
Senin hedeflerin
1 numara
Bildiğim kadarıyla, SoC’nun tarif edilenden başka bir şekilde başlayabilmesi mümkün değil. Bu yüzden ilk aşamada bootloader açık olmalı SD card
. Ve bir GPU
ikili olmalı ARM
, başka bir problem olan bir ikili değil . Ayrıca RaspberryPi'de ayrıca bir sorun olan uçakta flaş yoktur.
2 numara
Asıl sorun, flash
RaspberryPi'de onboard bulunmamasıdır . Bir tane ekleyebilir ve bootloader'ınızda aktif hale getirebilirsiniz (ki bu zaten 2. aşama bootloader olmalıydı). Ancak bir USB sürücüsü yazmak sorunlu olabilir.
Sayı 3, 4, 5
Bu fazla problem olmamalı. Çevre birimlerinin çoğu (en azından erişilebilenler ARM
) burada belgelenmiştir . Mevcut önyükleyici, SoC'nizi tamamen yapılandırdığınızdan bu işlemi daha da kolaylaştırır. Bazı kod ve belgeler için buraya ve buraya bakabilirsiniz .
Alternatifler
RaspberryPi kadar iyi bir yazı tahtası bilmiyorum, bu yüzden bir şeyler önermek zor ama OMAP tabanlı Beagleboard / Beaglebone / Pandaboard gibi bazı olgun projelere göz atabilir veya Allwinner tabanlı bazı yeni panoların geliştirilmesini takip edebilirsiniz. Cubieboard veya PCduino . Her şey tam olarak neyi başarmak istediğinize bağlı.