N108は、TM4C123チップ向けに記述されたフルリアルタイムオペレーティングシステムであり、外部LCDをサポートしています。 OSのカーネルはゼロから書かれていました。 OSは、特定の外部ハードウェアに適切に機能するように依存していますが、自給自足に簡単に変更できます。必要な外部ハードウェアリソースのリストについては、以下を参照してください。
OSは、UNIXのようなシェルを介して相互作用します。シェルは、ボードのUART0を介してシリアル通信を使用して、N108オペレーティングシステムに入力するコマンドを送信します。 OSとインターフェイスするには、USBを介してTM4C123ランチパッドをコンピューターに接続し、Mac用のCooltermやPutty for Windowsなどのシリアルインターフェイスを起動し、使用しているシリアルポートに接続します。そこから、N108シェルのプロンプトを確認できるはずです。このインターフェイスからコマンドを発行できます。
N108には完全なプロセスロードサポートがあるため、プログラムと一緒にOSを再コンパイルすることなく、このOSを使用して独自のTM4C123プログラムを独立してコンパイルおよび起動することができます。この機能を使用するには、Keil Uvision(またはその他の組み込みアームコンパイラ)を使用して独立プログラムをコンパイルし、ELFファイルをFAT32形式のSDカードにドロップします。 SDカードをTM4C123に接続し、OSを実行します。 OSのシェルから、「起動」を入力します。ここで、「 '」はSDカードにあるアームELFファイルの名前です。 OSはプログラムを起動し、実行を開始する必要があります。
OSは、単一のシステム呼び出しをサポートしています:OS_DISPLAYMESSAGE。この呼び出しを使用すると、ボードに接続されたST7735 LCDに文字列を印刷できます。画面上の場所を指定するには、ボードにテキストを表示する場所を指定するには、4つのパラメーターが必要です。 Static const elfsymbol_t symboltable [] ArrayをOS_Critical/OS.Cの下に変更し、新しい関数にポインターを追加することで、より多くの呼び出しを簡単に追加できます。
このエリアにシステムコールを追加して、TM4C SOCリソースのみにアクセスしやすくすることを考えています(外部リソースのみではなく)。 TBD。
箱から出したOSは、通常の機能を普通に機能させるための3つの外部ハードウェアに依存しています。シリアルドライバーとインターフェイスしてコマンド(パーソナルコンピューターなど)、LCD、およびSDカードリーダーを発行するための外部チップ。 LCDは出力ソースとして(シリアルポートとともに)使用され、SDカードリーダーはファイルシステムとプロセスローダーによって使用され、外部プロセスをロードおよび実行します。シリアルインターフェースコマンドのリストについては、以下をご覧ください。 SSI互換LCDとSDインターフェイスを可能にするため、ST7735を個人的に使用しました。そのための概略図も以下に含まれています。
このオペレーティングシステムは、アームTM4C123チップのバリエーション用に設計されています。ただし、ハードウェア抽象化レイヤーのほとんどは、OS_Critical/HardwareManagerの下に保存されます。このモジュールは、他のデバイスでサポートされているドライバーのために非常に簡単に交換できます。オペレーティングシステムは、次のハードウェアツールを使用してコア操作を使用します。
uart:
PLL:
gpio:
SSI:
このコードは、Texas Instruments Code Composer Studioで使用するように設計されています。リポジトリをクローンするだけで、プロジェクトをCCSワークスペースにインポートします。プロジェクトは、追加の作業を必要とせずに、BATを構築する必要があります。
このオペレーティングシステムは、すぐに点滅します。
OSは、2つのことに対して外部ST7735 LCDを使用します。LCDとして、およびそのファイルシステムの外部SDカードリーダーとして。私のOSは、センサーとのインターフェースなど、他の目的にも使用されていたため、2番目の画像の外的接続は無視してください。重要なのは、ST7735を接続することです。
これをLaunchpadに接続する方法の概略図は次のとおりです。 

OS間の主要なインターフェース(ボード上で実行)は、オンボードシリアルUARTポートを介して行われます。コンピューター上の任意の端末プログラム(WindowsのMacのCooledgeやPuttyなど)を使用して、ブートアップが完了したらこれらのコマンドをOSインタープリターに送信できます。
箱から出して、shell/shell.cに見られるように、オペレーティングシステムは次のコマンドをサポートしています。
char* commandFormat[] =
{
"help",
"runproc <processname>"
}
非常に裸のボーンですが、ここでのアイデアは、オペレーティングシステムの残りの部分と独自のコマンドとインターフェースを追加することです。 RunProcが外部プロセス(ST7735ブレイクアウトボードに挿入されたSDカードに保存)をロードし、そのプログラムの実行を開始する間、この同じリストを基本的に印刷します。アイドル中に、通訳のみが実行されます。