Ahududu pi'nin Hack kabiliyet düzeyi


35

Yaklaşık 3 yıldır gömülü sistemler (çoğunlukla mikro denetleyiciler) ile çalışıyorum. Açık kaynaklı RPI ne kadarını gerçekten bilmek istiyorum ?? Arduino'nun bize donanım / yazılım vs. hakkında ayrıntılı bilgi verdiğini biliyorum. Ama peki ya RPI? Bu benim takımım ve ben ahududu pi ile birlikte aşağıdakileri yapmak istediğim için çok önemli.

  1. Harici SD kart yerine flaştan önyüklemek için birincil önyükleyiciyi (ROM) yeniden yazın.
  2. Dahili flaşta ikincil bir bootloader bulundurun, bu pi'nin usb portunu aktive eder ve dinler. İkili kodu kabul etmelidir (bilgisayarımdan alacaktır) ve flaşa kaydetmelidir. daha sonra çalıştırmaya başlayın.
  3. İletişim protokollerini yürütmek için kendi aygıt sürücülerimizi geliştirin.
  4. PI için kendi yükleyici ve hata ayıklama ortamımızı ve ARM için gömülü C özel uygulamamızı (GPIO'ları vb. Kontrol etmek için gereklidir) geliştirin.
  5. Mümkünse gömülü sistemler için kendi işletim sistemimizi kullanın.

Ahududu Pi ile mümkün mü? Değilse:
-> Ahududu pi ile beş hedefimden hangisi mümkün değildir. PI ile çalışmak zorunda kalırsam projemde ne gibi değişiklikler yapmalıyım?
-> Piyasada tam olarak istediğimi yapmamı sağlayacak başka hangi panolar var?

Yanıtlar:


76

Bazı arka plan

Bilmeniz gereken en önemli şey, RaspberryPi'nin ARM CPUana 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( mailboxmesajlaşma sistemini kullanarak ). Orada kısmi belgeler bu mevcut hakkında. Şimdi Video Core OS( VCOS), zaman zaman Linuxçekirdeklerin ve RISC OShatta 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,githubve 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, USBSynopsys'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 Coreda zor olabilir - grafik kitaplıkları için bazı açık kaynak kodları vardır , ancak bu yalnızca ARMtaraf içindir.

Bununla birlikte, RISC OSlimanı 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 FreeBSDliman, '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 GPUikili 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, flashRaspberryPi'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ı.


3
Bu cevabı +100 yapmak istiyorum. Aferin.
orithena

@maligree lol, endişelenme - zaten yapıldı! :)
xxmbabanexx

1
Beablebone için +1 çünkü% 100 açık kaynak kodlu ve donanıma "saygı gösterme" ve kendi devre kartını oluşturma yeteneğine sahipsin
portforwardpodcast

5

Krzysztof'un büyük cevabını güncellemek için Broadcom sonunda açık kaynaklı bir GPU sürücüsünün yapımına yardımcı olmak için 3-Fıkra BSD olarak lisanslanan bazı kodları açık bir şekilde yayınladı. Raspberry Pi VPU ürün yazılımı bloğunu değiştirme "rpi-open-firmware" çabası 2016 yılında başladı: https://github.com/christinaa/rpi-open-firmware . Daha fazla görün https://news.ycombinator.com/item?id=11703842

ODROID-C1, Cubieboard, Banana Pi, Olimex'in OLinuxIno Wifi ve OlinuxIno Mini, EOMA68 ve Beaglebone black dahil olmak üzere RaspberryPi - Debian Wiki'den kısaca tarif edilen ve bunlara bağlanan çeşitli alternatif kartlar vardır .


Şahsen, alternatiflerin o kadar iyi olmadığını düşünüyorum, birçok ODROID kartı önyükleyicide imza denetimini uyguluyor ve üzerlerinde kendi kodunuzu çalıştırmanızı engelliyor. TI OMAP3 ailesi, kodunuzu aramadan önce güvenlik modunu içerir ve ayrıca onunla yapabileceklerinizi de sınırlar. RPI'daki VPU aslında oldukça hoş, bence diğer panolara üstünlük sağlıyor ve şimdi bunun için güzel bir alet zincirimiz var, işler iyi görünüyor.
Kristina Brooks,

1

Raspberry Pi'li U-boot bootloader ile yapabileceğiniz çok şey var. Temel olarak GPU'nun ARM işlemciniz SoC'nizi U-boot görüntüsüyle "OS" olarak yüklemesine izin verin.

Bu makalenin örnek olarak faydalı olduğunu gördüm . Henüz yapmadım, ama planlıyorum. Bunu kendim yapmanın bir yolunu ararken soruyu bulmaya başladım, ve sonra makaleyi buldum ve benzeyen başkaları için faydalı olabilir gibi göründü.

Orada başka makale U önyükleme görüntüsü oluşturmak için daha kapsamlı talimatlar içerir.


1
Bu, başlangıçta faydalı olabilecek bir cevap türüdür, ancak birkaç yıl sonra bağlantılar çalışmayı keser ve içeriklerinin ne olduğuna dair tek bir ipucu yoktur. En azından hangi U-boot şubesinin ve hangi derleyiciyi kullandığınızı söyleyin.
Dmitry Grigoryev

Teşekkürler Dmitry. Yakında buna geri döneceğim ve biraz zamanım olduğunda düzelteceğim.
Alan Mimms
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.