私は15年前と同じことをしています:)、HALの概念(ハードウェア抽象化層)に基づいて、独自のカーネル関数を使用する必要があります。 HALベースのモジュール、たとえばスクリーン出力ドライバを作成します。このドライバは、あなた自身のカスタムOSと接触している側と、あなたの非常に特定のハードウェアと接触している側の2つの面で構築する必要があります。したがって、ハードウェアを変更した瞬間にOSがこの変更の影響を受けることはありません。これは(正式な)インターフェイスと呼ばれます。ソフトウェアパターンの概念です。 よく見えます。擬似コードの例としては非常にのinterstingプロジェクト:)
です:
// yourclientprogram.c
include "screendriver.h"
i = new instance of LCDScreenDriver;
i.selectScreen(0);
i.printf("%s","hello");
だから、あなたのカーネルファイルは次のようになります:
//screendriver.h
class LCDScreenDriver extends ScreenDriver {
protected function output(data){
...very specific ASM code for your LCD monitor goes here..
...this code is very specific to output a -data- buffer
...and nothing more than this
}
}
class ScreenDriver {
protected function output(data); // a virtual pure function
public function printf(args,...){
dataTobePrinted = ..make your own printf methods...
this.output(dataToBePrinted);
}
}
単純な答え:直接ハードウェアに話しによります。他の答えは広すぎるでしょう –
それは答えではありませんが、私の質問 – user3718000
それはまさに答えです。マニュアルを入手し、それに応じて必要なハードウェアへのアクセスを開始します。 –