多くの人がすでにそうしているので、これは理論的な質問ではありませんが、基本的なプロセスに関する情報はほとんどありません。
私はカスタムMIPSベースのプロセッサを開発しており、ここでUbuntuを実行したいと思います。命令セットとコンピュータアーキテクチャ自体を設計した後、次に何をすべきかは非常に混乱しています。カーネルとオペレーティングシステムを実行できるはずですが、これらすべてがどのように結合されますか?
現在、私は適切なアセンブリ言語を生成するためにLinuxカーネル用のコンパイラを設計することに取り組んでいます。これは良いアプローチですか?次は何をすべきですか?
ベストアンサー1
アーキテクチャの面では、単純な命令セットとコンピュータアーキテクチャ以上のものが必要です。また、以下が必要です。
- いくつかのタイプのCPU(シミュレータ、FPGA、シリコン...)。
- プロセッサの起動方法:起動時にプロセッサが実行されるメモリにオペレーティングシステムを配置する方法。ほとんどのプロセッサは、ある種のフラッシュメモリを開いて分岐するか、一部の記憶媒体の一部のコードをRAMにロードして分岐するROMに格納されたコードで起動します。次のステップはオペレーティングシステムのブートローダです。
- 一部の周辺機器 - 少なくともRAM、一種のメモリコントローラ、および一部の入出力デバイス。
ソフトウェアに関しては、次のものが必要です。
- コンパイラ。 MIPSアーキテクチャを使用しているので、既存のMIPS用コンパイラで十分です。命令セットがデフォルトのMIPS命令セットを拡張する場合(たとえば、追加のレジスタを使用)、それに応じてアセンブラを拡張する必要があるかもしれません。
- カーネル。 MIPS用のLinuxがすでに存在しています。アーキテクチャにブート、MMUなどのカスタム項目のサポートを追加する必要があります。
- ドライバー。既製以外のすべてのコンピュータアーキテクチャ用のドライバを作成する必要があります。
- ブートローダー。通常、ブートローダにはいくつかのアーキテクチャ関連のエントリがありますが、たとえばマシン定義を追加して既存のブートローダに必要なサポートを追加することもできます。USBブート。
- これだ。カーネルとブートローダがあると、ユーザーエリアプログラムは正常に動作します。既存のディストリビューションからカーネルとブートローダをパッチしてクロスコンパイルし、PCにインストールします。 UbuntuはMIPSをサポートしていませんが、ダーバンする(ミップスまたはミップセルバイト順序によって異なります)