カスタムプロセッサでLinuxカーネルとUbuntuを実行する

カスタムプロセッサでLinuxカーネルとUbuntuを実行する

多くの人がすでにそうしているので、これは理論的な質問ではありませんが、基本的なプロセスに関する情報はほとんどありません。

私はカスタムMIPSベースのプロセッサを開発しており、ここでUbuntuを実行したいと思います。命令セットとコンピュータアーキテクチャ自体を設計した後、次に何をすべきかは非常に混乱しています。カーネルとオペレーティングシステムを実行できるはずですが、これらすべてがどのように結合されますか?

現在、私は適切なアセンブリ言語を生成するためにLinuxカーネル用のコンパイラを設計することに取り組んでいます。これは良いアプローチですか?次は何をすべきですか?

ベストアンサー1

アーキテクチャの面では、単純な命令セットとコンピュータアーキテクチャ以上のものが必要です。また、以下が必要です。

  • いくつかのタイプのCPU(シミュレータ、FPGA、シリコン...)。
  • プロセッサの起動方法:起動時にプロセッサが実行されるメモリにオペレーティングシステムを配置する方法。ほとんどのプロセッサは、ある種のフラッシュメモリを開いて分岐するか、一部の記憶媒体の一部のコードをRAMにロードして分岐するROMに格納されたコードで起動します。次のステップはオペレーティングシステムのブートローダです。
  • 一部の周辺機器 - 少なくともRAM、一種のメモリコントローラ、および一部の入出力デバイス。

ソフトウェアに関しては、次のものが必要です。

  • コンパイラ。 MIPSアーキテクチャを使用しているので、既存のMIPS用コンパイラで十分です。命令セットがデフォルトのMIPS命令セットを拡張する場合(たとえば、追加のレジスタを使用)、それに応じてアセンブラを拡張する必要があるかもしれません。
  • カーネル。 MIPS用のLinuxがすでに存在しています。アーキテクチャにブート、MMUなどのカスタム項目のサポートを追加する必要があります。
  • ドライバー。既製以外のすべてのコンピュータアーキテクチャ用のドライバを作成する必要があります。
  • ブートローダー。通常、ブートローダにはいくつかのアーキテクチャ関連のエントリがありますが、たとえばマシン定義を追加して既存のブートローダに必要なサポートを追加することもできます。USBブート
  • これだ。カーネルとブートローダがあると、ユーザーエリアプログラムは正常に動作します。既存のディストリビューションからカーネルとブートローダをパッチしてクロスコンパイルし、PCにインストールします。 UbuntuはMIPSをサポートしていませんが、ダーバンする(ミップスまたはミップセルバイト順序によって異なります)

おすすめ記事