いくつかの背景
あなたが知っておくべき最も重要なことは、RaspberryPiがARM CPU
メインCPUではない奇妙な獣であるということです-それは唯一のコプロセッサですVideoCore GPU
。RaspberryPiが起動すると、GPUブロブがSDカードからL2キャッシュに読み取られて実行されます。次に、このコードはすべての重要な周辺機器(RAM、クロックなど)を表示し、を開始しARM CPU
ます。その後、第2ステージのブートローダーまたはオペレーティングシステム自体を実行できますARM CPU
。
GPU blobはブートローダーだけではありません。実際には、それ自体がオペレーティングシステム(Video Core OS)です。システムのいくつかの重要な要素は、ARM CPUから直接アクセスできず、それらを使用するためにGPU
(mailbox
メッセージングシステムを使用して)通信する必要があります。これに関する部分的なドキュメントが利用可能です。現在Video Core OS
(VCOS
)はBroadcomの従業員によって随時拡張されており、Linux
カーネル、RISC OS
または場合によっては趣味のOSで必要な機能を有効にします。ただし、これに関する適切なドキュメントはありませんRaspberryPi forum
。github
おそらくこれに関する情報を見つける他の場所。しかし、それはどこかにあります。また、RaspberryPiで独自のベアメタルコードやOSを作成して支援する人もいます。そしてもちろん、多くのオープンソースコード-RasbperryPiのLinuxカーネルなど。
VideoCoreはプロプライエタリであり、公式のドキュメントと開発ツールはありません。したがって、多くの労力をかけたくない限りVCOS
、独自のコードで書き直すことはできません。ただし、Video Coreのリバースエンジニアリングには多少の努力が必要です。詳細については、こちらをご覧ください。
もう1つの問題は、USB
Synopsys のスタックがプロプライエタリであり、ドキュメントがないことであり、ドキュメントを使用しても確実に実装するのは難しいようです。しかし、ここでもコードは利用可能です(Linuxカーネル、u-boot、CSUD)。の高度なグラフィックス機能を使用Video Core
するのも難しい場合があります- グラフィックスライブラリにはいくつかのオープンソースコードがありますが、それはARM
サイド専用です。
そうは言っても、RISC OS
利用可能な情報からポートを作成することは可能でした(ただし、一般にアクセス可能な情報のみを使用しているかどうかは完全にはわかりません)、一部の人々はメインライン用にLinuxカーネルを書き換えていますあるFreeBSD
ポート、「U-boot`など。したがって、独自のOSを作成することは間違いなく可能です。それはおそらくそう簡単ではありません。
あなたの目標
番号1
私の知る限り、SoCが説明された方法以外の方法で起動する方法はありません。そのため、最初の段階のブートローダーをオンにする必要がありSD card
ます。そしてGPU
、ARM
別の問題であるバイナリではなく、バイナリでなければなりません。また、RaspberryPiにはオンボードフラッシュがありませんが、これも問題です。
2番
主な問題は、flash
RaspberryPi にオンボードがないことです。あなたはそれを追加することができ、それはあなたのブートローダーでアクティブ化されることができます(これはすでに第2ステージのブートローダーでなければなりません)。ただし、USBドライバーの作成には問題があります。
番号3、4、5
これは大した問題ではないはずです。周辺機器のほとんど(少なくともアクセス可能なものARM
)はここに文書化されています。SoCを完全に構成するので、既存のブートローダーによりこれがさらに簡単になります。あなたは見ることができ、こことここにいくつかのコードとドキュメントのために。
代替案
私はRaspberryPiほど優れたボードを知らないので、何かを推薦するのは難しいですが、OMAPベースのBeagleboard / Beaglebone / Pandaboardなどの成熟したプロジェクトを見てみるか、Allwinnerベースのような新しいボードの開発をフォローすることができますCubieboardまたはPCduino。それはすべて、まさにあなたが何を達成したいかによって異なります。